Skip to content

Commit 1b6176e

Browse files
CMCDragonkaifpletz
authored andcommittedJun 15, 2017
gnupg module: Added extra and browser sockets (#26295)
Also added dirmngr and made SSH support false by default due to programs.ssh.startAgent defaulting to true.
1 parent 2a24fda commit 1b6176e

File tree

1 file changed

+82
-1
lines changed

1 file changed

+82
-1
lines changed
 

‎nixos/modules/programs/gnupg.nix

+82-1
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,37 @@ in
2121

2222
agent.enableSSHSupport = mkOption {
2323
type = types.bool;
24-
default = true;
24+
default = false;
2525
description = ''
2626
Enable SSH agent support in GnuPG agent. Also sets SSH_AUTH_SOCK
2727
environment variable correctly. This will disable socket-activation
2828
and thus always start a GnuPG agent per user session.
2929
'';
3030
};
31+
32+
agent.enableExtraSocket = mkOption {
33+
type = types.bool;
34+
default = false;
35+
description = ''
36+
Enable extra socket for GnuPG agent.
37+
'';
38+
};
39+
40+
agent.enableBrowserSocket = mkOption {
41+
type = types.bool;
42+
default = false;
43+
description = ''
44+
Enable browser socket for GnuPG agent.
45+
'';
46+
};
47+
48+
dirmngr.enable = mkOption {
49+
type = types.bool;
50+
default = false;
51+
description = ''
52+
Enables GnuPG network certificate management daemon with socket-activation for every user session.
53+
'';
54+
};
3155
};
3256

3357
config = mkIf cfg.agent.enable {
@@ -38,15 +62,72 @@ in
3862
("${pkgs.gnupg}/bin/gpg-agent --supervised "
3963
+ optionalString cfg.agent.enableSSHSupport "--enable-ssh-support")
4064
];
65+
ExecReload = "${pkgs.gnupg}/bin/gpgconf --reload gpg-agent";
4166
};
4267
};
4368

4469
systemd.user.sockets.gpg-agent = {
4570
wantedBy = [ "sockets.target" ];
71+
listenStreams = [ "%t/gnupg/S.gpg-agent" ];
72+
socketConfig = {
73+
FileDescriptorName = "std";
74+
SocketMode = "0600";
75+
DirectoryMode = "0700";
76+
};
4677
};
4778

4879
systemd.user.sockets.gpg-agent-ssh = mkIf cfg.agent.enableSSHSupport {
4980
wantedBy = [ "sockets.target" ];
81+
listenStreams = [ "%t/gnupg/S.gpg-agent.ssh" ];
82+
socketConfig = {
83+
FileDescriptorName = "ssh";
84+
Service = "gpg-agent.service";
85+
SocketMode = "0600";
86+
DirectoryMode = "0700";
87+
};
88+
};
89+
90+
systemd.user.sockets.gpg-agent-extra = mkIf cfg.agent.enableExtraSocket {
91+
wantedBy = [ "sockets.target" ];
92+
listenStreams = [ "%t/gnupg/S.gpg-agent.extra" ];
93+
socketConfig = {
94+
FileDescriptorName = "extra";
95+
Service = "gpg-agent.service";
96+
SocketMode = "0600";
97+
DirectoryMode = "0700";
98+
};
99+
};
100+
101+
systemd.user.sockets.gpg-agent-browser = mkIf cfg.agent.enableBrowserSocket {
102+
wantedBy = [ "sockets.target" ];
103+
listenStreams = [ "%t/gnupg/S.gpg-agent.browser" ];
104+
socketConfig = {
105+
FileDescriptorName = "browser";
106+
Service = "gpg-agent.service";
107+
SocketMode = "0600";
108+
DirectoryMode = "0700";
109+
};
110+
};
111+
112+
systemd.user.services.dirmngr = {
113+
requires = [ "dirmngr.socket" ];
114+
after = [ "dirmngr.socket" ];
115+
unitConfig = {
116+
RefuseManualStart = "true";
117+
};
118+
serviceConfig = {
119+
ExecStart = "${pkgs.gnupg}/bin/dirmngr --supervised";
120+
ExecReload = "${pkgs.gnupg}/bin/gpgconf --reload dirmngr";
121+
};
122+
};
123+
124+
systemd.user.sockets.dirmngr = {
125+
wantedBy = [ "sockets.target" ];
126+
listenStreams = [ "%t/gnupg/S.dirmngr" ];
127+
socketConfig = {
128+
SocketMode = "0600";
129+
DirectoryMode = "0700";
130+
};
50131
};
51132

52133
systemd.packages = [ pkgs.gnupg ];

0 commit comments

Comments
 (0)
Please sign in to comment.