mirror of
https://codeberg.org/hako/Rosenthal.git
synced 2025-07-09 01:45:21 +00:00
services: Add jellyfin-service-type.
* rosenthal/services/web.scm (jellyfin-configuration): New data type. (jellyfin-log-rotations,jellyfin-activation,jellyfin-oci-containers): New procedures. (%jellyfin-accounts,jellyfin-service-type): New variables.
This commit is contained in:
parent
fa1bcd5018
commit
1deb97ada4
@ -13,12 +13,102 @@
|
|||||||
#:use-module (gnu services docker)
|
#:use-module (gnu services docker)
|
||||||
#:use-module (gnu system shadow)
|
#:use-module (gnu system shadow)
|
||||||
#:use-module (rosenthal utils home-services-utils)
|
#:use-module (rosenthal utils home-services-utils)
|
||||||
#:export (misskey-configuration
|
#:export (jellyfin-configuration
|
||||||
|
jellyfin-service-type
|
||||||
|
|
||||||
|
misskey-configuration
|
||||||
misskey-service-type
|
misskey-service-type
|
||||||
|
|
||||||
vaultwarden-configuration
|
vaultwarden-configuration
|
||||||
vaultwarden-service-type))
|
vaultwarden-service-type))
|
||||||
|
|
||||||
|
;;
|
||||||
|
;; Jellyfin
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
(define-maybe string)
|
||||||
|
|
||||||
|
(define-configuration jellyfin-configuration
|
||||||
|
(cache-directory
|
||||||
|
(string "/var/cache/jellyfin")
|
||||||
|
"Path to cache directory.")
|
||||||
|
(config-directory
|
||||||
|
(string "/var/lib/jellyfin")
|
||||||
|
"Path to configuration directory.")
|
||||||
|
(proxy-url
|
||||||
|
maybe-string
|
||||||
|
"Proxy URL.")
|
||||||
|
(log-file
|
||||||
|
(string "/var/log/jellyfin.log")
|
||||||
|
"Path to log file.")
|
||||||
|
(extra-options
|
||||||
|
(list-of-strings '())
|
||||||
|
"List of extra options.")
|
||||||
|
(no-serialization))
|
||||||
|
|
||||||
|
(define %jellyfin-accounts
|
||||||
|
(list (user-account
|
||||||
|
(name "jellyfin")
|
||||||
|
(group "docker")
|
||||||
|
(system? #t)
|
||||||
|
(home-directory "/var/empty")
|
||||||
|
(shell (file-append shadow "/sbin/nologin")))))
|
||||||
|
|
||||||
|
(define jellyfin-log-rotations
|
||||||
|
(match-record-lambda <jellyfin-configuration>
|
||||||
|
(log-file)
|
||||||
|
(list (log-rotation
|
||||||
|
(files (list log-file))))))
|
||||||
|
|
||||||
|
(define jellyfin-activation
|
||||||
|
(match-record-lambda <jellyfin-configuration>
|
||||||
|
(cache-directory config-directory)
|
||||||
|
#~(let ((user (getpwnam "jellyfin")))
|
||||||
|
(for-each
|
||||||
|
(lambda (directory)
|
||||||
|
(unless (file-exists? directory)
|
||||||
|
(mkdir-p directory)
|
||||||
|
(chown directory (passwd:uid user) (passwd:gid user))))
|
||||||
|
'#$(list cache-directory config-directory)))))
|
||||||
|
|
||||||
|
(define jellyfin-oci-containers
|
||||||
|
(match-record-lambda <jellyfin-configuration>
|
||||||
|
(cache-directory config-directory proxy-url log-file extra-options)
|
||||||
|
(list (oci-container-configuration
|
||||||
|
(user "jellyfin")
|
||||||
|
(group "docker")
|
||||||
|
(environment
|
||||||
|
(if (maybe-value-set? proxy-url)
|
||||||
|
`(("http_proxy" . ,proxy-url)
|
||||||
|
("https_proxy" . ,proxy-url))
|
||||||
|
'()))
|
||||||
|
(image "jellyfin/jellyfin:latest")
|
||||||
|
(provision "jellyfin")
|
||||||
|
(log-file log-file)
|
||||||
|
(respawn? #t)
|
||||||
|
(network "host")
|
||||||
|
(volumes
|
||||||
|
`((,cache-directory . "/cache")
|
||||||
|
(,config-directory . "/config")))
|
||||||
|
(extra-arguments extra-options)))))
|
||||||
|
|
||||||
|
(define jellyfin-service-type
|
||||||
|
(service-type
|
||||||
|
(name 'jellyfin)
|
||||||
|
(extensions
|
||||||
|
(list (service-extension account-service-type
|
||||||
|
(const %jellyfin-accounts))
|
||||||
|
(service-extension activation-service-type
|
||||||
|
jellyfin-activation)
|
||||||
|
(service-extension rottlog-service-type
|
||||||
|
jellyfin-log-rotations)
|
||||||
|
(service-extension oci-container-service-type
|
||||||
|
jellyfin-oci-containers)))
|
||||||
|
(default-value (jellyfin-configuration))
|
||||||
|
(description "Run Jellyfin, a media system.")))
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;; Misskey
|
;; Misskey
|
||||||
;;
|
;;
|
||||||
@ -111,8 +201,6 @@
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
||||||
(define-maybe string)
|
|
||||||
|
|
||||||
(define-configuration vaultwarden-configuration
|
(define-configuration vaultwarden-configuration
|
||||||
(admin-token
|
(admin-token
|
||||||
maybe-string
|
maybe-string
|
||||||
|
Loading…
Reference in New Issue
Block a user