summaryrefslogtreecommitdiff
path: root/modules/hosts/sol/disko.nix
blob: 1021a02b70d48090d956589d1b791f06b55cd0be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
{ self, inputs, ...}: {

flake.nixosModules.solDisko = { pkgs, lib, ... }: {
  fileSystems."/nix".neededForBoot = true;
  fileSystems."/persistent".neededForBoot = true;
  disko.devices.nodev = {
    "/" = {
      fsType = "tmpfs";
      mountOptions = [
        "size=50%"
        "mode=755"
      ];
    };
  };

  disko.devices.disk.hdd = {
    device = "/dev/disk/by-id/ata-WDC_WD10EZEX-08WN4A0_WD-WCC6Y1ZAVV89";
    type = "disk";

    content.type = "gpt";
    content.partitions.data = {
      size = "100%";
      content = {
        type = "filesystem";
        format = "ext4";
        mountpoint = "/mnt/hdd";
      };
    };
  };

  disko.devices.disk.main = {
    device = "/dev/nvme0n1"; 
    type = "disk";

    content.type = "gpt";

    content.partitions.boot = {
      name = "boot";
      size = "1M";
      type = "EF02";
    };

    content.partitions.esp = {
      name = "ESP";
      size = "1G";
      type = "EF00";

      content = {
        type = "filesystem";
        format = "vfat";
        mountpoint = "/boot";
      };
    };

    content.partitions.swap = {
      size = "8G";

      content = {
        type = "swap";
        resumeDevice = true;
      };
    };

    content.partitions.root = {
      name = "root";
      size = "100%";

      content = {
        type = "btrfs";
        extraArgs = ["-f"];

        subvolumes = {
          "/persistent" = {
            mountOptions = ["subvol=persistent" "noatime"];
            mountpoint = "/persistent";
          };

          "/nix" = {
            mountOptions = ["subvol=nix" "noatime"];
            mountpoint = "/nix";
          };
        };
      };
    };
  };
};

}