243 lines
7 KiB
Nix
243 lines
7 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib) mkIf mkDefault concatStrings;
|
|
|
|
cfg = config.marleyos.programs.starship;
|
|
inherit (config.marleyos.theme) colors;
|
|
in
|
|
{
|
|
config = mkIf (cfg.enable && colors.isRosePine) {
|
|
programs.starship.settings =
|
|
let
|
|
mkFormat = t: " [](fg:overlay)[${t}]($style)[](fg:overlay) ";
|
|
langFormat = mkFormat "$symbol$version";
|
|
in
|
|
{
|
|
format = mkDefault (concatStrings [
|
|
"$username"
|
|
"$directory"
|
|
"$nix_shell"
|
|
"$git_branch"
|
|
"$git_status"
|
|
"$fill"
|
|
"$c"
|
|
"$elixir"
|
|
"$elm"
|
|
"$golang"
|
|
"$haskell"
|
|
"$java"
|
|
"$julia"
|
|
"$nodejs"
|
|
"$nim"
|
|
"$rust"
|
|
"$scala"
|
|
"$python"
|
|
"$time"
|
|
"$line_break"
|
|
"$character"
|
|
]);
|
|
|
|
# TODO: Make the palette available from rose-pine-nix.
|
|
palettes.rose-pine =
|
|
if (colors.flavor == "moon") then
|
|
(mkDefault {
|
|
overlay = "#393552";
|
|
love = "#eb6f92";
|
|
gold = "#f6c177";
|
|
rose = "#ea9a97";
|
|
pine = "#3e8fb0";
|
|
foam = "#9ccfd8";
|
|
iris = "#c4a7e7";
|
|
})
|
|
else if (colors.flavor == "dawn") then
|
|
(mkDefault {
|
|
overlay = "#f2e9e1";
|
|
love = "#b4637a";
|
|
gold = "#ea9d34";
|
|
rose = "#d7827e";
|
|
pine = "#286983";
|
|
foam = "#56949f";
|
|
iris = "#907aa9";
|
|
})
|
|
else
|
|
(mkDefault {
|
|
overlay = "#26233a";
|
|
love = "#eb6f92";
|
|
gold = "#f6c177";
|
|
rose = "#ebbcba";
|
|
pine = "#31748f";
|
|
foam = "#9ccfd8";
|
|
iris = "#c4a7e7";
|
|
});
|
|
|
|
palette = "rose-pine";
|
|
|
|
username = {
|
|
disabled = mkDefault false;
|
|
format = mkDefault (mkFormat " $user ");
|
|
show_always = mkDefault true;
|
|
style_root = mkDefault "bg:overlay fg:iris";
|
|
style_user = mkDefault "bg:overlay fg:iris";
|
|
};
|
|
|
|
directory = {
|
|
format = mkDefault (mkFormat " $path ");
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
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:overlay fg:foam";
|
|
symbol = mkDefault "";
|
|
};
|
|
|
|
git_status = {
|
|
disabled = mkDefault false;
|
|
style = mkDefault "bg:overlay fg:love";
|
|
format = mkDefault (mkFormat " $all_status$ahead_behind");
|
|
up_to_date = mkDefault "[ ✓ ](bg:overlay fg:iris)";
|
|
untracked = mkDefault "[?\\($count\\)](bg:overlay fg:gold)";
|
|
stashed = mkDefault "[\\$](bg:overlay fg:iris)";
|
|
modified = mkDefault "[!\\($count\\)](bg:overlay fg:gold)";
|
|
renamed = mkDefault "[»\\($count\\)](bg:overlay fg:iris)";
|
|
deleted = mkDefault "[✘\\($count\\)](style)";
|
|
staged = mkDefault "[++\\($count\\)](bg:overlay fg:gold)";
|
|
ahead = mkDefault "[⇡\\(\${count}\\)](bg:overlay fg:foam)";
|
|
diverged = mkDefault "⇕[\\[](bg:overlay fg:iris)[⇡\\(\${ahead_count}\\)](bg:overlay fg:foam)[⇣\\(\${behind_count}\\)](bg:overlay fg:rose)[\\]](bg:overlay fg:iris)";
|
|
behind = mkDefault "[⇣\\(\${count}\\)](bg:overlay fg:rose)";
|
|
};
|
|
|
|
fill = {
|
|
style = mkDefault "fg:overlay";
|
|
symbol = mkDefault " ";
|
|
};
|
|
|
|
time = {
|
|
disabled = mkDefault false;
|
|
format = mkDefault (mkFormat " $time ");
|
|
style = mkDefault "bg:overlay fg:rose";
|
|
time_format = mkDefault "%I:%M%P";
|
|
use_12hr = mkDefault true;
|
|
};
|
|
|
|
character =
|
|
let
|
|
vim = "";
|
|
mkChar = sym: col: " [${sym}](fg:${col}) [](fg:foam)";
|
|
in
|
|
{
|
|
success_symbol = mkChar "" "iris";
|
|
error_symbol = mkChar "" "love";
|
|
vimcmd_symbol = mkChar vim "rose";
|
|
vimcmd_replace_one_symbol = mkChar vim "foam";
|
|
vimcmd_replace_symbol = mkChar vim "foam";
|
|
vimcmd_visual_symbol = mkChar vim "iris";
|
|
};
|
|
|
|
### Languages ###
|
|
c = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
format = mkDefault langFormat;
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault " ";
|
|
};
|
|
|
|
elixir = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
format = mkDefault langFormat;
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault " ";
|
|
};
|
|
|
|
elm = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
format = mkDefault langFormat;
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault " ";
|
|
};
|
|
|
|
haskell = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
format = mkDefault langFormat;
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault " ";
|
|
};
|
|
|
|
java = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
format = mkDefault langFormat;
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault " ";
|
|
};
|
|
|
|
julia = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
format = mkDefault langFormat;
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault " ";
|
|
};
|
|
|
|
nodejs = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
format = mkDefault langFormat;
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault " ";
|
|
};
|
|
|
|
nim = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
format = mkDefault langFormat;
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault " ";
|
|
};
|
|
|
|
python = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault " ";
|
|
};
|
|
|
|
rust = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
format = mkDefault langFormat;
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault "";
|
|
};
|
|
|
|
scala = {
|
|
style = "bg:overlay fg:pine";
|
|
format = mkDefault langFormat;
|
|
disabled = false;
|
|
symbol = " ";
|
|
};
|
|
|
|
### Tools ###
|
|
conda = {
|
|
style = mkDefault "bg:overlay fg:pine";
|
|
format = mkDefault (mkFormat "$symbol$environment");
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault "🅒 ";
|
|
};
|
|
|
|
nix_shell = {
|
|
style = "bg:overlay fg:foam";
|
|
format = mkDefault (mkFormat " $symbol $state( \($name\)) ");
|
|
disabled = mkDefault false;
|
|
symbol = mkDefault " ";
|
|
};
|
|
};
|
|
};
|
|
}
|