# Shared terminal-tools profile. # # The set of CLI tooling I want available on every machine I use: # - mreow + yarn pick this up via home/profiles/no-gui.nix # - muffin picks this up via hosts/muffin/home.nix # - any non-NixOS machine picks it up via the homeConfigurations output in flake.nix # # Scope is intentionally narrow: the daily-driver shell (fish + helix + modern # CLI replacements + git). No language toolchains, no hardware-specific admin # tools, no GUI-adjacent utilities — those belong in profiles layered on top. { lib, site_config, pkgs, ... }: { imports = [ ../progs/fish.nix ../progs/helix.nix ]; home.packages = with pkgs; [ # modern CLI replacements for POSIX basics eza # ls bat # cat delta # diff viewer (also wired into git below) dust # du duf # df gping # ping, with a graph ripgrep # grep, respects .gitignore fd # find tldr # man, simpler # system / process tools htop bottom lsof file killall unzip tmux wget # network dig mtr # text / data jq hexyl tinyxxd b3sum typos # media (handy from a shell, lightweight enough to be universal) imagemagick # universal dev-adjacent git-crypt hyperfine # nix nixfmt-tree # shell greeter (invoked from fish's interactiveShellInit) pfetch-rs ]; # Git: mechanical config + identity lives here so `git` works out of the box # on every machine. Signing is opt-in via lib.mkDefault so machines without # my GPG key can override `signing.signByDefault = false` without fighting # priority. programs.git = { enable = true; package = pkgs.git; lfs.enable = true; ignores = [ ".sisyphus" ]; settings = { init.defaultBranch = "main"; push.autoSetupRemote = true; user = { name = "Simon Gardling"; email = site_config.contact_email; }; }; signing = { format = "openpgp"; key = lib.mkDefault "9AB28AC10ECE533D"; signByDefault = lib.mkDefault true; }; }; # Pretty diff viewer, wired into git. programs.delta = { enable = true; enableGitIntegration = true; }; }