--- /dev/null
+# Copyright (c) 2022 Jakub Czajka <jakub@ekhem.eu.org>
+# License: GPL-3.0 or later.
+#
+# 50-gpg.sh - environment variables for `gpg`.
+
+export GNUPGHOME="${XDG_DATA_HOME}/gnupg"
--- /dev/null
+# Copyright (c) 2022 Jakub Czajka <jakub@ekhem.eu.org>
+# License: GPL-3.0 or later.
+#
+# 50-pass.sh - environment variables for the password store.
+
+export PASSWORD_STORE_DIR="${XDG_DATA_HOME}/password_store"
#:use-module (gnu home services shepherd)
#:use-module (gnu packages emacs)
#:use-module (gnu packages emacs-xyz)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages password-utils)
#:use-module (gnu packages rust-apps)
#:use-module (gnu services)
#:use-module (guix gexp)
emacs-use-package))
(dotfiles
(list "emacs/.config/emacs/conf/conf-package.el")))))
+
+(define emacs-pass-service
+ (service home-program-service-type
+ (home-program-configuration
+ (packages
+ (list emacs-pass
+ gnupg
+ password-store))
+ (dotfiles
+ (list "bash/.config/profile.d/50-gpg.sh"
+ "bash/.config/profile.d/50-pass.sh"
+ "emacs/.config/emacs/conf/conf-crypt.el")))))
(define emacs-service
(service home-program-service-type
(home-program-configuration
emacs-consult-service
emacs-daemon-service
emacs-package-service
+ emacs-pass-service
emacs-service))
--- /dev/null
+;; Copyright (c) 2022 Jakub Czajka <jakub@ekhem.eu.org>
+;; License: GPL-3.0 or later.
+;;
+;; conf-crypt.el - configuration for the password store.
+
+(require 'conf-package)
+
+(use-package epa
+ :init
+ (exec-path-from-shell-copy-env "GNUPGHOME")
+ :custom
+ ;; `gpg' >= 2.1 requires `loopback' to delegate inputing password to emacs.
+ (epa-pinentry-mode 'loopback))
+
+(use-package pass
+ :when
+ (conf:executables-p (list "gpg" "pass"))
+ :ensure t
+ :init
+ (exec-path-from-shell-copy-env "PASSWORD_STORE_DIR")
+ :bind
+ ("C-c p" . pass))
+
+(provide 'conf-crypt)