diff options
Diffstat (limited to 'oni/home')
-rw-r--r-- | oni/home/config/rincewind.scm | 4 | ||||
-rw-r--r-- | oni/home/services/mpd.scm | 49 |
2 files changed, 50 insertions, 3 deletions
diff --git a/oni/home/config/rincewind.scm b/oni/home/config/rincewind.scm index fe607e2..83c1883 100644 --- a/oni/home/config/rincewind.scm +++ b/oni/home/config/rincewind.scm @@ -109,7 +109,8 @@ home-mpd-configuration <home-mpd-audio-output> home-mpc-update-service-type - home-mpd-notify-service-type)) + home-mpd-notify-service-type + home-mpdscrobble-service-type)) #:use-module ((oni home services mpv) #:select (home-mpv-service-type home-mpv-mpris-service-type)) @@ -466,6 +467,7 @@ #:format "44100:16:2"))))) (service home-mpc-update-service-type) (service home-mpd-notify-service-type) + (service home-mpdscrobble-service-type) (service home-mpv-service-type) ;; [2024-01-05 Fri] mpv-mpris fails to compile: diff --git a/oni/home/services/mpd.scm b/oni/home/services/mpd.scm index c3c272c..0fcd411 100644 --- a/oni/home/services/mpd.scm +++ b/oni/home/services/mpd.scm @@ -10,7 +10,8 @@ #:use-module (oop goops) #:use-module (ice-9 string-fun) #:use-module ((oni packages mpd) - #:select (mpd-notify)) + #:select (mpd-notify + mpdscrobble)) #:export (home-mpd-service-type home-mpd-configuration @@ -20,7 +21,10 @@ home-mpc-update-configuration home-mpd-notify-service-type - home-mpd-notify-configuration)) + home-mpd-notify-configuration + + home-mpdscrobble-service-type + home-mpdscrobble-configuration)) (define (serialize-boolean field value) "") @@ -204,3 +208,44 @@ (compose identity) (default-value (home-mpd-notify-configuration)) (description "Install and configure mpd notifications."))) + +(define-configuration home-mpdscrobble-configuration + (package + (package mpdscrobble) + "Pakcage to use for setting mpdscrobble") + (auto-start? + (boolean #t) + "Should mpdscrobble be started automatically?")) + +(define (add-mpdscrobble-packages config) + (list (home-mpdscrobble-configuration-package config))) + +(define (home-mpdscrobble-shepherd-service config) + (list + (shepherd-service + (documentation "Scrobble songs to last.fm and/or maloja") + (provision '(mpdscrobble)) + (requirement '(mpd)) + (auto-start? (home-mpdscrobble-configuration-auto-start? config)) + (start + #~(make-forkexec-constructor + (list #$(file-append (home-mpdscrobble-configuration-package config) "/bin/mpdscrobble")) + #:log-file (format #f "~a/.local/var/log/mpdscrobble.log" (getenv "HOME")))) + (stop #~(make-kill-destructor)) + (respawn? #t) + (respawn-delay 1) + (respawn-limit 60)))) + +(define home-mpdscrobble-service-type + (service-type + (name 'home-mpdscrobble) + (extensions + (list (service-extension + home-profile-service-type + add-mpdscrobble-packages) + (service-extension + home-shepherd-service-type + home-mpdscrobble-shepherd-service))) + (compose identity) + (default-value (home-mpdscrobble-configuration)) + (description "Install and configure mpdscrobble."))) |