{ config, pkgs, lib, inputs, ... }: # terra — Ryzen 9 5900X / Radeon RX 6800 XT desktop (MSI MS-7A32). Replaces # CachyOS on the OS SSD (Kingston SA400, sdb). Dev-data disks (sdc ext4 # /mnt/hdd_01, LVM vg_ssd /mnt/ssd_01) are kept out of disko and mounted here # as plain filesystems so they're never wiped. The leftover ntfs disks # (sda, sdf, nvme0n1) are ignored entirely — not referenced anywhere. let unstable = import inputs.nixpkgs-unstable { inherit (pkgs.stdenv.hostPlatform) system; config = pkgs.config; }; in { imports = [ ./hardware-configuration.nix ./disk-config.nix # disko: OS-disk (sdb) partitions + filesystems ./secrets.nix # sops-nix: darman password, tailscale key ../../common.nix # shared base: user / ssh / nix / firewall ../../services/vpn/tailscale.nix ../../services/desktop/desktop-hyprland.nix ../../services/desktop/desktop-apps.nix ]; networking.hostName = "terra"; services.flatpak = { enable = true; remotes = [{ name = "flathub"; location = "https://dl.flathub.org/repo/flathub.flatpakrepo"; }]; packages = [ { appId = "com.blitzfc.qbz"; origin = "flathub"; } { appId = "com.discordapp.Discord"; origin = "flathub"; } { appId = "org.telegram.desktop"; origin = "flathub"; } ]; }; # Proton Pass CLI — in nixpkgs-unstable (2.2.3+); scripts/deploy uses it to # autofill sudo/ssh passwords from the "HomeLab" vault. environment.systemPackages = [ unstable.proton-pass-cli ]; # ---- home-manager (user-level config for darman) ---- home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.backupFileExtension = "hm-bak"; home-manager.extraSpecialArgs = { inherit unstable; }; home-manager.users.darman = import ./home.nix; # ---- Boot (UEFI) ---- boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; hardware.cpu.amd.updateMicrocode = true; # ---- GPU (Radeon RX 6800 XT / Navi 21) ---- # amdgpu needs the redistributable navi21 firmware blobs to bind the card. # Without them the module loads but never initialises the GPU: there's no # DRM card for it, the display falls back to the 1024x768 EFI # simple-framebuffer as "Unknown-1", and the real DP-2/HDMI-A-1 outputs # never appear — so hyprland's monitor rules match nothing. hardware.enableRedistributableFirmware = true; # Early KMS: bind amdgpu in the initrd so it drives the console + greeter # from boot instead of handing over from simple-framebuffer later. boot.initrd.kernelModules = [ "amdgpu" ]; # ---- Dev-data disks — NOT in disko, mounted read-write, never wiped ---- # UUIDs captured from the running CachyOS box; verify after install # (`lsblk -o NAME,UUID,MOUNTPOINT`) in case disko/kernel enumerates differently. fileSystems."/mnt/hdd_01" = { device = "/dev/disk/by-uuid/b8445126-ec6d-4f88-818a-d9e13031d9a4"; fsType = "ext4"; options = [ "nofail" ]; }; fileSystems."/mnt/ssd_01" = { device = "/dev/disk/by-uuid/6ca18a9f-27bc-4e58-aea8-de43a0d0ed5d"; fsType = "ext4"; options = [ "nofail" ]; }; system.stateVersion = "26.05"; }