GNU bug report logs -
#72533
[PATCH] home: services: Add home-beets-service-type.
Previous Next
Reported by: Fabio Natali <me <at> fabionatali.com>
Date: Thu, 8 Aug 2024 22:25:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 72533 in the body.
You can then email your comments to 72533 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
, guix-patches <at> gnu.org
:
bug#72533
; Package
guix-patches
.
(Thu, 08 Aug 2024 22:25:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Fabio Natali <me <at> fabionatali.com>
:
New bug report received and forwarded. Copy sent to
, guix-patches <at> gnu.org
.
(Thu, 08 Aug 2024 22:25:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
* gnu/home/services/music.scm: New file.
* gnu/local.mk: Add this.
* doc/guix.texi: Document this.
Change-Id: Idc23a68276cb3fb07733bb38bc38b1c5a63c1d6a
---
Dear All,
Anyone thinking it might be worth to have a Guix Home service for Beets?
Beets⁰ is a command-line music file and metadata manager. Beets requires a YAML
configuration file to define various aspects of its
behaviour. 'home-beets-service-type' is a Guix Home service that can be used to
create Beets' configuration file.
Any feedback welcome!
Thanks, cheers, Fabio.
⁰ https://beets.io
doc/guix.texi | 33 +++++++++++++++++++
gnu/home/services/music.scm | 63 +++++++++++++++++++++++++++++++++++++
gnu/local.mk | 2 ++
3 files changed, 98 insertions(+)
create mode 100644 gnu/home/services/music.scm
diff --git a/doc/guix.texi b/doc/guix.texi
index b7eb8fd346..68d38005a2 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -129,6 +129,7 @@
Copyright @copyright{} 2024 Richard Sent@*
Copyright @copyright{} 2024 Dariqq@*
Copyright @copyright{} 2024 Denis 'GNUtoo' Carikli@*
+Copyright @copyright{} 2024 Fabio Natali@*
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -47092,6 +47093,38 @@ Miscellaneous Home Services
This section lists Home services that lack a better place.
+@subsubheading Beets Service
+
+@cindex Beets service, for Home
+The @code{(gnu home services music)} module provides the following
+service:
+
+@defvar home-beets-service-type
+@uref{https://beets.io, Beets} is a music file and metadata manager
+that can be used via its command-line interface, @command{beet}. Beets
+requires a YAML configuration file and this Guix Home service is to
+create such file.
+@end defvar
+
+The service can be used as follows:
+
+@lisp
+(service home-beets-service-type
+ (home-beets-configuration (directory "/home/alice/music")))
+@end lisp
+
+Additional options can be specified via the service wild-card field
+@code{extra-options}:
+
+@lisp
+(service home-beets-service-type
+ (home-beets-configuration
+ (directory "/home/alice/music")
+ (extra-options '("
+import:
+ move: yes"))))
+@end lisp
+
@subsubheading Dictionary Service
@cindex dictionary service, for Home
diff --git a/gnu/home/services/music.scm b/gnu/home/services/music.scm
new file mode 100644
index 0000000000..3813ea230e
--- /dev/null
+++ b/gnu/home/services/music.scm
@@ -0,0 +1,63 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2024 Fabio Natali <me <at> fabionatali.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu home services music)
+ #:use-module (guix gexp)
+ #:use-module (guix records)
+ #:use-module (gnu home services)
+ #:use-module (gnu packages music)
+ #:use-module (gnu packages video)
+ #:export (home-beets-configuration
+ home-beets-service-type))
+
+;;; Commentary:
+;;;
+;;; A Guix Home service to configure Beets, a music file and metadata manager.
+;;;
+;;; Code:
+
+(define-record-type* <home-beets-configuration>
+ home-beets-configuration make-home-beets-configuration
+ home-beets-configuration?
+ (package home-beets-package (default beets))
+ (directory home-beets-directory (default #f))
+ (extra-options home-beets-extra-options (default '()))
+ (extra-packages home-beets-extra-packages (default (list ffmpeg))))
+
+(define (home-beets-configuration->file config)
+ "Return the Beets configuration file corresponding to CONFIG."
+ (match-record config <home-beets-configuration>
+ (directory extra-options)
+ (plain-file "beets.yaml"
+ (string-append "directory: " directory "\n"
+ (string-join extra-options "\n" 'suffix)))))
+
+(define home-beets-service-type
+ (service-type
+ (name 'home-beets)
+ (extensions
+ (list
+ (service-extension home-profile-service-type
+ (lambda (config)
+ (cons* (home-beets-package config)
+ (home-beets-extra-packages config))))
+ (service-extension home-xdg-configuration-files-service-type
+ (lambda (config)
+ (list `("beets/config.yaml"
+ ,(home-beets-configuration->file config)))))))
+ (description "Configure Beets, a music file and metadata manager.")))
diff --git a/gnu/local.mk b/gnu/local.mk
index 4d7b17e4b4..efdf7267fd 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -66,6 +66,7 @@
# Copyright © 2023 Troy Figiel <troy <at> troyfigiel.com>
# Copyright © 2024 David Elsing <david.elsing <at> posteo.net>
# Copyright © 2024 Ashish SHUKLA <ashish.is <at> lostca.se>
+# Copyright © 2024 Fabio Natali <me <at> fabionatali.com>
#
# This file is part of GNU Guix.
#
@@ -107,6 +108,7 @@ GNU_SYSTEM_MODULES = \
%D%/home/services/mail.scm \
%D%/home/services/media.scm \
%D%/home/services/messaging.scm \
+ %D%/home/services/music.scm \
%D%/home/services/pm.scm \
%D%/home/services/shells.scm \
%D%/home/services/shepherd.scm \
base-commit: 9c6353c5568a56620af43c2213a9f1cbdc2b4adf
--
2.45.2
Reply sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
You have taken responsibility.
(Wed, 28 Aug 2024 14:27:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Fabio Natali <me <at> fabionatali.com>
:
bug acknowledged by developer.
(Wed, 28 Aug 2024 14:27:02 GMT)
Full text and
rfc822 format available.
Message #10 received at 72533-done <at> debbugs.gnu.org (full text, mbox):
Hi Fabio,
Fabio Natali <me <at> fabionatali.com> skribis:
> * gnu/home/services/music.scm: New file.
> * gnu/local.mk: Add this.
> * doc/guix.texi: Document this.
>
> Change-Id: Idc23a68276cb3fb07733bb38bc38b1c5a63c1d6a
> ---
> Dear All,
>
> Anyone thinking it might be worth to have a Guix Home service for Beets?
>
> Beets⁰ is a command-line music file and metadata manager. Beets requires a YAML
> configuration file to define various aspects of its
> behaviour. 'home-beets-service-type' is a Guix Home service that can be used to
> create Beets' configuration file.
I don’t use Beets so far but it seems like a good idea to me.
Applied, thanks! :-)
Ludo’.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Thu, 26 Sep 2024 11:24:09 GMT)
Full text and
rfc822 format available.
This bug report was last modified 324 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.