aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiran Bastaja <miran.bastaja04@gmail.com>2023-12-02 13:03:25 +0100
committerMiran Bastaja <miran.bastaja04@gmail.com>2023-12-02 13:16:32 +0100
commit101b008a72f9be88007abf44b75fcd05cf1b78b1 (patch)
tree37c71d700e119ae124d1fdd01d7dd0d3610f76d4
parent5de46164adcc31b6f710a9a3895bee3820415624 (diff)
Refactor virt.nix and turn it into a shared module
-rw-r--r--hosts/wonderland/default.nix3
-rw-r--r--hosts/wonderland/virt.nix18
-rw-r--r--share/system/virt.nix33
3 files changed, 35 insertions, 19 deletions
diff --git a/hosts/wonderland/default.nix b/hosts/wonderland/default.nix
index d052621..03e91a3 100644
--- a/hosts/wonderland/default.nix
+++ b/hosts/wonderland/default.nix
@@ -4,9 +4,10 @@
./hardware.nix
./home.nix
./sops.nix
- ./virt.nix
(flakeRoot + /share/system/steam.nix)
(flakeRoot + /share/system/hyprland.nix)
+ (import (flakeRoot + /share/system/virt.nix)
+ { inherit pkgs; virt-users = [ "alice" ]; })
#(flakeRoot + /share/system/spotifyd.nix)
{ _module.args = { inherit inputs; }; }
];
diff --git a/hosts/wonderland/virt.nix b/hosts/wonderland/virt.nix
deleted file mode 100644
index 48a416d..0000000
--- a/hosts/wonderland/virt.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ pkgs, ... }: {
- users.users.alice.extraGroups = [ "libvirtd" ];
- home-manager.users.alice.dconf.settings = {
- "org/virt-manager/virt-manager/connections" = {
- autoconnect = [ "qemu:///system" ];
- uris = [ "qemu:///system" ];
- };
- };
-
- programs.virt-manager.enable = true;
- virtualisation.libvirtd = {
- enable = true;
- qemu = {
- package = pkgs.qemu_kvm;
- swtpm.enable = true;
- };
- };
-}
diff --git a/share/system/virt.nix b/share/system/virt.nix
new file mode 100644
index 0000000..0207064
--- /dev/null
+++ b/share/system/virt.nix
@@ -0,0 +1,33 @@
+{ pkgs, virt-users ? [ ], ... }:
+let
+ # https://stackoverflow.com/questions/75855410/nix-map-list-of-keys-to-attribute-set-members
+ attrSetRepeatValue = value: list:
+ let
+ acc = { }; # accumulator
+ in
+ builtins.foldl' (acc: key: acc // { "${key}" = value; }) acc list;
+in
+{
+ users.users = attrSetRepeatValue
+ { extraGroups = [ "libvirtd" ]; }
+ virt-users;
+
+ home-manager.users = attrSetRepeatValue
+ {
+ home.packages = [ pkgs.quickemu ];
+ dconf.settings."org/virt-manager/virt-manager/connections" = {
+ autoconnect = [ "qemu:///system" ];
+ uris = [ "qemu:///system" ];
+ };
+ }
+ virt-users;
+
+ programs.virt-manager.enable = true;
+ virtualisation.libvirtd = {
+ enable = true;
+ qemu = {
+ package = pkgs.qemu_kvm;
+ swtpm.enable = true;
+ };
+ };
+}