about summary refs log tree commit diff
path: root/machines/x220/disko-config.nix
blob: 35124167885fbe7f14db9040d910ae03fabd7cf9 (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
# USAGE in your configuration.nix.
# Update devices to match your hardware.
# {
#  imports = [ ./disko-config.nix ];
#  disko.devices.disk.main.device = "/dev/sda";
#  disko.devices.disk.main.content.partitions.swap.size = "16G"; # Must be greater than RAM to enable hibernation
# }
{ lib, config, ... }:
{

  #boot.initrd.postDeviceCommands = ''
    #mkdir /btrfs_tmp
    #mount -t btrfs -o subvol=root,defaults ${config.disko.devices.disk.main.device} /btrfs_tmp
    #if [[ -e /btrfs_tmp/root ]]; then
        #mkdir -p /btrfs_tmp/old_roots
        #timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
        #mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
    #fi
#
    #delete_subvolume_recursively() {
        #IFS=$'\n'
        #for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
            #delete_subvolume_recursively "/btrfs_tmp/$i"
        #done
        #btrfs subvolume delete "$1"
    #}
#
    #for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
        #delete_subvolume_recursively "$i"
    #done
#
    #btrfs subvolume create /btrfs_tmp/root
    #umount /btrfs_tmp
  #'';

  disko.devices = {
    disk = {
      main = {
	device = "/dev/sda";
        type = "disk";
        content = {
          type = "gpt";
          partitions = {
            ESP = {
              size = "1G";
              type = "EF00";
              content = {
                type = "filesystem";
                format = "vfat";
                mountpoint = "/boot";
                mountOptions = [ "umask=0077" ];
              };
            };
	    swap = {
	      size = "13G";
	      content = {
		type = "swap";
		discardPolicy = "both";
                resumeDevice = true;
	      };
	    };
            data = {
              size = "100%";
              content = {
                type = "btrfs";
		extraArgs = [ "-f" ];
		mountpoint = "/partition-root";
		subvolumes = {
                  "/nix" = {
                    mountOptions = [ "compress=zstd" "noatime" ];
                    mountpoint = "/nix";
                  };
		  "/persist" = {
		    mountpoint = "/persist";
		  };
		  "/root" = {
		    mountpoint = "/";
		  };
		};
              };
            };
          };
        };
      };
    };
  };
}