From 32c943e19323b7be2a15aa18d575e03074a7e6c4 Mon Sep 17 00:00:00 2001 From: "c0co.channel" Date: Wed, 10 Sep 2025 01:32:17 +0100 Subject: Tidy .scms, more XDG env vars, virtman to syswide --- dom0/files/misc-config/sway-config | 4 +-- dom0/home.scm | 31 +++++++++++----- dom0/system-laptop.scm | 16 ++++----- dom0/system.scm | 1 + patches/libvirt-qemu-caps.patch | 73 ++++++++++++++++++++++++++++++++++++++ vmstore/corpo/corpo-system.scm | 29 +++++---------- vmstore/corpo/home.scm | 26 +++++++++++--- 7 files changed, 137 insertions(+), 43 deletions(-) create mode 100644 patches/libvirt-qemu-caps.patch diff --git a/dom0/files/misc-config/sway-config b/dom0/files/misc-config/sway-config index e654cea..fd4e37f 100644 --- a/dom0/files/misc-config/sway-config +++ b/dom0/files/misc-config/sway-config @@ -26,7 +26,7 @@ output * bg $HOME/.config/guix-config/dom0/files/wallpapers/taclnc.png fill # Example configuration: # # output HDMI-A-1 resolution 1920x1080 position 1920,0 -output * resolution 1920x1080 position 1920,0 +output * resolution 1920x1080 exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY exec spice-vdagent # You can get the names of your outputs by running: swaymsg -t get_outputs @@ -222,7 +222,7 @@ bar { # When the status_command prints a new line to stdout, swaybar updates. # The default just shows the current date and time. - status_command while date +'%Y-%m-%d %X'; do sleep 1; done + status_command while (echo "!! WARNING !! THIS IS Dom0 !! $(date +'%Y-%m-%d %X'); do sleep 1; done colors { statusline #ffffff diff --git a/dom0/home.scm b/dom0/home.scm index ee1028d..16bec95 100644 --- a/dom0/home.scm +++ b/dom0/home.scm @@ -13,10 +13,10 @@ #:use-module (guix gexp) #:export (dom0-home-environment)) - (use-package-modules compression gnome fonts freedesktop + (use-package-modules compression gnome gnome-xyz video fonts freedesktop linux package-management pulseaudio ssh terminals xdisorg xorg glib virtualization - wm) + wm messaging) (define dom0-home-environment (home-environment @@ -40,12 +40,24 @@ ("CLUTTER_BACKEND" . "wayland") ("ELM_ENGINE" . "wayland_egl") ("ECORE_EVAS_ENGINE" . "wayland-egl") - ("QT_QPA_PLATFORM" . "wayland-egl"))) + ("QT_QPA_PLATFORM" . "wayland-egl") + + ;; JAVA + ("_JAVA_AWT_WM_NONREPARENTING" . #t) + + ;; env-vars for Flatpak visibility + ("XDG_DATA_DIRS" . "$XDG_DATA_DIRS:$HOME/.local/share/flatpak/exports/share"))) (service home-bash-service-type (home-bash-configuration - (bash-profile (list (local-file "files/scripts/sway-login"))) + (bash-profile (list (local-file "files/scripts/sway-login") + ("flatpak -u remote-add --if-not-exists flathub https://flathub.org/repo/flathub.pakrepo")) (bashrc (list (local-file "files/scripts/gpg-agent-tty"))))) + + (simple-service 'xdg-user-directories-config-service + home-xdg-user-directories-service-type + (home-xdg-user-directories-configuration + (download "$HOME/Downloads"))) (service home-xdg-configuration-files-service-type `(("sway/config" ,(local-file "./files/misc-config/sway-config")))) @@ -55,20 +67,23 @@ (pinentry-program (file-append pinentry "/bin/pinentry")) (ssh-support? #t))) + (service home-dbus-service-type) (service home-pipewire-service-type))) (packages (list xorg-server-xwayland sway swayidle swaylock fuzzel foot - grimshot wl-clipboard network-manager-applet + grimshot wl-clipboard wl-paste network-manager-applet xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-wlr xdg-utils xdg-dbus-proxy shared-mime-info - ;; Flatpak - flatpak (list glib "bin") + ;; Flatpak and XDG + flatpak (list glib "bin") ; flatpak dependency + xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-wlr + xdg-utils xdg-dbus-proxy shared-mime-info ;; Audio alsa-utils pavucontrol ;; General - virt-manager openssh zip unzip)))) + openssh zip unzip)))) diff --git a/dom0/system-laptop.scm b/dom0/system-laptop.scm index d7f9ba5..20bdc89 100644 --- a/dom0/system-laptop.scm +++ b/dom0/system-laptop.scm @@ -26,13 +26,13 @@ ;; Users ('root' is implicit). (users (cons* (user-account - (name "dom0") - (comment "dom0") - (group "users") - (home-directory "/home/dom0") - (supplementary-groups '("wheel" "libvirt" "kvm" + (name "dom0") + (comment "dom0") + (group "users") + (home-directory "/home/dom0") + (supplementary-groups '("wheel" "libvirt" "kvm" "netdev" "audio" "video"))) - %base-user-accounts)) + %base-user-accounts)) (bootloader (bootloader-configuration (bootloader grub-efi-bootloader) @@ -94,8 +94,7 @@ (list ;; NVIDIA (service nvidia-service-type) - ;(service kernel-module-loader-service-type - ;'("nvidia")) + ;; systemd dependencies (service elogind-service-type) @@ -171,5 +170,6 @@ (packages (cons* vim git cryptsetup + virt-manager strace %base-packages))) diff --git a/dom0/system.scm b/dom0/system.scm index 4b5b03c..6cd02c5 100644 --- a/dom0/system.scm +++ b/dom0/system.scm @@ -170,6 +170,7 @@ ;; Packages (system-wide) (packages (cons* vim git + virt-manager cryptsetup strace %base-packages))) diff --git a/patches/libvirt-qemu-caps.patch b/patches/libvirt-qemu-caps.patch new file mode 100644 index 0000000..dd110a6 --- /dev/null +++ b/patches/libvirt-qemu-caps.patch @@ -0,0 +1,73 @@ +From e7239c619fcaf35b8b605ce07c5d5b15351b3a62 Mon Sep 17 00:00:00 2001 +From: anonymix007 <48598263+anonymix007@users.noreply.github.com> +Date: Wed, 4 Jun 2025 12:05:23 +0300 +Subject: [PATCH] qemu: capabilities: Check if cpuModels is not NULL before + trying to dereference it + +accel->cpuModels field might be NULL if QEMU does not return CPU models. +The following backtrace is observed in such cases: +0 virQEMUCapsProbeQMPCPUDefinitions (qemuCaps=qemuCaps@entry=0x7f1890003ae0, accel=accel@entry=0x7f1890003c10, mon=mon@entry=0x7f1890005270) + at ../src/qemu/qemu_capabilities.c:3091 +1 0x00007f18b42fa7b1 in virQEMUCapsInitQMPMonitor (qemuCaps=qemuCaps@entry=0x7f1890003ae0, mon=0x7f1890005270) at ../src/qemu/qemu_capabilities.c:5746 +2 0x00007f18b42fafaf in virQEMUCapsInitQMPSingle (qemuCaps=qemuCaps@entry=0x7f1890003ae0, libDir=libDir@entry=0x7f186c1e70f0 "/var/lib/libvirt/qemu", + runUid=runUid@entry=955, runGid=runGid@entry=955, onlyTCG=onlyTCG@entry=false) at ../src/qemu/qemu_capabilities.c:5832 +3 0x00007f18b42fb1a5 in virQEMUCapsInitQMP (qemuCaps=0x7f1890003ae0, libDir=0x7f186c1e70f0 "/var/lib/libvirt/qemu", runUid=955, runGid=955) + at ../src/qemu/qemu_capabilities.c:5848 +4 virQEMUCapsNewForBinaryInternal (hostArch=VIR_ARCH_X86_64, binary=binary@entry=0x7f1868002fc0 "/usr/bin/qemu-system-alpha", + libDir=0x7f186c1e70f0 "/var/lib/libvirt/qemu", runUid=955, runGid=955, + hostCPUSignature=0x7f186c1e9f20 "AuthenticAMD, AMD Ryzen 9 7950X 16-Core Processor, family: 25, model: 97, stepping: 2", microcodeVersion=174068233, + kernelVersion=0x7f186c194200 "6.14.9-arch1-1 #1 SMP PREEMPT_DYNAMIC Thu, 29 May 2025 21:42:15 +0000", cpuData=0x7f186c1ea490) + at ../src/qemu/qemu_capabilities.c:5907 +5 0x00007f18b42fb4c9 in virQEMUCapsNewData (binary=0x7f1868002fc0 "/usr/bin/qemu-system-alpha", privData=0x7f186c194280) + at ../src/qemu/qemu_capabilities.c:5942 +6 0x00007f18bd42d302 in virFileCacheNewData (cache=0x7f186c193730, name=0x7f1868002fc0 "/usr/bin/qemu-system-alpha") at ../src/util/virfilecache.c:206 +7 virFileCacheValidate (cache=cache@entry=0x7f186c193730, name=name@entry=0x7f1868002fc0 "/usr/bin/qemu-system-alpha", data=data@entry=0x7f18b67c37c0) + at ../src/util/virfilecache.c:269 +8 0x00007f18bd42d5b8 in virFileCacheLookup (cache=cache@entry=0x7f186c193730, name=name@entry=0x7f1868002fc0 "/usr/bin/qemu-system-alpha") + at ../src/util/virfilecache.c:301 +9 0x00007f18b42fb679 in virQEMUCapsCacheLookup (cache=cache@entry=0x7f186c193730, binary=binary@entry=0x7f1868002fc0 "/usr/bin/qemu-system-alpha") + at ../src/qemu/qemu_capabilities.c:6036 +10 0x00007f18b42fb785 in virQEMUCapsInitGuest (caps=, cache=, hostarch=VIR_ARCH_X86_64, guestarch=VIR_ARCH_ALPHA) + at ../src/qemu/qemu_capabilities.c:1037 +11 virQEMUCapsInit (cache=0x7f186c193730) at ../src/qemu/qemu_capabilities.c:1229 +12 0x00007f18b431d311 in virQEMUDriverCreateCapabilities (driver=driver@entry=0x7f186c01f410) at ../src/qemu/qemu_conf.c:1553 +13 0x00007f18b431d663 in virQEMUDriverGetCapabilities (driver=0x7f186c01f410, refresh=) at ../src/qemu/qemu_conf.c:1623 +14 0x00007f18b435e3e4 in qemuConnectGetVersion (conn=, version=0x7f18b67c39b0) at ../src/qemu/qemu_driver.c:1492 +15 0x00007f18bd69c5e8 in virConnectGetVersion (conn=0x55bc5f4cda20, hvVer=hvVer@entry=0x7f18b67c39b0) at ../src/libvirt-host.c:201 +16 0x000055bc34ef3627 in remoteDispatchConnectGetVersion (server=0x55bc5f4b93f0, msg=0x55bc5f4cdf60, client=0x55bc5f4c66d0, rerr=0x7f18b67c3a80, + ret=0x55bc5f4b8670) at src/remote/remote_daemon_dispatch_stubs.h:1265 +17 remoteDispatchConnectGetVersionHelper (server=0x55bc5f4b93f0, client=0x55bc5f4c66d0, msg=0x55bc5f4cdf60, rerr=0x7f18b67c3a80, args=0x0, ret=0x55bc5f4b8670) + at src/remote/remote_daemon_dispatch_stubs.h:1247 +18 0x00007f18bd5506da in virNetServerProgramDispatchCall (prog=0x55bc5f4cae90, server=0x55bc5f4b93f0, client=0x55bc5f4c66d0, msg=0x55bc5f4cdf60) + at ../src/rpc/virnetserverprogram.c:423 +19 virNetServerProgramDispatch (prog=0x55bc5f4cae90, server=server@entry=0x55bc5f4b93f0, client=0x55bc5f4c66d0, msg=0x55bc5f4cdf60) + at ../src/rpc/virnetserverprogram.c:299 +20 0x00007f18bd556c32 in virNetServerProcessMsg (srv=srv@entry=0x55bc5f4b93f0, client=, prog=, msg=) + at ../src/rpc/virnetserver.c:135 +21 0x00007f18bd556f77 in virNetServerHandleJob (jobOpaque=0x55bc5f4d2bb0, opaque=0x55bc5f4b93f0) at ../src/rpc/virnetserver.c:155 +22 0x00007f18bd47dd19 in virThreadPoolWorker (opaque=) at ../src/util/virthreadpool.c:164 +23 0x00007f18bd47d253 in virThreadHelper (data=0x55bc5f4b7810) at ../src/util/virthread.c:256 +24 0x00007f18bce117eb in start_thread (arg=) at pthread_create.c:448 +25 0x00007f18bce9518c in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78 + +Signed-off-by: anonymix007 +--- + src/qemu/qemu_capabilities.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c +index 3cbdf3de82..8ba528fc07 100644 +--- a/src/qemu/qemu_capabilities.c ++++ b/src/qemu/qemu_capabilities.c +@@ -3087,6 +3087,9 @@ virQEMUCapsProbeQMPCPUDefinitions(virQEMUCaps *qemuCaps, + if (virQEMUCapsFetchCPUDefinitions(mon, qemuCaps->arch, &accel->cpuModels) < 0) + return -1; + ++ if (!accel->cpuModels) ++ return 0; ++ + defs = accel->cpuModels; + for (i = 0; i < defs->ncpus; i++) { + if (STREQ_NULLABLE(defs->cpus[i].name, "max")) { +-- +2.51.0 diff --git a/vmstore/corpo/corpo-system.scm b/vmstore/corpo/corpo-system.scm index 3544847..930990f 100644 --- a/vmstore/corpo/corpo-system.scm +++ b/vmstore/corpo/corpo-system.scm @@ -11,7 +11,7 @@ (use-service-modules linux guix desktop pm audio networking dbus xorg avahi spice) (use-package-modules linux audio libusb wm fonts - freedesktop vim cryptsetup) + freedesktop vim security-token cryptsetup) (operating-system (locale "en_GB.utf8") @@ -26,7 +26,7 @@ (password (crypt "worker" "$6$abc")) (group "users") (home-directory "/home/corpo") - (supplementary-groups '("wheel" "netdev" "audio" "video"))) + (supplementary-groups '("wheel" "plugdev" "netdev" "audio" "video"))) %base-user-accounts)) (bootloader (bootloader-configuration @@ -42,7 +42,7 @@ ;; Non-free (kernel linux) - (kernel-arguments '("modprobe.blacklist=noveau" + (kernel-arguments '("modprobe.blacklist=nouveau" ;"nvidia_drm.modeset=1" "quiet")) (firmware (list linux-firmware)) @@ -68,8 +68,7 @@ (list ;; NVIDIA ;(service nvidia-service-type) - ;(service kernel-module-loader-service-type - ;'("nvidia")) + ;; systemd dependencies (service elogind-service-type) @@ -103,19 +102,9 @@ (using-setuid? #t))) ;; Networking - ;(service network-manager-service-type) + (service network-manager-service-type) (service wpa-supplicant-service-type) - (service static-networking-service-type - (list (static-networking - (addresses - (list (network-address - (device "eth0") - (value "10.0.2.15/24")))) - (routes - (list (network-route - (destination "default") - (gateway "10.0.2.2")))) - (name-servers '("208.67.222.222"))))) + ;; dbus (service avahi-service-type) (service udisks-service-type) @@ -124,7 +113,7 @@ (service polkit-service-type) (service dbus-root-service-type) - ;; Cleanup stayle font cache + ;; Cleanup stale font cache fontconfig-file-system-service ;; Power and thermals @@ -137,9 +126,9 @@ ;; Time (service ntp-service-type) - ;; udev + ;; udev including yubikey (udev-rules-service 'pipewire-add-udev-rules pipewire) - + (udev-rules-service 'fido2 libfido2 #:groups '("plugdev")) ;; corpo home (service guix-home-service-type `(("worker" ,corpo-home-environment)))))) diff --git a/vmstore/corpo/home.scm b/vmstore/corpo/home.scm index 5211c57..eaf1a7c 100644 --- a/vmstore/corpo/home.scm +++ b/vmstore/corpo/home.scm @@ -13,9 +13,9 @@ #:use-module (guix gexp) #:export (corpo-home-environment)) - (use-package-modules compression gnome fonts freedesktop + (use-package-modules compression gnome gnome-xyz video fonts freedesktop linux package-management pulseaudio - terminals xdisorg xorg glib wm) + terminals xdisorg xorg glib wm messaging) (define corpo-home-environment (home-environment @@ -40,11 +40,25 @@ ("ELM_ENGINE" . "wayland_egl") ("ECORE_EVAS_ENGINE" . "wayland-egl") ("QT_QPA_PLATFORM" . "wayland-egl"))) + + ;; JAVA + ("_JAVA_AWT_WM_NONREPARENTING") + + ;; env-vars for Flatpak visibility + ("XDG_DATA_DIRS". "$XDG_DATA_DIRS:$HOME/.local/share/flatpak/exports/share" #t) + (service home-bash-service-type (home-bash-configuration - (bash-profile (list (local-file "./files/scripts/sway-login"))))) - + (bash-profile (list (local-file "./files/scripts/sway-login") + ("flatpak -u remote-add --if-not-exists flathub https://flathub.org/repo/flathub.pakrepo"))))) + + + (simple-service 'xdg-user-directories-config-service + home-xdg-user-directories-service-type + (home-xdg-user-directories-configuration + (download "$HOME/Downloads")))) + (service home-xdg-configuration-files-service-type `(("sway/config" ,(local-file "./files/misc-config/sway-config")))) @@ -53,12 +67,14 @@ (packages (list xorg-server-xwayland sway swayidle swaylock fuzzel foot - grimshot wl-clipboard network-manager-applet + grimshot wl-clipboard wl-paste network-manager-applet xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-wlr xdg-utils xdg-dbus-proxy shared-mime-info ;; Flatpak flatpak (list glib "bin") ; flatpak dependency + xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-wlr + xdg-utils xdg-bus-proxy shared-mime-info ;; Audio alsa-utils pavucontrol -- cgit v1.2.3