| name | nix-cleanup |
| description | CI workflow checks and code cleanup tools |
NixOS CI and Code Cleanup
This skill provides context about the CI workflow and code cleanup tools used in this repository.
CI Workflow
The CI is defined in @.github/workflows/ci.yml and runs three main checks:
Flake Check (
nix flake check --no-build)- Validates flake syntax and structure
- Checks all NixOS configurations
- Ensures all outputs are buildable
- Does NOT build derivations (fast check)
Statix (
nix run nixpkgs#statix -- check .)- Lints Nix code for common issues and anti-patterns
- Suggests best practices and improvements
- Can auto-fix issues with
statix fix
Deadnix (
nix run nixpkgs#deadnix -- .)- Detects unused code and bindings
- Finds dead
letbindings, function arguments, etc. - Can auto-fix with
deadnix -e
Running Checks Locally
Always run these before committing:
# Quick check (no builds)
nix flake check --no-build
# Lint for anti-patterns
nix run nixpkgs#statix -- check .
# Find dead code
nix run nixpkgs#deadnix -- .
Auto-fixing Issues
# Fix statix issues
nix run nixpkgs#statix -- fix .
# Remove dead code
nix run nixpkgs#deadnix -- -e .
Common Issues
Unused Let Bindings
# Bad - 'foo' is never used
let
foo = "unused";
bar = "used";
in bar
# Good - removed unused binding
let
bar = "used";
in bar
Unused Function Parameters
# Bad - 'pkgs' is never used
{ pkgs, lib, ... }: {
imports = [ ];
}
# Good - removed from signature
{ lib, ... }: {
imports = [ ];
}
Best Practices
- Always run
/nix-checkslash command after making changes - Use
statixanddeadnixto keep code clean - CI runs on every push and PR
- All checks must pass before merging