One dotfile to rule them all.
dotfiles on steroids, this repository contains my declarative NixOS and Home Manager-based Infrastructure as Code (IaC) for personal devices and home servers.
Built on top of flake-parts, this setup manages system configurations, dotfiles, user secrets (via agenix), custom packages, and portable applications runnable anywhere via nix run.
| Hostname | Description | Manufacturer | Model | Role | Desktop/WM | Notes |
|---|---|---|---|---|---|---|
link |
My desktop | Custom | Gaming PC | Desktop | Hyprland | - |
zelda |
My personal laptop | Razer | Razer Blade | Laptop | Hyprland | - |
alexandria |
Synology NAS (home-manager only, non-NixOS) | Synology | DS920+ | NAS | None | DSM host managed via standalone home-manager |
iot |
Old Dell laptop running IoT services | Dell | Laptop | Server | None | IoT services |
marin |
Mac Mini as Airport Express | Apple | Mac Mini | Server | None | Audio + home services |
iphone |
Personal phone | Apple | iPhone | Mobile | - | - |
ipad |
Personal tablet | Apple | iPad | Tablet | - | - |
flake.nix: Auto-generated entrypoint (do not edit).outputs.nix: The true flake entry point, imports the module tree.modules/: Flake-parts modules defining hosts, profiles, and services. Auto-discovered.pkgs/: Custom packages and overrides.docs/: Agent skills and internal documentation.
Task execution is managed via just.
| Command | Description |
|---|---|
just rebuild |
Local system rebuild (uses nh os switch). |
just deploy |
Rebuild and push closures to the Attic binary cache. |
just colmena-apply |
Deploy configurations to remote hosts via Colmena. |
just colmena-apply-tag <tag> |
Deploy configurations to a specific Colmena tag. |
just minishb |
Build selected hosts and push resulting closures. |
just fastb |
Fast build with nix-fast-build and Attic cache upload. |
just hm-build |
See Justfile recipe. |
just hm-deploy |
See Justfile recipe. |
just iso |
Build an installer ISO. |
just debug |
Run rebuild with --show-trace for debugging. |
just update |
Update flake lockfile and Firefox addons. |
just update-flake |
Update flake lockfile inputs. |
just update-addons |
Regenerate Firefox addons metadata. |
just history |
Show system profile history. |
just gc |
Garbage collect and wipe old generations. |
Note: Regenerate auto-generated files (like
flake.nixor thisREADME.md) usingnix run .#generate-files.
Portable applications exposed by this flake and runnable on any Nix-enabled system.
foot—nix run github:Multipixelone/infra#foothelix—nix run github:Multipixelone/infra#helixnoctalia-shell—nix run github:Multipixelone/infra#noctalia-shell
Packages exposed by this flake (30)
asl-anki— Generate Anki flashcards for ASL vocabulary from signasl.org ·nix run github:Multipixelone/infra#asl-ankibeets-lossyflac·nix run github:Multipixelone/infra#beets-lossyflacbeets-plugins— Music tagger and library organizer ·nix run github:Multipixelone/infra#beets-pluginsclaude-status-line·nix run github:Multipixelone/infra#claude-status-lineconvert-lossyflac·nix run github:Multipixelone/infra#convert-lossyflacconvert-mpc·nix run github:Multipixelone/infra#convert-mpcfoot— Fast, lightweight and minimalistic Wayland terminal emulator ·nix run github:Multipixelone/infra#footgenerate-files— Generate all automatically generated files for this repository ·nix run github:Multipixelone/infra#generate-filesgenswitch·nix run github:Multipixelone/infra#genswitchgentest·nix run github:Multipixelone/infra#gentesthelix·nix run github:Multipixelone/infra#helixhyprctl-instance·nix run github:Multipixelone/infra#hyprctl-instanceizotope— iZotope RX audio repair toolkit ·nix run github:Multipixelone/infra#izotopelossywav— lossy encoder for WAV files ·nix run github:Multipixelone/infra#lossywavmoondeck— Helper to work with moonlight on a steamdeck ·nix run github:Multipixelone/infra#moondeckmusepack— Encoder for the musepack format ·nix run github:Multipixelone/infra#musepacknoctalia-shell— A sleek and minimal desktop shell thoughtfully crafted for Wayland, built with Quickshell. ·nix run github:Multipixelone/infra#noctalia-shellplaylist-transcode·nix run github:Multipixelone/infra#playlist-transcodeplexamp-headless— Headless Plexamp player ·nix run github:Multipixelone/infra#plexamp-headlesspragmata— Condensed monospace font with programming ligatures ·nix run github:Multipixelone/infra#pragmataralph-wiggum-plugin— Ralph Wiggum loop plugin for Claude Code — self-referential agentic loops ·nix run github:Multipixelone/infra#ralph-wiggum-pluginrb-albumart·nix run github:Multipixelone/infra#rb-albumartrtk-rewrite·nix run github:Multipixelone/infra#rtk-rewritescreenshot-area·nix run github:Multipixelone/infra#screenshot-areascreenshot-area-ocr·nix run github:Multipixelone/infra#screenshot-area-ocrsystem·nix run github:Multipixelone/infra#systemupload-script·nix run github:Multipixelone/infra#upload-scriptwrite-flake— Generate a flake.nix file ·nix run github:Multipixelone/infra#write-flakewrite-inputs— Generate an inputs.nix expression (for debugging) ·nix run github:Multipixelone/infra#write-inputswrite-lock— Detect existing lock file and delegate to the appropriate writer. ·nix run github:Multipixelone/infra#write-lock
This repository follows the dendritic pattern with flake-parts modules auto-discovered from modules/.
This repository runs checks using GitHub Actions and pushes the results to an Attic cache.
For better visibility, a job is spawned for each flake check. This is done dynamically.
See modules/ci.nix.
The following files in this repository are generated and checked using the files flake-parts module:
.envrc.github/workflows/build.yaml.github/workflows/eval.yaml.github/workflows/nixpkgs-age-badge.yaml.gitignoreREADME.md