diff options
author | michael bishop <cleverca22@gmail.com> | 2016-11-29 10:31:07 -0400 |
---|---|---|
committer | michael bishop <cleverca22@gmail.com> | 2016-11-29 10:31:07 -0400 |
commit | e710edeecfd6152c0b67357555663e5dbec2c787 (patch) | |
tree | 81583e419cc6965988781197f52102e760070a32 /nixos/modules/installer/netboot/netboot.nix | |
parent | 28fa4cfe56b8b4c99cb197b5318104673f99938e (diff) |
make the /nix/store writable under netboot images
Diffstat (limited to 'nixos/modules/installer/netboot/netboot.nix')
-rw-r--r-- | nixos/modules/installer/netboot/netboot.nix | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/nixos/modules/installer/netboot/netboot.nix b/nixos/modules/installer/netboot/netboot.nix index 366591a81148..5908ff6cb940 100644 --- a/nixos/modules/installer/netboot/netboot.nix +++ b/nixos/modules/installer/netboot/netboot.nix @@ -26,11 +26,6 @@ with lib; # here and it causes a cyclic dependency. boot.loader.grub.enable = false; - boot.initrd.postMountCommands = '' - mkdir -p /mnt-root/nix/store - mount -t squashfs /nix-store.squashfs /mnt-root/nix/store - ''; - # !!! Hack - attributes expected by other modules. system.boot.loader.kernelFile = "bzImage"; environment.systemPackages = [ pkgs.grub2 pkgs.grub2_efi pkgs.syslinux ]; @@ -42,13 +37,34 @@ with lib; options = [ "mode=0755" ]; }; + # In stage 1, mount a tmpfs on top of /nix/store (the squashfs + # image) to make this a live CD. + fileSystems."/nix/.ro-store" = + { fsType = "squashfs"; + device = "../nix-store.squashfs"; + options = [ "loop" ]; + neededForBoot = true; + }; + + fileSystems."/nix/.rw-store" = + { fsType = "tmpfs"; + options = [ "mode=0755" ]; + neededForBoot = true; + }; + + fileSystems."/nix/store" = + { fsType = "unionfs-fuse"; + device = "unionfs"; + options = [ "allow_other" "cow" "nonempty" "chroot=/mnt-root" "max_files=32768" "hide_meta_files" "dirs=/nix/.rw-store=rw:/nix/.ro-store=ro" ]; + }; + boot.initrd.availableKernelModules = [ "squashfs" ]; boot.initrd.kernelModules = [ "loop" ]; # Closures to be copied to the Nix store, namely the init # script and the top-level system configuration directory. - netboot.storeContents = + netboot.storeContents = [ config.system.build.toplevel ]; # Create the squashfs image that contains the Nix store. |