This is an automated email from the git hooks/post-receive script.
guix_mirror_bot pushed a commit to branch master
in repository guix.
The following commit(s) were added to refs/heads/master by this push:
new e931cab87f gnu: home: services: Add
home-git-annex-assistant-service-type
e931cab87f is described below
commit e931cab87fef3159511a6f425e5cddbeb8b06c96
Author: Yarl Baudig <[email protected]>
AuthorDate: Sat Mar 14 13:22:58 2026 +0100
gnu: home: services: Add home-git-annex-assistant-service-type
* gnu/home/services/git-annex-assistant.scm: New file.
* gnu/local/mk (GNU_SYSTEM_MODULES): Register it.
* doc/guix.texi (Miscellaneous Services): Document it.
Change-Id: I9ca75210dfe7f6d2d81b9eb8919d6eb34c7bb002
Signed-off-by: Ian Eure <[email protected]>
---
doc/guix.texi | 40 +++++++++++++++
gnu/home/services/git-annex-assistant.scm | 83 +++++++++++++++++++++++++++++++
gnu/local.mk | 1 +
3 files changed, 124 insertions(+)
diff --git a/doc/guix.texi b/doc/guix.texi
index d5f782f35c..f4279bfb79 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -150,6 +150,7 @@ Copyright @copyright{} 2025 dan@*
Copyright @copyright{} 2025 Noé Lopez@*
Copyright @copyright{} 2026 David Elsing@*
Copyright @copyright{} 2026 Nguyễn Gia Phong@*
+Copyright @copyright{} 2026 Yarl Baudig@*
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -55053,6 +55054,45 @@ You may specify a custom configuration by providing a
'(("grafana:/var/lib/grafana"))))))))
@end lisp
+@subsubheading git-annex assistant Service
+
+@cindex git-annex assistant service
+The @code{(gnu home services git-annex-assistant)} module provides a
+service to run the @uref{https://git-annex.branchable.com/assistant/,
+git-annex assistant}.
+
+@defvar home-git-annex-assistant-service-type
+This is the type of the service that runs the assistant. You must
+supply a @code{<home-git-annex-assistant-configuration>}.
+
+The service runs one assistant for each directory provided. For
+example:
+
+@lisp
+(service home-git-annex-assistant-service-type
+ (home-git-annex-assistant-configuration
+ (directories '("/path/to/foo" "/path/to/bar"))))
+@end lisp
+@end defvar
+
+@c %start of fragment
+
+@deftp {Data Type} home-git-annex-assistant-configuration
+Available @code{home-git-annex-assistant-configuration} fields are:
+
+@table @asis
+@item @code{package} (default: @code{git-annex}) (type: package)
+Package that provides @code{git-annex}.
+
+@item @code{directories} (default: @code{()}) (type: list-of-strings)
+List of directories.
+
+@end table
+
+@end deftp
+
+@c %end of fragment
+
@node Invoking guix home
@section Invoking @command{guix home}
diff --git a/gnu/home/services/git-annex-assistant.scm
b/gnu/home/services/git-annex-assistant.scm
new file mode 100644
index 0000000000..e8885b8cda
--- /dev/null
+++ b/gnu/home/services/git-annex-assistant.scm
@@ -0,0 +1,83 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2026 Yarl Baudig <[email protected]>
+
+;;;
+;;; 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 git-annex-assistant)
+ #:use-module (guix gexp)
+ #:use-module ((guix packages) #:select (package?))
+ #:use-module (guix records)
+ #:use-module (gnu services configuration)
+ #:use-module (gnu home services)
+ #:use-module (gnu home services shepherd)
+ #:use-module (gnu packages haskell-apps)
+ #:use-module (srfi srfi-1)
+ #:export (home-git-annex-assistant-configuration
+ home-git-annex-assistant-service-type))
+
+(define-configuration/no-serialization home-git-annex-assistant-configuration
+ (package
+ (package git-annex)
+ "Package that provides @code{git-annex}.")
+ (directories
+ (list-of-strings '())
+ "List of directories."))
+
+(define (home-git-annex-assistant-shepherd-services config)
+ (match-record config
+ <home-git-annex-assistant-configuration> (package directories)
+ (let ((gaa-command
+ #~(list (string-append #$package "/bin/git-annex") "assistant")))
+ (map
+ (lambda (dir)
+ (let ((pid-file (in-vicinity dir ".git/annex/daemon.pid")))
+ (shepherd-service
+ (documentation
+ (string-append "Run git-annex assistant against " dir "."))
+ (provision
+ (list
+ (symbol-append 'home-git-annex-assistant-
+ (string->symbol dir))))
+ (start #~(lambda _
+ (and (zero? (spawn-command #$gaa-command
+ #:directory #$dir))
+ (read-pid-file #$pid-file))))
+ (stop #~(lambda _
+ (unless (zero? (spawn-command
+ (append #$gaa-command '("--stop"))
+ #:directory #$dir))
+ (error "failed to stop git-annex assistant"))
+ #f)))))
+ directories))))
+
+(define home-git-annex-assistant-service-type
+ (service-type
+ (name 'git-annex-assistant)
+ (extensions
+ (list (service-extension home-shepherd-service-type
+ home-git-annex-assistant-shepherd-services)))
+ (compose concatenate)
+ (extend (lambda (config directories)
+ (home-git-annex-assistant-configuration
+ (inherit config)
+ (directories
+ (append
+ (home-git-annex-assistant-configuration-directories config)
+ directories)))))
+ (description
+ "Run the git-annex assistant daemon on a list of directories.")))
+
diff --git a/gnu/local.mk b/gnu/local.mk
index 25ac77b706..6455e9feb3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -113,6 +113,7 @@ GNU_SYSTEM_MODULES = \
%D%/home/services/dotfiles.scm \
%D%/home/services/symlink-manager.scm \
%D%/home/services/fontutils.scm \
+ %D%/home/services/git-annex-assistant.scm \
%D%/home/services/gnome.scm \
%D%/home/services/gnupg.scm \
%D%/home/services/guix.scm \