Requirements
Before submitting changes, ensure:
- All Nix files are formatted — Run
nix fmt before committing
- All tests pass — Run
nix flake check
- Commit messages follow Conventional Commits — e.g.,
feat:, fix:, chore:
Development commands
| Command | Description |
|---|
nix flake check | Validate configuration and run all tests |
nix fmt | Format all code (nixfmt, deadnix, statix, shellcheck, yamlfmt) |
nix develop | Enter development shell with necessary tools |
nix flake show | Display all flake outputs |
nix run | Run a QEMU VM with all features enabled (x86_64-linux) |
nix fmt runs multiple tools:
- nixfmt — Nix code formatting
- deadnix — Unused variable detection
- statix — Nix linting
- shellcheck — Shell script linting
- yamlfmt — YAML formatting
All must pass. CI enforces formatting with nix fmt -- --ci.
Adding features
- Create the module file in the appropriate
modules/ subdirectory
- Add the import to the corresponding
default.nix
- Define new options in
modules/nixos/options.nix under marchyo.*
- Add an evaluation test in
tests/module-tests.nix
- Run
nix fmt and nix flake check
See Adding Modules for detailed instructions.
Follow the Conventional Commits specification:
feat: add support for custom wallpapers
fix: resolve audio crackling on PipeWire
chore: update flake inputs
docs: add keyboard configuration guide
refactor: simplify GPU vendor detection
Last modified on April 3, 2026