A flake-based NixOS configuration that gives you:
- Hyprland desktop via
soymou/illogical-flake(end-4's Illogical Impulse dotfiles + QuickShell), wired in through home-manager - NVIDIA proprietary driver with Wayland/KMS support
- Mullvad VPN (daemon + GUI)
nixos-config/
├── flake.nix inputs + nixosConfigurations
├── configuration.nix system glue (users, audio, DM, fonts, ...)
├── hardware-configuration.nix PLACEHOLDER — regenerate on your machine
├── home.nix home-manager: enables programs.illogical-impulse
└── modules/
├── nvidia.nix
├── hyprland.nix
├── mullvad.nix
- Set your identity in
flake.nix:username = "youruser"; hostname = "nixos";
- Generate real hardware config on the target machine and replace the stub:
(The included
nixos-generate-config --dir .hardware-configuration.nixis a non-bootable placeholder.) - Check the NVIDIA driver type in
modules/nvidia.nix:open = truefor RTX 20xx / GTX 16xx or newer (Turing+)open = falsefor GTX 10xx and older (Pascal and earlier)
- Set your real
time.timeZoneinconfiguration.nix.
Copy the folder to /etc/nixos (or keep it anywhere and point --flake at it):
First switch into Determinate Nix only. Because the current system doesn't have Determinate's binary cache configured yet, the initial rebuild needs two extra flags so it can fetch Determinate Nix:
sudo nixos-rebuild switch \ --option extra-substituters https://install.determinate.systems \ --option extra-trusted-public-keys cache.flakehub.com-3:hJuILl5sVK4iKm86JzgdXW12Y2Hwd5G07qKtHTOcDCM= \ --flake .#nixos
Every rebuild after that is just:
sudo nixos-rebuild switch --flake .#nixosReplace nixos with your hostname if you changed it.
If you're starting from a non-NixOS machine, install Determinate Nix first with the official installer, then build the flake:
curl -fsSL https://install.determinate.systems/nix | sh -s -- installOr use Determinate's NixOS ISO. Either way, once Determinate Nix is present the two extra flags above aren't needed.
- Log in via SDDM and pick the Hyprland session.
- Connect the VPN:
mullvad account login <ACCOUNT_NUMBER>thenmullvad connect(or use the tray GUI).
- SSH is disabled by default. To enable it, uncomment the
services.opensshblock. - UWSM: Hyprland launches via UWSM. Do not also enable home-manager's
wayland.windowManager.hyprland.systemd.enable— it conflicts. - Updating Determinate Nix: the Nix daemon updates itself out-of-band
(
sudo determinate-nixd upgrade). To pull a newer pinned Determinate flake module, runnix flake update determinateand rebuild. - This targets
nixos-unstable. Keepsystem.stateVersion/home.stateVersionat the value from your original install.