Building
Build Commands
| Command | Purpose |
|---|---|
nix build.#nixosConfigurations.<host>.config.system.build.toplevel | Build a host's NixOS system |
nix build.#homeConfigurations.<user>@<host>.activationPackage | Build a Home-Manager activation |
nix fmt | Format code and check syntax |
nix flake check | Evaluate all configurations and run linters |
nix flake show | Display available outputs |
nix develop | Open development shell |
nix develop --command true | Test that devShell can be entered |
DevEnv Requirement
This repository uses devenv for devShells and checks. You must provide the devenv-root input override for nix flake check and nix develop:
nix flake check --override-input devenv-root "file+file://$PWD/.devenv/root"
nix develop --override-input devenv-root "file+file://$PWD/.devenv/root"Common Build Patterns
Build a specific host
# Build nixdev server
nix build .#nixosConfigurations.nixdev.config.system.build.toplevel
# Build nixmi desktop
nix build .#nixosConfigurations.nixmi.config.system.build.toplevelBuild a user's home configuration
# Build racci's config on nixmi
nix build .#homeConfigurations."racci@nixmi".activationPackageEvaluate without building
# Check if configuration evaluates
nix eval .#nixosConfigurations.nixdev.config.system.build.toplevel --apply 'x: "ok"'
# Get a specific option value
nix eval .#nixosConfigurations.nixdev.config.networking.hostNameFormat specific files
# Format changed files
nix fmt path/to/file.nix
# Format multiple files
nix fmt modules/nixos/services/*.nixTroubleshooting Builds
If a build fails:
- Check the error message for the failing derivation
- Try
nix log <drv>to see build logs - Use
--show-tracefor evaluation errors:nix build.#... --show-trace - For infinite recursion, check for circular imports or option definitions