nixdots/options/device/hardware.nix
2024-07-27 01:07:07 +02:00

59 lines
2.2 KiB
Nix

{lib, ...}: let
inherit (lib) mkOption mkEnableOption types;
in {
options.myOptions.device = {
cpu.type = mkOption {
type = with types; nullOr (enum ["intel" "amd"]);
default = null;
description = ''
The manifaturer/type of the primary system CPU.
Determines which ucode services will be enabled and provides additional kernel packages.
If running in a virtual machine with forwarded/shared cores (CPU passthrough), use the
cpu type of the host machine.
'';
};
gpu.type = mkOption {
type = with types; nullOr (enum ["nvidia" "amd" "intel" "hybrid-nvidia" "hybrid-amd"]);
default = null;
description = ''
The manifaturer/type of the primary system GPU.
Allows the correct GPU drivers to be loaded, potentially optimizing video output performance.
If you're on a hybrid system (intel/amd igpu + nvidia/amd dgpu) make sure to use
the hybrid options, only specifying the dgpu will not work properly.
Note that if using hybrid-nvidia, you will need to set `hardware.nvidia.prime.nvidiaBusId`
and `intelBusId` (or `amdgpuBusId`) to "PCI:x:y:z". To find the correct bus IDs, you can
use `sudo lshw -c display`. Note that you will need to convert the bus ID format from
hexadecimal to decimal, remove the padding (leading zeroes) and replace the dot with a
colon (so for example 0e:00.0 -> PCI:14:0:0).
'';
};
hasTPM = mkOption {
type = types.bool;
default = false;
description = "Does this device have a TPM (Trusted Platform Module)?";
};
bluetooth = {
enable = mkEnableOption "bluetooth modules, drivers and configuration program(s)";
powerOnBoot = mkOption {
type = types.bool;
default = false;
description = ''
Should bluetooth be powered on automatically during boot?
This will worsen the battery life and is not recommended. Instead, you can
always turn bluetooth on manually once booted, when you need it. Unless you
have constant need for bluetooth / have some devices to connect to automatically
you, leave this off.
'';
};
};
};
}