os/modules/virtualisation/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

73 lines
1.5 KiB
Nix
Raw Normal View History

2021-05-30 19:10:28 +00:00
{
lib,
config,
pkgs,
...
}:
with lib; let
psCfg = config.pub-solar;
cfg = config.pub-solar.virtualisation;
doesGaming = config.pub-solar.gaming.enable;
extraObsPlugins =
if doesGaming
then [pkgs.obs-studio-plugins.looking-glass-obs]
else [];
2021-05-30 19:10:28 +00:00
in {
options.pub-solar.virtualisation = {
enable = mkEnableOption "Life in libvirt";
};
config = mkIf cfg.enable {
boot.kernelParams = [
"amd_iommu=on"
"intel_iommu=on"
2021-05-30 19:10:28 +00:00
"iommu=pt"
];
virtualisation.spiceUSBRedirection.enable = true;
2021-05-30 19:10:28 +00:00
virtualisation.libvirtd = {
enable = true;
2022-01-19 00:13:15 +00:00
qemu.ovmf.enable = true;
2021-05-30 19:10:28 +00:00
};
users.users = pkgs.lib.setAttrByPath [psCfg.user.name] {
extraGroups = ["libvirtd"];
};
environment.systemPackages = with pkgs; [
coreutils-full
usbutils
libvirt
libvirt-glib
qemu
virt-manager
python3Packages.libvirt
2021-05-30 19:10:28 +00:00
gvfs
edk2
OVMF
win-virtio
looking-glass-client
lgcl
2021-05-30 19:10:28 +00:00
];
home-manager = with pkgs;
pkgs.lib.setAttrByPath ["users" psCfg.user.name] {
xdg.dataFile."libvirt/.keep".text = "# this file is here to generate the directory";
home.packages = extraObsPlugins;
2021-05-30 19:10:28 +00:00
};
systemd.tmpfiles.rules = [
"f /dev/shm/looking-glass 0660 ${psCfg.user.name} kvm"
];
networking.bridges.virbr1.interfaces = [];
networking.interfaces.virbr1 = {
ipv4.addresses = [
{
address = "192.168.123.1";
prefixLength = 24;
}
];
};
2021-05-30 19:10:28 +00:00
};
}