Skip to content

Flake Inputs & Outputs

flake.nix tracks nixpkgs on nixos-unstable and composes the system from the inputs below. Most *.nix modules pin inputs.nixpkgs.follows = "nixpkgs" to keep a single nixpkgs in the closure.

Inputs

Input Source Role
nixpkgs nixos/nixpkgs/nixos-unstable Package set
home-manager nix-community/home-manager User environment
nixos-hardware NixOS/nixos-hardware Hardware profiles
nix-cachyos-kernel xddxdd/nix-cachyos-kernel CachyOS kernel overlay (pinned)
impermanence nix-community/impermanence Ephemeral root / /persist
lanzaboote nix-community/lanzaboote UEFI Secure Boot
microvm astro/microvm.nix Isolated VM guests
quickshell git.outfoxxed.me/outfoxxed/quickshell Qt6/QML desktop shell
lix-module git.lix.systems/.../nixos-module Lix daemon (+ lix input)
sops-nix Mic92/sops-nix Encrypted secrets
volinit lowcache/volinit Shell welcome banner
nur nix-community/NUR Community overlay
llm-agents numtide/llm-agents.nix AI agent tooling overlay

Overlays

Applied in flake.nix:

nixpkgs.overlays = [
  inputs.nix-cachyos-kernel.overlays.pinned   # volnix only
  inputs.nur.overlays.default
  inputs.llm-agents.overlays.default
];

Outputs

graph TD
    F["flake.nix"] --> V["nixosConfigurations.volnix"]
    F --> L["nixosConfigurations.limbo"]
    F --> NG["packages.x86_64-linux.net-gate"]
    F --> TS["packages.x86_64-linux.tailscale-vm"]
    V --> HM["home-manager.users.lowcache → ./home"]
    L --> HM2["home-manager.users.inlimbo"]
Output Description
nixosConfigurations.volnix Primary host (x86_64-linux)
nixosConfigurations.limbo Portable generic host (inlimbo)
packages.x86_64-linux.net-gate Tor MicroVM runner (nix run .#net-gate)
packages.x86_64-linux.tailscale-vm Tailscale MicroVM runner

Both hosts wire Home Manager as a NixOS module with useGlobalPkgs and useUserPackages, passing inputs through extraSpecialArgs.

Maintenance

make check            # nix flake check
make update           # nix flake update (all inputs)
make update-nixpkgs   # nix flake update nixpkgs
nix flake update volinit

Lix pinning

lix-module carries an inputs.lix.url override tracking Lix main, built from source. Do not drop the override without re-verifying evaluation. See Architecture.