about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2023-12-29 19:27:38 +0100
committerSoispha <soispha@vhack.eu>2023-12-29 20:41:13 +0100
commitf1641ed52fd89aed7e91508bda7a644514d2ab70 (patch)
tree08838b623047e2aa25a991d748795109494419ef
parentfix(hm/conf/starship): Correctly escape strings (diff)
downloadnixos-config-f1641ed52fd89aed7e91508bda7a644514d2ab70.tar.gz
nixos-config-f1641ed52fd89aed7e91508bda7a644514d2ab70.zip
fix(hm/conf/starship): Try to change path colour based on exit
-rw-r--r--hm/soispha/conf/starship/default.nix37
1 files changed, 32 insertions, 5 deletions
diff --git a/hm/soispha/conf/starship/default.nix b/hm/soispha/conf/starship/default.nix
index ba531c83..827c2a93 100644
--- a/hm/soispha/conf/starship/default.nix
+++ b/hm/soispha/conf/starship/default.nix
@@ -1,6 +1,7 @@
 {
   lib,
   nixosConfig,
+  pkgs,
   ...
 }: {
   programs.starship = {
@@ -9,7 +10,7 @@
     settings = {
       add_newline = false;
       format = lib.concatStrings [
-        "$directory"
+        "\${custom.status_output}$directory\${custom.status_clear}"
         "$username"
         "$cmd_duration"
         "$status"
@@ -17,12 +18,12 @@
       ];
       right_format = lib.concatStrings (
         [
-          "$time"
           "$git_metrics"
           "$git_branch"
           "$git_status"
           "$git_commit"
           "$git_state"
+          "$time"
         ]
         ++ lib.optional
         nixosConfig.soispha.laptop.enable
@@ -37,7 +38,7 @@
       };
       status = {
         disabled = false;
-        format = "[($common_meaning \\($status\\))($signal_name \\($signal_number\\)))]($style)";
+        format = "([($common_meaning \\($status\\))($signal_name \\($signal_number\\))]($style) )";
       };
       time = {
         disabled = false;
@@ -47,6 +48,8 @@
         format = "as [$user]($style) ";
       };
       git_status = {
+        disabled = true;
+        format = "([\\[$ahead_behind\\]]($style) )";
         ahead = "⇡$count";
         diverged = "⇕⇡$ahead_count⇣$behind_count";
         behind = "⇣$count";
@@ -55,21 +58,45 @@
         disabled = false;
         ignore_submodules = true;
       };
-      git_state = {};
+      git_state = {
+        format = "[\($state( $progress_current of $progress_total)\)]($style) ";
+        rebase = "[rebasing](bold magenta)";
+        merge = "[merging](bold yellow)";
+        revert = "[reverting](bold blue)";
+        cherry_pick = "[picking](bold red)";
+        bisect = "[bisecting](bold red)";
+        am = "[applying](bold green)";
+        am_or_rebase = "[applying/rebasing](bold yellow)";
+      };
       git_commit = {
         tag_disabled = false;
         tag_symbol = "v";
-        format = "[(\\[($hash$tag\\])]($style)";
+        format = "[(\\[$hash$tag\\] )]($style) ";
       };
       directory = {
         truncate_to_repo = true;
         read_only = "";
         before_repo_root_style = "black bold dimmed";
+        format =
+          "[$before_root_path]($before_repo_root_style)[$repo_root]($repo_root_style)$path[$read_only]($read_only_style)";
       };
       cmd_duration = {
         min_time = 2000; # Milliseconds
         style = "bold white";
       };
+      custom = {
+        status_output = {
+          format = "$output";
+          command = "if test $STARSHIP_CMD_STATUS -ne 0; then echo \"\\033[31;1m\"; else echo \"\\033[34;1m\"; fi";
+          shell = [ "${pkgs.dash}" ];
+        };
+        status_clear = {
+          when = "test $STARSHIP_CMD_STATUS -ne 0";
+          format = "$output";
+          command = "echo \"\\033[m\"";
+          shell = [ "${pkgs.dash}" ];
+        };
+      };
       battery = {
         # '󰁹 '
         #   '󰂄 '