2.0 KiB
2.0 KiB
A Dendritic Nix Flake
Regenerate flake and switch to it.
nix run .#write-flake
nix flake check
home-manager switch --flake .#desktop
nix flake show --all-systems
Layout
- Everything under
./modulesgets auto-imported byimport-tree
| Directory | Description |
|---|---|
hosts |
Provides either homeConfigurations or nixosConfigurations |
nix-tools |
Nix-specific tools, like factory functions for use in the flakes |
nixos |
flake.modules.nixos |
programs |
flakes that provide flake.modules attributes for specific programs |
services |
flakes that provide configuration for running services |
users |
flakes that provide configuration for individual users with the flake.factory.user factory |
Mechanics
Flake
The top-level flake is created using flake-file
nix flake init -t github:vic/flake-file#default
...
nix run ".#write-flake"
This uses inputs.flake-parts.lib.mkFlake to create the flake.
The modules are automatically imported from the ./modules using import-tree.
Home Manager
Uses the home-manager module of flake-parts, which is imported in modules/home-manager/flake-parts.nix
Looks for options:
flake.homeConfigurationsflake.homeModules
Show exported home configurations:
nix eval --apply builtins.attrNames .#homeConfigurations
Testing
These commands would are useful for debugging
SYSTEM=lxc
# Just evaluate (fast, catches config errors)
nix eval .#nixosConfigurations.${SYSTEM}.config.system.build.toplevel
# Full build (slower, produces a bootable system)
nix build .#nixosConfigurations.${SYSTEM}.config.system.build.toplevel
Remote Deploy
nixos-rebuild switch --flake .#lxc --target-host root@fded:fb16:653e:25da:be24:11ff:fea0:753f