diff --git a/home/david/configurations/Tytonidae/default.nix b/home/david/configurations/Tytonidae/default.nix index 40b749a..e591155 100644 --- a/home/david/configurations/Tytonidae/default.nix +++ b/home/david/configurations/Tytonidae/default.nix @@ -30,6 +30,7 @@ starship.enable = true; sops.enable = true; mpv.enable = true; + kvm.enable = true; }; david = { diff --git a/home/modules/default.nix b/home/modules/default.nix index b0a5626..60fb448 100644 --- a/home/modules/default.nix +++ b/home/modules/default.nix @@ -24,6 +24,7 @@ ./wluma.nix ./waybar.nix ./mpv.nix + ./kvm.nix ]; options = { diff --git a/home/modules/kvm.nix b/home/modules/kvm.nix new file mode 100644 index 0000000..48728ab --- /dev/null +++ b/home/modules/kvm.nix @@ -0,0 +1,21 @@ +{ config, lib, ... }: +let + cfg = config.youthlic.programs.kvm; +in +{ + options = { + youthlic.programs.kvm = { + enable = lib.mkEnableOption "kvm"; + }; + }; + config = lib.mkIf cfg.enable { + dconf = { + settings = { + "org/virt-manager/virt-manager/connections" = { + autoconnect = [ "qemu:///system" ]; + uris = [ "qemu:///system" ]; + }; + }; + }; + }; +} diff --git a/nixos/configurations/Tytonidae/default.nix b/nixos/configurations/Tytonidae/default.nix index 848a42b..ca662cf 100644 --- a/nixos/configurations/Tytonidae/default.nix +++ b/nixos/configurations/Tytonidae/default.nix @@ -31,6 +31,10 @@ steam.enable = true; tailscale.enable = true; kanata.enable = true; + kvm = { + enable = true; + unixName = "david"; + }; }; gui.enabled = "cosmic"; }; diff --git a/nixos/modules/default.nix b/nixos/modules/default.nix index 9d0487f..42bcf68 100644 --- a/nixos/modules/default.nix +++ b/nixos/modules/default.nix @@ -25,6 +25,7 @@ ./steam.nix ./tailscale.nix ./kanata.nix + ./kvm.nix ]; config = { diff --git a/nixos/modules/kvm.nix b/nixos/modules/kvm.nix new file mode 100644 index 0000000..9686ee6 --- /dev/null +++ b/nixos/modules/kvm.nix @@ -0,0 +1,37 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.youthlic.programs.kvm; +in +{ + options = { + youthlic.programs.kvm = { + enable = lib.mkEnableOption "kvm"; + unixName = lib.mkOption { + type = lib.types.str; + example = "david"; + }; + }; + }; + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + quickemu + ]; + programs.virt-manager = { + enable = true; + }; + users.groups.libvirtd.members = [ cfg.unixName ]; + virtualisation = { + libvirtd = { + enable = true; + }; + spiceUSBRedirection = { + enable = true; + }; + }; + }; +}