nix-packaging
Package new software or update existing packages using Nix
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Overview
Create new Nix packages or update existing ones, with language-specific examples and guidance.
Workflow: Creating a New Package
- Identify the software source: internal to this repo or external (e.g., a GitHub repository).
- Determine the programming language(s) used.
- Analyze the software structure (build system, dependencies, configuration files).
- Create the package following language-specific guidance below.
- Optionally, integrate the package into the current project (e.g., add to overlay and expose via
packagesinflake.nix). - Test iteratively: run
nix build .#<package-name>, read errors, fix issues, and rebuild until successful.
Workflow: Updating an Existing Package
Typically, update the version and source fetching attributes (e.g., fetchFromGitHub). The hash field must also be updated using one of these methods:
Method 1: Calculate the new hash directly
# Get the hash
nix-prefetch-url --type sha256 --unpack https://github.com/owner/repo/archive/refs/tags/v<NEW_VERSION>.tar.gz
# Convert to SRI format
nix hash convert --hash-algo sha256 <old-hash>
Method 2: Let Nix tell you the hash
Set hash = ""; and run the build. The error message will display the correct hash.
For language-specific update steps, see the references below.
Language-Specific Packaging Skills
- Python - Packaging Python modules
- Rust - Packaging Rust applications
- JavaScript/TypeScript - Packaging npm applications
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!