Files
dotfiles-modules/homemanager/starship.nix
2025-10-14 12:29:46 +02:00

126 lines
3.0 KiB
Nix

{
lib,
config,
...
}:
let
theme = import lib/theme.nix;
starshipLib.toLanguageConfig = symbol: {
symbol = symbol;
style = "bg:language";
format = "[ $symbol ($version) ]($style)";
};
in
{
options = {
modules.starship.enable = lib.mkEnableOption "enables starship";
};
config = lib.mkIf config.modules.starship.enable {
programs.starship.enable = true;
programs.starship.settings = {
palette = "default";
format = lib.concatStrings [
"[](bg: secondary)"
"$os"
"[](fg:secondary bg:primary)"
"$directory"
"[](fg:primary bg:#FCA17D)"
"$git_branch"
"$git_status"
"[](fg:#FCA17D bg:language)"
"$c"
"$elixir"
"$elm"
"$golang"
"$gradle"
"$haskell"
"$java"
"$julia"
"$nodejs"
"$nim"
"$rust"
"$scala"
"$nix_shell"
"[ ](fg:language)"
];
right_format = "$cmd_duration";
os = {
style = "bg:secondary";
disabled = false; # Disabled by default
symbols = {
NixOS = " ";
};
};
directory = {
style = "bg:primary fg:primary-foreground";
format = "[ $path ]($style)";
truncation_length = 1;
truncation_symbol = "";
};
directory.substitutions = {
"Documents" = "󰈙 Documents";
"Downloads" = " Downloads";
"Music" = " Music";
"Pictures" = " Pictures";
};
nim = starshipLib.toLanguageConfig "󰆥 ";
rust = starshipLib.toLanguageConfig "";
java = starshipLib.toLanguageConfig " ";
golang = starshipLib.toLanguageConfig " ";
c = starshipLib.toLanguageConfig " ";
elixir = starshipLib.toLanguageConfig " ";
elm = starshipLib.toLanguageConfig " ";
gradle = starshipLib.toLanguageConfig " ";
haskell = starshipLib.toLanguageConfig " ";
julia = starshipLib.toLanguageConfig " ";
nodejs = starshipLib.toLanguageConfig "";
scala = starshipLib.toLanguageConfig " ";
nix_shell = {
symbol = " ";
style = "bg:language";
format = "[ $symbol$state( \($name\))]($style)";
unknown_msg = "nix-shell";
};
git_branch = {
symbol = "";
style = "bg:#FCA17D";
format = "[ $symbol $branch ]($style)";
};
git_status = {
style = "bg:#FCA17D";
format = "[ $all_status$ahead_behind ]($style)";
};
cmd_duration = {
min_time = 1000;
style = "bg:secondary";
format = ''
[](bg: secondary)
[ $duration ]($style)
[](fg:secondary)
'';
};
palettes.default = {
primary = theme.primary;
secondary = theme.secondary;
accent = theme.accent;
primary-foreground = theme.primary-foreground;
git = theme.git;
language = theme.language;
docker = theme.docker;
};
};
};
}