From 26dc2e400be9dd89919aeefeeff4afbf0e9789eb Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Mon, 21 Dec 2020 00:51:42 +0100 Subject: [PATCH] WiP! nixosConfigurations, tor --- nixos-configurations/default.nix | 37 ++++++++++++++++++++++++++++++++ nixos-modules/nova.nix | 6 ++++++ nixos-modules/qemu-vm.nix | 28 ++++++++++++++---------- 3 files changed, 60 insertions(+), 11 deletions(-) diff --git a/nixos-configurations/default.nix b/nixos-configurations/default.nix index 6ad2d4d..7a132f1 100644 --- a/nixos-configurations/default.nix +++ b/nixos-configurations/default.nix @@ -6,7 +6,44 @@ modules = [ genodepkgs.nixosModules.x86_64 genodepkgs.nixosModules.nova + (import ./tor-relay.nix) + + ({ config, pkgs, ... }: { + system.build.libvirtDomain = with pkgs; + stdenv.mkDerivation { + name = config.system.name + ".libvirt"; + + # nativeBuildInputs = with pkgs.buildPackages; [ libvirt ]; + + buildCommand = '' + mkdir -p $out + virtXml=$out/libvirt-domain.xml + cat > $virtXml << EOF + + + ${config.system.name} + ${toString config.virtualisation.memorySize} + ${toString config.virtualisation.cores} + + hvm + ${config.virtualisation.qemu.kernel} + ${config.virtualisation.qemu.initrd} + ${config.virtualisation.qemu.cmdline} + + + qemu-system-x86_64 + + + + + + EOF + + # virt-xml-validate $virtXml + ''; + }; + }) ]; }; } diff --git a/nixos-modules/nova.nix b/nixos-modules/nova.nix index 0ba09c4..caa30e9 100644 --- a/nixos-modules/nova.nix +++ b/nixos-modules/nova.nix @@ -39,6 +39,12 @@ in { "-initrd '${pkgs.genodePackages.NOVA}/hypervisor-x86_64 arg=iommu logmem novpid serial,${config.genode.boot.image}/image.elf'" ]; + virtualisation.qemu.kernel = "${pkgs.genodePackages.bender}/share/bender/bender"; + + virtualisation.qemu.initrd = "${pkgs.genodePackages.NOVA}/hypervisor-x86_64"; + + virtualisation.qemu.cmdline = "arg=iommu logmem novpid serial,${config.genode.boot.image}/image.elf"; + boot.loader.grub.extraEntries = '' menuentry 'Genode on NOVA' { insmod multiboot2 diff --git a/nixos-modules/qemu-vm.nix b/nixos-modules/qemu-vm.nix index d0b0feb..54c3815 100644 --- a/nixos-modules/qemu-vm.nix +++ b/nixos-modules/qemu-vm.nix @@ -144,7 +144,6 @@ let -name ${config.system.name} \ -m ${toString config.virtualisation.memorySize} \ -smp ${toString config.virtualisation.cores} \ - -device virtio-rng-pci \ ${concatStringsSep " " config.virtualisation.qemu.networkingOptions} \ -virtfs local,path=/nix/store,security_model=none,mount_tag=store \ -virtfs local,path=$TMPDIR/xchg,security_model=none,mount_tag=xchg \ @@ -404,6 +403,23 @@ in { Enable the Qemu guest agent. ''; }; + + kernel = mkOption { + type = types.path; + description = "Guest kernel."; + }; + + initrd = mkOption { + type = types.path; + description = "Guest initrd."; + }; + + cmdline = mkOption { + type = types.str; + description = "Command line options to pass to guest."; + }; + + }; virtualisation.useBootLoader = mkOption { @@ -506,16 +522,6 @@ in { # FIXME: Consolidate this one day. virtualisation.qemu.options = mkMerge [ - (mkIf (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) [ - "-usb" - "-device usb-tablet,bus=usb-bus.0" - ]) - (mkIf (pkgs.stdenv.isAarch32 || pkgs.stdenv.isAarch64) [ - "-device virtio-gpu-pci" - "-device usb-ehci,id=usb0" - "-device usb-kbd" - "-device usb-tablet" - ]) (mkIf cfg.useEFIBoot [ "-drive if=pflash,format=raw,unit=0,readonly,file=${efiFirmware}" "-drive if=pflash,format=raw,unit=1,file=$NIX_EFI_VARS"