dots/home/modules/shell/shell.nix

125 lines
2.9 KiB
Nix

{
pkgs,
inputs,
system,
...
}: {
home.packages = with pkgs; [
bat
fzf
fd
eza
btop
man-pages
inputs.floatc.packages.${system}.default
];
home.sessionVariables = {
PAGER = "bat -l man";
MANPAGER = "bat -l man";
};
programs.nushell = {
enable = true;
extraConfig = builtins.readFile ./config.nu;
settings.show_banner = false;
shellAliases = {
cat = "bat -p -P";
nix-shell = "nix-shell --run nu";
garbage = " sudo nix-collect-garbage --delete-old";
c = "clear";
};
};
programs.zellij = {
enable = true;
enableBashIntegration = false;
settings = {
on_force_close = "quit";
simplified_ui = true;
pane_frames = false;
default_layout = "compact";
show_startup_tips = false;
};
};
programs.starship = {
enable = true;
enableNushellIntegration = true;
enableTransience = true;
settings = {
format = "\${custom.shell_nix}\${custom.shell_normal} $directory\n$character\n";
# Prompt character — nix-shell pink on error doubles as a hint,
# but full conditional colouring isn't possible in the character module.
character = {
success_symbol = "[~>](#92D4FE)";
error_symbol = "[~>](#D81E5B)";
};
# Transient prompt (static colour — Starship can't conditionally
# change it based on env vars without a full custom module)
transient_prompt = {
format = "[~> ](#92D4FE)";
};
directory = {
# Leading icon + path + powerline closing arrow
format = "[ $path ](bg:#303C68 fg:white)[](fg:#303C68)";
truncation_length = 1;
truncate_to_repo = false;
};
custom = {
# Shown only inside a nix-shell
shell_nix = {
description = "Nix shell indicator";
command = "echo";
when = ''test -n "$IN_NIX_SHELL"'';
format = "[ nix-shell ](bg:#D81E5B fg:white)[](fg:#D81E5B)";
shell = ["bash" "--noprofile" "--norc"];
};
# Shown when NOT in a nix-shell
shell_normal = {
description = "Current shell indicator";
command = "echo";
when = ''test -z "$IN_NIX_SHELL"'';
format = "[ nu ](bg:#92D4FE fg:black)[](fg:#92D4FE)";
shell = ["bash" "--noprofile" "--norc"];
};
};
};
};
gtk.enable = true;
qt.enable = true;
programs = {
btop.enable = true;
bash.enable = true;
fzf.enable = true;
eza.enable = true;
direnv = {
enable = true;
silent = true;
nix-direnv .enable = true;
};
git = {
enable = true;
package = pkgs.gitFull;
settings = {
user.name = "Jiří Maxmilián Stříbrný";
user.email = "max.stribrny@gmail.com";
init.defaultBranch = "main";
push.autoSetupRemote = true;
github.user = "maxstrb";
credential.helper = "store";
};
};
};
}