1{
2 config,
3 lib,
4 ...
5}: {
6 options.myDisko.installDrive = lib.mkOption {
7 description = "Disk to install NixOS to.";
8 default = "/dev/sda";
9 type = lib.types.str;
10 };
11
12 config = {
13 assertions = [
14 {
15 assertion = config.myDisko.installDrive != "";
16 message = "config.myDisko.installDrive cannot be empty.";
17 }
18 ];
19
20 disko.devices = {
21 disk = {
22 vdb = {
23 type = "disk";
24 device = config.myDisko.installDrive;
25
26 content = {
27 type = "gpt";
28
29 partitions = {
30 ESP = {
31 content = {
32 format = "vfat";
33
34 mountOptions = [
35 "defaults"
36 "umask=0077"
37 ];
38
39 mountpoint = "/boot";
40 type = "filesystem";
41 };
42
43 size = "1024M";
44 type = "EF00";
45 };
46
47 luks = {
48 size = "100%";
49 content = {
50 type = "luks";
51 name = "crypted";
52
53 content = {
54 type = "btrfs";
55 extraArgs = ["-f"];
56
57 subvolumes = {
58 "/home" = {
59 mountpoint = "/home";
60 mountOptions = ["compress=zstd" "noatime"];
61 };
62
63 "/home/.snapshots" = {
64 mountOptions = ["compress=zstd" "noatime"];
65 mountpoint = "/home/.snapshots";
66 };
67
68 "/nix" = {
69 mountpoint = "/nix";
70 mountOptions = ["compress=zstd" "noatime"];
71 };
72
73 "persist" = {
74 mountpoint = "/persist";
75 mountOptions = ["compress=zstd" "noatime"];
76 };
77
78 "/root" = {
79 mountpoint = "/";
80 mountOptions = ["compress=zstd" "noatime"];
81 };
82 };
83 };
84 };
85 };
86 };
87 };
88 };
89 };
90 };
91 };
92}