# This is your system's configuration file. # Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) { inputs, outputs, pkgs, ... }: { # You can import other NixOS modules here imports = [ # Import home-manager's NixOS module inputs.home-manager.nixosModules.home-manager outputs.nixosModules.vpn-ip # If you want to use modules your own flake exports (from modules/nixos): # outputs.nixosModules.example # Or modules from other flakes (such as nixos-hardware): # inputs.hardware.nixosModules.common-cpu-amd # inputs.hardware.nixosModules.common-ssd # You can also split up your configuration and import pieces of it here: # ./users.nix ../../desktop ../../../disko/GLaDOS # Import your generated (nixos-generate-config) hardware configuration ./hardware-configuration.nix ]; environment.systemPackages = with pkgs; [ gparted ]; services.displayManager.sddm = { enable = true; wayland.enable = true; }; services.displayManager.defaultSession = "plasma"; services.desktopManager.plasma6.enable = true; services.vpn-ip = { ip = "2"; }; networking.hostName = "GLaDOS"; services.xserver.videoDrivers = ["amdgpu"]; programs = { steam = { enable = true; remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server extest.enable = true; }; # gamemode.enable = false; # gamemode.settings = { # general = { # renice = 10; # }; # # Warning: GPU optimisations have the potential to damage hardware # # gpu = { # # apply_gpu_optimisations = "accept-responsibility"; # # gpu_device = 0; # # amd_performance_level = "high"; # # }; # custom = { # start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'"; # end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'"; # }; # }; }; boot = { # Nuke root AND home subvolumes on every boot initrd.systemd.services.wipe-my-fs = { requires = ["dev-mapper-nvme_crypted.device"]; after = ["dev-mapper-nvme_crypted.device"]; wantedBy = ["initrd.target"]; script = '' mkdir -p /btrfs_tmp mount /dev/mapper/cryptroot /btrfs_tmp delete_subvolume_recursively() { IFS=$'\n' for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do delete_subvolume_recursively "/btrfs_tmp/$i" done btrfs subvolume delete "$1" } # Nuke and recreate root delete_subvolume_recursively /btrfs_tmp/root btrfs subvolume create /btrfs_tmp/root # Nuke and recreate home (wipes /home — but we restore via impermanence) delete_subvolume_recursively /btrfs_tmp/home btrfs subvolume create /btrfs_tmp/home umount /btrfs_tmp ''; }; loader.systemd-boot.enable = false; initrd.systemd.enable = true; kernelPackages = pkgs.linuxPackages_latest; supportedFilesystems = ["btrfs" "bcachefs"]; binfmt.emulatedSystems = ["aarch64-linux"]; lanzaboote = { enable = true; pkiBundle = "/var/lib/sbctl"; }; extraModprobeConfig = '' ''; }; users.users.lillian.extraGroups = ["gamemode"]; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion system.stateVersion = "26.05"; }