nix-playgraound/notes/024-nixos-configurations.md

57 lines
1.4 KiB
Markdown
Raw Permalink Normal View History

# NixOS Configurations
This note covers `21-nixos-configurations/`, which defines a full `nixosConfigurations` output.
---
## 1. Module Versus Configuration
`04-nixos-module/` shows a reusable module. This example shows the next layer up: a full system definition built with `nixpkgs.lib.nixosSystem`.
The local `module.nix` still matters, but now it is only one input into a named machine configuration.
---
## 2. What the Flake Exposes
The key output is:
- `nixosConfigurations.demo`
That is the shape other commands expect when you build, inspect, or deploy a NixOS system from a flake.
---
## 3. Why the Example Sets Boot and File System Options
Even a small NixOS configuration needs a few system-level settings to evaluate cleanly as a full configuration.
This example sets:
- a host name,
- a root file system,
- a boot loader device, and
- `system.stateVersion`.
Those settings are minimal, and they keep the example focused on flake structure rather than real machine setup.
---
## 4. What the Check Verifies
The check reads values from the evaluated configuration and compares them with the expected host name and `/etc` file contents.
That proves the configuration merges correctly without turning the example into a deployment workflow.
---
## 5. Commands to Try
```bash
cd 21-nixos-configurations
nix flake show
nix eval .#nixosConfigurations.demo.config.networking.hostName --raw
nix flake check
```