feat: starship
This commit is contained in:
parent
1922579c77
commit
57a6f61802
7 changed files with 229 additions and 209 deletions
|
@ -36,4 +36,22 @@
|
||||||
else "Whether to enable ${name}.";
|
else "Whether to enable ${name}.";
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
## Like lib.mkDefault, but uses lib.mapAttrsRecursive to apply mkDefault to
|
||||||
|
## every attr in the set.
|
||||||
|
##
|
||||||
|
## ```nix
|
||||||
|
## starship.settings.username = mkDefault' {
|
||||||
|
## enabled = true;
|
||||||
|
## show_always = false;
|
||||||
|
## };
|
||||||
|
## ```
|
||||||
|
## is equivalent to:
|
||||||
|
## ```nix
|
||||||
|
## starship.settings.username = {
|
||||||
|
## enabled = mkDefault true;
|
||||||
|
## show_always = mkDefault false;
|
||||||
|
## };
|
||||||
|
## ```
|
||||||
|
mkDefault' = set: lib.mapAttrsRecursive (_: value: lib.mkDefault value) set;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ in {
|
||||||
nh = enabled;
|
nh = enabled;
|
||||||
ripgrep = enabled;
|
ripgrep = enabled;
|
||||||
ssh = enabled;
|
ssh = enabled;
|
||||||
|
starship = enabled;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
./nh.nix
|
./nh.nix
|
||||||
./ripgrep.nix
|
./ripgrep.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
|
./starship
|
||||||
./waybar.nix
|
./waybar.nix
|
||||||
|
|
||||||
# TODO: uncomment when swaylock is figured out
|
# TODO: uncomment when swaylock is figured out
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
lib,
|
|
||||||
config,
|
config,
|
||||||
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.marleyos.programs.starship;
|
cfg = config.marleyos.programs.starship;
|
208
modules/home/programs/starship/theme.nix
Normal file
208
modules/home/programs/starship/theme.nix
Normal file
|
@ -0,0 +1,208 @@
|
||||||
|
{
|
||||||
|
marleylib,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.marleyos.programs.starship;
|
||||||
|
in {
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.starship.settings = with config.lib.stylix.colors.withHashtag; let
|
||||||
|
mkFormat = t: " [](fg:${base02})[${t}]($style)[](fg:${base02}) ";
|
||||||
|
langFormat = mkFormat "$symbol$version";
|
||||||
|
in
|
||||||
|
marleylib.module.mkDefault' {
|
||||||
|
format = lib.concatStrings [
|
||||||
|
"$username"
|
||||||
|
"$hostname"
|
||||||
|
"$directory"
|
||||||
|
"$nix_shell"
|
||||||
|
"$git_branch"
|
||||||
|
"$git_status"
|
||||||
|
"$fill"
|
||||||
|
"$c"
|
||||||
|
"$elixir"
|
||||||
|
"$elm"
|
||||||
|
"$golang"
|
||||||
|
"$haskell"
|
||||||
|
"$java"
|
||||||
|
"$julia"
|
||||||
|
"$nodejs"
|
||||||
|
"$nim"
|
||||||
|
"$rust"
|
||||||
|
"$scala"
|
||||||
|
"$python"
|
||||||
|
"$time"
|
||||||
|
"$line_break"
|
||||||
|
"$character"
|
||||||
|
];
|
||||||
|
|
||||||
|
username = {
|
||||||
|
disabled = false;
|
||||||
|
format = " [](fg:${base02})[ $user@]($style)";
|
||||||
|
show_always = true;
|
||||||
|
style_root = "bg:${base02} fg:${base0D}";
|
||||||
|
style_user = "bg:${base02} fg:${base0D}";
|
||||||
|
};
|
||||||
|
|
||||||
|
hostname = {
|
||||||
|
ssh_only = false;
|
||||||
|
format = "[$hostname ]($style)[](fg:${base02}) ";
|
||||||
|
style = "bg:${base02} fg:${base0D}";
|
||||||
|
};
|
||||||
|
|
||||||
|
directory = {
|
||||||
|
format = mkFormat " $path ";
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
truncation_length = 3;
|
||||||
|
truncation_symbol = "…/";
|
||||||
|
|
||||||
|
substitutions = {
|
||||||
|
Documents = "";
|
||||||
|
Downloads = " ";
|
||||||
|
Music = " ";
|
||||||
|
Pictures = " ";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
git_branch = {
|
||||||
|
format = mkFormat " $symbol $branch ";
|
||||||
|
style = "bg:${base02} fg:${base0C}";
|
||||||
|
symbol = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
git_status = {
|
||||||
|
disabled = false;
|
||||||
|
style = "bg:${base02} fg:${base08}";
|
||||||
|
format = mkFormat "$all_status$ahead_behind";
|
||||||
|
up_to_date = "[ ✓ ](bg:${base02} fg:${base0D})";
|
||||||
|
untracked = "[?\\($count\\)](bg:${base02} fg:${base09})";
|
||||||
|
stashed = "[\\$](bg:${base02} fg:${base0D})";
|
||||||
|
modified = "[!\\($count\\)](bg:${base02} fg:${base09})";
|
||||||
|
renamed = "[»\\($count\\)](bg:${base02} fg:${base0D})";
|
||||||
|
deleted = "[✘\\($count\\)](style)";
|
||||||
|
staged = "[++\\($count\\)](bg:${base02} fg:${base09})";
|
||||||
|
ahead = "[⇡\\(\${count}\\)](bg:${base02} fg:${base0C})";
|
||||||
|
diverged = "⇕[\\[](bg:${base02} fg:${base0D})[⇡\\(\${ahead_count}\\)](bg:${base02} fg:${base0C})[⇣\\(\${behind_count}\\)](bg:${base02} fg:${base0A})[\\]](bg:${base02} fg:${base0D})";
|
||||||
|
behind = "[⇣\\(\${count}\\)](bg:${base02} fg:${base0A})";
|
||||||
|
};
|
||||||
|
|
||||||
|
fill = {
|
||||||
|
style = "fg:${base02}";
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
time = {
|
||||||
|
disabled = false;
|
||||||
|
format = mkFormat " $time ";
|
||||||
|
style = "bg:${base02} fg:${base0A}";
|
||||||
|
time_format = "%I:%M%P";
|
||||||
|
use_12hr = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
character = let
|
||||||
|
vim = "";
|
||||||
|
mkChar = sym: col: " [${sym}](fg:${col}) [](fg:${base0C})";
|
||||||
|
in {
|
||||||
|
success_symbol = mkChar "" "${base0D}";
|
||||||
|
error_symbol = mkChar "" "${base08}";
|
||||||
|
vimcmd_symbol = mkChar vim "${base0A}";
|
||||||
|
vimcmd_replace_one_symbol = mkChar vim "${base0C}";
|
||||||
|
vimcmd_replace_symbol = mkChar vim "${base0C}";
|
||||||
|
vimcmd_visual_symbol = mkChar vim "${base0D}";
|
||||||
|
};
|
||||||
|
|
||||||
|
### Languages ###
|
||||||
|
c = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = langFormat;
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
elixir = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = langFormat;
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
elm = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = langFormat;
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
haskell = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = langFormat;
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
java = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = langFormat;
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
julia = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = langFormat;
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
nodejs = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = langFormat;
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
nim = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = langFormat;
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
python = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
rust = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = langFormat;
|
||||||
|
disabled = false;
|
||||||
|
symbol = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
scala = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = langFormat;
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
### Tools ###
|
||||||
|
conda = {
|
||||||
|
style = "bg:${base02} fg:${base0B}";
|
||||||
|
format = mkFormat "$symbol$environment";
|
||||||
|
disabled = false;
|
||||||
|
symbol = "🅒 ";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix_shell = {
|
||||||
|
style = "bg:${base02} fg:${base0C}";
|
||||||
|
format = mkFormat " $symbol $state( \($name\)) ";
|
||||||
|
disabled = false;
|
||||||
|
symbol = " ";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,208 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkDefault;
|
|
||||||
|
|
||||||
cfg = config.marleyos.programs.starship;
|
|
||||||
in {
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
programs.starship.settings = with config.lib.stylix.colors.withHashtag; let
|
|
||||||
mkFormat = t: " [](fg:${base02})[${t}]($style)[](fg:${base02}) ";
|
|
||||||
langFormat = mkFormat "$symbol$version";
|
|
||||||
in {
|
|
||||||
format = mkDefault (lib.concatStrings [
|
|
||||||
"$username"
|
|
||||||
"$hostname"
|
|
||||||
"$directory"
|
|
||||||
"$nix_shell"
|
|
||||||
"$git_branch"
|
|
||||||
"$git_status"
|
|
||||||
"$fill"
|
|
||||||
"$c"
|
|
||||||
"$elixir"
|
|
||||||
"$elm"
|
|
||||||
"$golang"
|
|
||||||
"$haskell"
|
|
||||||
"$java"
|
|
||||||
"$julia"
|
|
||||||
"$nodejs"
|
|
||||||
"$nim"
|
|
||||||
"$rust"
|
|
||||||
"$scala"
|
|
||||||
"$python"
|
|
||||||
"$time"
|
|
||||||
"$line_break"
|
|
||||||
"$character"
|
|
||||||
]);
|
|
||||||
|
|
||||||
username = {
|
|
||||||
disabled = mkDefault false;
|
|
||||||
format = mkDefault " [](fg:${base02})[ $user@]($style)";
|
|
||||||
show_always = mkDefault true;
|
|
||||||
style_root = mkDefault "bg:${base02} fg:${base0D}";
|
|
||||||
style_user = mkDefault "bg:${base02} fg:${base0D}";
|
|
||||||
};
|
|
||||||
|
|
||||||
hostname = {
|
|
||||||
ssh_only = mkDefault false;
|
|
||||||
format = mkDefault "[$hostname ]($style)[](fg:${base02}) ";
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0D}";
|
|
||||||
};
|
|
||||||
|
|
||||||
directory = {
|
|
||||||
format = mkDefault (mkFormat " $path ");
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
truncation_length = mkDefault 3;
|
|
||||||
truncation_symbol = mkDefault "…/";
|
|
||||||
|
|
||||||
substitutions = {
|
|
||||||
Documents = mkDefault "";
|
|
||||||
Downloads = mkDefault " ";
|
|
||||||
Music = mkDefault " ";
|
|
||||||
Pictures = mkDefault " ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
git_branch = {
|
|
||||||
format = mkDefault (mkFormat " $symbol $branch ");
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0C}";
|
|
||||||
symbol = mkDefault "";
|
|
||||||
};
|
|
||||||
|
|
||||||
git_status = {
|
|
||||||
disabled = mkDefault false;
|
|
||||||
style = mkDefault "bg:${base02} fg:${base08}";
|
|
||||||
format = mkDefault (mkFormat "$all_status$ahead_behind");
|
|
||||||
up_to_date = mkDefault "[ ✓ ](bg:${base02} fg:${base0D})";
|
|
||||||
untracked = mkDefault "[?\\($count\\)](bg:${base02} fg:${base09})";
|
|
||||||
stashed = mkDefault "[\\$](bg:${base02} fg:${base0D})";
|
|
||||||
modified = mkDefault "[!\\($count\\)](bg:${base02} fg:${base09})";
|
|
||||||
renamed = mkDefault "[»\\($count\\)](bg:${base02} fg:${base0D})";
|
|
||||||
deleted = mkDefault "[✘\\($count\\)](style)";
|
|
||||||
staged = mkDefault "[++\\($count\\)](bg:${base02} fg:${base09})";
|
|
||||||
ahead = mkDefault "[⇡\\(\${count}\\)](bg:${base02} fg:${base0C})";
|
|
||||||
diverged = mkDefault "⇕[\\[](bg:${base02} fg:${base0D})[⇡\\(\${ahead_count}\\)](bg:${base02} fg:${base0C})[⇣\\(\${behind_count}\\)](bg:${base02} fg:${base0A})[\\]](bg:${base02} fg:${base0D})";
|
|
||||||
behind = mkDefault "[⇣\\(\${count}\\)](bg:${base02} fg:${base0A})";
|
|
||||||
};
|
|
||||||
|
|
||||||
fill = {
|
|
||||||
style = mkDefault "fg:${base02}";
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
time = {
|
|
||||||
disabled = mkDefault false;
|
|
||||||
format = mkDefault (mkFormat " $time ");
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0A}";
|
|
||||||
time_format = mkDefault "%I:%M%P";
|
|
||||||
use_12hr = mkDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
character = let
|
|
||||||
vim = "";
|
|
||||||
mkChar = sym: col: " [${sym}](fg:${col}) [](fg:${base0C})";
|
|
||||||
in {
|
|
||||||
success_symbol = mkChar "" "${base0D}";
|
|
||||||
error_symbol = mkChar "" "${base08}";
|
|
||||||
vimcmd_symbol = mkChar vim "${base0A}";
|
|
||||||
vimcmd_replace_one_symbol = mkChar vim "${base0C}";
|
|
||||||
vimcmd_replace_symbol = mkChar vim "${base0C}";
|
|
||||||
vimcmd_visual_symbol = mkChar vim "${base0D}";
|
|
||||||
};
|
|
||||||
|
|
||||||
### Languages ###
|
|
||||||
c = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault langFormat;
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
elixir = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault langFormat;
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
elm = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault langFormat;
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
haskell = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault langFormat;
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
java = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault langFormat;
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
julia = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault langFormat;
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
nodejs = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault langFormat;
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
nim = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault langFormat;
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
python = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
rust = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault langFormat;
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault "";
|
|
||||||
};
|
|
||||||
|
|
||||||
scala = {
|
|
||||||
style = "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault langFormat;
|
|
||||||
disabled = false;
|
|
||||||
symbol = " ";
|
|
||||||
};
|
|
||||||
|
|
||||||
### Tools ###
|
|
||||||
conda = {
|
|
||||||
style = mkDefault "bg:${base02} fg:${base0B}";
|
|
||||||
format = mkDefault (mkFormat "$symbol$environment");
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault "🅒 ";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix_shell = {
|
|
||||||
style = "bg:${base02} fg:${base0C}";
|
|
||||||
format = mkDefault (mkFormat " $symbol $state( \($name\)) ");
|
|
||||||
disabled = mkDefault false;
|
|
||||||
symbol = mkDefault " ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in a new issue