sneeuwvlok/modules/home/shell/toolset/starship.nix

88 lines
2 KiB
Nix

{ config, lib, user, ... }:
let
inherit (lib.modules) mkIf;
inherit (lib.options) mkEnableOption;
in
{
options.modules.${user}.shell.toolset.starship = {
enable = mkEnableOption "fancy pansy shell prompt";
};
config = mkIf config.modules.${user}.shell.toolset.starship.enable {
home-manager.users.${user}.programs.starship = {
enable = true;
settings = {
scan_timeout = 10;
# Inserts a blank line between shell prompts
add_newline = true;
line_break.disabled = true;
format = "[ ](bold green)$os$username$hostname$nix_shell$git_branch$git_commit$git_state$git_status$directory$jobs$cmd_duration\n$character";
username = {
style_user = "cyan bold";
style_root = "red bold";
format = "[$user]($style) ";
disabled = false;
show_always = true;
};
hostname = {
ssh_only = false;
ssh_symbol = "🌐 ";
format = "on [$hostname](bold red) ";
trim_at = ".local";
disabled = false;
};
nix_shell = {
symbol = " ";
format = "[$symbol$name]($style) ";
style = "magenta bold";
};
git_branch = {
only_attached = true;
format = "[$symbol$branch]($style) ";
symbol = " ";
style = "yellow bold";
};
git_commit = {
only_detached = true;
format = "[$hash]($style) ";
style = "yellow bold";
};
git_state = {
style = "magenta bold";
};
git_status = {
style = "green bold";
};
directory = {
read_only = " 󰌾";
truncation_length = 0;
};
cmd_duration = {
format = "[$duration]($style) ";
style = "blue";
};
jobs = {
style = "green bold";
};
character = {
success_symbol = "[>](green bold)";
error_symbol = "[x](red bold)";
};
};
};
};
}