/*
Opinionated shell environment.
*/
{
flake.modules.nixos.shell = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
btop
carapace
elvish
fd
ripgrep
silicon
sl
];
programs.direnv = {
enable = true;
nix-direnv.enable = true;
silent = true;
};
};
flake.modules.homeManager.shell = {...}: {
home.file = {
".config/elvish/lib/direnv.elv" = {
executable = true;
text = ''
## Hook for direnv as of direnv 2.34.0
set @edit:before-readline = $@edit:before-readline {
try {
var m = [("direnv" export elvish | from-json)]
if (> (count $m) 0) {
set m = (all $m)
keys $m | each { |k|
if $m[$k] {
set-env $k $m[$k]
} else {
unset-env $k
}
}
}
} catch e {
echo $e
}
}
'';
};
".config/elvish/rc.elv" = {
executable = true;
text = ''
#!/usr/bin/env elvish
use direnv
eval (starship init elvish)
eval (carapace _carapace|slurp)
'';
};
};
programs.bash = {
enable = true;
bashrcExtra = ''
eval "$(direnv hook bash)"
eval "$(starship init bash)"
'';
};
programs.starship = {
enable = true;
settings = {
add_newline = false;
scan_timeout = 10;
shell = {
disabled = false;
bash_indicator = "bsh";
elvish_indicator = "elv";
};
};
};
};
}