{ nixpkgs, config, pkgs, ... }: let cfg = config.machine; in { imports = ["${nixpkgs}/nixos/modules/installer/scan/not-detected.nix"]; boot = { loader.systemd-boot = { enable = true; # signed = true; # signing-key = "${cfg.secretPath}/secureboot/db.key"; # signing-certificate = "${cfg.secretPath}/secureboot/db.crt"; }; loader.efi.canTouchEfiVariables = true; tmp = { useTmpfs = true; cleanOnBoot = true; }; kernelPackages = pkgs.linuxPackages_latest; initrd.availableKernelModules = ["xhci_pci" "ahci" "sd_mod" "rtsx_pci_sdmmc"]; kernelModules = ["acpi_call" "i915" "kvm-intel" "uinput"]; # 5_10 breaks my touchpad/mouse buttons # https://bbs.archlinux.org/viewtopic.php?id=254885 # maybe modprobe hid_rmi or i2c_i801 # blacklistedKernelModules = [ "i2c_i801" ]; extraModulePackages = with config.boot.kernelPackages; [acpi_call]; #pkgs.gitpkgs.linuxPackages_latest.hid-nintendo ]; kernelParams = ["intel_iommu=on"]; extraModprobeConfig = '' options i915 enable_fbc=1 enable_guc=3 ''; kernel.sysctl = { "kernel.nmi_watchdog" = 0; "fs.inotify.max_user_watches" = 524288; "vm.dirty_writeback_centisecs" = 1500; }; }; fileSystems."/" = { device = "/dev/disk/by-uuid/b37b48a8-5dcb-4f4d-ad71-1b26500b3e5f"; fsType = "ext4"; }; fileSystems."/boot" = { device = "/dev/disk/by-uuid/546A-A3D1"; fsType = "vfat"; }; hardware = { firmware = with pkgs; [firmwareLinuxNonfree]; cpu.intel.updateMicrocode = true; enableAllFirmware = false; ksm.enable = true; graphics = { extraPackages = with pkgs; [ (intel-vaapi-driver.override { enableHybridCodec = true; }) ]; extraPackages32 = with pkgs.pkgsi686Linux; [ (intel-vaapi-driver.override { enableHybridCodec = true; }) ]; }; pulseaudio = { enable = true; support32Bit = true; package = pkgs.pulseaudioFull; zeroconf.discovery.enable = false; extraClientConf = '' autospawn = no ''; }; bluetooth = { enable = true; powerOnBoot = true; }; }; powerManagement = { enable = true; cpuFreqGovernor = "powersave"; }; services = { upower.enable = true; xserver.videoDrivers = ["intel"]; }; environment.variables.LIBVA_DRIVER_NAME = "i915"; time.timeZone = "Europe/Berlin"; }