diff options
Diffstat (limited to 'nixos/hardware.nix')
-rw-r--r-- | nixos/hardware.nix | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/nixos/hardware.nix b/nixos/hardware.nix new file mode 100644 index 0000000..824d88c --- /dev/null +++ b/nixos/hardware.nix @@ -0,0 +1,127 @@ +{ + inputs, + config, + lib, + pkgs, + ... +}: { + imports = [ + inputs.hardware.nixosModules.common-cpu-amd + inputs.hardware.nixosModules.common-cpu-amd-pstate + inputs.hardware.nixosModules.common-gpu-amd + inputs.hardware.nixosModules.common-pc-laptop + inputs.hardware.nixosModules.common-pc-laptop-acpi_call + inputs.hardware.nixosModules.common-pc-laptop-ssd + ]; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + hardware.enableRedistributableFirmware = lib.mkDefault true; + boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod"]; + boot.initrd.kernelModules = ["synaptics_usb"]; + boot.kernelModules = ["kvm-amd"]; + boot.kernelPackages = pkgs.linuxPackages_latest; + boot.extraModulePackages = []; + + # disable Scatter/Gather APU recently enabled by default, + # which results in white screen after display reconfiguration + boot.kernelParams = [ + "amdgpu.sg_display=0" + "amd_pstate=active" + ]; + + fileSystems."/" = { + device = "none"; + fsType = "tmpfs"; + options = ["defaults" "size=8G" "mode=755"]; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-partlabel/disk-main-ESP"; + fsType = "vfat"; + options = ["fmask=0022" "dmask=0022"]; + }; + + boot.initrd.luks.devices."crypted".device = "/dev/disk/by-partlabel/disk-main-luks"; + + fileSystems."/nix" = { + device = "/dev/mapper/crypted"; + fsType = "btrfs"; + options = ["subvol=nix" "compress=zstd" "noatime"]; + }; + + fileSystems."/persist" = { + device = "/dev/mapper/crypted"; + fsType = "btrfs"; + options = ["subvol=persist" "compress=zstd" "noatime"]; + neededForBoot = true; + }; + + fileSystems."/swap" = { + device = "/dev/mapper/crypted"; + fsType = "btrfs"; + options = ["subvol=swap" "noatime"]; + }; + + fileSystems."/tmp" = { + device = "/dev/mapper/crypted"; + fsType = "btrfs"; + options = ["subvol=tmp" "noatime"]; + }; + + fileSystems."/var/log" = { + device = "/dev/mapper/crypted"; + fsType = "btrfs"; + options = ["subvol=log" "compress=zstd" "noatime"]; + neededForBoot = true; + }; + + boot.tmp.cleanOnBoot = true; + swapDevices = [{device = "/swap/swapfile";}]; + + # 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.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true; + + services.xserver = { + videoDrivers = ["amdgpu"]; + }; + + # sound = { + # enable = lib.mkForce false; + # mediaKeys.enable = true; + # }; + + # hardware.pulseaudio = { + # enable = true; + # support32Bit = true; + # }; + + # Fingerprint + services.fprintd = { + enable = true; + }; + systemd.services.fprintd = { + wantedBy = ["multi-user.target"]; + serviceConfig.Type = "simple"; + }; + + # Bluetooth + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + }; + + services.printing = { + enable = true; + drivers = [pkgs.hplip]; + }; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} |