@vmvarela/semantic-release-nix
v0.1.1
Published
semantic-release plugin to publish binaries to a Nix flake repo
Readme
@vmvarela/semantic-release-nix
semantic-release plugin that publishes CLI binaries to a Nix flake repository.
Install
npm install --save-dev @vmvarela/semantic-release-nixUsage
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["@vmvarela/semantic-release-nix", {
"repo": "vmvarela/nix-packages",
"assets": ["my-cli-x86_64-linux", "my-cli-aarch64-linux", "my-cli-x86_64-macos", "my-cli-aarch64-macos"]
}],
"@semantic-release/github"
]
}Config
| Option | Type | Description |
|-----------------|-------------------------------|---------------------------------------------------|
| repo | string | GitHub repo to push versions.json to (owner/repo) |
| assets | string[] | Asset filenames to compute checksums for |
| platform_map | Record<string, string> | Optional. Map asset name patterns to Nix platform keys |
Default platform mapping
| Asset pattern | Nix platform key |
|-------------------|------------------|
| x86_64-linux | x86_64-linux |
| aarch64-linux | aarch64-linux |
| x86_64-macos | x86_64-darwin |
| aarch64-macos | aarch64-darwin |
Override with platform_map:
{
"platform_map": {
"x86_64-macos": "x86_64-darwin-24"
}
}How it works
- Reads binary assets from
dist/ - Computes SHA-256 hash of each asset
- Maps each asset to a Nix platform key based on filename patterns
- Writes a
versions.jsonfile todist/with format:{ "x86_64-linux": { "url": "...", "sha256": "...", "version": "1.0.0" }, "aarch64-linux": { "url": "...", "sha256": "...", "version": "1.0.0" }, "x86_64-darwin": { "url": "...", "sha256": "...", "version": "1.0.0" }, "aarch64-darwin": { "url": "...", "sha256": "...", "version": "1.0.0" } } - Pushes
versions.jsontopkgs/{repoName}/versions.jsonin the configured repo via GitHub Contents API
