ahuston-0 9b118b0e7c Switch to systemd-boot
Signed-off-by: ahuston-0 <aliceghuston@gmail.com>
2023-12-25 22:59:17 -05:00

78 lines
2.0 KiB
Nix

{ config, lib, libS, ... }:
let
cfg = config.boot;
in
{
options = {
boot = {
default = libS.mkOpinionatedOption "enable the boot builder";
cpuType = lib.mkOption {
type = lib.types.str;
example = "amd";
default = "";
description = "The cpu-type installed on the server.";
};
amdGPU = libS.mkOpinionatedOption "the system contains a AMD GPU";
filesystem = lib.mkOption {
type = lib.types.str;
example = "btrfs";
default = "ext4";
description = "The filesystem installed.";
};
fullDiskEncryption = libS.mkOpinionatedOption "use luks full disk encrytion";
};
};
config.boot = lib.mkIf cfg.default {
initrd = {
# networking for netcard kernelModules = [ "e1000e" ];
kernelModules = lib.mkIf cfg.amdGPU [ "amdgpu" ];
network = lib.mkIf cfg.fullDiskEncryption {
enable = true;
ssh = {
enable = true;
hostKeys = [
"/root/ssh_key"
];
port = 2222;
};
};
};
supportedFilesystems = [ cfg.filesystem ];
tmp.useTmpfs = true;
kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
kernelParams = [
"nordrand"
] ++ lib.optional (cfg.cpuType == "amd") "kvm-amd"
++ lib.optional cfg.fullDiskEncryption "ip=<ip-addr>::<ip-gateway>:<netmask>";
zfs = lib.mkIf (cfg.filesystem == "zfs") {
enableUnstable = true;
devNodes = "/dev/disk/by-id/";
forceImportRoot = true;
};
loader = {
efi = {
canTouchEfiVariables = false;
};
generationsDir.copyKernels = true;
boot.loader.systemd-boot.enable = true;
/* disable grub support
grub = {
enable = true;
copyKernels = true;
zfsSupport = lib.mkIf (cfg.filesystem == "zfs") true;
efiSupport = true;
efiInstallAsRemovable = true;
fsIdentifier = "uuid";
enableCryptodisk = lib.mkIf cfg.fullDiskEncryption true;
};
*/
};
};
}