Compare commits

...

No commits in common. "8d30ed4395b7c455bbde73930b87cf3eb4484142" and "main" have entirely different histories.

13 changed files with 540 additions and 62 deletions

6
.guix-authorizations Normal file
View file

@ -0,0 +1,6 @@
(authorizations
(version 0)
(("2C13 7D46 9D2D 069F BDFD 0607 9880 32A5 638E E799"
(name "freya"))))

14
.guix-channel Normal file
View file

@ -0,0 +1,14 @@
(channel
(version 0)
(keyring-reference "keyring")
(url "https://git.stationery.faith/stationery-society/stationery-guix")
(dependencies
(channel
(name nonguix)
(url "https://gitlab.com/nonguix/nonguix")
(branch "master")
(introduction
(channel-introduction
(version 0)
(commit "897c1a470da759236cc11798f4e0a5f7d4d59fbc")
(signer "2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))))

51
README.md Normal file
View file

@ -0,0 +1,51 @@
## Stationery Guix Channel
Stationery Guix is a channel for [GNU Guix](https://guix.gnu.org).
This is not a official guix channel, nor should this channel be portrayed as one. Please do not go and announce this channel in any official guix communications or media channels. Those are for official guix related software only. This channel contains [non free software](https://www.gnu.org/philosophy/categories.html) and GNU has a [strict policy](https://www.gnu.org/distros/free-system-distribution-guidelines.html) against it.
## Warning
Before using this channel, understand that this only contains build files and not any source code at all. All code is base32 hashed and gpg verified and in theory should be tamper proof. This does NOT gurentee that the software itself is free and safe to use. All code has been vetted to the best to our abilities, but we do not hold any responsibility nor give any warrenty for any harm or issue.
## Installation
Stationery Guix can be installed as a [Guix channel](https://www.gnu.org/software/guix/manual/en/html_node/Channels.html). To do so, add it to `~/.config/guix/channels.scm`:
```scheme
(channel
(name 'stationery)
(url "https://git.stationery.faith/stationery-society/stationery-guix")
(branch "main")
;(commit
; "e2fe15a45c3c0afde3467a2e3d6f0292ad6ee636")
(introduction
(make-channel-introduction
"e2fe15a45c3c0afde3467a2e3d6f0292ad6ee636"
(openpgp-fingerprint
"4F6B C11C EBB2 F242 14B9 0FAC 9FF6 937B 829E 565A"))))
````
Then run `guix pull`.
The commit feild is optional if you wish to pin a speific commit.
All modules are under the `stationery packages` or `stationery services` namespaces.
## Deliverables
This channel currently provides the current services and packages
### Packages
- `easyeffects`
- `lavanda-gtk-theme`
- `firefox-wayland` - modified version from the nonguix channel with screencasting support
- `zsh-autosuggestions`
- `neovim` - modified version from the guix channel compiled with gcc12 for newer plugin support
- `vim-plug`
- `virt-manager` - modified version from the guix channel with edk2 UEFI firmware
- `libvirt` - modified version from the guix channel with edk2 UEFI firmware
- `swaylock-effects1 - modified version from the guix channel without pam
### Services
- `home-pipewire-service-type`

View file

@ -1,31 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZOu3hBYJKwYBBAHaRw8BAQdA2vMy2QY03GrTkJ5u+1933D28aJWSqFLy3vPV
h2PotU60IFR5bGVyIE11cnBoeSA8dHlsZXJtQHR5bGVybS5kZXY+iJMEExYIADsC
GwEFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRPa8Ec67LyQhS5D6yf9pN7gp5W
WgUCZO3newIZAQAKCRCf9pN7gp5WWvI0APwKZyIz66NbiC48POe9I82Lzb2AZQlF
7tjucgox3wCsUwD/UDgblwvU4hoiF6L6xD3XsEFdEIZk5qvDSwIKtWAsXAO0J1R5
bGVyIE11cnBoeSA8dHlsZXJtdXJwaHk1MzRAZ21haWwuY29tPoiQBBMWCAA4FiEE
T2vBHOuy8kIUuQ+sn/aTe4KeVloFAmTt5pICGwEFCwkIBwIGFQoJCAsCBBYCAwEC
HgECF4AACgkQn/aTe4KeVlouDQEAmR3iEob7UVdvtTxu8sqegf7PK2EVx8xDsUks
7NyvwKcA/A2M2pigal2z8ANOD7E8AirkPV91mWmuzDroquGlNFoOtB5UeWxlciBN
dXJwaHkgPHRhbTIyMTRAcml0LmVkdT6IkAQTFggAOBYhBE9rwRzrsvJCFLkPrJ/2
k3uCnlZaBQJlEx4jAhsBBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEJ/2k3uC
nlZamGUBALU2Rk8gcPCaQRzZK/o4+gpZ0FdbnjQGHFe+EX5l+IATAP9wt7nJnre7
kgQ22/1qlCTxMqN+8v1UOTHwy+RJbW5JCLgzBGTrt/sWCSsGAQQB2kcPAQEHQKqp
OSVhI0LTmkLduZdi5+PcR1Zp6/ZSmdp8lpyVmbZyiPUEGBYIACYWIQRPa8Ec67Ly
QhS5D6yf9pN7gp5WWgUCZOu3+wIbAgUJAeEzgACBCRCf9pN7gp5WWnYgBBkWCAAd
FiEELBN9Rp0tBp+9/QYHmIAypWOO55kFAmTrt/sACgkQmIAypWOO55mhYQEAlFZq
HQoJQTZ53UlgOEnz5AzGXQyqKtAAzPfyYG6VQ88A+weI8QVXV62v/XCDFBMeIIQN
zkl9SeN3Ku4cHg0PXZ0D4KEBAJ2kmJ0+DAYFTakN/+nvVfuqTWo5wdeCMwBWUELy
4RJbAP9kXllT7kBkDODorzBSNgCEtuY1ScT0jF9+f3HMd8YLA7gzBGTruBEWCSsG
AQQB2kcPAQEHQIpVaqXqumvdbXFJ8FTGQiSv4O7B/JyR94IQMsGravcdiH4EGBYI
ACYWIQRPa8Ec67LyQhS5D6yf9pN7gp5WWgUCZOu4EQIbIAUJAeEzgAAKCRCf9pN7
gp5WWmZ9APwK9aBDIaVLsOYBU2VhBeY+xTkvu3GeytlWXMoYjE5anAEAmHExRYdI
JF+TYwQvrigbYINt0C18CXh2PtknpZr2aQ+4OARk67ghEgorBgEEAZdVAQUBAQdA
Z4Djgf0W0QUr00nui3K0nN3rlyTnZ/BRAZzp7u0HAC8DAQgHiH4EGBYIACYWIQRP
a8Ec67LyQhS5D6yf9pN7gp5WWgUCZOu4IQIbDAUJAeEzgAAKCRCf9pN7gp5WWmpt
AP9r0k+iWo14zqsLFOSgzFlDZ+Rw3JM/agR64WQxjTVsiwD+PNzeK04PlN/clCW5
tnhF4w/PZMMmuv6xfr45+1aIgg8=
=+rtI
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -1,31 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZOu3hBYJKwYBBAHaRw8BAQdA2vMy2QY03GrTkJ5u+1933D28aJWSqFLy3vPV
h2PotU60IFR5bGVyIE11cnBoeSA8dHlsZXJtQHR5bGVybS5kZXY+iJMEExYIADsC
GwEFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRPa8Ec67LyQhS5D6yf9pN7gp5W
WgUCZO3newIZAQAKCRCf9pN7gp5WWvI0APwKZyIz66NbiC48POe9I82Lzb2AZQlF
7tjucgox3wCsUwD/UDgblwvU4hoiF6L6xD3XsEFdEIZk5qvDSwIKtWAsXAO0J1R5
bGVyIE11cnBoeSA8dHlsZXJtdXJwaHk1MzRAZ21haWwuY29tPoiQBBMWCAA4FiEE
T2vBHOuy8kIUuQ+sn/aTe4KeVloFAmTt5pICGwEFCwkIBwIGFQoJCAsCBBYCAwEC
HgECF4AACgkQn/aTe4KeVlouDQEAmR3iEob7UVdvtTxu8sqegf7PK2EVx8xDsUks
7NyvwKcA/A2M2pigal2z8ANOD7E8AirkPV91mWmuzDroquGlNFoOtB5UeWxlciBN
dXJwaHkgPHRhbTIyMTRAcml0LmVkdT6IkAQTFggAOBYhBE9rwRzrsvJCFLkPrJ/2
k3uCnlZaBQJlEx4jAhsBBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEJ/2k3uC
nlZamGUBALU2Rk8gcPCaQRzZK/o4+gpZ0FdbnjQGHFe+EX5l+IATAP9wt7nJnre7
kgQ22/1qlCTxMqN+8v1UOTHwy+RJbW5JCLgzBGTrt/sWCSsGAQQB2kcPAQEHQKqp
OSVhI0LTmkLduZdi5+PcR1Zp6/ZSmdp8lpyVmbZyiPUEGBYIACYWIQRPa8Ec67Ly
QhS5D6yf9pN7gp5WWgUCZOu3+wIbAgUJAeEzgACBCRCf9pN7gp5WWnYgBBkWCAAd
FiEELBN9Rp0tBp+9/QYHmIAypWOO55kFAmTrt/sACgkQmIAypWOO55mhYQEAlFZq
HQoJQTZ53UlgOEnz5AzGXQyqKtAAzPfyYG6VQ88A+weI8QVXV62v/XCDFBMeIIQN
zkl9SeN3Ku4cHg0PXZ0D4KEBAJ2kmJ0+DAYFTakN/+nvVfuqTWo5wdeCMwBWUELy
4RJbAP9kXllT7kBkDODorzBSNgCEtuY1ScT0jF9+f3HMd8YLA7gzBGTruBEWCSsG
AQQB2kcPAQEHQIpVaqXqumvdbXFJ8FTGQiSv4O7B/JyR94IQMsGravcdiH4EGBYI
ACYWIQRPa8Ec67LyQhS5D6yf9pN7gp5WWgUCZOu4EQIbIAUJAeEzgAAKCRCf9pN7
gp5WWmZ9APwK9aBDIaVLsOYBU2VhBeY+xTkvu3GeytlWXMoYjE5anAEAmHExRYdI
JF+TYwQvrigbYINt0C18CXh2PtknpZr2aQ+4OARk67ghEgorBgEEAZdVAQUBAQdA
Z4Djgf0W0QUr00nui3K0nN3rlyTnZ/BRAZzp7u0HAC8DAQgHiH4EGBYIACYWIQRP
a8Ec67LyQhS5D6yf9pN7gp5WWgUCZOu4IQIbDAUJAeEzgAAKCRCf9pN7gp5WWmpt
AP9r0k+iWo14zqsLFOSgzFlDZ+Rw3JM/agR64WQxjTVsiwD+PNzeK04PlN/clCW5
tnhF4w/PZMMmuv6xfr45+1aIgg8=
=+rtI
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1,79 @@
(define-module (stationery 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+)))

View file

@ -0,0 +1,65 @@
(define-module (stationery packages gnome-xyz)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix gexp)
#:use-module (gnu packages base)
#:use-module (gnu packages version-control)
#:use-module (gnu packages web)
#:use-module (gnu packages bash)
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix download)
#:use-module (guix build-system trivial)
#:use-module (guix utils))
(define-public lavanda-gtk-theme
(let ((commit "44c74ad34d272e07b91f779e62e63b6ef8645655"))
(package
(name "lavanda-gtk-theme")
(version (git-version "" "0" commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/vinceliuice/Lavanda-gtk-theme.git")
(commit commit)))
(sha256
(base32
"1q253kl5lw9dpbmwaf715brdjka7b3s3kpl4i6s262dji84pp3dc"))
(file-name (git-file-name name version))))
(build-system trivial-build-system)
(inputs
`(("sassc" ,sassc)
("coreutils" ,coreutils)
("sed" ,sed)
("bash" ,bash)))
(arguments
'(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let* ((out (assoc-ref %outputs "out"))
(bin (string-append out "/share/themes"))
(bash (string-append
(assoc-ref %build-inputs "bash")
"/bin/sh"))
(coreutils (string-append
(assoc-ref %build-inputs "coreutils")
"/bin"))
(sed (string-append
(assoc-ref %build-inputs "sed")
"/bin"))
(sassc (string-append
(assoc-ref %build-inputs "sassc")
"/bin"))
(source (assoc-ref %build-inputs "source")))
(copy-recursively source (getcwd))
(setenv "PATH" (string-append (getenv "PATH") ":" coreutils ":" sed ":" sassc))
(mkdir-p bin)
(invoke bash "build.sh")
(invoke bash "install.sh" "-d" bin)))))
(home-page "https://github.com/vinceliuice/Lavanda-gtk-theme")
(synopsis "Lavanda gtk theme for linux desktops")
(description "Lavanda gtk theme for linux desktops")
(license license:gpl3))))

View file

@ -0,0 +1,62 @@
(define-module (stationery packages mozillia)
#:use-module (gnu)
#:use-module (guix download)
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages bash)
#:use-module (gnu packages linux)
#:use-module (guix build-system trivial)
#:use-module (nongnu packages mozilla))
(define firefox*
(package/inherit
firefox
(inputs
(modify-inputs
(package-inputs firefox)
(delete "pipewire")
(append pipewire)))))
(define-public firefox-wayland
(package
(inherit firefox*)
(name "firefox-wayland")
(native-inputs '())
(inputs
`(("bash" ,bash-minimal)
("pipewire" ,pipewire)
("firefox" ,firefox*)))
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let* ((bash (assoc-ref %build-inputs "bash"))
(firefox (assoc-ref %build-inputs "firefox"))
(pipewire (assoc-ref %build-inputs "pipewire"))
(out (assoc-ref %outputs "out"))
(exe (string-append out "/bin/firefox")))
(mkdir-p (dirname exe))
(call-with-output-file exe
(lambda (port)
;; NOTE: added "export LD_LIBRARY_PATH=pipewire"
;; maybe this can be done better with `wrap-programm'
(format port "#!~a \n
export LD_LIBRARY_PATH=~a \n
export MOZ_ENABLE_WAYLAND=1 \n
exec ~a $@\n"
(string-append bash "/bin/bash")
(string-append pipewire "/lib")
(string-append firefox "/bin/firefox"))))
(chmod exe #o555)
;; Provide the manual and .desktop file.
(copy-recursively (string-append firefox "/share")
(string-append out "/share"))
(substitute* (string-append
out "/share/applications/firefox.desktop")
((firefox) out))
#t))))))

View file

@ -0,0 +1,45 @@
(define-module (stationery packages shells)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix gexp)
#:use-module (gnu packages base)
#:use-module (gnu packages version-control)
#:use-module (gnu packages web)
#:use-module (gnu packages bash)
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix download)
#:use-module (guix build-system trivial)
#:use-module (guix utils))
(define-public zsh-autosuggestions
(package
(name "zsh-autosuggestions")
(version "0.7.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/zsh-users/zsh-autosuggestions")
(commit (string-append "v" version))))
(sha256
(base32
"1g3pij5qn2j7v7jjac2a63lxd97mcsgw6xq6k5p7835q9fjiid98"))
(file-name (git-file-name name version))))
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let* ((out (assoc-ref %outputs "out"))
(bin (string-append out "/share/zsh/zsh-autosuggestions"))
(source (assoc-ref %build-inputs "source")))
(mkdir-p bin)
(copy-recursively source bin)))))
(home-page "https://github.com/zsh-users/zsh-autosuggestions")
(synopsis "Fish-like autosuggestions for zsh")
(description "Fish-like fast/unobtrusive autosuggestions for zsh. It suggests commands as you type based on history and completions.")
(license license:expat)))

View file

@ -0,0 +1,50 @@
(define-module (stationery packages vim)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (guix build-system trivial)
#:use-module ((gnu packages vim) #:prefix vim:)
#:use-module (gnu packages gcc))
(define-public neovim
(package
(inherit vim:neovim)
(name "neovim")
(native-inputs
(modify-inputs (package-native-inputs neovim)
(prepend gcc-12)))))
(define-public vim-plug
(package
(name "vim-plug")
(version "0.11.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/junegunn/vim-plug")
(commit version)))
(sha256
(base32
"0bfgadn31n516x0m0kr88jk9x79rl6zllnwij759wpazmw1p0xg8"))
(file-name (git-file-name name version))))
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let* ((out (assoc-ref %outputs "out"))
(bin (string-append out "/share/vim"))
(source (assoc-ref %build-inputs "source")))
(mkdir-p bin)
(chdir source)
(install-file "plug.vim" bin)))))
(home-page "https://github.com/vinceliuice/Lavanda-gtk-e")
(synopsis "Minimalist Vim Plugin Manager")
(description "Minimalist Vim Plugin Manager")
(license license:expat)))

View file

@ -0,0 +1,47 @@
(define-module (stationery 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) #:prefix virt:)
#:use-module (gnu packages firmware)
#:use-module (guix gexp))
(define-public libvirt
(package
(inherit virt:libvirt)
(name "libvirt")
(inputs
(modify-inputs (package-inputs virt:libvirt)
(append qemu)))
(arguments
(substitute-keyword-arguments (package-arguments virt:libvirt)
((#:phases phases)
#~(modify-phases #$phases
(add-after 'install 'install-uefi
(lambda _
(let ((fmw (string-append #$output "/share/qemu")))
(mkdir-p fmw)
(copy-recursively #$(file-append qemu "/share/qemu") fmw))
))
))))))
(define-public virt-manager
(package
(inherit virt:virt-manager)
(name "virt-manager")
(inputs
(modify-inputs (package-inputs virt:virt-manager)
(append qemu)))
(arguments
(substitute-keyword-arguments (package-arguments virt:virt-manager)
((#:phases phases)
#~(modify-phases #$phases
(add-after 'install 'install-uefi
(lambda _
(let ((fmw (string-append #$output "/share/qemu")))
(mkdir-p fmw)
(copy-recursively #$(file-append qemu "/share/firmware") fmw))
))
))))))

View file

@ -0,0 +1,22 @@
(define-module (stationery packages wm)
#:use-module (guix download)
#:use-module (guix packages)
#:use-module (guix gexp)
#:use-module (gnu packages)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module ((gnu packages wm) #:prefix wm:))
(define-public swaylock-effects
(package
(inherit wm:swaylock-effects)
(version "1.6.11")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jirutka/swaylock-effects")
(commit (string-append "v" version))))
(sha256
(base32
"0j7dxn66xqlf6iv2arqzz7mxlh7nf85anvpyf30d2frcidarda9h"))))
(inputs (modify-inputs (package-inputs wm:swaylock-effects) (delete "linux-pam")))))

View file

@ -0,0 +1,99 @@
(define-module (stationery services pipewire)
#:use-module (gnu packages)
#:use-module (gnu packages linux)
#:use-module (gnu services)
#:use-module (gnu services configuration)
#:use-module (gnu home services)
#:use-module (gnu home services shepherd)
#:use-module (guix gexp))
(define (home-pipewire-profile-service config)
(map specification->package
(list "pipewire"
"wireplumber")))
(define (home-pipewire-shepherd-service config)
(list
;; 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=0")
(default-environment-variables)))))
;; Pipewire-pulse
(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=0")
(default-environment-variables)))))
;; Wireplumber
(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=0")
(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 Pipewire and Wireplumber")))