From 867ecf6308390acf8188880c34e0312e75619fae Mon Sep 17 00:00:00 2001 From: beeb5k Date: Sat, 7 Mar 2026 03:11:25 +0530 Subject: Add secrets with sops --- hosts/common.nix | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'hosts') diff --git a/hosts/common.nix b/hosts/common.nix index e6bc71d..65302b1 100644 --- a/hosts/common.nix +++ b/hosts/common.nix @@ -7,6 +7,10 @@ ... }: { + imports = [ + inputs.sops-nix.nixosModules.sops + ]; + nix.settings = { trusted-users = [ "@wheel" ]; experimental-features = [ @@ -163,6 +167,42 @@ programs.gnupg.agent = { enable = true; enableSSHSupport = true; + pinentryPackage = pkgs.pinentry-gnome3; + }; + + sops = { + defaultSopsFile = ../secrets/secrets.yaml; + age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; + secrets.gpg_private_key = { + owner = user; + mode = "0400"; + }; + }; + + systemd.services.import-gpg-key = { + description = "Import GPG key from sops secret"; + wantedBy = [ "multi-user.target" ]; + after = [ "sops-nix.service" ]; + wants = [ "sops-nix.service" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + User = user; + }; + path = [ + pkgs.gnupg + pkgs.gawk + ]; + script = '' + GPG_KEY="/run/secrets/gpg_private_key" + if [ -f "$GPG_KEY" ]; then + gpg --batch --import "$GPG_KEY" || true + KEY_FP=$(gpg --batch --with-colons --list-secret-keys | awk -F: '/^fpr:/{print $10; exit}') + if [ -n "$KEY_FP" ]; then + echo "$KEY_FP:6:" | gpg --batch --import-ownertrust || true + fi + fi + ''; }; services.upower.enable = true; -- cgit v1.3.1