delft: move nixos-specific configuration to network.nix directly
Not clean, but it's temporary so that the common part can evaluate with both nixops and outside nixops context.
Pierre Bourdon committed
Feb 8, 2024 at 21:24 UTC
77ba3cd4f51879c8e735ea29cccd9361f509d447
3 files changed
+58
-51
delft/eris.nix
-2
@@ -12,8 +12,6 @@ in
12
./eris/alertmanager-matrix-forwarder.nix
13
./eris/channel-monitor.nix
14
];
15
- deployment.targetEnv = "hetzner";
16
- deployment.hetzner.mainIPv4 = "138.201.32.77";
15
16
users.users.root.openssh.authorizedKeys.keys =
17
with import ../ssh-keys.nix; infra-core;
delft/haumea.nix
-48
@@ -9,57 +9,9 @@
9
10
environment.systemPackages = [ pkgs.lz4 ];
11
12
- deployment.targetEnv = "hetzner";
13
- deployment.hetzner.mainIPv4 = "46.4.89.205";
14
-
12
users.users.root.openssh.authorizedKeys.keys =
13
with import ../ssh-keys.nix; infra-core;
14
18
- deployment.hetzner.partitionCommand =
19
- ''
20
- if ! [ -e /usr/local/sbin/zfs ]; then
21
- echo "installing zfs..."
22
- bash -i -c 'echo y | zfsonlinux_install'
23
- fi
24
-
25
- umount -R /mnt || true
26
-
27
- zpool destroy rpool || true
28
-
29
- for disk in /dev/nvme0n1 /dev/nvme1n1; do
30
- echo "partitioning $disk..."
31
- index="''${disk: -3:1}"
32
- parted -s $disk "mklabel msdos"
33
- parted -a optimal -s $disk "mkpart primary ext4 1m 256m"
34
- parted -a optimal -s $disk "mkpart primary zfs 256m 100%"
35
- udevadm settle
36
- mkfs.ext4 -L boot$index ''${disk}p1
37
- done
38
-
39
- echo "creating ZFS pool..."
40
- zpool create -f -o ashift=12 \
41
- -O mountpoint=legacy -O atime=off -O compression=lz4 -O xattr=sa -O acltype=posixacl \
42
- rpool mirror /dev/nvme0n1p2 /dev/nvme1n1p2
43
-
44
- zfs create rpool/local
45
- zfs create rpool/local/nix
46
- zfs create rpool/safe
47
- zfs create rpool/safe/root
48
- zfs create -o primarycache=all -o recordsize=16k -o logbias=throughput rpool/safe/postgres
49
- '';
50
-
51
- deployment.hetzner.mountCommand =
52
- ''
53
- mkdir -p /mnt
54
- mount -t zfs rpool/safe/root /mnt
55
- mkdir -p /mnt/nix
56
- mount -t zfs rpool/local/nix /mnt/nix
57
- mkdir -p /mnt/var/db/postgresql
58
- mount -t zfs rpool/safe/postgres /mnt/var/db/postgresql
59
- mkdir -p /mnt/boot
60
- mount /dev/disk/by-label/boot0 /mnt/boot
61
- '';
62
-
15
fileSystems."/" =
16
{ device = "rpool/safe/root";
17
fsType = "zfs";
delft/network.nix
+58
-1
@@ -15,10 +15,67 @@ in
15
imports = [
16
./eris.nix
17
flakes.nix-netboot-serve.nixosModules.nix-netboot-serve
18
+
19
+ {
20
+ deployment.targetEnv = "hetzner";
21
+ deployment.hetzner.mainIPv4 = "138.201.32.77";
22
+ }
23
];
24
};
25
26
haumea = {
22
- imports = [ ./haumea.nix ];
27
+ imports = [
28
+ ./haumea.nix
29
+
30
+ {
31
+ deployment.targetEnv = "hetzner";
32
+ deployment.hetzner.mainIPv4 = "46.4.89.205";
33
+
34
+ deployment.hetzner.partitionCommand =
35
+ ''
36
+ if ! [ -e /usr/local/sbin/zfs ]; then
37
+ echo "installing zfs..."
38
+ bash -i -c 'echo y | zfsonlinux_install'
39
+ fi
40
+
41
+ umount -R /mnt || true
42
+
43
+ zpool destroy rpool || true
44
+
45
+ for disk in /dev/nvme0n1 /dev/nvme1n1; do
46
+ echo "partitioning $disk..."
47
+ index="''${disk: -3:1}"
48
+ parted -s $disk "mklabel msdos"
49
+ parted -a optimal -s $disk "mkpart primary ext4 1m 256m"
50
+ parted -a optimal -s $disk "mkpart primary zfs 256m 100%"
51
+ udevadm settle
52
+ mkfs.ext4 -L boot$index ''${disk}p1
53
+ done
54
+
55
+ echo "creating ZFS pool..."
56
+ zpool create -f -o ashift=12 \
57
+ -O mountpoint=legacy -O atime=off -O compression=lz4 -O xattr=sa -O acltype=posixacl \
58
+ rpool mirror /dev/nvme0n1p2 /dev/nvme1n1p2
59
+
60
+ zfs create rpool/local
61
+ zfs create rpool/local/nix
62
+ zfs create rpool/safe
63
+ zfs create rpool/safe/root
64
+ zfs create -o primarycache=all -o recordsize=16k -o logbias=throughput rpool/safe/postgres
65
+ '';
66
+
67
+ deployment.hetzner.mountCommand =
68
+ ''
69
+ mkdir -p /mnt
70
+ mount -t zfs rpool/safe/root /mnt
71
+ mkdir -p /mnt/nix
72
+ mount -t zfs rpool/local/nix /mnt/nix
73
+ mkdir -p /mnt/var/db/postgresql
74
+ mount -t zfs rpool/safe/postgres /mnt/var/db/postgresql
75
+ mkdir -p /mnt/boot
76
+ mount /dev/disk/by-label/boot0 /mnt/boot
77
+ '';
78
+ }
79
+ ];
80
};
81
}