From 2c2a36b47d4cadc4d22592914c7fe3dfaea5f7e5 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 2 Aug 2024 14:40:26 -0400 Subject: Switch to Guix's pipewire home service and update Rise. --- dthompson/home/pipewire.scm | 99 ++----------------------------------- dthompson/machines/ikaruga.scm | 1 + dthompson/machines/rise.scm | 109 ++++++++++++++++++++++------------------- 3 files changed, 65 insertions(+), 144 deletions(-) diff --git a/dthompson/home/pipewire.scm b/dthompson/home/pipewire.scm index 9faa64c..7faa000 100644 --- a/dthompson/home/pipewire.scm +++ b/dthompson/home/pipewire.scm @@ -9,100 +9,11 @@ #:use-module (gnu services configuration) #:use-module (gnu home services) #:use-module (gnu home services shepherd) - #:use-module (guix gexp)) + #:use-module (guix gexp) + #:export (package-with-pw-jack + package-with-pw-wrapper)) -(define (home-pipewire-profile-service config) - (map specification->package - (list "pipewire" - "wireplumber"))) - -(define (home-pipewire-shepherd-service config) - (list - ;; Start Pipewire daemon - (shepherd-service - (requirement '(dbus)) - (provision '(pipewire)) - (stop #~(make-kill-destructor)) - (start #~(make-forkexec-constructor - (list #$(file-append pipewire "/bin/pipewire")) - #:log-file (string-append - (or (getenv "XDG_LOG_HOME") - (format #f "~a/.local/var/log" - (getenv "HOME"))) - "/pipewire.log") - #:environment-variables - (append (list "DISABLE_RTKIT=1") - (default-environment-variables))))) - ;; Start Pipewire PulseAudio module - (shepherd-service - (requirement '(pipewire)) - (provision '(pipewire-pulse)) - (stop #~(make-kill-destructor)) - (start #~(make-forkexec-constructor - (list #$(file-append pipewire "/bin/pipewire-pulse")) - #:log-file (string-append - (or (getenv "XDG_LOG_HOME") - (format #f "~a/.local/var/log" - (getenv "HOME"))) - "/pipewire-pulse.log") - #:environment-variables - (append (list "DISABLE_RTKIT=1") - (default-environment-variables))))) - ;; Start Wireplumber session manager - (shepherd-service - (requirement '(pipewire)) - (provision '(wireplumber)) - (stop #~(make-kill-destructor)) - (start #~(make-forkexec-constructor - (list #$(file-append wireplumber "/bin/wireplumber")) - #:log-file (string-append - (or (getenv "XDG_LOG_HOME") - (format #f "~a/.local/var/log" - (getenv "HOME"))) - "/wireplumber.log") - #:environment-variables - (append (list "DISABLE_RTKIT=1") - (default-environment-variables))))))) - -(define (home-pipewire-xdg-configuration-service config) - `(("alsa/asoundrc" - ,(mixed-text-file - "asoundrc" - #~(string-append - "<" - #$(file-append - pipewire "/share/alsa/alsa.conf.d/50-pipewire.conf") - ">\n<" - #$(file-append - pipewire "/share/alsa/alsa.conf.d/99-pipewire-default.conf") - ">\n" - " -pcm_type.pipewire { - lib " #$(file-append pipewire "/lib/alsa-lib/libasound_module_pcm_pipewire.so") - " -} -ctl_type.pipewire { - lib " #$(file-append pipewire "/lib/alsa-lib/libasound_module_ctl_pipewire.so") - " -} -"))))) - -(define-public home-pipewire-service-type - (service-type (name 'home-pipewire) - (extensions - (list (service-extension - home-profile-service-type - home-pipewire-profile-service) - (service-extension - home-shepherd-service-type - home-pipewire-shepherd-service) - (service-extension - home-xdg-configuration-files-service-type - home-pipewire-xdg-configuration-service))) - (default-value #f) - (description "Configures and runs the Pipewire audio system."))) - -(define-public (package-with-pw-jack pkg program) +(define (package-with-pw-jack pkg program) (package (name (package-name pkg)) (version (package-version pkg)) @@ -147,7 +58,7 @@ ctl_type.pipewire { (home-page (package-home-page pkg)) (license (package-license pkg)))) -(define-public (package-with-pw-wrapper pkg program) +(define* (package-with-pw-wrapper pkg #:optional (program (package-name pkg))) (package (name (package-name pkg)) (version (package-version pkg)) diff --git a/dthompson/machines/ikaruga.scm b/dthompson/machines/ikaruga.scm index 4fb4fff..6c08f1b 100644 --- a/dthompson/machines/ikaruga.scm +++ b/dthompson/machines/ikaruga.scm @@ -32,6 +32,7 @@ #:use-module (gnu) #:use-module (gnu bootloader) #:use-module (gnu home) + #:use-module (gnu home services sound) #:use-module (gnu packages) #:use-module (gnu services) #:use-module (gnu services base) diff --git a/dthompson/machines/rise.scm b/dthompson/machines/rise.scm index c5fb3de..8620e1d 100644 --- a/dthompson/machines/rise.scm +++ b/dthompson/machines/rise.scm @@ -32,6 +32,7 @@ #:use-module (gnu) #:use-module (gnu bootloader) #:use-module (gnu home) + #:use-module (gnu home services sound) #:use-module (gnu packages) #:use-module (gnu services) #:use-module (gnu services base) @@ -47,9 +48,10 @@ #:use-module (gnu system file-systems) #:use-module (gnu system mapped-devices) #:use-module (nongnu packages linux) - #:use-module (nongnu system linux-initrd)) + #:use-module (nongnu system linux-initrd) + #:export (rise-os rise-home)) -(define-public rise-os +(define rise-os (operating-system (locale "en_US.utf8") (timezone "America/New_York") @@ -85,9 +87,8 @@ (name "realtime") (system? #t)) %base-groups)) - (packages (append (map specification->package - '("ncurses" "nss-certs" "strace")) - %base-packages)) + (packages (cons (specification->package "nss-certs") + %base-packages)) (services (modify-services (cons* (service gnome-desktop-service-type) (service bluetooth-service-type) @@ -112,7 +113,7 @@ (pam-limits-entry "@realtime" 'both 'memlock 'unlimited))) %desktop-services) - ;; In this house, we use JACK. + ;; In this house, we use Pipewire. (delete pulseaudio-service-type) ;; Get nonguix substitutes. (guix-service-type config => @@ -122,7 +123,7 @@ (append (list "https://substitutes.nonguix.org") %default-substitute-urls)) (authorized-keys - (append (list (local-file "keys/nonguix-signing-key.pub")) + (append (list (local-file "../../keys/nonguix-signing-key.pub")) %default-authorized-guix-keys)))))) (mapped-devices (list (mapped-device (source (uuid "ee0a37d1-36d6-4e50-8af0-fc0bfe8c22ef")) @@ -139,47 +140,55 @@ (dependencies mapped-devices)) %base-file-systems)) (name-service-switch %mdns-host-lookup-nss))) -(define-public rise-home +(define rise-home (home-environment - (packages (specifications->packages - '("audacity" - "alsa-utils" - "ardour" - "blender" - "calf" - "carla" - "dragonfly-reverb" - "emacs" - "emacs-better-defaults" - "emacs-buffer-env" - "emacs-doom-modeline" - "emacs-doom-themes" - "emacs-flycheck-guile" - "emacs-geiser-guile" - "emacs-magit" - "emacs-markdown-mode" - "emacs-paredit" - "emacs-rainbow-delimiters" - "emacs-smex" - "emacs-use-package" - "emacs-which-key" - "firefox" - "font-google-noto-sans-cjk" - "font-google-noto-serif-cjk" - "font-inconsolata" - "gimp" - "git" - "gnome-tweaks" - "htop" - "hydrogen" - "jack" - "lsp-plugins" - "milkytracker" - "obs" - "openssh" - "patchage" - "qjackctl" - "sfxr" - "x42-plugins" - "yt-dlp"))) - (services common-services))) + (packages + (cons* (package-with-pw-jack (specification->package "ardour") "ardour8") + (package-with-pw-wrapper (specification->package "firefox")) + (specifications->packages + '("audacity" + "blender" + "calf" + "carla" + "dragonfly-reverb" + "easyeffects" + "emacs" + "emacs-better-defaults" + "emacs-buffer-env" + "emacs-doom-modeline" + "emacs-doom-themes" + "emacs-flycheck-guile" + "emacs-geiser-guile" + "emacs-magit" + "emacs-markdown-mode" + "emacs-paredit" + "emacs-rainbow-delimiters" + "emacs-smex" + "emacs-use-package" + "emacs-which-key" + "font-google-noto-emoji" + "font-google-noto-sans-cjk" + "font-google-noto-serif-cjk" + "font-inconsolata" + "gimp" + "git" + "gnome-tweaks" + "google-chrome-stable" + "htop" + "libresprite" + "lsp-plugins" + "milkytracker" + "ncurses" + "obs" + "openssh" + "pavucontrol" + "qjackctl" + "qpwgraph" + "sfxr" + "strace" + "x42-plugins" + "xdg-desktop-portal" + "xdg-desktop-portal-gtk" + "yt-dlp")))) + (services (cons (service home-pipewire-service-type) + common-services)))) -- cgit v1.2.3