feat(sops): Setup sops

This commit is contained in:
Tibo De Peuter 2025-10-04 19:59:03 +02:00
parent f1ba0a98e8
commit 12015f8589
Signed by: tdpeuter
GPG key ID: 38297DE43F75FFE2
4 changed files with 45 additions and 5 deletions

8
.sops.yaml Normal file
View file

@ -0,0 +1,8 @@
keys:
- &tdpeuter_Tibo-NixTop age1qzutny0mqpcccqw6myyfntu6wcskruu9ghzvt6r4te7afkqwnguq05ex37
creation_rules:
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
key_groups:
- age:
- *tdpeuter_Tibo-NixTop

View file

@ -5,6 +5,10 @@
nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs.url = "nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
utils = { utils = {
url = "github:gytis-ivaskevicius/flake-utils-plus"; url = "github:gytis-ivaskevicius/flake-utils-plus";
inputs.flake-utils.follows = "flake-utils"; inputs.flake-utils.follows = "flake-utils";
@ -13,11 +17,11 @@
outputs = inputs@{ outputs = inputs@{
self, nixpkgs, self, nixpkgs,
flake-utils, utils, flake-utils, sops-nix, utils,
... ...
}: }:
let let
system = "x86_64-linux"; system = utils.lib.system.x86_64-linux;
in in
utils.lib.mkFlake { utils.lib.mkFlake {
inherit self inputs; inherit self inputs;
@ -28,6 +32,8 @@
modules = [ modules = [
./modules ./modules
./users ./users
sops-nix.nixosModules.sops
]; ];
}; };

19
secrets/secrets.yaml Normal file
View file

@ -0,0 +1,19 @@
users:
admin:
authorized_keys:
NixOS: ENC[AES256_GCM,data:sj2hkUkWp628KuXp+AnncLdawHpxb9fH1ZHnIisP0x9Tght9+/X2sWHpuMSeqi2i/R8B+Wgte66QkuwAOB0j+oB9N+66EhehmWZlK5hD/22p,iv:z18U+LvAQgPDfBBewE3lJmWZd0NGCPwJIe/h3tupuZc=,tag:ZJar3spO66JbDXygdTHh2w==,type:str]
sops:
age:
- recipient: age1qzutny0mqpcccqw6myyfntu6wcskruu9ghzvt6r4te7afkqwnguq05ex37
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjUSt2REk2Mmd0bk9ubjJk
dXFiY2JNR1dyZW9qTUdzaWZhY3c3amVwQzA0CkZHNVpZVjhsWXhVQVNaR0xONzhh
Y0lQaWNaNmpYYVdrRnZIZUhvUFUzcWMKLS0tIDAvSmF0VmpxcnZEQStXUjNCUE5Z
RnA2Lzk2WHFxOEh6dHN0aGhVSVpLTW8KA7IOvGDMBtgo4pe0Sw3Lol243xCDAJ4i
PhcJFiUObVRFZN7ISlULnOlTO3pT9jWvvmC5rDZWId3PQ8qjPvnOUg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-04T17:33:22Z"
mac: ENC[AES256_GCM,data:I7I7uDFEWfw9+4KROtjHMVhaxYrVK5QmLfFZShSajF0A2Zxu9lg+fDGiMHk40JC5zD31P70QS/ipye1mBGQbCbLEA7uBUhNzZ7G1g58cIXF6vSGmt0fovm0MVSxEJ44r05fx6uT4OJu5BYVxYSlG84gTj9rCFXxxcBJMrh+6yaI=,iv:c1vudsp9bg0Pc2ddRyvWn6Tf0LhqNuEjxG9D4PpHqxs=,tag:K/1PSHhrTdsNPcPmRv/2Ew==,type:str]
unencrypted_suffix: _unencrypted
version: 3.10.2

View file

@ -2,6 +2,8 @@
let let
cfg = config.homelab.users.admin; cfg = config.homelab.users.admin;
owner = config.users.users.admin.name;
in { in {
options.homelab.users.admin.enable = lib.mkEnableOption "user System Administrator"; options.homelab.users.admin.enable = lib.mkEnableOption "user System Administrator";
@ -10,6 +12,12 @@ in {
config.users.users.admin.name config.users.users.admin.name
]; ];
sops.secrets."users/admin/authorized_keys" = {
format = "yaml";
sopsFile = ../../secrets/secrets.yaml;
inherit owner;
};
users.users.admin = { users.users.admin = {
description = "System Administrator"; description = "System Administrator";
isNormalUser = true; isNormalUser = true;
@ -17,9 +25,8 @@ in {
config.users.groups.wheel.name # Enable 'sudo' for the user. config.users.groups.wheel.name # Enable 'sudo' for the user.
]; ];
initialPassword = "ChangeMe"; initialPassword = "ChangeMe";
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keyFiles = [
# TODO ChangeMe /run/secrets/users/admin/authorized_keys
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPrG+ldRBdCeHEXrsy/qHXIJYg8xQXVuiUR0DxhFjYNg"
]; ];
packages = with pkgs; [ packages = with pkgs; [
curl curl