104 lines
2.5 KiB
Nix
104 lines
2.5 KiB
Nix
![]() |
{
|
||
|
config,
|
||
|
lib,
|
||
|
...
|
||
|
}: let
|
||
|
inherit (builtins) map;
|
||
|
inherit (lib.strings) concatStrings;
|
||
|
in {
|
||
|
home = {
|
||
|
sessionVariables = {
|
||
|
STARSHIP_CACHE = "${config.xdg.cacheHome}/starship";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
programs.starship = let
|
||
|
elemsConcatted = concatStrings (
|
||
|
map (s: "\$${s}") [
|
||
|
"hostname"
|
||
|
"username"
|
||
|
"directory"
|
||
|
"shell"
|
||
|
"nix_shell"
|
||
|
"git_branch"
|
||
|
"git_commit"
|
||
|
"git_state"
|
||
|
"git_status"
|
||
|
"jobs"
|
||
|
"cmd_duration"
|
||
|
]
|
||
|
);
|
||
|
in {
|
||
|
enable = true;
|
||
|
|
||
|
settings = {
|
||
|
scan_timeout = 2;
|
||
|
command_timeout = 2000; # nixpkgs makes starship implode with lower values
|
||
|
add_newline = false;
|
||
|
line_break.disabled = false;
|
||
|
|
||
|
format = "${elemsConcatted}\n$character";
|
||
|
|
||
|
hostname = {
|
||
|
ssh_only = true;
|
||
|
disabled = false;
|
||
|
format = "@[$hostname](bold blue) "; # the whitespace at the end is actually important
|
||
|
};
|
||
|
|
||
|
# configure specific elements
|
||
|
character = {
|
||
|
error_symbol = "[](bold red)";
|
||
|
success_symbol = "[](bold green)";
|
||
|
vicmd_symbol = "[](bold yellow)";
|
||
|
format = "$symbol [|](bold bright-black) ";
|
||
|
};
|
||
|
|
||
|
username = {
|
||
|
format = "[$user]($style) in ";
|
||
|
};
|
||
|
|
||
|
directory = {
|
||
|
truncation_length = 2;
|
||
|
|
||
|
# removes the read_only symbol from the format, it doesn't play nicely with my folder icon
|
||
|
format = "[ ](bold green) [$path]($style) ";
|
||
|
|
||
|
# the following removes tildes from the path, and substitutes some folders with shorter names
|
||
|
substitutions = {
|
||
|
"~/Dev" = "Dev";
|
||
|
"~/Documents" = "Docs";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
# git
|
||
|
git_commit.commit_hash_length = 7;
|
||
|
git_branch.style = "bold purple";
|
||
|
git_status = {
|
||
|
style = "red";
|
||
|
ahead = "⇡ ";
|
||
|
behind = "⇣ ";
|
||
|
conflicted = " ";
|
||
|
renamed = "»";
|
||
|
deleted = "✘ ";
|
||
|
diverged = "⇆ ";
|
||
|
modified = "!";
|
||
|
stashed = "≡";
|
||
|
staged = "+";
|
||
|
untracked = "?";
|
||
|
};
|
||
|
|
||
|
# language configurations
|
||
|
# the whitespaces at the end *are* necessary for proper formatting
|
||
|
lua.symbol = "[ ](blue) ";
|
||
|
python.symbol = "[ ](blue) ";
|
||
|
rust.symbol = "[ ](red) ";
|
||
|
nix_shell.symbol = "[ ](blue) ";
|
||
|
golang.symbol = "[ ](blue)";
|
||
|
c.symbol = "[ ](black)";
|
||
|
nodejs.symbol = "[ ](yellow)";
|
||
|
|
||
|
package.symbol = "📦 ";
|
||
|
};
|
||
|
};
|
||
|
}
|