# pkgs/ AGENTS.md ## OVERVIEW Custom package registry using `callPackage` pattern for flake-wide availability. ## STRUCTURE - `default.nix`: Central registry (entry point for overlays) - `code2prompt/`: Rust package - `hyprpaper-random/`: Bash script - `launch-webapp/`: Webapp wrapper - `mem0/`: Python package + custom `server.py` - `msty-studio/`: AppImage wrapper - `pomodoro-timer/`: Timer utility - `tuxedo-backlight/`: Hardware control - `zellij-ps/`: Gitea-hosted package ## WHERE TO LOOK - **Register new pkg**: Add entry to `pkgs/default.nix` attribute set - **Modify pkg**: Edit `pkgs//default.nix` (version, hash, deps) - **Check visibility**: `nix flake show` (uses `pkgs/default.nix` via `overlays/default.nix`) - **Add scripts**: Place alongside `default.nix` in package folder (e.g., `mem0/server.py`) ## CONVENTIONS - **CallPackage**: Always use `pkgs.callPackage ./dir {}` in registry - **Dir == Attr**: Package directory name MUST match its registry attribute - **Path literals**: Reference local assets using `./file` within derivations - **Self-contained**: Keep all package-specific files in their own directory ## ANTI-PATTERNS - **Orphaned dirs**: Creating `pkgs/new-pkg/` without updating `pkgs/default.nix` - **Direct flake imports**: Importing packages in `flake.nix` instead of through the registry - **Implicit deps**: Not declaring dependencies in the package function arguments - **Non-derivations**: Placing NixOS/HM modules here (use `modules/` instead)