{ config, pkgs, lib, ... }:

let 
  orangeColor = "#f0810e";
  yellowColor = "#f9b931";
  blueColor = "#446e86";
  whiteColor = "#f8f2e6";
  blackColor = "#2f312e";
  redColor = "#fb4934";
in 
{
  programs.starship.settings = {
      format = lib.concatStrings [
        "[](${whiteColor})"
        "$time"
        "[](${whiteColor}) "
        
        "[](${orangeColor})"
        "$username"
        "$hostname"
        "[](bg:${yellowColor} fg:${orangeColor})"
        "$directory"
        "[](fg:${yellowColor} bg:${blueColor})"
        "$git_branch"
        "$git_status"
        "$rust"
        "$docker_context"
        "$nix_shell"
        "[](fg:${blueColor} bg:${redColor})"
        "$status"
        "[ ](fg:${redColor})"
      ];

      username = {
        show_always = true;
        style_user = "fg:${blackColor} bg:${orangeColor}";
        style_root = "fg:${blackColor} bg:${orangeColor}";
        format = "[$user]($style)";
        disabled = false;
      };

      hostname = {
        ssh_only = true;
        style = "fg:${blackColor} bg:${orangeColor}";
        format = "[@$hostname]($style)";
        disabled = false;
      };

      os = {
        style = "bg:${orangeColor}";
        disabled = true;
      };

      nix_shell = {
        disabled = false;
        heuristic = true;
        symbol = " ";
        format = "[$symbol$state(\($name\))]($style)";
        style = "fg:${whiteColor} bg:${blueColor}";
      };
 
      directory = {
        style = "fg:${blackColor} bg:${yellowColor}";
        format = "[ $path ]($style)";
        truncation_length = 3;
        truncation_symbol = "…/";
        substitutions = {
          Documents = "󰈙 ";
          Downloads = " ";
          Music = " ";
          Pictures = " ";
        };
      };

      git_branch = {
        symbol = "";
        style = "fg:${whiteColor} bg:${blueColor}";
        format = "[ $symbol $branch ]($style)";
      };

      git_status = {
        style = "fg:${whiteColor} bg:${blueColor}";
        format = "[$all_status$ahead_behind ]($style)";
      };

      status = {
        style = "fg:${whiteColor} bg:${redColor}";
        format = "[$status ]($style)";
        disabled = false;
      };
      
      time = {
        disabled = false;
        time_format = "%R"; # Hour:Minute Format
        style = "fg:${blackColor} bg:${whiteColor}";
        format = "[ $time]($style)";
      };
    };
}