Make the disko config a module.
This commit is contained in:
93
common/encrypted-btrfs-layout.nix
Normal file
93
common/encrypted-btrfs-layout.nix
Normal file
@@ -0,0 +1,93 @@
|
||||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.diskLayout;
|
||||
in
|
||||
{
|
||||
options.diskLayout = {
|
||||
mainDiskDevice = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "The device ID for the main disk";
|
||||
};
|
||||
keyDiskDevice = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "The device ID for the key disk";
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
disko.devices = {
|
||||
disk.main = {
|
||||
device = cfg.mainDiskDevice;
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
esp = {
|
||||
name = "ESP";
|
||||
size = "512M";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
};
|
||||
};
|
||||
luksroot = {
|
||||
end = "-8G";
|
||||
content = {
|
||||
type = "luks";
|
||||
name = "luksroot";
|
||||
settings = {
|
||||
allowDiscards = true;
|
||||
keyFile = cfg.keyDiskDevice;
|
||||
keyFileSize = 4096;
|
||||
};
|
||||
content = {
|
||||
type = "btrfs";
|
||||
subvolumes = {
|
||||
"root" = {
|
||||
mountpoint = "/";
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
"nix" = {
|
||||
mountpoint = "/nix";
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
"persist" = {
|
||||
mountpoint = "/persist";
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
"log" = {
|
||||
mountpoint = "/var/log";
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
swap = {
|
||||
size = "8G";
|
||||
content = {
|
||||
type = "swap";
|
||||
randomEncryption = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user