{ pkgs, ... }: let usb_data = import ./hardware/usb_data.nix {}; ssd_data = import ./hardware/ssd_data.nix {}; in { boot = { loader = { systemd-boot.enable = true; efi.canTouchEfiVariables = true; }; initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" "uas" "usbcore" "usb_storage" "vfat" "nls_cp437" "nls_iso8859_1" "aesni_intel" "cryptd" ]; kernelModules = [ "kvm-intel" ]; initrd.postDeviceCommands = pkgs.lib.mkBefore '' mkdir -m 0755 -p ${usb_data.mountpoint} while !(test -b ${usb_data.encrypted_path}) do echo "Please Plug In USB" sleep 1 done echo "Please Decrypt USB" cryptsetup luksOpen ${usb_data.encrypted_path} ${usb_data.mapper_name} mount -n -t ${usb_data.unencrypted_fs_type} -o ro ${usb_data.mapper_path} ${usb_data.mountpoint} ''; initrd.luks.devices = { "${ssd_data.root_mapper_name}" = { device = "${ssd_data.encrypted_root_path}"; keyFile = "${usb_data.lappy_encryption_key_path}"; preLVM = false; allowDiscards = true; }; }; }; fileSystems = { "/" = { device = "${ssd_data.decrypted_root_path}"; fsType = "${ssd_data.unencrypted_root_fs_type}"; }; "/boot" = { device = "${ssd_data.boot_path}"; fsType = "${ssd_data.boot_fs_type}"; }; }; }