81 lines
2.6 KiB
Nix
81 lines
2.6 KiB
Nix
{
|
|
osConfig,
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: let
|
|
sys = osConfig.modules.system;
|
|
|
|
pinentryPkg =
|
|
if sys.video.enable
|
|
then pkgs.pinentry-gnome3 # requires services.dbus.packages = [ pkgs.gcr ]
|
|
else pkgs.pinentry-curses;
|
|
in {
|
|
services = {
|
|
gpg-agent = {
|
|
enable = true;
|
|
pinentryPackage = pinentryPkg;
|
|
enableSshSupport = true;
|
|
defaultCacheTtl = 1209600;
|
|
defaultCacheTtlSsh = 1209600;
|
|
maxCacheTtl = 1209600;
|
|
maxCacheTtlSsh = 1209600;
|
|
extraConfig = "allow-preset-passphrase";
|
|
enableZshIntegration = true;
|
|
};
|
|
};
|
|
|
|
# Allow manually restarting gpg-agent in case of failure
|
|
systemd.user.services.gpg-agent.Unit.RefuseManualStart = lib.mkForce false;
|
|
|
|
programs = {
|
|
gpg = {
|
|
enable = true;
|
|
homedir = "${config.xdg.dataHome}/gnupg";
|
|
settings = {
|
|
keyserver = "keys.openpgp.org";
|
|
# https://github.com/drduh/config/blob/master/gpg.conf
|
|
# https://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration-Options.html
|
|
# https://www.gnupg.org/documentation/manuals/gnupg/GPG-Esoteric-Options.html
|
|
# Use AES256, 192, or 128 as cipher
|
|
personal-cipher-preferences = "AES256 AES192 AES";
|
|
# Use SHA512, 384, or 256 as digest
|
|
personal-digest-preferences = "SHA512 SHA384 SHA256";
|
|
# Use ZLIB, BZIP2, ZIP, or no compression
|
|
personal-compress-preferences = "ZLIB BZIP2 ZIP Uncompressed";
|
|
# Default preferences for new keys
|
|
default-preference-list = "SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed";
|
|
# SHA512 as digest to sign keys
|
|
cert-digest-algo = "SHA512";
|
|
# SHA512 as digest for symmetric ops
|
|
s2k-digest-algo = "SHA512";
|
|
# AES256 as cipher for symmetric ops
|
|
s2k-cipher-algo = "AES256";
|
|
# UTF-8 support for compatibility
|
|
charset = "utf-8";
|
|
# Show Unix timestamps
|
|
fixed-list-mode = "";
|
|
# No comments in signature
|
|
no-comments = "";
|
|
# No version in signature
|
|
no-emit-version = "";
|
|
# Disable banner
|
|
no-greeting = "";
|
|
# Long hexidecimal key format
|
|
keyid-format = "0xlong";
|
|
# Display UID validity
|
|
list-options = "show-uid-validity";
|
|
verify-options = "show-uid-validity";
|
|
# Display all keys and their fingerprints
|
|
with-fingerprint = "";
|
|
# Cross-certify subkeys are present and valid
|
|
require-cross-certification = "";
|
|
# Disable caching of passphrase for symmetrical ops
|
|
no-symkey-cache = "";
|
|
# Enable smartcard
|
|
use-agent = "";
|
|
};
|
|
};
|
|
};
|
|
}
|