Compare commits
3 commits
a68f81cf3b
...
6ce718ab09
Author | SHA1 | Date | |
---|---|---|---|
6ce718ab09 | |||
795b9b010f | |||
99ea355472 |
5 changed files with 59 additions and 115 deletions
|
@ -40,6 +40,8 @@
|
||||||
tokenFile = config.sops.secrets."services/zfs_smtp_token".path;
|
tokenFile = config.sops.secrets."services/zfs_smtp_token".path;
|
||||||
};
|
};
|
||||||
pool = {
|
pool = {
|
||||||
|
# We are having to boot off of the nvm cache drive because I cant figure out how to boot via the HBA
|
||||||
|
bootDrives = ["nvme-Samsung_SSD_990_PRO_4TB_S7KGNU0X907881F"];
|
||||||
vdevs = [
|
vdevs = [
|
||||||
[
|
[
|
||||||
"ata-ST18000NE000-3G6101_ZVTCXVEB"
|
"ata-ST18000NE000-3G6101_ZVTCXVEB"
|
||||||
|
|
|
@ -50,6 +50,14 @@
|
||||||
isPrincipleUser = true;
|
isPrincipleUser = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
storage = {
|
||||||
|
enable = true;
|
||||||
|
pool = {
|
||||||
|
mode = "";
|
||||||
|
drives = ["wwn-0x5000039fd0cf05eb"];
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
|
|
|
@ -3,6 +3,5 @@
|
||||||
imports = [
|
imports = [
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./disco-configuration.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,57 +0,0 @@
|
||||||
{...}: {
|
|
||||||
disko.devices = {
|
|
||||||
disk = {
|
|
||||||
disk1 = {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/disk/by-id/wwn-0x5000039fd0cf05eb";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
ESP = {
|
|
||||||
size = "512M";
|
|
||||||
type = "EF00";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
mountOptions = ["umask=0077"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
zfs = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "zfs";
|
|
||||||
pool = "zroot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
zpool = {
|
|
||||||
zroot = {
|
|
||||||
type = "zpool";
|
|
||||||
mode = "";
|
|
||||||
options.cachefile = "none";
|
|
||||||
rootFsOptions = {
|
|
||||||
compression = "zstd";
|
|
||||||
"com.sun:auto-snapshot" = "true";
|
|
||||||
};
|
|
||||||
mountpoint = "/";
|
|
||||||
postCreateHook = "zfs list -t snapshot -H -o name | grep -E '^zroot@blank$' || zfs snapshot zroot@blank";
|
|
||||||
|
|
||||||
datasets = {
|
|
||||||
"system/nix" = {
|
|
||||||
type = "zfs_fs";
|
|
||||||
mountpoint = "/nix";
|
|
||||||
options = {
|
|
||||||
atime = "off";
|
|
||||||
relatime = "off";
|
|
||||||
canmount = "on";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -50,16 +50,30 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
pool = {
|
pool = {
|
||||||
vdevs = lib.mkOption {
|
mode = lib.mkOption {
|
||||||
type = lib.types.listOf (lib.types.listOf lib.types.str);
|
type = lib.types.str;
|
||||||
description = "list of disks that are going to be in";
|
default = "raidz2";
|
||||||
default = [config.host.storage.pool.drives];
|
description = "what level of redundancy should this pool have";
|
||||||
};
|
};
|
||||||
|
# list of drives in pool that will have a boot partition put onto them
|
||||||
|
bootDrives = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
description = "list of disks that are going to have a boot partition installed on them";
|
||||||
|
default = lib.lists.flatten config.host.storage.pool.vdevs;
|
||||||
|
};
|
||||||
|
# shorthand for vdevs if you only have 1 vdev
|
||||||
drives = lib.mkOption {
|
drives = lib.mkOption {
|
||||||
type = lib.types.listOf lib.types.str;
|
type = lib.types.listOf lib.types.str;
|
||||||
description = "list of drives that are going to be in the vdev";
|
description = "list of drives that are going to be in the vdev";
|
||||||
default = [];
|
default = [];
|
||||||
};
|
};
|
||||||
|
# list of all drives in each vdev
|
||||||
|
vdevs = lib.mkOption {
|
||||||
|
type = lib.types.listOf (lib.types.listOf lib.types.str);
|
||||||
|
description = "list of disks that are going to be in";
|
||||||
|
default = [config.host.storage.pool.drives];
|
||||||
|
};
|
||||||
|
# list of cache drives for pool
|
||||||
cache = lib.mkOption {
|
cache = lib.mkOption {
|
||||||
type = lib.types.listOf lib.types.str;
|
type = lib.types.listOf lib.types.str;
|
||||||
description = "list of drives that are going to be used as cache";
|
description = "list of drives that are going to be used as cache";
|
||||||
|
@ -156,59 +170,37 @@ in {
|
||||||
disko.devices = {
|
disko.devices = {
|
||||||
disk = (
|
disk = (
|
||||||
builtins.listToAttrs (
|
builtins.listToAttrs (
|
||||||
|
builtins.map
|
||||||
|
(drive:
|
||||||
|
lib.attrsets.nameValuePair (drive.name) {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/disk/by-id/${drive.value}";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = lib.mkIf (builtins.elem drive.value config.host.storage.pool.bootDrives) {
|
||||||
|
# The 2GB here for the boot partition might be a bit overkill we probably only need like 1/4th of that but storage is cheap
|
||||||
|
size = "2G";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = ["umask=0077"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
zfs = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "zfs";
|
||||||
|
pool = "rpool";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
(
|
(
|
||||||
builtins.map
|
(lib.lists.flatten vdevs) ++ cache
|
||||||
(drive:
|
|
||||||
lib.attrsets.nameValuePair (drive.name) {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/disk/by-id/${drive.value}";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
zfs = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "zfs";
|
|
||||||
pool = "rpool";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(lib.lists.flatten vdevs)
|
|
||||||
)
|
|
||||||
++ (
|
|
||||||
builtins.map
|
|
||||||
(drive:
|
|
||||||
lib.attrsets.nameValuePair (drive.name) {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/disk/by-id/${drive.value}";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
# We are having to boot off of the nvm cache drive because I cant figure out how to boot via the HBA
|
|
||||||
ESP = {
|
|
||||||
# 2G here because its not much relative to how much storage we have for caching
|
|
||||||
size = "2G";
|
|
||||||
type = "EF00";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
mountOptions = ["umask=0077"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
zfs = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "zfs";
|
|
||||||
pool = "rpool";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
cache
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -220,7 +212,7 @@ in {
|
||||||
type = "topology";
|
type = "topology";
|
||||||
vdev = (
|
vdev = (
|
||||||
builtins.map (disks: {
|
builtins.map (disks: {
|
||||||
mode = "raidz2";
|
mode = config.host.storage.pool.mode;
|
||||||
members =
|
members =
|
||||||
builtins.map (disk: disk.name) disks;
|
builtins.map (disk: disk.name) disks;
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue