feat(nixos): add sops module for secrets
Adds .sops.yaml file and sops module to nixos to manage secrets.
This commit is contained in:
parent
d7b8edd054
commit
85f2cee212
2 changed files with 59 additions and 0 deletions
7
.sops.yaml
Normal file
7
.sops.yaml
Normal file
|
@ -0,0 +1,7 @@
|
|||
keys:
|
||||
- &rafiq age12l33pas8eptwjc7ewux3d8snyzfzwz0tn9qg5kw8le79fswmjgjqdjgyy6
|
||||
creation_rules:
|
||||
- path_regex: \.(yaml)$
|
||||
key_groups:
|
||||
- age:
|
||||
- *rafiq
|
52
nix/modules/secrets.nix
Normal file
52
nix/modules/secrets.nix
Normal file
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.flake;
|
||||
inherit (builtins) readFile;
|
||||
inherit (lib.meta) getExe;
|
||||
inherit (lib.strings) trim;
|
||||
inherit (cfg.admin) username pubkey;
|
||||
in
|
||||
{
|
||||
flake.modules.nixos.default =
|
||||
{ config, ... }:
|
||||
{
|
||||
imports = [ inputs.sops-nix.nixosModules.sops ];
|
||||
config.sops = {
|
||||
defaultSopsFile = "${cfg.root}/secrets/secrets.yaml";
|
||||
age.sshKeyPaths = [
|
||||
"/persist${config.users.defaultUserHome}/${username}/.ssh/id_ed25519"
|
||||
];
|
||||
};
|
||||
};
|
||||
perSystem =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
files.files = [
|
||||
{
|
||||
path_ = ".sops.yaml";
|
||||
drv =
|
||||
pkgs.writeText ".sops.yaml" # yaml
|
||||
''
|
||||
keys:
|
||||
- &${username} ${trim (
|
||||
readFile "${
|
||||
pkgs.runCommand "" { } ''
|
||||
mkdir $out; echo ${pubkey} | ${getExe pkgs.ssh-to-age} > $out/agepubkey
|
||||
''
|
||||
}/agepubkey"
|
||||
)}
|
||||
creation_rules:
|
||||
- path_regex: \.(yaml)$
|
||||
key_groups:
|
||||
- age:
|
||||
- *${username}
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue