NixOS and nix-darwin system configurations using flake-parts and import-tree.
Every .nix file under modules/ and hosts/ is a flake-parts module,
which defines NixOS and home-manager modules via flake.modules.nixos.<name>
and flake.modules.homeManager.<name>.
Host configs in hosts/ compose modules via imports. Hosts with the prefix
hosts/nixos/ become nixosConfigurations, and hosts/darwin/ become
darwinConfigurations. The prefix is stripped to form the config name (e.g.,
hosts/nixos/rwzfs becomes nixosConfigurations.rwzfs).
# hosts/nixos/rwzfs/default.nix
{
config,
...
}:
{
flake.modules.nixos."hosts/nixos/rwzfs" = {
imports = with config.flake.modules.nixos; [
base
desktop
# ...
];
home-manager.users.myuser = {
imports = with config.flake.modules.homeManager; [
base
desktop
# ...
];
};
};
}modules/: Reusable flake-parts modules (nixos + home-manager)hosts/: Per-machine host configs that compose modulestests/: NixOS tests and scripts
Secrets are fetched from 1Password with opnix.
- Dendritic Nix @drupol's
- nixconfig