aboutsummaryrefslogtreecommitdiff
path: root/gnu/home/services
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/home/services')
-rw-r--r--gnu/home/services/desktop.scm14
-rw-r--r--gnu/home/services/gnupg.scm20
-rw-r--r--gnu/home/services/music.scm63
3 files changed, 93 insertions, 4 deletions
diff --git a/gnu/home/services/desktop.scm b/gnu/home/services/desktop.scm
index 91465bf168..679ba31c0f 100644
--- a/gnu/home/services/desktop.scm
+++ b/gnu/home/services/desktop.scm
@@ -23,6 +23,7 @@
#:use-module (gnu home services)
#:use-module (gnu home services shepherd)
#:use-module (gnu services configuration)
+ #:use-module (gnu services xorg)
#:autoload (gnu packages glib) (dbus)
#:autoload (gnu packages xdisorg) (redshift unclutter)
#:autoload (gnu packages xorg) (setxkbmap xmodmap)
@@ -43,7 +44,9 @@
home-unclutter-service-type
home-xmodmap-configuration
- home-xmodmap-service-type))
+ home-xmodmap-service-type
+
+ home-startx-command-service-type))
;;;
@@ -429,3 +432,12 @@ defaults."))))
(default-value (home-xmodmap-configuration))
(description "Run the @code{xmodmap} utility to modify keymaps and pointer
buttons under the Xorg display server via user-defined expressions.")))
+
+
+(define home-startx-command-service-type
+ (service-type
+ (inherit (system->home-service-type startx-command-service-type))
+ (default-value (for-home (xorg-configuration)))))
+
+(define-service-type-mapping
+ startx-command-service-type => home-startx-command-service-type)
diff --git a/gnu/home/services/gnupg.scm b/gnu/home/services/gnupg.scm
index 04989666ed..7fc99f793a 100644
--- a/gnu/home/services/gnupg.scm
+++ b/gnu/home/services/gnupg.scm
@@ -19,6 +19,7 @@
(define-module (gnu home services gnupg)
#:use-module (guix gexp)
+ #:use-module (guix modules)
#:use-module ((guix records) #:select (match-record))
#:use-module (gnu services)
#:use-module (gnu services configuration)
@@ -142,6 +143,17 @@ agent, with support for handling OpenSSH material."))))
. "$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"))
'()))
+(define gpg-agent-activation
+ (with-imported-modules (source-module-closure
+ '((gnu build activation)))
+ #~(begin
+ (use-modules (gnu build activation))
+
+ ;; Make sure ~/.gnupg is #o700.
+ (let* ((home (getenv "HOME"))
+ (dot-ssh (string-append home "/.gnupg")))
+ (mkdir-p/perms dot-ssh (getpw (getuid)) #o700)))))
+
(define home-gpg-agent-service-type
(service-type
(name 'home-gpg-agent)
@@ -150,6 +162,8 @@ agent, with support for handling OpenSSH material."))))
home-gpg-agent-files)
(service-extension home-shepherd-service-type
home-gpg-agent-shepherd-services)
+ (service-extension home-activation-service-type
+ (const gpg-agent-activation))
(service-extension home-environment-variables-service-type
home-gpg-agent-environment-variables)))
(default-value (home-gpg-agent-configuration))
@@ -166,7 +180,7 @@ enabled, @command{gpg-agent} acts as a drop-in replacement for OpenSSH's
(verbose?
(boolean #f)
"Provide extra output to the log file.")
- (gnupg-aleady-torified?
+ (gnupg-already-torified?
(boolean #f)
"GnuPG is already configured to use tor and parcimonie won't attempt to use
tor directly.")
@@ -180,7 +194,7 @@ tor directly.")
(define (home-parcimonie-shepherd-service config)
"Return a user service to run parcimonie."
(match-record config <home-parcimonie-configuration>
- (parcimonie verbose? gnupg-aleady-torified?
+ (parcimonie verbose? gnupg-already-torified?
refresh-guix-keyrings? extra-content)
(let ((log-file #~(string-append %user-log-dir "/parcimonie.log")))
(list (shepherd-service
@@ -194,7 +208,7 @@ tor directly.")
#$@(if verbose?
'("--verbose")
'())
- #$@(if gnupg-aleady-torified?
+ #$@(if gnupg-already-torified?
'("--gnupg_already_torified")
'())
#$@(if (not (string=? extra-content ""))
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@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.")))