30 lines
1 KiB
Markdown
30 lines
1 KiB
Markdown
# FredOS NixOS Configuration
|
|
|
|
This is a NixOS flake-based configuration for multiple hosts:
|
|
- **FredOS-Gaming** — gaming desktop
|
|
- **FredOS-Mediaserver** — home media server
|
|
- **FredOS-Macbook** — MacBook laptop
|
|
|
|
## Structure
|
|
|
|
- `flake.nix` — flake inputs/outputs; all hosts use `nixpkgs` unstable
|
|
- `common.nix` — shared configuration across all hosts
|
|
- `hosts/` — per-host NixOS configuration modules
|
|
- `hosts/hardware/` — hardware-specific configuration
|
|
- `home-manager/` — Home Manager configuration (via NixOS module)
|
|
- `services/` — modular service definitions imported by hosts
|
|
- `settings/` — shared settings/variables
|
|
|
|
## Code Evaluation
|
|
|
|
Always validate Nix expressions with `nix eval` before committing. For example:
|
|
|
|
```bash
|
|
# Evaluate a specific attribute to check for syntax/type errors
|
|
nix eval .#nixosConfigurations.FredOS-Gaming.config.system.stateVersion
|
|
|
|
# Evaluate the full flake outputs to catch top-level errors
|
|
nix eval .#nixosConfigurations --apply builtins.attrNames
|
|
```
|
|
|
|
Use `nix flake check` for a broader check of the flake.
|