{ pkgs, config, lib, ... }: let cfg = config.xyno.cli.starship; in { options.xyno.cli.starship.enable = lib.mkEnableOption "enable the starship shell prompt with xynos config"; config = lib.mkIf cfg.enable { programs.starship.enable = true; programs.starship.settings = { # enable = true; "add_newline" = false; # "format" = "($direnv$nix_shell$container$fill$git_metrics\n)$cmd_duration$hostname$localip$shlvl$shell$env_var$jobs$username$directory "; "format" = "$cmd_duration$status$hostname$localip$shlvl$shell$env_var$jobs$username$directory "; "right_format" = "$nix_shell$git_branch$git_commit$git_state$git_status$package$custom$os$battery$time"; aws.disabled = true; status.disabled = false; battery.disabled = true; "buf" = { "format" = " [buf](italic) [$symbol $version $buf_version]($style)"; # "symbol" = "■ "; }; "c" = { "format" = " [$symbol($version(-$name))]($style)"; # "symbol" = "ℂ "; }; "character" = { "error_symbol" = "[:](italic purple)"; "format" = "$symbol "; "success_symbol" = "[:](bold italic bright-yellow)"; "vimcmd_replace_one_symbol" = "r"; "vimcmd_replace_symbol" = "R"; "vimcmd_symbol" = "[>](italic dimmed green)"; "vimcmd_visual_symbol" = "SEL"; }; "cmd_duration" = { "format" = "[$duration](italic white) "; }; "conda" = { "format" = " conda [$symbol$environment]($style)"; # "symbol" = "◯ "; }; "continuation_prompt" = "[▸▹ ](dimmed white)"; "dart" = { "format" = " dart [$symbol($version )]($style)"; # "symbol" = "◁◅ "; }; "deno" = { "format" = " [deno](italic) [∫ $version](green bold)"; "version_format" = "\${raw}"; }; "directory" = { "format" = "[$path]($style)[$read_only]($read_only_style)"; "home_symbol" = "~"; "read_only" = " (ro) "; "repo_root_format" = "[$before_root_path]($before_repo_root_style)[$repo_root]($repo_root_style)[$path]($style)[$read_only]($read_only_style)"; "repo_root_style" = "bold blue"; "style" = "italic blue"; "truncation_length" = 50; "truncation_symbol" = "⋯"; "use_os_path_sep" = true; }; "docker_context" = { "format" = " docker [$symbol$context]($style)"; # "symbol" = "◧ "; }; direnv = { disabled = false; }; "elixir" = { "format" = " exs [$symbol $version OTP $otp_version ]($style)"; # "symbol" = "△ "; }; "elm" = { "format" = " elm [$symbol($version )]($style)"; # "symbol" = "◩ "; }; "env_var" = { "VIMSHELL" = { "format" = "[$env_value]($style)"; "style" = "green italic"; }; }; "fill" = { "symbol" = " "; }; "git_branch" = { "format" = " [$branch(:$remote_branch)]($style)"; "ignore_branches" = [ "main" "master" ]; "only_attached" = true; "style" = "italic bright-blue"; "symbol" = "(bold italic bright-blue)"; # "symbol" = "[△](bold italic bright-blue)"; "truncation_length" = 13; "truncation_symbol" = "⋯"; }; "git_metrics" = { "added_style" = "italic dimmed green"; "deleted_style" = "italic dimmed red"; "disabled" = false; "format" = "([▴$added]($added_style))([▿$deleted]($deleted_style))"; "ignore_submodules" = true; }; "git_status" = { "ahead" = "[▴│[\${count}](bold white)│](italic green)"; "behind" = "[▿│[\${count}](bold white)│](italic red)"; "conflicted" = "[◪◦](italic bright-magenta)"; "deleted" = "[✕](italic red)"; "diverged" = "[◇ ▴┤[\${ahead_count}](regular white)│▿┤[\${behind_count}](regular white)│](italic bright-magenta)"; "format" = "([⎪$ahead_behind$staged$modified$untracked$renamed$deleted$conflicted$stashed⎥]($style))"; "modified" = "[●◦](italic yellow)"; "renamed" = "[◎◦](italic bright-blue)"; "staged" = "[▪┤[$count](bold white)│](italic bright-cyan)"; "stashed" = "[◃◈](italic white)"; "style" = "bold italic bright-blue"; "untracked" = "[◌◦](italic bright-yellow)"; }; "golang" = { "format" = " go [$symbol($version )]($style)"; # "symbol" = "∩ "; }; "haskell" = { "format" = " hs [$symbol($version )]($style)"; # "symbol" = "❯λ "; }; "java" = { "format" = " java [\${symbol}(\${version} )]($style)"; # "symbol" = "∪ "; }; "jobs" = { "format" = "[$symbol$number]($style) "; "style" = "white"; "symbol" = "[▶](blue italic)"; }; "julia" = { "format" = " jl [$symbol($version )]($style)"; "symbol" = "◎ "; }; "localip" = { "disabled" = false; "format" = " ◯[$localipv4](bold magenta)"; "ssh_only" = true; }; "lua" = { "format" = " [lua](italic) [\${symbol}\${version}]($style)"; "style" = "bold bright-yellow"; "symbol" = "⨀ "; "version_format" = "\${raw}"; }; "memory_usage" = { "format" = " mem [\${ram}( \${swap})]($style)"; "symbol" = "▪▫▪ "; }; "nim" = { "format" = " nim [$symbol($version )]($style)"; "symbol" = "▴▲▴ "; }; "nix_shell" = { "format" = "[$symbol]($style) [$name](italic dimmed white)"; "impure_msg" = "[impure](bold dimmed red)"; "pure_msg" = "[pure](bold dimmed green)"; "style" = "bold italic dimmed blue"; "symbol" = "󱄅"; "unknown_msg" = "[unknown](bold dimmed ellow)"; }; "nodejs" = { "detect_extensions" = [ ]; "detect_files" = [ "package-lock.json" "yarn.lock" "pnpm-lock.yaml" ]; "detect_folders" = [ "node_modules" ]; "format" = " [node](italic) [($version)](bold bright-green)"; "version_format" = "\${raw}"; }; "package" = { "format" = " [pkg](italic dimmed) [$symbol$version]($style)"; "style" = "dimmed yellow italic bold"; # "symbol" = "◨ "; "version_format" = "\${raw}"; }; "python" = { "format" = " [py](italic) [\${symbol}\${version}]($style)"; "style" = "bold bright-yellow"; # "symbol" = "[⌉](bold bright-blue)⌊ "; "version_format" = "\${raw}"; }; "ruby" = { disabled = true; "format" = " [rb](italic) [\${symbol}\${version}]($style)"; "style" = "bold red"; # "symbol" = "◆ "; "version_format" = "\${raw}"; }; "rust" = { "format" = " [rs](italic) [$symbol$version]($style)"; "style" = "bold red"; # "symbol" = "⊃ "; "version_format" = "\${raw}"; }; "spack" = { "format" = " spack [$symbol$environment]($style)"; # "symbol" = "◇ "; }; "sudo" = { "disabled" = true; "format" = "[$symbol]($style)"; "style" = "bold italic bright-purple"; "symbol" = "sudo"; }; "swift" = { "format" = " [sw](italic) [\${symbol}\${version}]($style)"; "style" = "bold bright-red"; # "symbol" = "◁ "; "version_format" = "\${raw}"; }; "time" = { "disabled" = true; "format" = "[ $time]($style)"; "style" = "italic dimmed white"; "time_format" = "%R"; "utc_time_offset" = "local"; }; "username" = { "disabled" = false; "format" = "[$user]($style) "; "show_always" = false; "style_root" = "purple bold italic"; "style_user" = "bright-yellow bold italic"; }; }; }; }