76 lines
2 KiB
Nix
76 lines
2 KiB
Nix
{ config, lib, ... }:
|
|
let
|
|
inherit (lib) mkOption types;
|
|
optionalAttrs = lib.attrsets.optionalAttrs;
|
|
hw = config.valhalla.hardware;
|
|
in
|
|
{
|
|
options = {
|
|
valhalla = {
|
|
hardware = {
|
|
components = mkOption {
|
|
type = types.listOf types.str;
|
|
description = "The names of the hardware components of the computer.";
|
|
default = [ ];
|
|
};
|
|
|
|
surfaceBook = mkOption {
|
|
type = types.bool;
|
|
description = "A value indicating whether the system is a Surface Book 2.";
|
|
default = false;
|
|
};
|
|
|
|
xoneReceiver = mkOption {
|
|
type = types.bool;
|
|
description = "A value indicating whether an Xbox receiver is present.";
|
|
default = false;
|
|
};
|
|
|
|
eyeX = mkOption {
|
|
type = types.bool;
|
|
description = "A value indicating whether a Tobii EyeX device is present.";
|
|
default = false;
|
|
};
|
|
|
|
amdCPU = mkOption {
|
|
type = types.bool;
|
|
description = "A value indicating whether an AMD CPU is present.";
|
|
default = false;
|
|
};
|
|
|
|
nvidiaGPU = mkOption {
|
|
type = types.bool;
|
|
description = "A value indicating whether an NVIDIA GPU is present.";
|
|
default = false;
|
|
};
|
|
|
|
corsairDevice = mkOption {
|
|
type = types.bool;
|
|
description = "A value indicating whether a Corsair device is present.";
|
|
default = false;
|
|
};
|
|
|
|
elgatoWave = mkOption {
|
|
type = types.bool;
|
|
description = "A value indicating whether an Elgato Wave device is present.";
|
|
default = false;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
config = {
|
|
valhalla = {
|
|
linux.programs = (optionalAttrs hw.nvidiaGPU {
|
|
nvidia-dkms.enable = true;
|
|
}) // (optionalAttrs hw.xoneReceiver {
|
|
xone.enable = true;
|
|
});
|
|
|
|
windows.programs = (optionalAttrs hw.eyeX {
|
|
tobii-gamehub.enable = lib.mkDefault true;
|
|
tobii-ghost.enable = lib.mkDefault true;
|
|
});
|
|
};
|
|
};
|
|
}
|