nix-cleanup
CI workflow checks and code cleanup tools
$ 安裝
git clone https://github.com/tobi/dotnix /tmp/dotnix && cp -r /tmp/dotnix/.claude/skills/nix-cleanup ~/.claude/skills/dotnix// tip: Run this command in your terminal to install the skill
SKILL.md
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
