summaryrefslogtreecommitdiff
path: root/sys/boot.nix
diff options
context:
space:
mode:
Diffstat (limited to 'sys/boot.nix')
-rw-r--r--sys/boot.nix105
1 files changed, 56 insertions, 49 deletions
diff --git a/sys/boot.nix b/sys/boot.nix
index 9e1ef85..5d37b25 100644
--- a/sys/boot.nix
+++ b/sys/boot.nix
@@ -1,7 +1,8 @@
{ lib, config, ... }:
with lib; let
cfg = config.local;
-in {
+in
+{
options.local = with lib.types; {
loader = mkOption {
type = enum [ "grub" "systemd-boot" ];
@@ -40,64 +41,70 @@ in {
};
};
- initrd = let
- crypt = cfg.crypt.toplevel;
- headerPathEscaped = escapeShellArg "/initrd-boot/${crypt.headerFromBoot}";
- in {
- availableKernelModules = cfg.initrdModules;
- supportedFilesystems = [ "vfat" ];
+ initrd =
+ let
+ crypt = cfg.crypt.toplevel;
+ headerPathEscaped = escapeShellArg "/initrd-boot/${crypt.headerFromBoot}";
+ in
+ {
+ availableKernelModules = cfg.initrdModules;
+ supportedFilesystems = [ "vfat" ];
- preDeviceCommands = optionalString (crypt != null) ''
- mkdir -p `dirname ${headerPathEscaped}`
- touch ${headerPathEscaped}
- '';
-
- preLVMCommands = optionalString cfg.portable ''
- sleep 2 #TODO
- '';
+ preDeviceCommands = optionalString (crypt != null) ''
+ mkdir -p `dirname ${headerPathEscaped}`
+ touch ${headerPathEscaped}
+ '';
- postMountCommands = let
- fromRoot = path: escapeShellArg "/mnt-root/${path}";
- auxOpen = aux: ''
- cryptsetup -v open \
- --header ${fromRoot aux.header} \
- --key-file ${fromRoot aux.keyfile} \
- ${aux.device} ${aux.target}
+ preLVMCommands = optionalString cfg.portable ''
+ sleep 2 #TODO
'';
- in concatStringsSep "\n" (map auxOpen cfg.crypt.aux);
- luks.devices = mkIf (crypt != null) {
- "${crypt.target}" = {
- inherit (crypt) device;
- header = "/initrd-boot/${crypt.headerFromBoot}";
- preLVM = false;
+ postMountCommands =
+ let
+ fromRoot = path: escapeShellArg "/mnt-root/${path}";
+ auxOpen = aux: ''
+ cryptsetup -v open \
+ --header ${fromRoot aux.header} \
+ --key-file ${fromRoot aux.keyfile} \
+ ${aux.device} ${aux.target}
+ '';
+ in
+ concatStringsSep "\n" (map auxOpen cfg.crypt.aux);
+
+ luks.devices = mkIf (crypt != null) {
+ "${crypt.target}" = {
+ inherit (crypt) device;
+ header = "/initrd-boot/${crypt.headerFromBoot}";
+ preLVM = false;
- preOpenCommands = ''
- mount -o ro -t vfat ${escapeShellArg cfg.fs.boot.device} /initrd-boot
- '';
+ preOpenCommands = ''
+ mount -o ro -t vfat ${escapeShellArg cfg.fs.boot.device} /initrd-boot
+ '';
- postOpenCommands = ''
- umount /initrd-boot
- '';
+ postOpenCommands = ''
+ umount /initrd-boot
+ '';
+ };
};
- };
- #network = {
- # enable = true;
+ #network = {
+ # enable = true;
- # ssh = {
- # enable = true;
- # port = 2234;
- # };
- #};
- };
+ # ssh = {
+ # enable = true;
+ # port = 2234;
+ # };
+ #};
+ };
};
- hardware.cpu = let
- ucode.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
- in {
- amd = mkIf (cfg.cpuVendor == "amd") ucode;
- intel = mkIf (cfg.cpuVendor == "intel") ucode;
- };
+ hardware.cpu =
+ let
+ ucode.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+ in
+ {
+ amd = mkIf (cfg.cpuVendor == "amd") ucode;
+ intel = mkIf (cfg.cpuVendor == "intel") ucode;
+ };
};
}