49 lines
1.1 KiB
Nix
49 lines
1.1 KiB
Nix
|
{ lib, config, pkgs, ... }:
|
||
|
with lib;
|
||
|
let
|
||
|
psCfg = config.pub-solar;
|
||
|
cfg = config.pub-solar.virtualisation;
|
||
|
in
|
||
|
{
|
||
|
options.pub-solar.virtualisation = {
|
||
|
enable = mkEnableOption "Life in libvirt";
|
||
|
};
|
||
|
|
||
|
config = mkIf cfg.enable {
|
||
|
boot.kernelParams = [
|
||
|
"amd_iommu=on"
|
||
|
"iommu=pt"
|
||
|
];
|
||
|
|
||
|
virtualisation.libvirtd = {
|
||
|
enable = true;
|
||
|
qemuOvmf = true;
|
||
|
};
|
||
|
users.users = pkgs.lib.setAttrByPath [ psCfg.user.name ] {
|
||
|
extraGroups = [ "libvirtd" ];
|
||
|
};
|
||
|
|
||
|
environment.systemPackages = with pkgs; [
|
||
|
coreutils-full
|
||
|
usbutils
|
||
|
libvirt
|
||
|
libvirt-glib
|
||
|
qemu
|
||
|
virt-manager
|
||
|
python38Packages.libvirt
|
||
|
gvfs
|
||
|
scream
|
||
|
edk2
|
||
|
OVMF
|
||
|
win-virtio
|
||
|
];
|
||
|
|
||
|
home-manager = with pkgs; pkgs.lib.setAttrByPath [ "users" psCfg.user.name ] {
|
||
|
xdg.dataFile."libvirt/.keep".text = "# this file is here to generate the directory";
|
||
|
};
|
||
|
|
||
|
systemd.tmpfiles.rules = [ "f /dev/shm/scream-ivshmem 0660 ${psCfg.user.name} kvm" ];
|
||
|
systemd.user.services.scream-ivshmem-pulse = import ./scream-ivshmem-pulse.service.nix pkgs;
|
||
|
};
|
||
|
}
|