aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--homes/koi.scm4
-rw-r--r--kbg/services/dbus.scm35
-rw-r--r--kbg/services/desktop.scm4
-rw-r--r--kbg/services/pipewire.scm75
4 files changed, 117 insertions, 1 deletions
diff --git a/homes/koi.scm b/homes/koi.scm
index 3886582b..5018e60a 100644
--- a/homes/koi.scm
+++ b/homes/koi.scm
@@ -21,6 +21,8 @@
#:use-module (kbg services emacs)
#:use-module (kbg services mcron)
#:use-module (kbg services shell)
+ #:use-module (kbg services dbus)
+ #:use-module (kbg services pipewire)
#:use-module (kbg services shepherd))
(home-environment
@@ -35,5 +37,7 @@
(configs-for-host 'koi)
emacs-service
mcron-service
+ (list (service home-dbus-service-type)
+ (service home-pipewire-service-type))
(services-for-host 'koi))))
;; shepherd-user-services
diff --git a/kbg/services/dbus.scm b/kbg/services/dbus.scm
new file mode 100644
index 00000000..f9ee709c
--- /dev/null
+++ b/kbg/services/dbus.scm
@@ -0,0 +1,35 @@
+(define-module (kbg services dbus)
+ #:use-module (gnu home services)
+ #:use-module (gnu home services shepherd)
+ #:use-module (guix gexp)
+ #:export (home-dbus-service-type))
+
+(define (home-dbus-environment-variables-service _)
+ '(("DBUS_SESSION_BUS_ADDRESS" . "unix:path=$XDG_RUNTIME_DIR/dbus.sock")))
+
+(define (home-dbus-shepherd-service _)
+ (list
+ (shepherd-service
+ (provision '(dbus-home))
+ (stop #~(make-kill-destructor))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append (@@ (gnu packages glib) dbus)
+ "/bin/dbus-daemon")
+ "--nofork"
+ "--session"
+ (string-append
+ "--address=" "unix:path="
+ (getenv "XDG_RUNTIME_DIR") "/dbus.sock")))))))
+
+(define home-dbus-service-type
+ (service-type
+ (name 'home-dbus)
+ (extensions
+ (list (service-extension
+ home-environment-variables-service-type
+ home-dbus-environment-variables-service)
+ (service-extension
+ home-shepherd-service-type
+ home-dbus-shepherd-service)))
+ (default-value #f)
+ (description "run dbus")))
diff --git a/kbg/services/desktop.scm b/kbg/services/desktop.scm
index ac046b1a..39451de6 100644
--- a/kbg/services/desktop.scm
+++ b/kbg/services/desktop.scm
@@ -5,6 +5,7 @@
#:use-module (gnu packages gnome)
#:use-module (gnu packages networking)
#:use-module (gnu services networking)
+ #:use-module (gnu services sound)
#:use-module (gnu services xorg)
#:use-module (gnu packages vpn)
#:export (%kbg-desktop-services))
@@ -20,4 +21,5 @@
(gdm-service-type config =>
(gdm-configuration
(inherit config)
- (wayland? #t)))))
+ (wayland? #t)))
+ (delete pulseaudio-service-type)))
diff --git a/kbg/services/pipewire.scm b/kbg/services/pipewire.scm
new file mode 100644
index 00000000..5f6b3b24
--- /dev/null
+++ b/kbg/services/pipewire.scm
@@ -0,0 +1,75 @@
+(define-module (kbg services pipewire)
+ #:use-module (guix gexp)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages pulseaudio)
+ #:use-module (gnu home services)
+ #:use-module (gnu home services shepherd)
+ #:export (home-pipewire-service-type))
+
+;; Copied from:
+;; https://git.sr.ht/~krevedkokun/dotfiles/tree/master/item/home/services/pipewire.scm
+
+(define (home-pipewire-files-service _)
+ `((".config/alsa/asoundrc"
+ ,(mixed-text-file
+ "asoundrc"
+ #~(string-append
+ "<"
+ #$(file-append
+ pipewire-0.3
+ "/share/alsa/alsa.conf.d/50-pipewire.conf")
+ ">\n<"
+ #$(file-append
+ pipewire-0.3
+ "/share/alsa/alsa.conf.d/99-pipewire-default.conf")
+ ">\n"
+ "
+pcm_type.pipewire {
+ lib " #$(file-append
+ pipewire-0.3
+ "/lib/alsa-lib/libasound_module_pcm_pipewire.so") "
+}
+
+ctl_type.pipewire {
+ lib " #$(file-append
+ pipewire-0.3
+ "/lib/alsa-lib/libasound_module_ctl_pipewire.so") "
+}
+")))))
+
+(define (home-pipewire-shepherd-service _)
+ (list
+ (shepherd-service
+ (requirement '(dbus-home))
+ (provision '(pipewire))
+ (stop #~(make-kill-destructor))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append pipewire-0.3 "/bin/pipewire")))))
+ (shepherd-service
+ (requirement '(pipewire))
+ (provision '(wireplumber))
+ (stop #~(make-kill-destructor))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append wireplumber "/bin/wireplumber")))))
+ (shepherd-service
+ (requirement '(pipewire))
+ (provision '(pipewire-pulse))
+ (stop #~(make-kill-destructor))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append pipewire-0.3 "/bin/pipewire-pulse")))))))
+
+(define home-pipewire-service-type
+ (service-type
+ (name 'home-pipewire)
+ (extensions
+ (list (service-extension
+ home-files-service-type
+ home-pipewire-files-service)
+ (service-extension
+ home-shepherd-service-type
+ home-pipewire-shepherd-service)
+ (service-extension
+ home-profile-service-type
+ (const (list pipewire-0.3 pulseaudio)))))
+ (default-value #f)
+ (description "run pipewire and wireplumber")))