commit 29a1b6d2cc31d1a802b11158fc36e4fddea6ddab
parent fa7aa9420ba9c1a0ea614066227fd7b4d70b724d
Author: MTRNord <mtrnord1@gmail.com>
Date: Tue, 8 Aug 2023 19:25:33 +0200
Enable Darling Erasure on worker-1
Diffstat:
3 files changed, 62 insertions(+), 8 deletions(-)
diff --git a/home-manager/home.nix b/home-manager/home.nix
@@ -41,7 +41,6 @@
};
};
- # TODO: Set your username
home = {
username = "marcel";
homeDirectory = "/home/marcel";
diff --git a/nixos/worker-1/configuration.nix b/nixos/worker-1/configuration.nix
@@ -61,15 +61,13 @@
};
# btrfs boot
+ boot.kernelPackages = pkgs.linuxPackages_latest;
boot.supportedFilesystems = [ "btrfs" ];
+ hardware.enableAllFirmware = true;
- # FIXME: Add the rest of your current configuration
-
- # TODO: Set your hostname
networking.hostName = "worker-1";
networking.networkmanager.enable = true;
- # TODO: This is just an example, be sure to use whatever bootloader you prefer
boot.loader = {
systemd-boot = {
enable = true;
@@ -117,9 +115,8 @@
};
- # TODO: Configure your system-wide user settings (groups, etc), add more users as needed.
+ # Configure your system-wide user settings (groups, etc), add more users as needed.
users.users = {
- # FIXME: Replace with your username
marcel = {
# TODO: You can set an initial password for your user.
# If you do, you can skip setting a root password by passing '--no-root-passwd' to nixos-install.
@@ -144,6 +141,64 @@
passwordAuthentication = true;
};
+ # Darling Erasure
+ environment.etc = {
+ nixos.source = "/persist/etc/nixos";
+ "NetworkManager/system-connections".source = "/persist/etc/NetworkManager/system-connections";
+ adjtime.source = "/persist/etc/adjtime";
+ NIXOS.source = "/persist/etc/NIXOS";
+ machine-id.source = "/persist/etc/machine-id";
+ };
+ systemd.tmpfiles.rules = [
+ "L /var/lib/NetworkManager/secret_key - - - - /persist/var/lib/NetworkManager/secret_key"
+ "L /var/lib/NetworkManager/seen-bssids - - - - /persist/var/lib/NetworkManager/seen-bssids"
+ "L /var/lib/NetworkManager/timestamps - - - - /persist/var/lib/NetworkManager/timestamps"
+ "L /kubernetes - - - - /persist/kubernetes"
+ ];
+ security.sudo.extraConfig = ''
+ # rollback results in sudo lectures after each reboot
+ Defaults lecture = never
+ '';
+ # Note `lib.mkBefore` is used instead of `lib.mkAfter` here.
+ boot.initrd.postDeviceCommands = pkgs.lib.mkBefore ''
+ mkdir -p /mnt
+
+ # We first mount the btrfs root to /mnt
+ # so we can manipulate btrfs subvolumes.
+ mount -o subvol=/ /dev/mapper/enc /mnt
+
+ # While we're tempted to just delete /root and create
+ # a new snapshot from /root-blank, /root is already
+ # populated at this point with a number of subvolumes,
+ # which makes `btrfs subvolume delete` fail.
+ # So, we remove them first.
+ #
+ # /root contains subvolumes:
+ # - /root/var/lib/portables
+ # - /root/var/lib/machines
+ #
+ # I suspect these are related to systemd-nspawn, but
+ # since I don't use it I'm not 100% sure.
+ # Anyhow, deleting these subvolumes hasn't resulted
+ # in any issues so far, except for fairly
+ # benign-looking errors from systemd-tmpfiles.
+ btrfs subvolume list -o /mnt/root |
+ cut -f9 -d' ' |
+ while read subvolume; do
+ echo "deleting /$subvolume subvolume..."
+ btrfs subvolume delete "/mnt/$subvolume"
+ done &&
+ echo "deleting /root subvolume..." &&
+ btrfs subvolume delete /mnt/root
+
+ echo "restoring blank /root subvolume..."
+ btrfs subvolume snapshot /mnt/root-blank /mnt/root
+
+ # Once we're done rolling back to a blank snapshot,
+ # we can unmount /mnt and continue on the boot process.
+ umount /mnt
+ '';
+
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
system.stateVersion = "23.05";
}
diff --git a/nixos/worker-1/hardware-configuration.nix b/nixos/worker-1/hardware-configuration.nix
@@ -6,5 +6,5 @@
};
# Set your system kind (needed for flakes)
- nixpkgs.hostPlatform = "x86_64-linux";
+ nixpkgs.hostPlatform = "aarch64-linux";
}