원클릭으로
nix-packaging
Package new software or update existing packages using Nix
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Package new software or update existing packages using Nix
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when creating or editing Obsidian Bases `.base` files with filters, formulas, and views.
Use only when interacting with an already running Obsidian GUI instance through the obsidian CLI.
Use when creating or editing Obsidian-flavored Markdown with wikilinks, embeds, callouts, and frontmatter.
Use when searching markdown knowledge bases, notes, and docs with QMD.
Common mistakes in NixOS code and standards for reviewing and refactoring NixOS repositories.
| name | nix-packaging |
| description | Package new software or update existing packages using Nix |
Create new Nix packages or update existing ones, with language-specific examples and guidance.
packages in flake.nix).nix build .#<package-name>, read errors, fix issues, and rebuild until successful.All custom packages live in packages/<package-name>/ with a consistent structure:
packages/
<package-name>/
default.nix # Entry point that calls `callPackage` on package.nix
package.nix # The actual package definition (optional if defined in default.nix)
default.nix template{ pkgs }:
pkgs.callPackage ./package.nix { }
This structure makes packages self-contained and ready to import from anywhere in the repository using pkgs.callPackage ./path/to/packages/<package-name> { }. The flake's nixpkgs is passed through automatically via callPackage.
Add packages to flake.nix so they're buildable with nix build .#<package-name> and accessible throughout your configuration:
# In flake.nix outputs
let
system = "x86_64-linux";
pkgs = inputs.nixpkgs-unstable.legacyPackages.${system};
in
{
packages.${system} = {
headroom-ai = pkgs.callPackage ./packages/headroom-ai { };
rlm-cli = pkgs.callPackage ./packages/rlm-cli { };
};
}
Pass self through specialArgs so modules can access self.packages:
In flake.nix:
let
specialArgs = { inherit inputs self; };
in
nixosConfigurations.myhost = inputs.nixpkgs.lib.nixosSystem {
inherit system specialArgs;
# ...
};
For Home Manager modules, also add to extraSpecialArgs:
home-manager.extraSpecialArgs = { inherit inputs self; };
In service modules:
{ config, lib, pkgs, self, ... }:
let
myPackage = self.packages.${pkgs.system}.my-package;
in
{
# Use myPackage in your configuration
}
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.