{ 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_greeting ${./rice/header.sh} echo "" end 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 ''; }; 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"; }; }