about summary refs log tree commit diff
path: root/modules/workstation/gnupg/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/workstation/gnupg/default.nix')
-rw-r--r--modules/workstation/gnupg/default.nix37
1 files changed, 21 insertions, 16 deletions
diff --git a/modules/workstation/gnupg/default.nix b/modules/workstation/gnupg/default.nix
index 2f47ddf77b29..eda898314258 100644
--- a/modules/workstation/gnupg/default.nix
+++ b/modules/workstation/gnupg/default.nix
@@ -1,21 +1,26 @@
-{ pkgs, ... }:
+{ config, pkgs, ... }:
+
+let
+  gnupgHome = "${config.users.users.qyliss.home}/state/gnupg";
+
+  pinentryProgram =
+    if pkgs.stdenv.isDarwin then
+      "/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac"
+    else
+      "${pkgs.pinentry.qt}/bin/pinentry";
+
+  gpg-agent-conf = pkgs.writeText "gpg-agent.conf" ''
+    pinentry-program ${pinentryProgram}
+  '';
+in
 
 {
-  home.qyliss.dirs."state/gnupg".activationScripts.config =
-    let
-      pinentry = if pkgs.stdenv.isDarwin then
-        "/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac"
-      else
-        "${pkgs.pinentry.qt}/bin/pinentry";          
-      
-      gpg-agent-conf = pkgs.writeText "gpg-agent.conf" ''
-        pinentry-program ${pinentry}
-      '';
-    in ''
-      ln -sf ${./dirmngr.conf} dirmngr.conf
-      ln -sf ${./gpg.conf} gpg.conf
-      ln -sf ${gpg-agent-conf} gpg-agent.conf
-    '';
+  systemd.tmpfiles.rules = [
+    "d ${gnupgHome} 0700 qyliss qyliss"
+    "L+ ${gnupgHome}/dirmngr.conf   - - - - ${./dirmngr.conf}"
+    "L+ ${gnupgHome}/gpg.conf       - - - - ${./gpg.conf}"
+    "L+ ${gnupgHome}/gpg-agent.conf - - - - ${gpg-agent-conf}"
+  ];
 
   environment.systemPackages = with pkgs; [ gnupg pinentry ];