{ config, inputs, pkgs, ... }: # neogaia — Dell XPS 13 9380 laptop. # Disk layout is in ./disk.nix. # `fileSystems` are derived from it, none declared here. { imports = [ inputs.nixos-hardware.nixosModules.dell-xps-13-9380 ./hardware-configuration.nix ./disk.nix ]; system.stateVersion = "26.05"; # systemd-boot on the EFI system partition. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; boot.kernelPackages = pkgs.linuxPackages_cachyos; # Redistributable firmware for the QCA6174 wifi (ath10k blobs). # Intel microcode updates follow from this, so none is declared here. hardware.enableRedistributableFirmware = true; # RAM-backed swap, no on-disk swap partition. zramSwap.enable = true; # So wifi can be joined from the console. networking.networkmanager.enable = true; # So setup can be driven over the network. # The matching host public keys sit beside this file in plaintext, since # publishing them is their purpose. modules.ssh.enable = true; modules.ssh.hostKeys.sopsFile = ../../secrets/neogaia.yaml; modules.ssh.userKey.sopsFile = ../../secrets/neogaia.yaml; # A machine the operator works from, so it admits the workstation keys alone. modules.ssh.authorizedKeys = config.modules.ssh.workstationKeys; modules.toolkit.enable = true; # The networking foundation, enabled like any module: proves the host build # and bridge-name evaluation path through this host's `nix flake check`. # The trunk, VLAN ids, and management address are placeholders a real homelab # host replaces, and the placeholder trunk names no interface this laptop has. modules.network.enable = true; modules.network.trunk = "enp1s0"; modules.network.vlans = [ 10 20 ]; modules.network.management.vlan = 10; modules.network.management.address = "10.0.10.2/24"; # The walking-skeleton guest, enabled like any module: proves the guest path # end to end through this host's `nix flake check`. guests.sample.enable = true; modules.agents.claude-code.enable = true; modules.agents.tools.gitea-axi.enable = true; modules.agents.pi.enable = true; modules.desktop.enable = true; modules.desktop.obsidian.enable = true; time.timeZone = "America/New_York"; i18n.defaultLocale = "en_GB.UTF-8"; }