Personal Nix flake with packages and tools not in nixpkgs.
# flake.nix
inputs.nix-packages.url = "git+https://git.alc.xyz/alcxyz/nix-packages.git";Then reference packages as inputs.nix-packages.packages.${system}.<name>.
| Package | Description | Platforms |
|---|---|---|
| ghostty | Ghostty terminal emulator | aarch64-darwin x86_64-darwin |
| herdr | Agent multiplexer that lives in your terminal | x86_64-linux aarch64-linux aarch64-darwin |
| helium | Helium browser | x86_64-linux aarch64-darwin x86_64-darwin |
| kdash | Simple and fast dashboard for Kubernetes | x86_64-linux aarch64-linux x86_64-darwin aarch64-darwin |
| t3code | T3 Code — AI coding assistant desktop app | x86_64-linux aarch64-darwin |
t3code-fork |
T3 Code with locally maintained, narrowly scoped patches | x86_64-linux aarch64-darwin |
| claude-code | Agentic coding tool that lives in your terminal | all |
| codex-cli | Lightweight coding agent that runs in your terminal | x86_64-linux aarch64-linux x86_64-darwin aarch64-darwin |
| codex-app-server | Codex app server for GUI integrations | x86_64-linux aarch64-linux x86_64-darwin aarch64-darwin |
| ndrop | Scratchpad toggle helper for Wayland compositors | x86_64-linux |
| OpenZFS 7.1 snapshot | Pinned unreleased OpenZFS snapshot with Linux 7.1 support | x86_64-linux aarch64-linux |
The default package is Helium on its supported systems, exposed through
packages.<system>.default. ARM Linux has no default package until a verified
Helium artifact is available; choose a named package there. The complete export
matrix is documented in ADR-0003.
Internal tools built from source, tracked in this repo.
| Tool | Description | Platforms |
|---|---|---|
| k8s-node-reboot | Guarded Kubernetes node reboot, power, and network-path lifecycle helpers | all |
| nix-gc-maintenance | Guarded Nix profile retention and capped garbage collection | all |
| zfs-auto-unlock | Automatic ZFS dataset unlocking | all |
Packages are kept up to date by a daily Forgejo Actions workflow
(.forgejo/workflows/update-packages.yml). When a new upstream release is
detected the workflow computes fresh Nix SRI hashes and opens a Forgejo pull
request against dev.
Each package uses one stable update/<package> branch. If an update PR is
already open, the next updater run refreshes that same branch and PR so a newer
upstream release supersedes the stuck update instead of creating more PR noise.
The update matrix is capped at two concurrent package jobs to avoid flooding
the shared runners. Green update/* pull requests are rebased onto dev when
needed and squash-merged by .forgejo/workflows/auto-merge-updates.yml; PR
events trigger the normal path, with a nightly scheduled run as a fallback.
Successful update PRs are validated before merge, not again on the resulting
dev push; main is still validated when changes are promoted manually.
Promotion from dev to main is manual. dev is a long-lived integration
branch and must be retained after promotion; repository-level default branch
deletion is disabled, while update branch cleanup is handled explicitly by the
auto-merge workflow.
Updater scripts must fail before committing invalid generated state. Empty SRI
hashes such as hash = "sha256-"; are rejected by both the updater scripts and
CI; see ADR-0003.
nix run .#nix-deploy -- --config ./inventory.json --help selects deployment
inventory explicitly. NIX_DEPLOY_CONFIG supplies the same default for direct
CLI use; a consumer may generate the JSON and provide a configured wrapper.
The package supplies no built-in fleet. See ADR-0006
for the versioned JSON fields and runtime command requirements.