78 lines
1.6 KiB
Nix
78 lines
1.6 KiB
Nix
![]() |
{
|
||
|
config,
|
||
|
lib,
|
||
|
pkgs,
|
||
|
...
|
||
|
}:
|
||
|
|
||
|
{
|
||
|
imports = [ ];
|
||
|
|
||
|
options.me = {
|
||
|
vm_disk.enable = lib.mkOption {
|
||
|
type = lib.types.bool;
|
||
|
default = false;
|
||
|
example = true;
|
||
|
description = "Whether we want to mount the local disk for persistent storage.";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = lib.mkIf config.me.vm_disk.enable (
|
||
|
lib.mkMerge [
|
||
|
{
|
||
|
# Mount the local disk
|
||
|
fileSystems = {
|
||
|
"/.disk" = lib.mkForce {
|
||
|
device = "/dev/nvme0n1p1";
|
||
|
fsType = "ext4";
|
||
|
options = [
|
||
|
"noatime"
|
||
|
"discard"
|
||
|
];
|
||
|
neededForBoot = true;
|
||
|
};
|
||
|
|
||
|
"/persist" = {
|
||
|
fsType = "none";
|
||
|
device = "/.disk/persist";
|
||
|
options = [
|
||
|
"bind"
|
||
|
"rw"
|
||
|
];
|
||
|
depends = [
|
||
|
"/.disk/persist"
|
||
|
];
|
||
|
};
|
||
|
|
||
|
"/state" = {
|
||
|
fsType = "none";
|
||
|
device = "/.disk/state";
|
||
|
options = [
|
||
|
"bind"
|
||
|
"rw"
|
||
|
];
|
||
|
depends = [
|
||
|
"/.disk/state"
|
||
|
];
|
||
|
};
|
||
|
|
||
|
"/nix/store" = lib.mkForce {
|
||
|
fsType = "overlay";
|
||
|
device = "overlay";
|
||
|
options = [
|
||
|
"lowerdir=/nix/.ro-store"
|
||
|
"upperdir=/.disk/persist/store"
|
||
|
"workdir=/.disk/state/work"
|
||
|
];
|
||
|
depends = [
|
||
|
"/nix/.ro-store"
|
||
|
"/.disk/persist/store"
|
||
|
"/.disk/state/work"
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
}
|
||
|
]
|
||
|
);
|
||
|
}
|