aboutsummaryrefslogtreecommitdiff
path: root/modules/sops.nix
blob: a71b3706c2d979ee772b934e310f109ceca3c5b8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{ config, ... }:

# sops-nix configuration.
# Secrets are encrypted to two recipients:
#   1. Your personal age key (derived from your SSH ed25519 key via ssh-to-age)
#   2. This host's age key (derived from /etc/ssh/ssh_host_ed25519_key at boot)
#
# The host key path below is where sops-nix looks by default when
# services.openssh generates the host key.
{
  sops = {
    defaultSopsFile = ../secrets/secrets.yaml;
    defaultSopsFormat = "yaml";

    # Derive the machine's age key from its SSH ed25519 host key.
    # This key is auto-generated by OpenSSH on first boot and stays stable.
    age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];

    secrets = {
      # Miniflux admin credentials file (ADMIN_USERNAME=... ADMIN_PASSWORD=...)
      "miniflux/admin" = {
        owner = "miniflux";
        group = "miniflux";
        mode = "0400";
      };

      # AdGuard Home admin password bcrypt hash
      # Format: plain string containing only the bcrypt hash
      "adguard/password_hash" = {
        owner = "adguardhome";
        group = "adguardhome";
        mode = "0400";
        restartUnits = [ "adguardhome.service" ];
      };
    };
  };
}