mirror of
https://github.com/moons-14/dotfiles.git
synced 2026-10-06 03:08:11 +09:00
sops
This commit is contained in:
@@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
!.envrc
|
!.envrc
|
||||||
|
|
||||||
|
!.sops.yaml
|
||||||
|
|
||||||
!/flake.nix
|
!/flake.nix
|
||||||
!/flake.lock
|
!/flake.lock
|
||||||
|
|
||||||
@@ -17,5 +19,6 @@
|
|||||||
!modules/
|
!modules/
|
||||||
!docs/
|
!docs/
|
||||||
!images/
|
!images/
|
||||||
|
!secrets/
|
||||||
|
|
||||||
!/flake/
|
!/flake/
|
||||||
|
|||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
keys:
|
||||||
|
- &admin_yubikey1 age1yubikey1qvy5y8kxqc63y7fk0tfv43u499a8z8q332ff087lythry9cc6hdxxkznc6t
|
||||||
|
- &host_x1g13_old age1xfc7ksg69l5kwsxxgtynsuxgpwltcf9gmqlhfl7efq0clc8lwspqnveyx3
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: ^secrets/common/[^/]+\.ya?ml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *admin_yubikey1
|
||||||
|
- *host_x1g13_old
|
||||||
|
- path_regex: ^secrets/hosts/x1g13/[^/]+\.ya?ml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *admin_yubikey1
|
||||||
|
- *host_x1g13_old
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Generate Sops key file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p ~/.config/sops/age
|
||||||
|
chmod 700 ~/.config/sops/age
|
||||||
|
|
||||||
|
age-plugin-yubikey --identity --slot 1 \
|
||||||
|
> ~/.config/sops/age/yubikey-identity.txt
|
||||||
|
|
||||||
|
chmod 600 ~/.config/sops/age/yubikey-identity.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
## Edit sops file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sops secrets/common/system.yaml
|
||||||
|
```
|
||||||
Generated
+21
@@ -959,6 +959,7 @@
|
|||||||
"noctalia": "noctalia",
|
"noctalia": "noctalia",
|
||||||
"quickshell": "quickshell",
|
"quickshell": "quickshell",
|
||||||
"services-flake": "services-flake",
|
"services-flake": "services-flake",
|
||||||
|
"sops-nix": "sops-nix",
|
||||||
"stylix": "stylix",
|
"stylix": "stylix",
|
||||||
"systems": "systems_6",
|
"systems": "systems_6",
|
||||||
"treefmt-nix": "treefmt-nix_3",
|
"treefmt-nix": "treefmt-nix_3",
|
||||||
@@ -1002,6 +1003,26 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"sops-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1780547341,
|
||||||
|
"narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"stylix": {
|
"stylix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"base16": "base16",
|
"base16": "base16",
|
||||||
|
|||||||
@@ -51,6 +51,12 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Secrets management
|
||||||
|
sops-nix = {
|
||||||
|
url = "github:Mic92/sops-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
# Disk management
|
# Disk management
|
||||||
disko = {
|
disko = {
|
||||||
url = "github:nix-community/disko";
|
url = "github:nix-community/disko";
|
||||||
|
|||||||
@@ -13,7 +13,9 @@
|
|||||||
./nix.nix
|
./nix.nix
|
||||||
./power.nix
|
./power.nix
|
||||||
./secure-boot.nix
|
./secure-boot.nix
|
||||||
|
./sops.nix
|
||||||
./user
|
./user
|
||||||
./version.nix
|
./version.nix
|
||||||
|
./secret.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
_:
|
||||||
|
let
|
||||||
|
commonSyetemSecrets = ../../secrets/common/system.yaml;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
sops.secrets = {
|
||||||
|
"users/moons/hashedPassword" = {
|
||||||
|
sopsFile = commonSyetemSecrets;
|
||||||
|
|
||||||
|
# need before user creation
|
||||||
|
neededForUsers = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# sops / age
|
||||||
|
sops
|
||||||
|
age
|
||||||
|
ssh-to-age
|
||||||
|
|
||||||
|
# YubiKey edit key
|
||||||
|
age-plugin-yubikey
|
||||||
|
yubikey-manager
|
||||||
|
pcsc-tools
|
||||||
|
|
||||||
|
# password hash generation
|
||||||
|
mkpasswd
|
||||||
|
];
|
||||||
|
|
||||||
|
# age-plugin-yubikey depend
|
||||||
|
services.pcscd.enable = true;
|
||||||
|
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
sops = {
|
||||||
|
defaultSopsFormat = "yaml";
|
||||||
|
|
||||||
|
age = {
|
||||||
|
# system keys
|
||||||
|
sshKeyPaths = [
|
||||||
|
"/etc/ssh/ssh_host_ed25519_key"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,8 +1,15 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
users.mutableUsers = false;
|
||||||
|
|
||||||
users.users.moons = {
|
users.users.moons = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = "moons-14";
|
description = "moons-14";
|
||||||
|
hashedPasswordFile = config.sops.secrets."users/moons/hashedPassword".path;
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"adbusers"
|
"adbusers"
|
||||||
"docker"
|
"docker"
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
users:
|
||||||
|
moons:
|
||||||
|
hashedPassword: ENC[AES256_GCM,data:QtZei/BXPn/PDxUlOu0ZVrAfRM5jiHChAE5j5NVscPmm4OWjr94nPVOmJlYjL2WAiJY3/JSthmbrEIqiUF6E9qv10HQzAxzmZQ==,iv:ksshJX9S/20lw/8IDZYadNZLLE/gNgENZJ3/wRgJCds=,tag:xJPiO8O/q4rKmb+YNnpZdg==,type:str]
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IGxWc2NMZyBBM09Pclhu
|
||||||
|
K0ozcS90TG9Qam1YUjdCUGw5QjRoNXNGMU92WVdJOVluUk0vNQpjb3AxeGVpaFBT
|
||||||
|
L2hLYnZ1WWtOQjdyRFR1SnNMb1JITTVwWlNXb003YUFJCi0tLSBPNnowdm00ZEhR
|
||||||
|
b2VGZ1drRG4rU01TODk5Rm5KbXJjVkNhQ0hNeUxwdXBzCqKtUyprjagTVajskgXg
|
||||||
|
OBMMuflEZQH+mtFWsBc0k1Mm7MAS8DpMVLNZnkfNNPpFTP4pAOWFd2LhuMkDONFQ
|
||||||
|
vnA=
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
recipient: age1yubikey1qvy5y8kxqc63y7fk0tfv43u499a8z8q332ff087lythry9cc6hdxxkznc6t
|
||||||
|
- enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPU0d5bVUrditWVCtDbyt6
|
||||||
|
WFpJTVdLOGpqZ1hLZTJGZi83MXZLMzR6RVhFCnBZRU53V3NvYXFpVXVJaDJHdlhz
|
||||||
|
SlV4NFUvTDZUQWdTaUJNZElidk1zMjgKLS0tIEd3QTRldzBJamp0OWhNUTBFMExC
|
||||||
|
dlhiMGp4b1JqY2JVTG5vSitadXI4cEUKvhqw+A5CXktuHR3JBDNKg2SrNIy4++l8
|
||||||
|
e58uQoTjJab1ivvLVAZOdtIdoulca50W9+ALNOFqBn9j5VD0BfFeKg==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
recipient: age1xfc7ksg69l5kwsxxgtynsuxgpwltcf9gmqlhfl7efq0clc8lwspqnveyx3
|
||||||
|
lastmodified: "2026-06-15T10:20:19Z"
|
||||||
|
mac: ENC[AES256_GCM,data:Tw58FneoksiOuol1aUOFXoAnFiTzddmFfYAA0B0RfPPyj6UKQbBvRYJhOMuOMRE1fVlDhqxxDiqZI5y14vJg8gLusAZt1JKi7ODR7MqcImvxboaee8DIj4uIcN254g0c0cmZWsGrt7yTYoSLDUc3QdAxj9/Az/CMls6XjM+RL8E=,iv:XGgWgbexCUxzuJzRVG3V2GZGwmwjAtowgz+NRPxk1+o=,tag:FwYJXfwS2f70okl0bhS+Sw==,type:str]
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.13.1
|
||||||
+17
-2
@@ -9,12 +9,27 @@ _: {
|
|||||||
devShells.dotnix = pkgs.mkShell {
|
devShells.dotnix = pkgs.mkShell {
|
||||||
packages = [
|
packages = [
|
||||||
config.treefmt.build.wrapper
|
config.treefmt.build.wrapper
|
||||||
pkgs.gitleaks
|
|
||||||
pkgs.git
|
pkgs.git
|
||||||
|
pkgs.gitleaks
|
||||||
pkgs.pre-commit
|
pkgs.pre-commit
|
||||||
|
|
||||||
|
# sops-nix / age
|
||||||
|
pkgs.sops
|
||||||
|
pkgs.age
|
||||||
|
pkgs.ssh-to-age
|
||||||
|
|
||||||
|
# YubiKey for sops editing
|
||||||
|
pkgs.age-plugin-yubikey
|
||||||
|
pkgs.yubikey-manager
|
||||||
|
pkgs.pcsc-tools
|
||||||
];
|
];
|
||||||
|
|
||||||
shellHook = config.pre-commit.settings.shellHook;
|
shellHook = ''
|
||||||
|
${config.pre-commit.settings.shellHook}
|
||||||
|
|
||||||
|
export SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/yubikey-identity.txt"
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user