sneeuwvlok/modules/shell/toolset/starship.nix
2024-07-23 23:31:36 +02:00

85 lines
2.1 KiB
Nix

{ config, options, lib, pkgs, ... }:
let
inherit (lib.modules) mkIf;
in
{
options.modules.shell.toolset.starship = let
inherit (lib.options) mkEnableOption;
in { enable = mkEnableOption "minimal shell ricing"; };
config = mkIf config.modules.shell.toolset.starship.enable {
hm.programs.starship = {
enable = true;
settings = let
inherit (config.modules.themes.colors.main) normal bright types;
in {
scan_timeout = 10;
add_newline = true;
line_break.disabled = true;
format = "$username$hostname$nix_shell$git_branch$git_commit$git_state$git_status$directory$jobs$cmd_duration$character";
username = {
style_user = "${normal.blue} bold";
style_root = "${normal.red} bold";
format = "[$user]($style) ";
disabled = false;
show_always = true;
};
hostname = {
ssh_only = false;
ssh_symbol = "🌐 ";
format = "on [$hostname](bold ${normal.red}) ";
trim_at = ".local";
disabled = false;
};
nix_shell = {
symbol = " ";
format = "[$symbol$name]($style) ";
style = "${normal.magenta} bold";
};
git_branch = {
only_attached = true;
format = "[$symbol$branch]($style) ";
symbol = "";
style = "${bright.yellow} bold";
};
git_commit = {
only_detached = true;
format = "[$hash]($style) ";
style = "${bright.yellow} bold";
};
git_state = {
style = "${bright.magenta} bold";
};
git_status = {
style = "${bright.green} bold";
};
directory = {
read_only = " ";
truncation_length = 0;
};
cmd_duration = {
format = "[$duration]($style) ";
style = "${bright.blue}";
};
jobs = {
style = "${bright.green} bold";
};
character = {
success_symbol = "[\\$](${bright.green} bold)";
error_symbol = "[\\$](${bright.red} bold)";
};
};
};
};
}