61 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   flake.modules = {
 | |
|     nixos.base =
 | |
|       { pkgs, ... }:
 | |
|       let
 | |
| 
 | |
|         reload-yubikey = pkgs.writeShellScriptBin "reload-yubikey" ''
 | |
|           ${pkgs.gnupg}/bin/gpg-connect-agent "scd serialno" "learn --force" /bye
 | |
|         '';
 | |
|       in
 | |
|       {
 | |
|         services.pcscd.enable = true;
 | |
|         services.udev.packages = with pkgs; [ yubikey-personalization ];
 | |
| 
 | |
|         environment.systemPackages = with pkgs; [
 | |
|           cryptsetup
 | |
|           paperkey
 | |
|           gnupg
 | |
|           pinentry-curses
 | |
|           pinentry-qt
 | |
| 
 | |
|           yubikey-manager
 | |
|           yubioath-flutter
 | |
|           reload-yubikey
 | |
|         ];
 | |
| 
 | |
|         programs = {
 | |
|           ssh.startAgent = false;
 | |
| 
 | |
|           gnupg.agent = {
 | |
|             enable = true;
 | |
|             enableSSHSupport = true;
 | |
|             enableExtraSocket = true;
 | |
|           };
 | |
|         };
 | |
| 
 | |
|       };
 | |
| 
 | |
|     homeManager.base =
 | |
|       { inputs, pkgs, ... }:
 | |
|       let
 | |
|         gpgConf = "${inputs.gpg-base-conf}/gpg.conf";
 | |
| 
 | |
|         gpgAgentConf = ''
 | |
|           enable-ssh-support
 | |
|           default-cache-ttl 60
 | |
|           max-cache-ttl 120
 | |
|           pinentry-program ${pkgs.pinentry-qt}/bin/pinentry-qt
 | |
|         '';
 | |
|       in
 | |
|       {
 | |
|         home.file = {
 | |
|           ".gnupg/.keep".text = "";
 | |
| 
 | |
|           ".gnupg/gpg.conf".source = gpgConf;
 | |
|           ".gnupg/gpg-agent.conf".text = gpgAgentConf;
 | |
|           ".gnupg/scdeamon.conf".text = "disable-ccid";
 | |
|         };
 | |
|       };
 | |
|   };
 | |
| }
 |