Skip to content

Nix Recipes

Recipes for NixOS and nix-darwin

Each recipe is a self-contained module, overlay, or package paired with a why-and-trap writeup: not just what the code does, but the failure it prevents and the sharp edge that made it necessary. No hostnames, addresses, or secrets — drop any recipe straight into your own configuration.

Browse the recipes How it's organized

Categories

  • Modules · 79


    Importable NixOS modules — services, hardening, setup building blocks.

  • Behaviors · 6


    Timer- and event-driven system behaviors that maintain state over time.

  • Overlays · 27


    Package-set overlays: upstream fixes, forks, and platform patches.

  • Packages · 15


    Standalone derivations — CLIs, Python tools, and agenix helpers.

  • Library · 5


    Small reusable Nix functions and patterns.

How it's organized

Recipes fall into five families. Everything is a Nix flake output, so a recipe is nix flake-consumable directly:

{
  inputs.recipes.url = "github:eordano/recipes";
  # ... then, in a host:
  imports = [ inputs.recipes.nixosModules.nixos-hardening-tiers ];
  nixpkgs.overlays = [ inputs.recipes.overlays.caddy-override-keep-withplugins ];
}
  • Modules — importable nixosModules.<name>; opt-in via their own options.
  • Behaviors — modules too, but timer/event-driven ones that maintain state.
  • Overlaysoverlays.<name>; upstream fixes, forks, platform patches.
  • Packagespkgs.callPackage ./packages/<name> { } derivations.
  • Library — small reusable Nix functions.