Skip to main content

Requirements

Before submitting changes, ensure:
  1. All Nix files are formatted — Run nix fmt before committing
  2. All tests pass — Run nix flake check
  3. Commit messages follow Conventional Commits — e.g., feat:, fix:, chore:

Development commands

CommandDescription
nix flake checkValidate configuration and run all tests
nix fmtFormat all code (nixfmt, deadnix, statix, shellcheck, yamlfmt)
nix developEnter development shell with necessary tools
nix flake showDisplay all flake outputs
nix runRun a QEMU VM with all features enabled (x86_64-linux)

Code formatting

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

  1. Create the module file in the appropriate modules/ subdirectory
  2. Add the import to the corresponding default.nix
  3. Define new options in modules/nixos/options.nix under marchyo.*
  4. Add an evaluation test in tests/module-tests.nix
  5. Run nix fmt and nix flake check
See Adding Modules for detailed instructions.

Commit message format

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