{ lib, config, ... }:
{

  programs.starship = {
    enable = true;
    settings = {
      format = lib.concatStrings [
        "[  ](fg:twelve bg:trans_blue)"
        "[ ](bg:trans_blue)[ ](fg:trans_blue bg:trans_pink)"
        "$hostname"
        "[ ](bg:trans_pink)[ ](fg:trans_pink bg:trans_white)"
        "$directory"
        "[ ](bg:trans_white)[ ](fg:trans_white bg:trans_pink)"
        "("
        "$git_branch"
        "$git_status"
        ")"
        "[ ](bg:trans_pink)[ ](fg:trans_pink bg:trans_blue)"
        "$character"
      ];

      right_format = lib.concatStrings [
        "$cmd_duration"
        "("
        "$python"
        "$conda"
        "$c"
        "$cmake"
        "$golang"
        "$haskell"
        "$rust"
        ")"
      ];

      palette = "stylix";

      # Disables the blank line at the start of the prompt
      add_newline = true;


      palettes.stylix = {
        first = config.lib.stylix.colors.withHashtag.base00;
        second = config.lib.stylix.colors.withHashtag.base01;
        third = config.lib.stylix.colors.withHashtag.base02;
        fourth = config.lib.stylix.colors.withHashtag.base03;
        fifth = config.lib.stylix.colors.withHashtag.base04;
        sixth = config.lib.stylix.colors.withHashtag.base05;
        seventh = config.lib.stylix.colors.withHashtag.base06;
        eighth = config.lib.stylix.colors.withHashtag.base07;
        baseeight = config.lib.stylix.colors.withHashtag.base08;
        basenine = config.lib.stylix.colors.withHashtag.base09;
        ten = config.lib.stylix.colors.withHashtag.base0A;
        eleven = config.lib.stylix.colors.withHashtag.base0B;
        twelve = config.lib.stylix.colors.withHashtag.base0C;
        thirteen = config.lib.stylix.colors.withHashtag.base0D;
        fourteen = config.lib.stylix.colors.withHashtag.base0E;
        fifteen = config.lib.stylix.colors.withHashtag.base0F;
        trans_blue = "#55CDFD";
        trans_pink = "#F6AAB7";
        trans_white = "#FFFFFF";
        pride_red = "#FF1E26";
        pride_orange = "#FE941E";
        pride_yellow = "#FFFF00";
        pride_green = "#06BD00";
        pride_blue = "#001A98";
        pride_violet = "#760088";
        # Text color:
        black = "#272D37";
        white = "#CBF4F8";
        github = "#B02B10";
      };

      hostname = {
        ssh_only = false;
        style = "bg:trans_pink fg:twelve";
        format = "[$hostname](bold $style)";
      };

      directory = {
        style = "bg:trans_white fg:twelve";
        format = "[  $path](bold $style)($style)[$read_only](bold $style)";
        truncation_symbol = "…/";
        truncate_to_repo = true;
        read_only = " ";
      };

      c = {
        symbol = " ";
        version_format = "\${raw}";
        style = "bg:fourth fg:white";
        format = "[$symbol($version) ]($style)";
      };

      cmake = {
        symbol = "△ ";
        version_format = "\${raw}";
        style = "bg:fourth fg:white";
        format = "[$symbol($version) ]($style)";
      };

      golang = {
        symbol = " ";
        version_format = "\${raw}";
        style = "bg:fourth fg:white";
        format = "[$symbol($version) ]($style)";
      };

      python = {
        symbol = " ";
        version_format = "\${raw}";
        style = "bg:fourth fg:white";
        python_binary = [ "./venv/bin/python" "./env/Scripts/python" "python" "python3" "python2" ];
        format = "[$symbol($version)]($style)[ (\($virtualenv\)) ](bg:fourth fg:white)";
      };

      conda = {
        symbol = " ";
        style = "bg:fourth fg:white";
        ignore_base = false;
        format = "[$symbol ($environment) ]($style)";
      };

      haskell = {
        symbol = " ";
        version_format = "\${raw}";
        style = "bg:fourth fg:white";
        format = "[$symbol($version) ]($style)";
      };

      rust = {
        symbol = " ";
        version_format = "\${raw}";
        style = "bg:fourth fg:white";
        format = "[$symbol($version) ]($style)";
      };

      git_branch = {
        symbol = " ";
        style = "bg:trans_pink fg:twelve";
        format = "[$symbol $branch ](bold $style)";
      };

      git_status = {
        style = "bold bg:trans_pink fg:twelve";
        format = "([\($all_status$ahead_behind\)](bold $style))";
      };

      cmd_duration = {
        style = "bg:eighth fg:twelve";
        format = "[  $duration ](bold $style)";
      };

      character = {
        success_symbol = "[:3 ](bold fg:twelve bg:trans_blue)[](fg:trans_blue)";
        error_symbol = "[:o ](bold fg:twelve bg:trans_blue)[](fg:trans_blue)";
      };
    };
  };
}