aboutsummaryrefslogtreecommitdiffstats
path: root/modules/terminal/starship/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/terminal/starship/default.nix')
-rw-r--r--modules/terminal/starship/default.nix63
1 files changed, 63 insertions, 0 deletions
diff --git a/modules/terminal/starship/default.nix b/modules/terminal/starship/default.nix
new file mode 100644
index 0000000..ae5e082
--- /dev/null
+++ b/modules/terminal/starship/default.nix
@@ -0,0 +1,63 @@
+{ config, lib, ... }:
+
+# Starship - Minimal, blazing-fast shell prompt
+{
+ config = lib.mkIf config.programs.starship.enable {
+ programs.starship = {
+ enableZshIntegration = config.programs.zsh.enable;
+ settings =
+ let
+ mkSegment = content: ''[┄\[](red)[${content}]($style)[\]](red)'';
+ in
+ {
+ add_newline = true;
+
+ format = ''''\n[╭─\[](red)$username[@](red)$hostname[\]](red)$directory$git_branch$git_status$nix_shell''\n[╰─](red)$status$character ''\n'';
+
+ character.format = "[](red)";
+
+ username = {
+ style_user = "blue";
+ style_root = "red bold";
+ format = "[$user]($style)";
+ show_always = true;
+ };
+
+ hostname = {
+ ssh_only = false;
+ style = "green";
+ format = "[$hostname]($style)";
+ };
+
+ directory = {
+ style = "purple";
+ truncate_to_repo = false;
+ format = mkSegment "$path";
+ };
+
+ git_branch = {
+ style = "bold yellow";
+ format = ''[┄\[](red)[$symbol$branch(:$remote_branch)]($style)'';
+ };
+
+ git_status = {
+ style = "cyan";
+ format = ''( [$all_status$ahead_behind]($style))[\]](red)'';
+ };
+
+ nix_shell = {
+ format = mkSegment "$symbol $state( \($name\))";
+ symbol = "󱄅";
+ impure_msg = "󰻌";
+ pure_msg = "󰕥";
+ };
+
+ status = {
+ disabled = false;
+ format = "${mkSegment "$symbol $status"}[┄─](red)";
+ style = "white";
+ };
+ };
+ };
+ };
+}