nix/common/terminal.nix

76 lines
1.7 KiB
Nix

{
lib,
pkgs,
inputs,
getFlakePkg',
...
}:
let
inherit (pkgs) fish;
in
{
imports = [
inputs.culr.nixosModules.culr
];
programs.culr = {
enable = true;
pattern = "rainbow-split";
};
programs.fish = {
enable = true;
shellAbbrs = {
"gco" = "git checkout";
"gcb" = "git checkout -b";
"gp" = "git push";
"gpf" = "git push --force";
"gap" = "git commit -a --amend --no-edit && git push --force";
"gl" = "git pull";
"ga" = "git add";
"gcam" = "git commit -am";
"gcl" = "git clone";
"gcd" = "git clone --depth 1";
":q" = "exit";
};
shellAliases = {
"l" = "eza -lg --icons=always --colour=always $argv | culr";
"la" = "eza -lg --icons=always --colour=always $argv | culr";
"p" = "ps $argv | culr";
"mnt" = "mount | culr";
};
interactiveShellInit =
let
comma = lib.getExe' (getFlakePkg' inputs.nix-index-database "comma-with-db") "comma";
in
''
function fish_title
set -q argv[1]; or set argv fish
echo (fish_prompt_pwd_dir_length=100 prompt_pwd): $argv;
end
function fish_command_not_found
set args (count $argv)
if [ $args -gt 1 ]
${comma} "$argv[1]" "$argv[2..]"
else
${comma} "$argv[1]"
end
end
${./rice/header.sh}
'';
};
programs.command-not-found.enable = false;
programs.zoxide = {
enable = true;
enableFishIntegration = true;
};
environment.systemPackages = [
fish
];
environment.shells = [ fish ];
users.defaultUserShell = fish;
console.font = "Lat2-Terminus16";
environment.sessionVariables = {
EDITOR = "hx";
};
}