95 lines
2.1 KiB
Nix
95 lines
2.1 KiB
Nix
{
|
|
lib,
|
|
shared,
|
|
...
|
|
}:
|
|
{
|
|
options.homelab.core = {
|
|
kernel = lib.mkOption {
|
|
type = with lib.types; enum (builtins.attrNames shared.kernelOptions);
|
|
default = "lts";
|
|
description = "The kernel of the machine";
|
|
};
|
|
|
|
bootloader = {
|
|
type = lib.mkOption {
|
|
type = lib.types.enum [
|
|
"grub"
|
|
"systemd"
|
|
];
|
|
default = "grub";
|
|
description = "Which bootloader to use (grub or systemd-boot)";
|
|
};
|
|
|
|
grub = lib.mkOption {
|
|
type = lib.types.submodule {
|
|
options = {
|
|
enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
};
|
|
|
|
device = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "nodev";
|
|
description = "Device to install GRUB on";
|
|
};
|
|
};
|
|
};
|
|
default = { };
|
|
description = "GRUB configuration block";
|
|
};
|
|
|
|
systemd = lib.mkOption {
|
|
type = lib.types.submodule {
|
|
options = {
|
|
enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
};
|
|
|
|
efiSupport = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
};
|
|
};
|
|
};
|
|
default = { };
|
|
description = "systemd-boot configuration block";
|
|
};
|
|
};
|
|
|
|
user = {
|
|
name = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "river";
|
|
description = "The username of the primary user";
|
|
};
|
|
|
|
fullName = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "Maaz Khokhar";
|
|
description = "The full name of the user";
|
|
};
|
|
|
|
shell = lib.mkOption {
|
|
type = with lib.types; listOf str;
|
|
default = "fish";
|
|
description = "The shell the primary user uses";
|
|
};
|
|
};
|
|
|
|
allowUnfree = lib.mkEnableOption {
|
|
enable = true;
|
|
default = true;
|
|
};
|
|
|
|
ssh = {
|
|
permitRootLogin = lib.mkEnableOption {
|
|
enable = true;
|
|
default = false;
|
|
};
|
|
};
|
|
};
|
|
}
|