{ config, lib, pkgs, modulesPath, ... }: let inherit (lib) getExe mkDefault mkOverride ; in { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; # Inspired by: https://github.com/Jovian-Experiments/Jovian-NixOS boot = { binfmt.registrations."DOSWin" = { wrapInterpreterInShell = false; interpreter = getExe pkgs.wine; recognitionType = "magic"; offset = 0; magicOrExtension = "MZ"; }; initrd = { availableKernelModules = [ "xhci_pci" "ehci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; kernelModules = [ "amdgpu" ]; supportedFilesystems = [ "zfs" ]; }; kernel.sysctl = { "kernel.sched_cfs_bandwidth_slice_u" = mkDefault 3000; "kernel.sched_latency_ns" = mkDefault 3000000; "kernel.sched_min_granularity_ns" = mkDefault 300000; "kernel.sched_wakeup_granularity_ns" = mkDefault 500000; "kernel.sched_migration_cost_ns" = mkDefault 50000; "kernel.sched_nr_migrate" = mkDefault 128; "kernel.split_lock_mitigate" = mkDefault 0; "net.ipv4.tcp_mtu_probing" = true; "net.ipv4.tcp_fin_timeout" = mkDefault 5; "vm.max_map_count" = mkOverride 999 2147483642; }; kernelModules = [ "hid_nintendo" "hid_playstation" "kvm-amd" "ntsync" ]; kernelParams = [ "log_buf_len=4M" "amdgpu.lockup_timeout=5000,10000,10000,5000" "ttm.pages_min=2097152" "amdgpu.sched_hw_submission=4" "audit=0" ]; kernelPackages = pkgs.linuxPackages_6_14; supportedFilesystems = [ "ntfs" ]; }; hardware = { bluetooth = { enable = true; powerOnBoot = true; settings = { General = { MultiProfile = "multiple"; FastConnectable = true; # enable experimental LL privacy, experimental offload codecs KernelExperimental = "15c0a148-c273-11ea-b3de-0242ac130004"; }; LE = { ScanIntervalSuspend = 2240; ScanWindowSuspend = 224; }; }; }; graphics = { enable32Bit = true; extraPackages = [ pkgs.gamescope-wsi ]; extraPackages32 = [ pkgs.pkgsi686Linux.gamescope-wsi ]; }; cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; enableRedistributableFirmware = true; }; powerManagement.cpuFreqGovernor = "schedutil"; services.udev.packages = [ (pkgs.writeTextFile { name = "ntsync-udev-rules"; text = ''KERNEL=="ntsync", MODE="0660", TAG+="uaccess"''; destination = "/etc/udev/rules.d/70-ntsync.rules"; }) ]; services.pulseaudio.enable = false; services.xserver.videoDrivers = [ "amdgpu" ]; networking.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; }