diff --git a/lib/link.nix b/lib/link.nix index 3d9918f6..9ad62dee 100644 --- a/lib/link.nix +++ b/lib/link.nix @@ -73,19 +73,25 @@ let ''; in { - mkLink = { src, dest, active ? false }: - let linkFile = strings.optionalString active "ln -s ${src} ${dest}"; in '' - DIR=$(dirname ${dest}) + mkLinks = links: + let + mkScript = src: dest: '' + DIR=$(dirname ${dest}) - mkdir -p "$DIR" + mkdir -p "$DIR" - if [ -e "${dest}" ]; then - unlink ${dest} || rm ${dest} - fi + if [ -e "${dest}" ]; then + unlink ${dest} || rm ${dest} + fi - ${linkFile} - - ''; + ln -s ${src} ${dest} + ''; + in + trivial.pipe links [ + (builtins.filter (x: x.active or false)) + (builtins.map (x: mkScript x.src x.dest)) + (builtins.concatStringsSep "\n\n") + ]; mkMutableLinks = { config diff --git a/modules/hardware/virutalization.nix b/modules/hardware/virutalization.nix index 0673ddcd..1cf96863 100644 --- a/modules/hardware/virutalization.nix +++ b/modules/hardware/virutalization.nix @@ -113,21 +113,18 @@ in sockets.pcscd.enable = mkIf cfg.enableWindowsVM false; }; - system.activationScripts.installWindowsVMFiles = - let - vibiosLink = link.mkLink { - src = virutalizationDir."vibios.rom".source; - dest = "/var/lib/libvirt/vbios/vibios.rom"; - active = cfg.enableWindowsVM; - }; - - qemuHookScript = link.mkLink { - src = virutalizationDir.qemu.source; - dest = "/var/lib/libvirt/hooks/qemu"; - active = cfg.enableWindowsVM; - }; - in - vibiosLink + qemuHookScript; + system.activationScripts.installWindowsVMFiles = link.mkLinks [ + { + src = virutalizationDir."vibios.rom".source; + dest = "/var/lib/libvirt/vbios/vibios.rom"; + active = cfg.enableWindowsVM; + } + { + src = virutalizationDir.qemu.source; + dest = "/var/lib/libvirt/hooks/qemu"; + active = cfg.enableWindowsVM; + } + ]; boot = { kernelParams = [ "intel_iommu=on" "iommu=pt" ];