Agent skill
infra-nix
Use when working with Nix in the infra monorepo - devShells, devbox NixOS container, and Home-Manager user config.
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/infra-nix
SKILL.md
Infra Nix Patterns
Overview
This repo uses Nix for development environments and the devbox container. See the global nix skill for general Nix knowledge.
DevShells
| Shell | Purpose | Enter |
|---|---|---|
| default | Terraform, Ansible, SOPS | nix develop or direnv allow |
| media-pipeline | Go development | nix develop .#media-pipeline |
| session-manager | Bash/shellcheck | nix develop .#session-manager |
Add Package to DevShell
Edit flake.nix, find the relevant shell:
nix
default = pkgsUnfree.mkShell {
buildInputs = with pkgsUnfree; [
# existing...
newpackage # Add here
];
};
Then: direnv reload or re-enter shell.
Note: Use pkgsUnfree for unfree packages (terraform), pkgs for everything else.
Devbox Container
The only NixOS host. Runs in Proxmox LXC (CTID 320, IP .140).
Key Files
flake.nix # Flake entry point
nixos/hosts/devbox/configuration.nix # System config
home/users/cuiv/ # Home-Manager config
├── default.nix # Main user config
├── git.nix # Git configuration
├── tools.nix # CLI tools
└── shell.nix # Shell configuration
Rebuild
From within devbox (SSH first):
bash
ssh devbox
cd /path/to/infra
# Build and switch
sudo nixos-rebuild switch --flake .#devbox
# Build only (test)
nixos-rebuild build --flake .#devbox
# Rollback if broken
sudo nixos-rebuild switch --rollback
Add System Package
Edit nixos/hosts/devbox/configuration.nix:
nix
environment.systemPackages = with pkgs; [
# existing...
newpackage
];
Add User Package
Edit home/users/cuiv/tools.nix (or create new module):
nix
home.packages = with pkgs; [
newpackage
];
Workflow
- Make changes to flake.nix or NixOS/Home-Manager configs
- Format:
nix fmt(uses nixfmt-rfc-style) - Check:
nix flake check - If devShell change:
direnv reload - If devbox change: SSH to devbox, run rebuild
- Commit both
flake.nixandflake.lock
Never Do
- Edit
flake.lockmanually - Change
system.stateVersionorhome.stateVersion - Commit flake.nix without testing the change first
- Delete all old generations before verifying new config works
Didn't find tool you were looking for?