2023-03-15 21:31:33 +01:00
|
|
|
{ lib, name ? "chaos", disk ? "/dev/sda1", ... }:
|
2023-03-01 22:56:34 +01:00
|
|
|
|
|
|
|
{
|
|
|
|
disk = {
|
|
|
|
${disk} = {
|
2023-03-15 21:31:33 +01:00
|
|
|
device = disk;
|
2023-03-01 22:56:34 +01:00
|
|
|
type = "disk";
|
|
|
|
content = {
|
|
|
|
type = "table";
|
|
|
|
format = "gpt";
|
|
|
|
partitions = [
|
|
|
|
{
|
|
|
|
type = "partition";
|
|
|
|
name = "ESP";
|
|
|
|
start = "1MiB";
|
|
|
|
end = "512MiB";
|
|
|
|
bootable = true;
|
|
|
|
content = {
|
|
|
|
type = "filesystem";
|
|
|
|
format = "vfat";
|
|
|
|
mountpoint = "/boot";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
type = "partition";
|
|
|
|
name = "root";
|
|
|
|
start = "512MiB";
|
|
|
|
end = "100%";
|
|
|
|
part-type = "primary";
|
|
|
|
content = {
|
|
|
|
type = "luks";
|
|
|
|
name = "crypt-${name}";
|
|
|
|
content = {
|
|
|
|
type = "lvm_pv";
|
|
|
|
vg = "lvm-${name}";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2023-03-15 21:31:33 +01:00
|
|
|
lvm_vg."lvm-${name}" = {
|
2023-03-01 22:56:34 +01:00
|
|
|
type = "lvm_vg";
|
|
|
|
lvs = {
|
2023-03-15 21:40:17 +01:00
|
|
|
raw = {
|
|
|
|
type = "lvm_lv";
|
2023-03-18 01:33:29 +01:00
|
|
|
# size = "100%-200GiB";
|
2023-03-15 21:40:17 +01:00
|
|
|
};
|
2023-03-01 22:56:34 +01:00
|
|
|
zfs = {
|
|
|
|
type = "lvm_lv";
|
|
|
|
size = "200GiB";
|
|
|
|
content = {
|
|
|
|
type = "zfs";
|
|
|
|
pool = name;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2023-03-15 21:31:33 +01:00
|
|
|
zpool."${name}-${lib.replaceStrings ["/dev/"] [""] disk}" = {
|
2023-03-01 22:56:34 +01:00
|
|
|
type = "zpool";
|
|
|
|
rootFsOptions = {
|
|
|
|
acltype = "posixacl";
|
|
|
|
ashift = "12";
|
|
|
|
autotrim = "on";
|
|
|
|
canmount = "off";
|
|
|
|
compression = "zstd";
|
|
|
|
normalization = "formD";
|
|
|
|
mountpoint = "none";
|
|
|
|
xattr = "sa";
|
|
|
|
};
|
2023-03-15 21:40:17 +01:00
|
|
|
datasets =
|
|
|
|
let
|
|
|
|
dataset = mountpoint: {
|
|
|
|
options = {
|
|
|
|
canmount = "on";
|
|
|
|
inherit mountpoint;
|
|
|
|
};
|
|
|
|
zfs_type = "filesystem";
|
2023-03-01 22:56:34 +01:00
|
|
|
};
|
2023-03-15 21:40:17 +01:00
|
|
|
in
|
|
|
|
{
|
|
|
|
"data" = dataset "/";
|
|
|
|
"data/etc" = dataset "/etc";
|
|
|
|
"data/home" = dataset "/home";
|
|
|
|
"data/var" = dataset "/var";
|
|
|
|
"data/var/backup" = dataset "/var/backup";
|
|
|
|
"data/var/lib" = dataset "/var/lib";
|
|
|
|
"data/var/log" = dataset "/var/log";
|
|
|
|
"nixos" = {
|
|
|
|
options.canmount = "off";
|
|
|
|
zfs_type = "filesystem";
|
2023-03-01 22:56:34 +01:00
|
|
|
};
|
2023-03-15 21:40:17 +01:00
|
|
|
"nixos/nix" = dataset "/nix";
|
|
|
|
"nixos/nix/store" = {
|
|
|
|
options = {
|
|
|
|
atime = "off";
|
|
|
|
canmount = "on";
|
|
|
|
mountpoint = "/nix/store";
|
|
|
|
};
|
|
|
|
zfs_type = "filesystem";
|
|
|
|
};
|
|
|
|
"nixos/nix/var" = dataset "/nix/var";
|
|
|
|
"resered" = {
|
|
|
|
options = {
|
|
|
|
canmount = "off";
|
|
|
|
reservation = "5GiB";
|
|
|
|
};
|
|
|
|
zfs_type = "filesystem";
|
2023-03-01 22:56:34 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|