{ config, lib, pkgs, ... }: # The baseline interactive toolset as one deliberate bundle. let cfg = config.modules.toolkit; user = config.user.name; in { options.modules.toolkit.enable = lib.mkEnableOption "the baseline interactive environment — fish, tmux, nvim, git, and direnv — as one unit"; # Each piece is turned on at default priority, so a host can still override any one of them. config = lib.mkIf cfg.enable { home-manager.users.${user}.home.packages = with pkgs; [ eza wget ]; registry.shell-shortcut.${config.networking.hostName} = { ls = { command = "eza -alg --color=always --group-directories-first --icons=always"; abbreviation = false; }; la = { command = "eza -a --color=always --group-directories-first --icons=always"; abbreviation = false; }; ll = { command = "eza -lg --color=always --group-directories-first --icons=always"; abbreviation = false; }; lt = { command = "eza -aT -I '.git' --color=always --group-directories-first --icons=always"; abbreviation = false; }; "l." = { command = "eza -a | grep -e '^\\.'"; abbreviation = false; }; # Walk up the tree. ".." = "cd .."; "..." = "cd ../.."; "...." = "cd ../../.."; cp = "cp -v"; tarnow = "tar -acf "; untar = "tar -zxvf "; wget = "wget -c "; grep = "grep --color=auto"; fgrep = "fgrep --color=auto"; egrep = "egrep --color=auto"; jctl = "journalctl -p 3 -xb"; # Rebuild the system, and reclaim disk from old generations. update = "sudo nixos-rebuild switch --flake .#${config.networking.hostName}"; cleanup = "sudo nix-collect-garbage -d"; }; modules.fish.enable = lib.mkDefault true; # fish is also the login shell, so the bundled environment is what a shell drops into. modules.fish.defaultShell = lib.mkDefault true; modules.tmux.enable = lib.mkDefault true; modules.nvim.enable = lib.mkDefault true; modules.git.enable = lib.mkDefault true; modules.direnv.enable = lib.mkDefault true; }; }