diff --git a/.config/shepherd/init.scm b/.config/shepherd/init.scm new file mode 100644 index 0000000..0bd9e49 --- /dev/null +++ b/.config/shepherd/init.scm @@ -0,0 +1,20 @@ +(define mpd + (make + #:provides '(mpd) + #:respawn? #t + #:start (make-system-constructor "mpd") + #:stop (make-kill-destructor))) + +(define mpd-watcher + (make + #:provides '(mpd-watcher) + #:respawn? #t + #:start (make-forkexec-constructor '("mpd_watcher")) + #:stop (make-kill-destructor) + #:requires '(mpd))) + +(register-services mpd mpd-watcher) + +(action 'shepherd 'daemonize) + +(for-each start '(mpd mpd-watcher)) diff --git a/Desktop.org b/Desktop.org index 7c14414..dc7bf96 100644 --- a/Desktop.org +++ b/Desktop.org @@ -2028,13 +2028,6 @@ This section generates manifests for various desktop software that I'm using. |----------+-----------------| | office | libreoffice | | office | gimp | -** Music -| Category | Guix dependency | -|----------+-----------------| -| music | mpd | -| music | ncmpcpp | -| music | picard | -| music | mpd-watcher | ** LaTeX | Category | Guix dependency | |----------+-----------------| @@ -2120,7 +2113,56 @@ flatpak install --user flathub com.discordapp.Discord flatpak install --user flathub us.zoom.Zoom flatpak install --user flathub com.slack.Slack #+end_example +* Services +:PROPERTIES: +:header-args+: :tangle ~/.config/shepherd/init.scm +:END: +[[https://www.gnu.org/software/shepherd/manual/html_node/index.html][GNU Shepherd]] is a service management system for GNU Guix. +I previously used supervisor, but shepherd also seems pretty capable. +** Music +| Category | Guix dependency | +|----------+-----------------| +| music | mpd | +| music | ncmpcpp | +| music | picard | +| music | mpd-watcher | + +Music player daemon +#+begin_src scheme +(define mpd + (make + #:provides '(mpd) + #:respawn? #t + #:start (make-system-constructor "mpd") + #:stop (make-kill-destructor))) +#+end_src + +MPD watcher +#+begin_src scheme +(define mpd-watcher + (make + #:provides '(mpd-watcher) + #:respawn? #t + #:start (make-forkexec-constructor '("mpd_watcher")) + #:stop (make-kill-destructor) + #:requires '(mpd))) +#+end_src +** Shepherd config +Register services +#+begin_src scheme +(register-services mpd mpd-watcher) +#+end_src + +Daemonize shepherd +#+begin_src scheme +(action 'shepherd 'daemonize) +#+end_src + +Run services +#+begin_src scheme +(for-each start '(mpd mpd-watcher)) +#+end_src * Guix settings Other desktop programs I use are listed below.