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}.";
|
||||
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;
|
||||
ripgrep = enabled;
|
||||
ssh = enabled;
|
||||
starship = enabled;
|
||||
};
|
||||
}
|
||||
#
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
./nh.nix
|
||||
./ripgrep.nix
|
||||
./ssh.nix
|
||||
./starship
|
||||
./waybar.nix
|
||||
|
||||
# TODO: uncomment when swaylock is figured out
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
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