{ config , lib , pkgs , modulesPath , system , inputs , ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ../../os-mods/common ../../os-mods/desktop ../../os-mods/network ../../os-mods/virt ../../users ./disko.nix ]; system.stateVersion = "23.05"; nixpkgs.hostPlatform = lib.mkDefault system; boot = { kernelPackages = pkgs.linuxPackages_latest; loader = { systemd-boot = { enable = true; configurationLimit = 32; }; efi.canTouchEfiVariables = true; }; initrd = { availableKernelModules = [ "amdgpu" "nvme" "xhci_pci" "uas" "usbhid" "usb_storage" "sd_mod" ]; kernelModules = [ ]; systemd.enable = true; }; kernelModules = [ "kvm-amd" "amdgpu" ]; extraModulePackages = [ ]; }; services.btrfs.autoScrub.enable = true; services.xserver.videoDrivers = [ "amdgpu" ]; networking = { hostName = "nixos-pulse"; useDHCP = lib.mkDefault true; interfaces = { enp5s0f4u1u1c2 = { useDHCP = false; ipv4.addresses = [ { address = "192.168.0.21"; prefixLength = 24; } ]; ipv4.routes = [ { address = "192.168.0.0"; prefixLength = 24; } { address = "0.0.0.0"; prefixLength = 0; via = "192.168.0.5"; } ]; }; }; }; systemd = { services = { # This manually configures the automatically created network-adresses service to be more flexible # regarding booting without the the device being available on boot # It prevents slow timeouts & errors on boot while preserving Plug & Play ability network-addresses-enp5s0f4u1u1c2.unitConfig = { ConditionPathExists = "/sys/class/net/enp5s0f4u1u1c2"; BindsTo = lib.mkForce null; }; powertop.postStart = '' HIDDEVICES=$(ls /sys/bus/usb/drivers/usbhid | grep -oE '^[0-9]+-[0-9\.]+' | sort -u) for i in $HIDDEVICES; do echo -n "Enabling " | cat - /sys/bus/usb/devices/$i/product echo 'on' > /sys/bus/usb/devices/$i/power/control done ''; }; tmpfiles.rules = [ "L+ /opt/rocm/hip - - - - ${pkgs.hip}" ]; }; services.udev.extraRules = '' ACTION=="add", KERNEL=="enp5s0f4u1u1c2", TAG+="systemd", ENV{SYSTEMD_WANTS}="network-addresses-enp5s0f4u1u1c2.service" ACTION=="remove", KERNEL=="enp5s0f4u1u1c2", RUN+="${pkgs.systemd}/bin/systemctl stop network-addresses-enp5s0f4u1u1c2.service" ''; # energy saving stuff powerManagement.powertop.enable = true; hardware = { i2c.enable = true; tuxedo-control-center = { enable = true; package = inputs.tuxedo-nixos.packages.${system}.default; }; opengl = { driSupport = true; driSupport32Bit = true; extraPackages = with pkgs; [ rocm-opencl-icd rocm-opencl-runtime ]; }; cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; }; zramSwap.enable = true; }