 a2ee5cbb05
			
		
	
	
		a2ee5cbb05
		
			
		
	
	
	
	
		
			
			Co-authored-by: zimbatm <zimbatm@zimbatm.com> Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| # Vagrant + VirtualBox
 | |
| 
 | |
| { config, pkgs, ... }:
 | |
| 
 | |
| {
 | |
|   imports = [
 | |
|     ./vagrant-guest.nix
 | |
|     ./virtualbox-image.nix
 | |
|   ];
 | |
| 
 | |
|   virtualbox.params = {
 | |
|     audio = "none";
 | |
|     audioin = "off";
 | |
|     audioout = "off";
 | |
|     usb = "off";
 | |
|     usbehci = "off";
 | |
|   };
 | |
|   sound.enable = false;
 | |
|   documentation.man.enable = false;
 | |
|   documentation.nixos.enable = false;
 | |
| 
 | |
|   users.extraUsers.vagrant.extraGroups = [ "vboxsf" ];
 | |
| 
 | |
|   # generate the box v1 format which is much easier to generate
 | |
|   # https://www.vagrantup.com/docs/boxes/format.html
 | |
|   system.build.vagrantVirtualbox = pkgs.runCommand
 | |
|     "virtualbox-vagrant.box"
 | |
|     {}
 | |
|     ''
 | |
|       mkdir workdir
 | |
|       cd workdir
 | |
| 
 | |
|       # 1. create that metadata.json file
 | |
|       echo '{"provider":"virtualbox"}' > metadata.json
 | |
| 
 | |
|       # 2. create a default Vagrantfile config
 | |
|       cat <<VAGRANTFILE > Vagrantfile
 | |
|       Vagrant.configure("2") do |config|
 | |
|         config.vm.base_mac = "0800275F0936"
 | |
|       end
 | |
|       VAGRANTFILE
 | |
| 
 | |
|       # 3. add the exported VM files
 | |
|       tar xvf ${config.system.build.virtualBoxOVA}/*.ova
 | |
| 
 | |
|       # 4. move the ovf to the fixed location
 | |
|       mv *.ovf box.ovf
 | |
| 
 | |
|       # 5. generate OVF manifest file
 | |
|       rm *.mf
 | |
|       touch box.mf
 | |
|       for fname in *; do
 | |
|         checksum=$(sha256sum $fname | cut -d' ' -f 1)
 | |
|         echo "SHA256($fname)= $checksum" >> box.mf
 | |
|       done
 | |
| 
 | |
|       # 6. compress everything back together
 | |
|       tar --owner=0 --group=0 --sort=name --numeric-owner -czf $out .
 | |
|     '';
 | |
| }
 |