From acb36fc3e3cc371d272b14f73b986495f32c92bb Mon Sep 17 00:00:00 2001
From: 514fpv <koishi@514fpv.one>
Date: Thu, 4 Jan 2024 13:51:17 +0800
Subject: [PATCH] feat(virt-manager): add virt-manager settings

---
 home/virt-manager/home.nix  | 52 +++++++++++++++++++++++++++++++++++++
 home/virt-manager/nixos.nix |  8 ++++++
 2 files changed, 60 insertions(+)
 create mode 100644 home/virt-manager/home.nix
 create mode 100644 home/virt-manager/nixos.nix

diff --git a/home/virt-manager/home.nix b/home/virt-manager/home.nix
new file mode 100644
index 00000000..a087c0fd
--- /dev/null
+++ b/home/virt-manager/home.nix
@@ -0,0 +1,52 @@
+{ pkgs
+, lib
+, config
+, ... }: with lib; {
+  dconf.settings = let
+    p = "org/virt-manager/virt-manager";
+  in {
+    ${p} = {
+      xmleditor-enabled = true;
+      # swaybar tray doesn't really work
+      system-tray = false;
+    };
+
+    "${p}/details".show-toolbar = true;
+    "${p}/console" = {
+      scaling = 0;
+      auto-redirect = false;
+      resize-guest = 1;
+    };
+    "${p}/stats" = {
+      enable-memory-poll = true;
+      enable-disk-poll = true;
+      enable-net-poll = true;
+    };
+    "${p}/vmlist-fields" = {
+      host-cpu-usage = true;
+      memory-usage = true;
+      disk-usage = true;
+      network-traffic = true;
+    };
+
+    "${p}/new-vm" = {
+      firmware = "uefi";
+      graphics-type = "system";
+    };
+
+    "${p}/confirm" = {
+      unapplied-dev = true;
+      removedev = true;
+      delete-storage = true;
+      forcepoweroff = false;
+    };
+
+    "${p}/connections" = let
+      uri = "qemu:///system";
+    in {
+      uris = [ uri ];
+      autoconnect = [ uri ];
+    };
+    "${p}/conns/qemu:system".pretty-name = "KVM";
+  };
+}
diff --git a/home/virt-manager/nixos.nix b/home/virt-manager/nixos.nix
new file mode 100644
index 00000000..30ff9fbf
--- /dev/null
+++ b/home/virt-manager/nixos.nix
@@ -0,0 +1,8 @@
+{ pkgs
+, lib
+, config
+, ... }: with lib; let
+  gui = with config.faucet.gui; ( enable && session );
+in mkIf gui {
+  programs.virt-manager.enable = true;
+}