# Do not modify this file!  It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations.  Please make changes
# to /etc/nixos/configuration.nix instead.
{
  config,
  lib,
  pkgs,
  modulesPath,
  ...
}:

{
  imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];

  boot = {
    initrd.availableKernelModules = [
      "nvme"
      "xhci_pci"
      "thunderbolt"
      "usb_storage"
      "usbhid"
      "sd_mod"
      "ip_vs"
      "ip_vs_rr"
      "nf_conntrack"
    ];
    initrd.kernelModules = [
      "dm-snapshot"
      "r8152"
    ];
    kernelModules = [ "kvm-amd" ];
    extraModulePackages = [ ];
    kernelParams = [
      "amdgpu.sg_display=0"
      "amdgpu.graphics_sg=0"
      "amdgpu.abmlevel=3"
    ];
    kernelPatches = lib.mkIf (config.boot.kernelPackages.kernelOlder "6.9") [
      {
        name = "add panel_power_savings sysfs entry to eDP connectors";
        patch = ./kernel-patches/panel_power_savings.patch;
      }
      {
        name = "respect the abmlevel module parameter value if it is set";
        patch = ./kernel-patches/respect_abmlevel.patch;
      }
    ];
  };

  fileSystems = {

    "/" = lib.mkDefault {
      device = "/dev/disk/by-uuid/f3c11d62-37f4-495e-b668-1ff49e0d3a47";
      fsType = "ext4";
      options = [
        "noatime"
        "nodiratime"
      ];
    };

    "/home" = {
      device = "/dev/disk/by-uuid/720af942-464c-4c1e-be41-0438936264f0";
      fsType = "ext4";
      options = [
        "noatime"
        "nodiratime"
      ];
    };

    "/nix" = {
      device = "/dev/disk/by-uuid/035f23f8-d895-4b0c-bcf5-45885a5dbbd9";
      fsType = "ext4";
      options = [
        "noatime"
        "nodiratime"
      ];
    };

    "/boot" = {
      device = "/dev/disk/by-uuid/5AD7-6005";
      fsType = "vfat";
      options = [
        "noatime"
        "nodiratime"
      ];
    };
  };

  swapDevices = [ { device = "/dev/disk/by-uuid/7f0dba0f-d04e-4c94-9fba-1d0811673df1"; } ];

  boot.initrd.luks.devices = {
    "nixos-pv" = {
      device = "/dev/disk/by-uuid/12a7f660-bbcc-4066-81d0-e66005ee534a";
      preLVM = true;
      allowDiscards = true;
    };
  };

  # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
  # (the default) this is the recommended approach. When using systemd-networkd it's
  # still possible to use this option, but it's recommended to use it in conjunction
  # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
  networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true;

  nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
  hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}