48 lines
1.4 KiB
Markdown
48 lines
1.4 KiB
Markdown
# NixOS Configs
|
|
|
|
Reproducible multi-host NixOS + Hyprland ("Silicon Volt") configuration.
|
|
|
|
## Install (new machine)
|
|
|
|
```bash
|
|
# Setup disks
|
|
nix run --experimental-features "nix-common flakes" github:nix-community/disko -- --mode disko --flake .#hades
|
|
|
|
# install configs
|
|
nixos-install --flake .#hades
|
|
|
|
# set password
|
|
nixos-enter --root /mnt -- passwd anish
|
|
```
|
|
|
|
## Rebuild (existing machine)
|
|
|
|
```bash
|
|
rebuild switch # zsh helper: sudo nixos-rebuild switch --flake ~/NixOS-Configs#<host>
|
|
```
|
|
|
|
## Adding a new host (e.g. a laptop)
|
|
|
|
1. Create `hosts/<name>/` with `default.nix`, `hardware-configuration.nix`, and
|
|
(optionally) `disko.nix`; import the shared modules (`modules/core`,
|
|
`modules/graphical`, `modules/apps`).
|
|
2. Register it in `flake.nix` under `nixosConfigurations`.
|
|
3. Declare host-specific displays in `hosts/<name>/default.nix`:
|
|
|
|
```nix
|
|
home-manager.users.anish.volt.monitors = [
|
|
{
|
|
output = "eDP-1"; # or "desc:<panel description>"
|
|
mode = "2880x1800@120Hz"; # or "preferred"
|
|
position = "auto";
|
|
scale = 2;
|
|
vrr = null; # optional per-monitor VRR
|
|
}
|
|
{ output = ""; mode = "preferred"; position = "auto"; scale = "auto"; } # fallback
|
|
];
|
|
```
|
|
|
|
The `volt.monitors` default (any output @ preferred) keeps every machine working
|
|
out of the box; hosts override only what they need. Hosts without an NVIDIA GPU
|
|
simply don't import `modules/hardware/nvidia.nix` — all vendor env vars live there.
|