Modularize hardware config

This commit is contained in:
DashieTM 2024-07-11 18:20:05 +02:00
parent e5e23373da
commit 8e9ee08e09
6 changed files with 30 additions and 69 deletions

View file

@ -1,8 +1,11 @@
{ pkgs, config, ... }: { pkgs, config, lib, modulesPath, ... }:
let let
username = config.conf.username; username = config.conf.username;
in in
{ {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
@ -115,4 +118,10 @@ in
swapDevices = swapDevices =
[{ device = "/dev/disk/by-label/SWAP"; }]; [{ device = "/dev/disk/by-label/SWAP"; }];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.${config.conf.cpu}.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
services.fstrim.enable = lib.mkDefault true;
nix.settings.auto-optimise-store = true;
networking.useDHCP = lib.mkDefault true;
} }

View file

@ -1,23 +0,0 @@
{ config, lib, modulesPath, ... }:
{
imports =
[
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.kernelModules = [ ];
boot.extraModulePackages = [ ];
# 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.enp15s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp16s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
services.fstrim.enable = lib.mkDefault true;
nix.settings.auto-optimise-store = true;
}

View file

@ -1,8 +1,6 @@
{ {
imports = [ imports = [
../../modules/conf.nix ../../modules/conf.nix
./dsdt.nix
./firmware.nix
]; ];
conf = { conf = {
monitor = "eDP-1"; monitor = "eDP-1";
@ -24,9 +22,4 @@
}; };
}; };
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
# for hyprdock
services.acpid.enable = true;
} }

View file

@ -1,24 +1,15 @@
{ config, lib, modulesPath, ... }:
{ {
imports = imports =
[ [
(modulesPath + "/installer/scan/not-detected.nix") ./dsdt.nix
./firmware.nix
]; ];
# special hardware modules
boot.initrd.kernelModules = [ ]; # TODO: needed?
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking hardware.bluetooth.enable = true;
# (the default) this is the recommended approach. When using systemd-networkd it's hardware.bluetooth.powerOnBoot = true;
# still possible to use this option, but it's recommended to use it in conjunction # for hyprdock
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. services.acpid.enable = true;
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp15s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp16s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
services.fstrim.enable = lib.mkDefault true;
nix.settings.auto-optimise-store = true;
} }

View file

@ -1,13 +1,7 @@
{ pkgs, config, lib, modulesPath, ... }: { pkgs, lib, ... }:
{ {
imports = # TODO: needed?
[
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/drive2" = fileSystems."/drive2" =
{ {
@ -20,19 +14,6 @@
]; ];
}; };
# 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.enp15s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp16s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
services.fstrim.enable = lib.mkDefault true;
nix.settings.auto-optimise-store = true;
virtualisation.virtualbox.host.enable = true; virtualisation.virtualbox.host.enable = true;
# enable hardware acceleration and rocm # enable hardware acceleration and rocm

View file

@ -1,5 +1,15 @@
{ lib, config, pkgs, ... }: { { lib, config, pkgs, ... }: {
options.conf = { options.conf = {
cpu = lib.mkOption {
# TODO: how to enable arm?
default = "amd";
type = with lib.types; (enum [ "amd" "intel" ]);
example = "intel";
description = ''
cpu microcode.
'';
};
monitor = lib.mkOption { monitor = lib.mkOption {
default = ""; default = "";
example = "eDP-1"; example = "eDP-1";