forked from Shinonome/dots-hyprland
93 lines
2.4 KiB
Nix
93 lines
2.4 KiB
Nix
{
|
||
config,
|
||
lib,
|
||
...
|
||
}: let
|
||
cfg = config.programs.illogical-impulse;
|
||
in {
|
||
options = {
|
||
programs.illogical-impulse = {
|
||
enable = lib.mkOption {
|
||
type = lib.types.bool;
|
||
default = false;
|
||
description = "Enable the illogical-impulse program module.";
|
||
};
|
||
settings = {
|
||
simpleStarship = {
|
||
enable = lib.mkOption {
|
||
type = lib.types.bool;
|
||
default = false;
|
||
description = "Uses a custom pure-like starship configuration.";
|
||
};
|
||
};
|
||
};
|
||
};
|
||
};
|
||
|
||
config = lib.mkIf cfg.enable {
|
||
programs.starship = lib.mkIf cfg.settings.simpleStarship.enable {
|
||
enable = true;
|
||
settings = {
|
||
format = lib.concatStrings [
|
||
"$username"
|
||
"$hostname"
|
||
"$directory"
|
||
"$git_branch"
|
||
"$git_state"
|
||
"$git_status"
|
||
"$cmd_duration"
|
||
"$line_break"
|
||
"$python"
|
||
"$character"
|
||
];
|
||
directory = {
|
||
style = "blue";
|
||
};
|
||
character = {
|
||
success_symbol = "[→](purple)";
|
||
error_symbol = "[→](red)";
|
||
vimcmd_symbol = "[←](green)";
|
||
};
|
||
git_branch = {
|
||
format = "[$branch]($style)";
|
||
style = "bright-black";
|
||
};
|
||
git_status = {
|
||
format = "[(*$conflicted$untracked$modified$staged$renamed$deleted) $ahead_behind$stashed]($style)";
|
||
style = "cyan";
|
||
conflicted = "";
|
||
untracked = "";
|
||
modified = "";
|
||
staged = "";
|
||
renamed = "";
|
||
deleted = "";
|
||
stashed = "≡";
|
||
};
|
||
git_state = {
|
||
format = "([$state( $progress_current/$progress_total)]($style)) ";
|
||
style = "bright-black";
|
||
};
|
||
cmd_duration = {
|
||
format = "[$duration]($style) ";
|
||
style = "yellow";
|
||
};
|
||
python = {
|
||
format = "[$virtualenv]($style) ";
|
||
style = "bright-black";
|
||
};
|
||
};
|
||
};
|
||
|
||
home.file.".config/starship.toml" = lib.mkIf (!cfg.settings.simpleStarship.enable) {
|
||
source = builtins.path {path = ../../.config/starship.toml;};
|
||
};
|
||
};
|
||
|
||
assertions = [
|
||
{
|
||
assertion = !(cfg.settings.simpleStarship.enable && !cfg.enable);
|
||
message = "The 'simpleStarship' setting cannot be enabled if 'illogical-impulse' is disabled.";
|
||
}
|
||
];
|
||
}
|