nixos/virtualisation: format image-related files
This commit is contained in:
		
							parent
							
								
									1d7922b778
								
							
						
					
					
						commit
						88b285c01d
					
				| @ -1,12 +1,23 @@ | ||||
| { config, lib, pkgs, ... }: | ||||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| 
 | ||||
| let | ||||
|   inherit (lib) mkOption optionalString types versionAtLeast; | ||||
|   inherit (lib) | ||||
|     mkOption | ||||
|     optionalString | ||||
|     types | ||||
|     versionAtLeast | ||||
|     ; | ||||
|   inherit (lib.options) literalExpression; | ||||
|   cfg = config.amazonImage; | ||||
|   amiBootMode = if config.ec2.efi then "uefi" else "legacy-bios"; | ||||
| 
 | ||||
| in { | ||||
| in | ||||
| { | ||||
| 
 | ||||
|   imports = [ ../../../modules/virtualisation/amazon-image.nix ]; | ||||
| 
 | ||||
| @ -14,11 +25,11 @@ in { | ||||
|   # experience, which prior to 4.15 was 255. | ||||
|   # https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html#timeout-nvme-ebs-volumes | ||||
|   config.boot.kernelParams = | ||||
|     let timeout = | ||||
|       if versionAtLeast config.boot.kernelPackages.kernel.version "4.15" | ||||
|       then "4294967295" | ||||
|       else  "255"; | ||||
|     in [ "nvme_core.io_timeout=${timeout}" ]; | ||||
|     let | ||||
|       timeout = | ||||
|         if versionAtLeast config.boot.kernelPackages.kernel.version "4.15" then "4294967295" else "255"; | ||||
|     in | ||||
|     [ "nvme_core.io_timeout=${timeout}" ]; | ||||
| 
 | ||||
|   options.amazonImage = { | ||||
|     name = mkOption { | ||||
| @ -34,7 +45,7 @@ in { | ||||
|           } | ||||
|         ] | ||||
|       ''; | ||||
|       default = []; | ||||
|       default = [ ]; | ||||
|       description = '' | ||||
|         This option lists files to be copied to fixed locations in the | ||||
|         generated image. Glob patterns work. | ||||
| @ -49,15 +60,19 @@ in { | ||||
|     }; | ||||
| 
 | ||||
|     format = mkOption { | ||||
|       type = types.enum [ "raw" "qcow2" "vpc" ]; | ||||
|       type = types.enum [ | ||||
|         "raw" | ||||
|         "qcow2" | ||||
|         "vpc" | ||||
|       ]; | ||||
|       default = "vpc"; | ||||
|       description = "The image format to output"; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   config.system.build.amazonImage = let | ||||
|     configFile = pkgs.writeText "configuration.nix" | ||||
|       '' | ||||
|   config.system.build.amazonImage = | ||||
|     let | ||||
|       configFile = pkgs.writeText "configuration.nix" '' | ||||
|         { modulesPath, ... }: { | ||||
|           imports = [ "''${modulesPath}/virtualisation/amazon-image.nix" ]; | ||||
|           ${optionalString config.ec2.efi '' | ||||
| @ -71,7 +86,12 @@ in { | ||||
|       ''; | ||||
| 
 | ||||
|       zfsBuilder = import ../../../lib/make-multi-disk-zfs-image.nix { | ||||
|       inherit lib config configFile pkgs; | ||||
|         inherit | ||||
|           lib | ||||
|           config | ||||
|           configFile | ||||
|           pkgs | ||||
|           ; | ||||
|         inherit (cfg) contents format name; | ||||
| 
 | ||||
|         includeChannel = true; | ||||
| @ -119,7 +139,12 @@ in { | ||||
|       }; | ||||
| 
 | ||||
|       extBuilder = import ../../../lib/make-disk-image.nix { | ||||
|       inherit lib config configFile pkgs; | ||||
|         inherit | ||||
|           lib | ||||
|           config | ||||
|           configFile | ||||
|           pkgs | ||||
|           ; | ||||
| 
 | ||||
|         inherit (cfg) contents format name; | ||||
| 
 | ||||
| @ -154,7 +179,8 @@ in { | ||||
|              ' > $out/nix-support/image-info.json | ||||
|         ''; | ||||
|       }; | ||||
|   in if config.ec2.zfs.enable then zfsBuilder else extBuilder; | ||||
|     in | ||||
|     if config.ec2.zfs.enable then zfsBuilder else extBuilder; | ||||
| 
 | ||||
|   meta.maintainers = with lib.maintainers; [ arianvp ]; | ||||
| } | ||||
|  | ||||
| @ -1,6 +1,11 @@ | ||||
| # nix-build '<nixpkgs/nixos>' -A config.system.build.openstackImage --arg configuration "{ imports = [ ./nixos/maintainers/scripts/openstack/openstack-image.nix ]; }" | ||||
| 
 | ||||
| { config, lib, pkgs, ... }: | ||||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| let | ||||
|   inherit (lib) mkOption types; | ||||
|   copyChannel = true; | ||||
| @ -12,7 +17,6 @@ in | ||||
|     ../../../modules/virtualisation/openstack-config.nix | ||||
|   ] ++ (lib.optional copyChannel ../../../modules/installer/cd-dvd/channel.nix); | ||||
| 
 | ||||
| 
 | ||||
|   options.openstackImage = { | ||||
|     name = mkOption { | ||||
|       type = types.str; | ||||
| @ -33,7 +37,10 @@ in | ||||
|     }; | ||||
| 
 | ||||
|     format = mkOption { | ||||
|       type = types.enum [ "raw" "qcow2" ]; | ||||
|       type = types.enum [ | ||||
|         "raw" | ||||
|         "qcow2" | ||||
|       ]; | ||||
|       default = "qcow2"; | ||||
|       description = "The image format to output"; | ||||
|     }; | ||||
| @ -59,8 +66,7 @@ in | ||||
|       inherit (cfg) contents format name; | ||||
|       pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package | ||||
| 
 | ||||
|       configFile = pkgs.writeText "configuration.nix" | ||||
|         '' | ||||
|       configFile = pkgs.writeText "configuration.nix" '' | ||||
|         { modulesPath, ... }: { | ||||
|           imports = [ "''${modulesPath}/virtualisation/openstack-config.nix" ]; | ||||
|           openstack.zfs.enable = true; | ||||
|  | ||||
| @ -1,4 +1,9 @@ | ||||
| { config, lib, pkgs, ... }: | ||||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| 
 | ||||
| with lib; | ||||
| let | ||||
| @ -35,7 +40,12 @@ in | ||||
|     }; | ||||
| 
 | ||||
|     vmGeneration = mkOption { | ||||
|       type = with types; enum [ "v1" "v2" ]; | ||||
|       type = | ||||
|         with types; | ||||
|         enum [ | ||||
|           "v1" | ||||
|           "v2" | ||||
|         ]; | ||||
|       default = "v1"; | ||||
|       description = '' | ||||
|         VM Generation to use. | ||||
|  | ||||
| @ -1,4 +1,9 @@ | ||||
| { config, lib, pkgs, ... }: | ||||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| 
 | ||||
| with lib; | ||||
| let | ||||
| @ -31,7 +36,10 @@ in | ||||
|     }; | ||||
| 
 | ||||
|     virtualisation.digitalOceanImage.compressionMethod = mkOption { | ||||
|       type = types.enum [ "gzip" "bzip2" ]; | ||||
|       type = types.enum [ | ||||
|         "gzip" | ||||
|         "bzip2" | ||||
|       ]; | ||||
|       default = "gzip"; | ||||
|       example = "bzip2"; | ||||
|       description = '' | ||||
| @ -48,23 +56,32 @@ in | ||||
|     system.build.digitalOceanImage = import ../../lib/make-disk-image.nix { | ||||
|       name = "digital-ocean-image"; | ||||
|       format = "qcow2"; | ||||
|       postVM = let | ||||
|         compress = { | ||||
|       postVM = | ||||
|         let | ||||
|           compress = | ||||
|             { | ||||
|               "gzip" = "${pkgs.gzip}/bin/gzip"; | ||||
|               "bzip2" = "${pkgs.bzip2}/bin/bzip2"; | ||||
|         }.${cfg.compressionMethod}; | ||||
|       in '' | ||||
|             } | ||||
|             .${cfg.compressionMethod}; | ||||
|         in | ||||
|         '' | ||||
|           ${compress} $diskImage | ||||
|         ''; | ||||
|       configFile = if cfg.configFile == null | ||||
|         then config.virtualisation.digitalOcean.defaultConfigFile | ||||
|         else cfg.configFile; | ||||
|       configFile = | ||||
|         if cfg.configFile == null then | ||||
|           config.virtualisation.digitalOcean.defaultConfigFile | ||||
|         else | ||||
|           cfg.configFile; | ||||
|       inherit (cfg) diskSize; | ||||
|       inherit config lib pkgs; | ||||
|     }; | ||||
| 
 | ||||
|   }; | ||||
| 
 | ||||
|   meta.maintainers = with maintainers; [ arianvp eamsden ]; | ||||
|   meta.maintainers = with maintainers; [ | ||||
|     arianvp | ||||
|     eamsden | ||||
|   ]; | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -1,4 +1,9 @@ | ||||
| { config, lib, pkgs, ... }: | ||||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| 
 | ||||
| with lib; | ||||
| let | ||||
| @ -64,7 +69,13 @@ in | ||||
|     system.build.googleComputeImage = import ../../lib/make-disk-image.nix { | ||||
|       name = "google-compute-image"; | ||||
|       postVM = '' | ||||
|         PATH=$PATH:${with pkgs; lib.makeBinPath [ gnutar gzip ]} | ||||
|         PATH=$PATH:${ | ||||
|           with pkgs; | ||||
|           lib.makeBinPath [ | ||||
|             gnutar | ||||
|             gzip | ||||
|           ] | ||||
|         } | ||||
|         pushd $out | ||||
|         mv $diskImage disk.raw | ||||
|         tar -Sc disk.raw | gzip -${toString cfg.compressionLevel} > \ | ||||
|  | ||||
| @ -1,11 +1,17 @@ | ||||
| { config, pkgs, lib, ... }: | ||||
| { | ||||
|   config, | ||||
|   pkgs, | ||||
|   lib, | ||||
|   ... | ||||
| }: | ||||
| 
 | ||||
| with lib; | ||||
| 
 | ||||
| let | ||||
|   cfg = config.hyperv; | ||||
| 
 | ||||
| in { | ||||
| in | ||||
| { | ||||
|   options = { | ||||
|     hyperv = { | ||||
|       baseImageSize = mkOption { | ||||
|  | ||||
| @ -1,4 +1,9 @@ | ||||
| { config, lib, pkgs, ... }: | ||||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| 
 | ||||
| with lib; | ||||
| let | ||||
|  | ||||
| @ -1,4 +1,9 @@ | ||||
| { config, lib, pkgs, ... }: | ||||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| 
 | ||||
| let | ||||
|   cfg = config.oci; | ||||
| @ -25,7 +30,10 @@ in | ||||
|       after = [ "network-online.target" ]; | ||||
|       wants = [ "network-online.target" ]; | ||||
| 
 | ||||
|       path  = [ pkgs.coreutils pkgs.curl ]; | ||||
|       path = [ | ||||
|         pkgs.coreutils | ||||
|         pkgs.curl | ||||
|       ]; | ||||
|       script = '' | ||||
|         mkdir -m 0700 -p /root/.ssh | ||||
|         if [ -f /root/.ssh/authorized_keys ]; then | ||||
|  | ||||
| @ -1,4 +1,9 @@ | ||||
| { config, lib, pkgs, ... }: | ||||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| { | ||||
|   options = { | ||||
|     oci = { | ||||
|  | ||||
| @ -1,4 +1,9 @@ | ||||
| { config, pkgs, lib, ... }: | ||||
| { | ||||
|   config, | ||||
|   pkgs, | ||||
|   lib, | ||||
|   ... | ||||
| }: | ||||
| 
 | ||||
| with lib; | ||||
| 
 | ||||
| @ -54,7 +59,10 @@ with lib; | ||||
|         ''; | ||||
|       }; | ||||
|       bios = mkOption { | ||||
|         type = types.enum [ "seabios" "ovmf" ]; | ||||
|         type = types.enum [ | ||||
|           "seabios" | ||||
|           "ovmf" | ||||
|         ]; | ||||
|         default = "seabios"; | ||||
|         description = '' | ||||
|           Select BIOS implementation (seabios = Legacy BIOS, ovmf = UEFI). | ||||
| @ -124,8 +132,13 @@ with lib; | ||||
|       }; | ||||
|     }; | ||||
|     qemuExtraConf = mkOption { | ||||
|       type = with types; attrsOf (oneOf [ str int ]); | ||||
|       default = {}; | ||||
|       type = | ||||
|         with types; | ||||
|         attrsOf (oneOf [ | ||||
|           str | ||||
|           int | ||||
|         ]); | ||||
|       default = { }; | ||||
|       example = literalExpression '' | ||||
|         { | ||||
|           cpu = "host"; | ||||
| @ -137,7 +150,12 @@ with lib; | ||||
|       ''; | ||||
|     }; | ||||
|     partitionTableType = mkOption { | ||||
|       type = types.enum [ "efi" "hybrid" "legacy" "legacy+gpt" ]; | ||||
|       type = types.enum [ | ||||
|         "efi" | ||||
|         "hybrid" | ||||
|         "legacy" | ||||
|         "legacy+gpt" | ||||
|       ]; | ||||
|       description = '' | ||||
|         Partition table type to use. See make-disk-image.nix partitionTableType for details. | ||||
|         Defaults to 'legacy' for 'proxmox.qemuConf.bios="seabios"' (default), other bios values defaults to 'efi'. | ||||
| @ -185,23 +203,30 @@ with lib; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   config = let | ||||
|   config = | ||||
|     let | ||||
|       cfg = config.proxmox; | ||||
|       cfgLine = name: value: '' | ||||
|         ${name}: ${builtins.toString value} | ||||
|       ''; | ||||
|       virtio0Storage = builtins.head (builtins.split ":" cfg.qemuConf.virtio0); | ||||
|     cfgFile = fileName: properties: pkgs.writeTextDir fileName '' | ||||
|       cfgFile = | ||||
|         fileName: properties: | ||||
|         pkgs.writeTextDir fileName '' | ||||
|           # generated by NixOS | ||||
|           ${lib.concatStrings (lib.mapAttrsToList cfgLine properties)} | ||||
|           #qmdump#map:virtio0:drive-virtio0:${virtio0Storage}:raw: | ||||
|         ''; | ||||
|       inherit (cfg) partitionTableType; | ||||
|       supportEfi = partitionTableType == "efi" || partitionTableType == "hybrid"; | ||||
|     supportBios = partitionTableType == "legacy" || partitionTableType == "hybrid" || partitionTableType == "legacy+gpt"; | ||||
|       supportBios = | ||||
|         partitionTableType == "legacy" | ||||
|         || partitionTableType == "hybrid" | ||||
|         || partitionTableType == "legacy+gpt"; | ||||
|       hasBootPartition = partitionTableType == "efi" || partitionTableType == "hybrid"; | ||||
|       hasNoFsPartition = partitionTableType == "hybrid" || partitionTableType == "legacy+gpt"; | ||||
|   in { | ||||
|     in | ||||
|     { | ||||
|       assertions = [ | ||||
|         { | ||||
|           assertion = config.boot.loader.systemd-boot.enable -> config.proxmox.qemuConf.bios == "ovmf"; | ||||
| @ -223,9 +248,11 @@ with lib; | ||||
|       system.build.VMA = import ../../lib/make-disk-image.nix { | ||||
|         name = "proxmox-${cfg.filenameSuffix}"; | ||||
|         inherit (cfg) partitionTableType; | ||||
|       postVM = let | ||||
|         postVM = | ||||
|           let | ||||
|             # Build qemu with PVE's patch that adds support for the VMA format | ||||
|         vma = (pkgs.qemu_kvm.override { | ||||
|             vma = | ||||
|               (pkgs.qemu_kvm.override { | ||||
|                 alsaSupport = false; | ||||
|                 pulseSupport = false; | ||||
|                 sdlSupport = false; | ||||
| @ -240,7 +267,8 @@ with lib; | ||||
|                 numaSupport = false; | ||||
|                 seccompSupport = false; | ||||
|                 guestAgentSupport = false; | ||||
|         }).overrideAttrs ( super: rec { | ||||
|               }).overrideAttrs | ||||
|                 (super: rec { | ||||
|                   # Check https://github.com/proxmox/pve-qemu/tree/master for the version | ||||
|                   # of qemu and patch to use | ||||
|                   version = "9.0.0"; | ||||
| @ -250,12 +278,14 @@ with lib; | ||||
|                   }; | ||||
|                   patches = [ | ||||
|                     # Proxmox' VMA tool is published as a particular patch upon QEMU | ||||
|             "${pkgs.fetchFromGitHub { | ||||
|                     "${ | ||||
|                       pkgs.fetchFromGitHub { | ||||
|                         owner = "proxmox"; | ||||
|                         repo = "pve-qemu"; | ||||
|                         rev = "14afbdd55f04d250bd679ca1ad55d3f47cd9d4c8"; | ||||
|                         hash = "sha256-lSJQA5SHIHfxJvMLIID2drv2H43crTPMNIlIT37w9Nc="; | ||||
|             }}/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch" | ||||
|                       } | ||||
|                     }/debian/patches/pve/0027-PVE-Backup-add-vma-backup-format-code.patch" | ||||
|                   ]; | ||||
| 
 | ||||
|                   buildInputs = super.buildInputs ++ [ pkgs.libuuid ]; | ||||
| @ -265,7 +295,9 @@ with lib; | ||||
|           in | ||||
|           '' | ||||
|             ${vma}/bin/vma create "vzdump-qemu-${cfg.filenameSuffix}.vma" \ | ||||
|           -c ${cfgFile "qemu-server.conf" (cfg.qemuConf // cfg.qemuExtraConf)}/qemu-server.conf drive-virtio0=$diskImage | ||||
|               -c ${ | ||||
|                 cfgFile "qemu-server.conf" (cfg.qemuConf // cfg.qemuExtraConf) | ||||
|               }/qemu-server.conf drive-virtio0=$diskImage | ||||
|             rm $diskImage | ||||
|             ${pkgs.zstd}/bin/zstd "vzdump-qemu-${cfg.filenameSuffix}.vma" | ||||
|             mv "vzdump-qemu-${cfg.filenameSuffix}.vma.zst" $out/ | ||||
| @ -282,19 +314,25 @@ with lib; | ||||
|         growPartition = true; | ||||
|         kernelParams = [ "console=ttyS0" ]; | ||||
|         loader.grub = { | ||||
|         device = lib.mkDefault (if (hasNoFsPartition || supportBios) then | ||||
|           device = lib.mkDefault ( | ||||
|             if (hasNoFsPartition || supportBios) then | ||||
|               # Even if there is a separate no-fs partition ("/dev/disk/by-partlabel/no-fs" i.e. "/dev/vda2"), | ||||
|               # which will be used the bootloader, do not set it as loader.grub.device. | ||||
|               # GRUB installation fails, unless the whole disk is selected. | ||||
|               "/dev/vda" | ||||
|             else | ||||
|           "nodev"); | ||||
|               "nodev" | ||||
|           ); | ||||
|           efiSupport = lib.mkDefault supportEfi; | ||||
|           efiInstallAsRemovable = lib.mkDefault supportEfi; | ||||
|         }; | ||||
| 
 | ||||
|         loader.timeout = 0; | ||||
|       initrd.availableKernelModules = [ "uas" "virtio_blk" "virtio_pci" ]; | ||||
|         initrd.availableKernelModules = [ | ||||
|           "uas" | ||||
|           "virtio_blk" | ||||
|           "virtio_pci" | ||||
|         ]; | ||||
|       }; | ||||
| 
 | ||||
|       fileSystems."/" = { | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -1,9 +1,15 @@ | ||||
| { config, lib, pkgs, ... }: | ||||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   ... | ||||
| }: | ||||
| let | ||||
| 
 | ||||
|   cfg = config.virtualbox; | ||||
| 
 | ||||
| in { | ||||
| in | ||||
| { | ||||
| 
 | ||||
|   options = { | ||||
|     virtualbox = { | ||||
| @ -51,7 +57,14 @@ in { | ||||
|         ''; | ||||
|       }; | ||||
|       params = lib.mkOption { | ||||
|         type = with lib.types; attrsOf (oneOf [ str int bool (listOf str) ]); | ||||
|         type = | ||||
|           with lib.types; | ||||
|           attrsOf (oneOf [ | ||||
|             str | ||||
|             int | ||||
|             bool | ||||
|             (listOf str) | ||||
|           ]); | ||||
|         example = { | ||||
|           audio = "alsa"; | ||||
|           rtcuseutc = "on"; | ||||
| @ -64,11 +77,21 @@ in { | ||||
|         ''; | ||||
|       }; | ||||
|       exportParams = lib.mkOption { | ||||
|         type = with lib.types; listOf (oneOf [ str int bool (listOf str) ]); | ||||
|         type = | ||||
|           with lib.types; | ||||
|           listOf (oneOf [ | ||||
|             str | ||||
|             int | ||||
|             bool | ||||
|             (listOf str) | ||||
|           ]); | ||||
|         example = [ | ||||
|           "--vsys" "0" "--vendor" "ACME Inc." | ||||
|           "--vsys" | ||||
|           "0" | ||||
|           "--vendor" | ||||
|           "ACME Inc." | ||||
|         ]; | ||||
|         default = []; | ||||
|         default = [ ]; | ||||
|         description = '' | ||||
|           Parameters passed to the Virtualbox export command. | ||||
| 
 | ||||
| @ -86,7 +109,8 @@ in { | ||||
|           mountPoint = "/home/demo/storage"; | ||||
|           size = 100 * 1024; | ||||
|         }; | ||||
|         type = lib.types.nullOr (lib.types.submodule { | ||||
|         type = lib.types.nullOr ( | ||||
|           lib.types.submodule { | ||||
|             options = { | ||||
|               size = lib.mkOption { | ||||
|                 type = lib.types.int; | ||||
| @ -102,7 +126,8 @@ in { | ||||
|                 description = "Path where to mount this disk."; | ||||
|               }; | ||||
|             }; | ||||
|         }); | ||||
|           } | ||||
|         ); | ||||
|       }; | ||||
|       postExportCommands = lib.mkOption { | ||||
|         type = lib.types.lines; | ||||
| @ -122,7 +147,14 @@ in { | ||||
|         ''; | ||||
|       }; | ||||
|       storageController = lib.mkOption { | ||||
|         type = with lib.types; attrsOf (oneOf [ str int bool (listOf str) ]); | ||||
|         type = | ||||
|           with lib.types; | ||||
|           attrsOf (oneOf [ | ||||
|             str | ||||
|             int | ||||
|             bool | ||||
|             (listOf str) | ||||
|           ]); | ||||
|         example = { | ||||
|           name = "SCSI"; | ||||
|           add = "scsi"; | ||||
| @ -175,8 +207,7 @@ in { | ||||
|       diskSize = cfg.baseImageSize; | ||||
|       additionalSpace = "${toString cfg.baseImageFreeSpace}M"; | ||||
| 
 | ||||
|       postVM = | ||||
|         '' | ||||
|       postVM = '' | ||||
|         export HOME=$PWD | ||||
|         export PATH=${pkgs.virtualbox}/bin:$PATH | ||||
| 
 | ||||
| @ -225,13 +256,15 @@ in { | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     fileSystems = { | ||||
|     fileSystems = | ||||
|       { | ||||
|         "/" = { | ||||
|           device = "/dev/disk/by-label/nixos"; | ||||
|           autoResize = true; | ||||
|           fsType = "ext4"; | ||||
|         }; | ||||
|     } // (lib.optionalAttrs (cfg.extraDisk != null) { | ||||
|       } | ||||
|       // (lib.optionalAttrs (cfg.extraDisk != null) { | ||||
|         ${cfg.extraDisk.mountPoint} = { | ||||
|           device = "/dev/disk/by-label/" + cfg.extraDisk.label; | ||||
|           autoResize = true; | ||||
| @ -242,10 +275,12 @@ in { | ||||
|     boot.growPartition = true; | ||||
|     boot.loader.grub.device = "/dev/sda"; | ||||
| 
 | ||||
|     swapDevices = [{ | ||||
|     swapDevices = [ | ||||
|       { | ||||
|         device = "/var/swap"; | ||||
|         size = 2048; | ||||
|     }]; | ||||
|       } | ||||
|     ]; | ||||
| 
 | ||||
|     virtualisation.virtualbox.guest.enable = true; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 phaer
						phaer