"It ain't pretty, but it's mine."
Warning
🏗 We be Wiping — this repo is in active flux. Modules move, hosts come and go, expect rough edges.
dafos ("Here lies my shipwrecks. I mean fleet of hosts.") is my personal fleet of NixOS and Home Manager configurations. Everything is declarative, managed via Nix Flakes, and laid out using Snowfall Lib so hosts, users, modules, packages, and overlays each live where you'd expect.
- Declarative & modular. Snowfall Lib enforces a clean split between hosts, users, modules, packages, and overlays.
- Desktops, plural. Niri (via
niri-flake), KDE Plasma (viaplasma-manager), and the Dank Material Shell. - Secrets. Provisioned with
sops-nix, age-encrypted at rest. - One formatter to rule them all.
treefmt-nixwires up nixfmt, biome, ruff, rustfmt, shfmt, stylua, statix, deadnix, and friends. - Gaming.
nix-gamingplatform optimizations. - Multi-arch deploys.
x86_64-linux,aarch64-linux, and a VirtualBox target — pushed remotely withdeploy-rs. - Custom bits. Overlays (Firefox addons, Zen Browser, KDE/GNOME tweaks), in-repo packages (Home Assistant cards, KDE theming, wallpapers, scripts), and project templates.
| Hostname | System | Role |
|---|---|---|
dafbox |
x86_64-linux |
Desktop / workstation |
dafoltop |
x86_64-linux |
Laptop |
daftop |
x86_64-linux |
Laptop |
virt |
x86_64-virtualbox |
Throwaway VM |
Standard Snowfall Lib tree:
systems/— NixOS host configurations, partitioned by system architecture.homes/— Home Manager configs, nameduser@host.modules/— Reusable modules, split intonixos/andhome/.packages/— In-tree Nix packages.overlays/— nixpkgs overlays.lib/— Custom helper functions exposed under thedafosnamespace.secrets/— SOPS-encrypted YAML.shells/—nix developenvironments (default + Rust).templates/—nix flake init -tproject templates.checks/— Flake checks, incl. pre-commit hooks.
- Nix with flakes enabled (
experimental-features = nix-command flakes). - Git.
git clone https://github.com/CaptainSpof/dafos.git ~/.config/dafos
cd ~/.config/dafos
# Build a host (swap dafbox for the target hostname)
sudo nixos-rebuild switch --flake .#dafboxHosts wired up for deploy-rs can be pushed from anywhere:
nix run .#deploy -- .#daftopThe repo ships a nix develop shell with the tools needed to work on it (formatters, sops, deploy-rs, etc.):
nix developSecrets live under secrets/ as SOPS-encrypted YAML, with rules in .sops.yaml. With your age / GPG key set up:
sops secrets/daf/default.yamlEverything is formatted through treefmt-nix (see treefmt.nix for the full list of enabled formatters):
nix fmtPre-commit hooks are wired up via git-hooks.nix — they run automatically inside the dev shell.