Add haumea config
Eelco Dolstra committed
Jan 7, 2020 at 19:53 UTC
ae7b2c261211d481c5442121be50b8cc306c2865
3 files changed
+94
-1
delft/haumea.nix
new
+82
@@ -0,0 +1,82 @@
1
+{ config, lib, pkgs, ...}:
2
+
3
+{
4
+ imports =
5
+ [ ./common.nix
6
+ ./datadog.nix
7
+ ./fstrim.nix
8
+ ];
9
+
10
+ deployment.targetEnv = "hetzner";
11
+ deployment.hetzner.mainIPv4 = "46.4.89.205";
12
+
13
+ deployment.hetzner.partitionCommand =
14
+ ''
15
+ if ! [ -e /usr/local/sbin/zfs ]; then
16
+ echo "installing zfs..."
17
+ bash -i -c 'echo y | zfsonlinux_install'
18
+ fi
19
+
20
+ umount -R /mnt || true
21
+
22
+ zpool destroy rpool || true
23
+
24
+ for disk in /dev/nvme0n1 /dev/nvme1n1; do
25
+ echo "partitioning $disk..."
26
+ index="''${disk: -3:1}"
27
+ parted -s $disk "mklabel msdos"
28
+ parted -a optimal -s $disk "mkpart primary ext4 1m 256m"
29
+ parted -a optimal -s $disk "mkpart primary zfs 256m 100%"
30
+ udevadm settle
31
+ mkfs.ext4 -L boot$index ''${disk}p1
32
+ done
33
+
34
+ echo "creating ZFS pool..."
35
+ zpool create -f -o ashift=12 \
36
+ -O mountpoint=legacy -O atime=off -O compression=lz4 -O xattr=sa -O acltype=posixacl \
37
+ rpool mirror /dev/nvme0n1p2 /dev/nvme1n1p2
38
+
39
+ zfs create rpool/local
40
+ zfs create rpool/local/nix
41
+ zfs create rpool/safe
42
+ zfs create rpool/safe/root
43
+ zfs create -o primarycache=all -o recordsize=16k -o logbias=throughput rpool/safe/postgres
44
+ '';
45
+
46
+ deployment.hetzner.mountCommand =
47
+ ''
48
+ mkdir -p /mnt
49
+ mount -t zfs rpool/safe/root /mnt
50
+ mkdir -p /mnt/nix
51
+ mount -t zfs rpool/local/nix /mnt/nix
52
+ mkdir -p /mnt/var/lib/postgresql
53
+ mount -t zfs rpool/safe/postgres /mnt/var/lib/postgresql
54
+ mkdir -p /mnt/boot
55
+ mount /dev/disk/by-label/boot0 /mnt/boot
56
+ '';
57
+
58
+ fileSystems."/" =
59
+ { device = "rpool/safe/root";
60
+ fsType = "zfs";
61
+ };
62
+
63
+ fileSystems."/boot" =
64
+ { device = "/dev/disk/by-label/boot0";
65
+ fsType = "ext4";
66
+ };
67
+
68
+ fileSystems."/nix" =
69
+ { device = "rpool/local/nix";
70
+ fsType = "zfs";
71
+ };
72
+
73
+ fileSystems."/var/lib/postgresql" =
74
+ { device = "rpool/safe/postgres";
75
+ fsType = "zfs";
76
+ };
77
+
78
+ networking.hostId = "83c81a23";
79
+
80
+ boot.loader.grub.devices = [ "/dev/nvme0n1" "/dev/nvme1n1" ];
81
+ boot.loader.grub.copyKernels = true;
82
+}
delft/network.nix
+5
@@ -57,6 +57,11 @@ in {
57
];
58
};
59
60
+ haumea = {
61
+ system.configurationRevision = flakes.self.rev;
62
+ imports = [ ./haumea.nix ];
63
+ };
64
+
65
mac1 = makeMac {
66
ip = "10.254.2.1";
67
extra = {
modules/wireguard.nix
+7
-1
@@ -60,6 +60,13 @@ let
60
port = 51820;
61
};
62
63
+ haumea = {
64
+ ip = "10.254.1.9";
65
+ endpoint = "46.4.89.205";
66
+ port = 51820;
67
+ publicKey = "Fb41wGKT1TdC4MG5i2NRx6yduddmqm+N+UOtqtDuBG4=";
68
+ };
69
+
70
mac1 = {
71
ip = "10.254.2.1";
72
publicKey = "T49/SyORWekPRmIzIJjpKQiLzrIhiskGSRD+MH8Jim0=";
@@ -97,7 +104,6 @@ let
104
publicKey = "i3fOonYJsDhhF8YXrWfaLQgb4J3OphOs7DTTCGTDNCQ=";
105
};
106
100
-
107
webserver = {
108
ip = "10.254.3.1";
109
publicKey = "/N5//y0elGZdeekUv+IzKZiZ9wcKSOHc2bHmPU8FaCM=";