From 43ea80ea908a4c7070e09f70d4fc63acd34cdace Mon Sep 17 00:00:00 2001 From: Ryan Schanzenbacher Date: Thu, 7 Sep 2023 14:45:05 -0400 Subject: [PATCH] libvirt pain --- home-config/bash_profile | 5 ++ modules/ryan-config/base-system.scm | 8 ++- modules/ryan-packages/audio.scm | 81 ++++++++++++++++++++++++ modules/ryan-packages/virtualization.scm | 49 ++++++++++++++ 4 files changed, 140 insertions(+), 3 deletions(-) create mode 100644 modules/ryan-packages/audio.scm create mode 100644 modules/ryan-packages/virtualization.scm diff --git a/home-config/bash_profile b/home-config/bash_profile index d58e435..ebc6cba 100644 --- a/home-config/bash_profile +++ b/home-config/bash_profile @@ -9,3 +9,8 @@ export PATH=$PATH:~/.nix-profile/bin # Honor per-interactive-shell startup file if [ -f ~/.bashrc ]; then . ~/.bashrc; fi + +if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then + exec Hyprland +fi + diff --git a/modules/ryan-config/base-system.scm b/modules/ryan-config/base-system.scm index 7da4468..4f75686 100644 --- a/modules/ryan-config/base-system.scm +++ b/modules/ryan-config/base-system.scm @@ -12,6 +12,7 @@ #:use-module (srfi srfi-1) #:use-module (ryan-packages freedesktop) #:use-module (ryan-packages wm) + #:use-module (ryan-packages virtualization) #:use-module (rosenthal packages wm) #:use-module (gnu packages security-token) #:use-module (gnu services security-token) @@ -139,13 +140,13 @@ "v4l2loopback-linux-module" "pipewire" "docker" - "libvirt" - "virt-manager" + ;"libvirt" ;New version inherited from service + ;"virt-manager" "dconf" "wireplumber" "wireshark" "zsh")) - (list my-ca-certs swaylock-effects-new waybar-new xdg-desktop-portal-hyprland) + (list my-ca-certs swaylock-effects-new waybar-new xdg-desktop-portal-hyprland virt-manager-ovmf) %my-base-packages )) ;; Below is the list of system services. To search for available @@ -169,6 +170,7 @@ (service nix-service-type) (service libvirt-service-type (libvirt-configuration + (libvirt libvirt-new) (unix-sock-group "libvirt"))) (service virtlog-service-type) (service bluetooth-service-type) diff --git a/modules/ryan-packages/audio.scm b/modules/ryan-packages/audio.scm new file mode 100644 index 0000000..575a64a --- /dev/null +++ b/modules/ryan-packages/audio.scm @@ -0,0 +1,81 @@ +(define-module (ryan-packages audio) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) + #:use-module (guix build-system meson) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages glib) + #:use-module (gnu packages audio) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages gtk) + #:use-module (gnu packages xiph) + #:use-module (gnu packages tbb) + #:use-module (gnu packages gettext) + #:use-module (gnu packages gnome) + #:use-module (gnu packages pretty-print) + #:use-module (gnu packages algebra) + #:use-module (gnu packages cpp) + #:use-module (gnu packages linux) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages cmake) + #:use-module (gnu packages maths) + #:use-module (gnu packages pkg-config)) + +(define-public easyeffects + (package + (name "easyeffects") + (version "7.0.1") + (arguments + (list + #:modules + '((guix build utils) + (guix build meson-build-system)) + #:imported-modules + (append %meson-build-system-modules) + #:tests? #f)) + (native-inputs (list gettext-minimal + itstool + desktop-file-utils + `(,glib "bin") + `(,gtk+ "bin") + pkg-config + cmake + appstream-glib)) + (inputs (list zita-convolver + rnnoise + tbb + fftwf + lilv + fmt + rubberband + speexdsp + nlohmann-json + pipewire + libadwaita + libsigc++ + libbs2b + libsndfile + libsamplerate + libebur128 + libportal + gsl + speex + `(,util-linux "lib"))) + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/wwmm/easyeffects/archive/refs/tags/v" version + ".tar.gz")) + (sha256 + (base32 + "05j52fy51zjai7n0j23chydfgkfq9n82h2ih806z3b47zhk2h2j2")))) + (build-system meson-build-system) + (synopsis "Limiter, compressor, convolver, equalizer and auto volume and many other plugins for PipeWire applications") + (description "This package provides @code{easyeffects}, which is an audio application for use atop of @code{pipewire} + that allows effects that modify sound sources and sinks. This cannot be updated to the latest version (7.0.8) because + the packaged version of @code{gtk} is too old.") + (home-page "https://github.com/wwmm/easyeffects") + (license license:gpl3+))) + +easyeffects diff --git a/modules/ryan-packages/virtualization.scm b/modules/ryan-packages/virtualization.scm new file mode 100644 index 0000000..d43a337 --- /dev/null +++ b/modules/ryan-packages/virtualization.scm @@ -0,0 +1,49 @@ +;;; Stolen from https://g.tylerm.dev/tylerm/dotfiles/raw/branch/main/modules/home-packages/virtualization.scm + +(define-module (ryan-packages virtualization) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages package-management) + #:use-module (gnu packages build-tools) + #:use-module (gnu packages virtualization) + #:use-module (gnu packages firmware) + #:use-module (guix gexp)) + +(define ovmf-new + (package + (inherit ovmf) + (name "ovmf-new") + (arguments + (substitute-keyword-arguments (package-arguments ovmf) + ((#:phases phases) + #~(modify-phases #$phases + (replace 'install + (lambda _ + (let ((fmw (string-append #$output "/share/firmware"))) + (mkdir-p fmw) + (copy-recursively "Build/OvmfX64/RELEASE_GCC49/FV" fmw)))))))))) + +(define-public libvirt-new + (package + (inherit libvirt) + (name "libvirt-new") + (inputs + (modify-inputs (package-inputs libvirt) + (append ovmf-new))))) + +(define-public virt-manager-ovmf + (package + (inherit virt-manager) + (name "virt-manager-ovmf") + (arguments + (substitute-keyword-arguments (package-arguments virt-manager) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'install 'ovmf + (lambda _ + (let ((fmw (string-append #$output "/usr/share/OVMF"))) + (mkdir-p fmw) + (copy-recursively #$(file-append ovmf-new "/share/firmware") fmw) + ;(mkdir-p fmw) + (copy-recursively "Build/OvmfX64/RELEASE_GCC49/FV" fmw))))))))))