Home Manager
The user environment for rithviknishad is managed by Home Manager. The profile lives in home/rithviknishad/ and is composed of one small module per app under apps/. It targets Home Manager release 26.05 (home.stateVersion).
It ships two ways (see the flake):
- System-wide with
nixos-rebuild/nh os switchviamodules/home-manager.nix. - Standalone with
nh home switchvia the flake’shomeConfigurationsoutput — fast iteration on dotfiles without a full rebuild.
App modules at a glance
| Module | What it configures |
|---|---|
git | identity, main default branch, pull.rebase, push.autoSetupRemote, fetch.prune |
kitty | terminal — JetBrainsMono Nerd Font, Catppuccin-Mocha theme, 10k scrollback |
firefox | hardened/privacy Firefox via enterprise policies + locked prefs |
zeditor | Zed editor — no telemetry, One Dark, vim mode off |
zsh | zsh + oh-my-zsh (robbyrussell), history, aliases, autosuggest, syntax highlight |
ssh | client config; identity file from the sops-delivered key |
direnv | direnv + nix-direnv, wired into zsh |
opencode | installs the opencode terminal AI agent |
lens | installs Lens (Kubernetes IDE, unfree) |
claude-code | installs Claude Code (unfree) |
python | installs python3; its bundled python symlink makes python resolve to python3 |
Notable details
Shell (zsh)
zsh is enabled at the system level too (programs.zsh.enable in users/rithviknishad.nix) so it’s a valid login shell; Home Manager then configures it. Highlights: 50k shared history with dedup, oh-my-zsh with the git and sudo plugins, and aliases ll, la, gs, gd.
SSH client (ssh)
The module is deliberately machine-agnostic: it only references the private key path /run/secrets/rithviknishad/ssh_id_ed25519. The key itself is delivered out-of-band by sops-nix at the system level. It defines its own * defaults (agent forwarding off, connection multiplexing via a ControlMaster socket, keepalives) and a github.com block using that identity.
Firefox (firefox)
A privacy-hardened Firefox adapted from recipes.nix, expressed as:
- Enterprise policies (
policies.nix): disables telemetry, Pocket, Firefox Accounts, form history, and the built-in AI/”GenerativeAI” features; forces tracking protection; blocks arbitrary extension installs and force-installs an allow-list (uBlock Origin, Privacy Badger, Bitwarden, Dracula theme); replaces the default search engines with a curated set of keyword engines (@npNix Packages,@noNix Options,@ghGitHub, …). - Locked preferences (
prefs.nix): theuser.js-style profile settings.
There used to be a
gnomemodule here (dconf tweaks to stop idle screen-blanking/locking). It was removed along with the GNOME desktop when the display became a cage + btop kiosk.
Adding an app
- Create
home/rithviknishad/apps/<name>/default.nixwith a Home Manager module (either configure aprograms.<name>block or add tohome.packages). - Add
./apps/<name>to theimportslist inhome/rithviknishad/default.nix. - Apply with
nh home switch(user-only) orjust deploy(full system).