nixos-config/modules/devices.nix
Dmitriy Kholkin 105af0fac2 update
2020-09-26 03:33:55 +04:00

79 lines
1.8 KiB
Nix

{ pkgs, lib, config, ... }:
with lib;
with types; {
options = {
device = mkOption { type = strMatching "[A-z|0-9]*-(Laptop|Workstation|VM)"; };
devices = mkOption { type = attrs; };
deviceSpecific = mkOption { type = attrs; };
};
config = {
deviceSpecific = let
device = config.device;
devInfo = config.devices.${config.device};
in rec {
isLaptop = (!isNull (builtins.match ".*Laptop" device));
isVM = (!isNull (builtins.match ".*VM" device));
isHost = (device == "AMD-Workstation");
isShared = devInfo.isShared;
isSSD = devInfo.drive.type == "ssd";
smallScreen = (device == "Dell-Laptop");
cpu = devInfo.cpu.vendor;
video = devInfo.video;
ram = devInfo.ram;
enableVirtualisation = devInfo.enableVirtualisation;
isGaming = devInfo.gaming;
};
devices = {
AMD-Workstation = {
cpu = {
vendor = "amd";
clock = 3700;
threads = 12;
};
drive = {
type = "ssd";
size = 250;
};
video = "amd";
ram = 16;
isShared = false;
enableVirtualisation = true;
gaming = true;
};
Dell-Laptop = {
cpu = {
vendor = "intel";
clock = 1600;
threads = 8;
};
drive = {
type = "ssd";
size = 250;
};
video = "intel";
ram = 16;
isShared = false;
enableVirtualisation = false;
gaming = true;
};
NixOS-VM = {
cpu = {
vendor = "amd";
clock = 3700;
threads = 4;
};
drive = {
type = "ssd";
size = 20;
};
video = "virtualbox";
ram = 4;
isShared = false;
enableVirtualisation = false;
gaming = false;
};
};
};
}