Shared Utilities & Command-Line Tools

All machines managed by this flake come with a carefully curated set of small but powerful command-line programs. The goal is to provide a consistent and delightful developer experience on both NixOS and macOS (Darwin).


Why these tools?

  • A predictable environment across every computer you log in to.
  • Fast and modern replacements for the ageing default utilities.
  • Sensible defaults and the lovely Catppuccin colour palette out-of-the-box.

How packages are installed

  1. System packages – added to environment.systemPackages, they are available to every user.
  2. User packages – installed with Home-Manager so each user gets their own copy and can opt-out if desired.

The lists below are grouped by purpose so you can quickly see what is installed and why.


System packages

Package(s)Purpose
wget / curlDownload files over HTTP / HTTPS
coreutilsGNU core utilities (ls, cp, mv, …)
unzipExtract .zip archives
opensslCryptographic toolkit and SSL/TLS helpers
dnsutilsDNS look-ups (dig, nslookup)
nmapPort scanner and network exploration
util-linuxAssorted low-level system utilities
whoisQuery domain registration information
moreutilsAdditional Unix toys such as sponge
gitDistributed version control
age / sops / ssh-to-ageEncryption and secrets management
tcpdumpNetwork packet capture
nvdDiff Nix package versions

User packages (Home-Manager)

PackagePurpose
tlrcA colourful tldr client
fontconfigFont configuration utilities
fdFaster alternative to find
jq / yqJSON and YAML processors
direnvAutomatic loading of .envrc files
atacREST & GraphQL API tester
commaRun a binary from the Nix registry without installing it
autojumpSmart directory jumping
ollamaLocal LLM manager
nixvimCustom Neovim distribution

Modules that add extra configuration

Some programs benefit from additional setup. The .nix files in this folder provide sensible defaults, shell integrations and themed output.

ModuleWhat it configures
zsh.nixZ-shell with plugins, aliases and Catppuccin syntax highlighting
starship.nixBeautiful prompt with Git integration
kitty.nixGPU-accelerated terminal with transparency & blur on macOS
direnv.nixEnables direnv and hooks it into Zsh
eza.nixModern replacement for ls with icons
yazi.nixTUI file manager
zoxide.nixJump to directories you visit regularly
fzf.nixFuzzy finder wired into the shell
bat.nixSyntax-highlighted cat replacement
ripgrep.nixUltra-fast text search
bottom.nixTUI resource monitor (think htop on caffeine)
k9s.nixKubernetes dashboard in the terminal
ssh.nixOpinionated SSH client configuration
sops.nixAge + SOPS integration for secret management
nh.nixQuality-of-life helper for working with Nix flakes

Cross-platform considerations

Each module contains conditional logic so that:

  • File paths are correct on both Linux and macOS.
  • Persistent data is stored on ZFS datasets when they are available.
  • macOS-specific niceties, such as Keychain integration, Just Work™.

Usage

After activating the system (nixos-rebuild switch or darwin-rebuild switch) the utilities are ready to use. Many come with handy aliases defined in zsh.nix – feel free to tweak them to your liking.