mirror of
https://github.com/daylinmorgan/oizys.git
synced 2024-12-21 21:50:43 -06:00
Compare commits
4 commits
67459a9e80
...
7b9f59a5bb
Author | SHA1 | Date | |
---|---|---|---|
7b9f59a5bb | |||
0447eb645a | |||
f29fcf634b | |||
dba19e95f0 |
10 changed files with 160 additions and 40 deletions
19
.sops.yaml
Normal file
19
.sops.yaml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# This document uses YAML anchors which allows reuse of multiple keys
|
||||||
|
# without having to repeat yourself.
|
||||||
|
# Also see https://github.com/Mic92/dotfiles/blob/master/nixos/.sops.yaml
|
||||||
|
# for a more complex example.
|
||||||
|
keys:
|
||||||
|
- &admin_daylin age10ft5tkswydhmassqeqzr8frpx6vc07g4rwam09rs8agvgfrsn95q9ml7u3
|
||||||
|
- &host_othalan age1t4k04mjltmmhljnwugm6y4dejtu72vv4fd4anxxfsdpkapfnfauqe765gy
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: hosts/(.*)/[^/]+\.(yaml|json|env|ini)$
|
||||||
|
# - path_regex: hosts/algiz/[^/]+\.(yaml|json|env|ini)$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *admin_daylin
|
||||||
|
- path_regex: hosts/othalan/[^/]+\.(yaml|json|env|ini)$
|
||||||
|
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *admin_daylin
|
||||||
|
- *host_othalan
|
21
flake.lock
21
flake.lock
|
@ -915,11 +915,32 @@
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nixpkgs-wayland": "nixpkgs-wayland",
|
"nixpkgs-wayland": "nixpkgs-wayland",
|
||||||
"pixi": "pixi",
|
"pixi": "pixi",
|
||||||
|
"sops-nix": "sops-nix",
|
||||||
"stable": "stable",
|
"stable": "stable",
|
||||||
"tsm": "tsm",
|
"tsm": "tsm",
|
||||||
"utils": "utils"
|
"utils": "utils"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"sops-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732575825,
|
||||||
|
"narHash": "sha256-xtt95+c7OUMoqZf4OvA/7AemiH3aVuWHQbErYQoPwFk=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"rev": "3433ea14fbd9e6671d0ff0dd45ed15ee4c156ffa",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"stable": {
|
"stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1732632634,
|
"lastModified": 1732632634,
|
||||||
|
|
|
@ -16,6 +16,11 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sops-nix = {
|
||||||
|
url = "github:Mic92/sops-nix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
lix = {
|
lix = {
|
||||||
url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz";
|
url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz";
|
||||||
flake = false;
|
flake = false;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
enabled,
|
enabled,
|
||||||
enableAttrs,
|
enableAttrs,
|
||||||
listify,
|
listify,
|
||||||
|
@ -15,7 +16,8 @@
|
||||||
user = "root";
|
user = "root";
|
||||||
rcloneConfigFile = "/home/daylin/.config/rclone/rclone.conf";
|
rcloneConfigFile = "/home/daylin/.config/rclone/rclone.conf";
|
||||||
repository = "rclone:g:archives/algiz";
|
repository = "rclone:g:archives/algiz";
|
||||||
passwordFile = "/home/daylin/.config/restic/algiz-pass";
|
# passwordFile = "/home/daylin/.config/restic/algiz-pass";
|
||||||
|
passwordFile = config.sops.secrets.restic-algiz.path;
|
||||||
paths = [
|
paths = [
|
||||||
"/home/daylin/services/git/"
|
"/home/daylin/services/git/"
|
||||||
"/home/daylin/services/gotosocial/"
|
"/home/daylin/services/gotosocial/"
|
||||||
|
@ -26,4 +28,11 @@
|
||||||
|
|
||||||
# git user handles the forgjo ssh authentication
|
# git user handles the forgjo ssh authentication
|
||||||
users.users.git.isNormalUser = true;
|
users.users.git.isNormalUser = true;
|
||||||
|
|
||||||
|
sops = {
|
||||||
|
age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
|
||||||
|
defaultSopsFile = ./secrets.yaml;
|
||||||
|
# by default is accessible only by root:root which should work with above service
|
||||||
|
secrets.restic-algiz = { };
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
21
hosts/algiz/secrets.yaml
Normal file
21
hosts/algiz/secrets.yaml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
restic-algiz: ENC[AES256_GCM,data:r7z1s5pSEIlg2laRmY4D,iv:nfajL8J2A8G80NqMBw/t1tFXCsK9JbTzUgFTisf5JLk=,tag:LWOT9vVzuinXD+AYwk35jA==,type:str]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age10ft5tkswydhmassqeqzr8frpx6vc07g4rwam09rs8agvgfrsn95q9ml7u3
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5ZUJhVVV1SFBEV1BNRS9D
|
||||||
|
TlhhMW1RbGtaam1FYnppcURlU0VVekRNTUNvCk50aW4yaWJpVTZPK3dPMWI3UjBY
|
||||||
|
L3k5c1lnejl5M1FxZC9TQU8yWVNZRlkKLS0tIEZHRXNLZG1McFFOeVpWUWtHYUl3
|
||||||
|
YWlZMzI4eUoxMW5SanJxSzVpRmJnQlUKPiZnIuBQ5E0A5yorjmoI2pehpMDQ7TNs
|
||||||
|
3IvyW+HUOnM/gCJqKBzR/Iqlk74mRKoDb5GuOiUpy7yN/1vrMdHQmw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2024-11-29T01:19:00Z"
|
||||||
|
mac: ENC[AES256_GCM,data:J8jbVgwtqck2Sis03re93cVyFw1tMrPc+nnWmlDGoLWh6Jrxq8n+Eac7nsIxU/pZVnY+1x68lAz/2+YHPe8zxChz3f6O2ebscQaAo9M7gG76W2Rt6pDtrKXL7U2pDbjx0p5RwZQM/1tdeRbuUvJk/PYPJONiPVgi/bL6chd2Tew=,iv:brwJE8CZY0K6iRqB9ZUG1AwPfkISoSax692NZoyaNVQ=,tag:7/7V/jw/cgsCSJryrRMJMA==,type:str]
|
||||||
|
pgp: []
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.9.1
|
|
@ -2,6 +2,7 @@
|
||||||
enabled,
|
enabled,
|
||||||
enableAttrs,
|
enableAttrs,
|
||||||
listify,
|
listify,
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
@ -25,4 +26,16 @@
|
||||||
|> listify
|
|> listify
|
||||||
|> enableAttrs
|
|> enableAttrs
|
||||||
);
|
);
|
||||||
|
|
||||||
|
sops.defaultSopsFile = ./secrets.yaml;
|
||||||
|
# This will automatically import SSH keys as age keys
|
||||||
|
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
|
||||||
|
sops.secrets.restic-othalan = {
|
||||||
|
# Permission modes are in octal representation (same as chmod),
|
||||||
|
mode = "0440";
|
||||||
|
# It is recommended to get the group/name name from
|
||||||
|
# `config.users.users.<?name>.{name,group}` to avoid misconfiguration
|
||||||
|
owner = config.users.users.daylin.name;
|
||||||
|
group = config.users.users.daylin.group;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
]
|
]
|
||||||
|
|
||||||
++ (with pkgs; [
|
++ (with pkgs; [
|
||||||
|
sops
|
||||||
distrobox
|
distrobox
|
||||||
zk
|
zk
|
||||||
quarto
|
quarto
|
||||||
|
|
30
hosts/othalan/secrets.yaml
Normal file
30
hosts/othalan/secrets.yaml
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
restic-othalan: ENC[AES256_GCM,data:HNIya1Rp,iv:8QkDewpXoy+3ahuuaCN/HfbGOgfQQ0Ud5emD7zVPE2s=,tag:bDfumEnt20lun5hnLY+eVA==,type:str]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age10ft5tkswydhmassqeqzr8frpx6vc07g4rwam09rs8agvgfrsn95q9ml7u3
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCK3pzZ3hXdG40L1JyK281
|
||||||
|
NDJ4WWEyWFBPeERabXpSUXYzOWMxdWJlMGdFCmQydi8rbVZCUFBzM0NUbWJlZzZ3
|
||||||
|
anV6a2FCL1BRTWg2V1RBZFJXUUNRUEkKLS0tIHIwTzl5NEdoTWRaUm9LR3I1MFph
|
||||||
|
TFJjQndHQUJZdEZsSElmY0xDMTMvc2MKCO9BP1jccmFXqLjJQyk5a1/QC69/WPaV
|
||||||
|
xl8U7gFoiOf6ZIESk/fADVtnG+thEYF1vwEMI8ClUfs+8kWgwBqoGw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1t4k04mjltmmhljnwugm6y4dejtu72vv4fd4anxxfsdpkapfnfauqe765gy
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqWnBYVFRKMVJPVEQ1VlAy
|
||||||
|
Y000L1lHM2JyN0oyeTFROXh6OTVlTkc5RlVBCkdqU20yeGtVcWo3cmRoQmFKVG91
|
||||||
|
d3RQazc1UTJBdWQwUEdzNkNPYXZ3SmsKLS0tIHdzd0Q0a1pPeEJqS1Rrckt6aUdt
|
||||||
|
UmE2Mk4yV21TNTF2NjBqZ0txYThRRzAKgyWCwmF4mhX8lmfslmBf2UrcFqzT8m11
|
||||||
|
AqhJsG2LRU/9/6FXOYn2rYeCIDpTkPoQ4ez7F4m/zp+RvOc2eW3g2g==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2024-11-29T00:41:44Z"
|
||||||
|
mac: ENC[AES256_GCM,data:4+H5OmCCTrMrkz9sLHcdwu8EFc+iS3MUTfhLgH6crfE0QSmV87b4JKQTVtdoYnzB8f2hRS/DeAImaLs68NQ/c7raLKwKmX1Bx2htV92MEOhoEjnZ6IbpCzY9FhrtRFjjBrg/nAuMpK0ktYW3w9C/v/jq/YEnP+pabkPhsUav8GU=,iv:LtBd2nj21ZCOXmvfbCIz/lvYC4neRk7ZTnY/rbJnATU=,tag:o9K/TxIp/NLmcvpXHYPHoQ==,type:str]
|
||||||
|
pgp: []
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.9.1
|
|
@ -1,35 +1,39 @@
|
||||||
{ pkgs, ... }:
|
{
|
||||||
let
|
config,
|
||||||
notes-git = ''${pkgs.git}/bin/git -C /home/daylin/stuff/notes'';
|
# pkgs,
|
||||||
in
|
...
|
||||||
|
}:
|
||||||
|
# let
|
||||||
|
# notes-git = ''${pkgs.git}/bin/git -C /home/daylin/stuff/notes'';
|
||||||
|
# in
|
||||||
{
|
{
|
||||||
services.restic.backups.gdrive = {
|
services.restic.backups.gdrive = {
|
||||||
user = "daylin";
|
user = "daylin";
|
||||||
repository = "rclone:g:archives/othalan";
|
repository = "rclone:g:archives/othalan";
|
||||||
passwordFile = "/home/daylin/.config/restic/othalan-pass";
|
passwordFile = config.sops.secrets.restic-othalan.path;
|
||||||
paths = [
|
paths = [
|
||||||
"/home/daylin/stuff/"
|
"/home/daylin/stuff/"
|
||||||
"/home/daylin/dev/"
|
"/home/daylin/dev/"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.notes-bot = {
|
# systemd.services.notes-bot = {
|
||||||
description = "auto commit changes to notes";
|
# description = "auto commit changes to notes";
|
||||||
serviceConfig = {
|
# serviceConfig = {
|
||||||
Type = "oneshot";
|
# Type = "oneshot";
|
||||||
User = "daylin";
|
# User = "daylin";
|
||||||
ExecStart = ''
|
# ExecStart = ''
|
||||||
${pkgs.bash}/bin/bash -c '${notes-git} commit -m ":memo: :robot: $(${pkgs.coreutils}/bin/date +\'%%T\')" --no-gpg-sign -- notes'
|
# ${pkgs.bash}/bin/bash -c '${notes-git} commit -m ":memo: :robot: $(${pkgs.coreutils}/bin/date +\'%%T\')" --no-gpg-sign -- notes'
|
||||||
'';
|
# '';
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
systemd.timers.notes-bot-timer = {
|
# systemd.timers.notes-bot-timer = {
|
||||||
description = "run notes commit service";
|
# description = "run notes commit service";
|
||||||
wantedBy = [ "timers.target" ];
|
# wantedBy = [ "timers.target" ];
|
||||||
timerConfig = {
|
# timerConfig = {
|
||||||
OnCalendar = "daily";
|
# OnCalendar = "daily";
|
||||||
Persistent = true;
|
# Persistent = true;
|
||||||
Unit = "notes-bot.service";
|
# Unit = "notes-bot.service";
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,13 +17,15 @@ let
|
||||||
listify
|
listify
|
||||||
;
|
;
|
||||||
inherit (lib.filesystem) listFilesRecursive;
|
inherit (lib.filesystem) listFilesRecursive;
|
||||||
|
|
||||||
flake = flakeFromSystem "x86_64-linux";
|
flake = flakeFromSystem "x86_64-linux";
|
||||||
hostPath = host: ../. + "/hosts/${host}";
|
hostPath = host: ../. + "/hosts/${host}";
|
||||||
|
|
||||||
# all nix files not including pkgs.nix
|
# all nix files not including pkgs.nix
|
||||||
# hostFiles = host: filter isNixFile (listFilesRecursive (hostPath host));
|
|
||||||
hostFiles = host: host |> hostPath |> listFilesRecursive |> filter isNixFile;
|
hostFiles = host: host |> hostPath |> listFilesRecursive |> filter isNixFile;
|
||||||
|
|
||||||
|
nixosModules = names: names |> listify |> map (n: inputs.${n}.nixosModules.default);
|
||||||
|
selfModules = names: names |> listify |> map (n: self.nixosModules.${n});
|
||||||
|
|
||||||
commonSpecialArgs = {
|
commonSpecialArgs = {
|
||||||
inherit
|
inherit
|
||||||
self
|
self
|
||||||
|
@ -35,12 +37,7 @@ let
|
||||||
|
|
||||||
mkIso = nixosSystem {
|
mkIso = nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [
|
modules = (nixosModules "lix-module") ++ (selfModules "nix|essentials|iso");
|
||||||
inputs.lix-module.nixosModules.default
|
|
||||||
self.nixosModules.nix
|
|
||||||
self.nixosModules.essentials
|
|
||||||
self.nixosModules.iso
|
|
||||||
];
|
|
||||||
specialArgs = commonSpecialArgs;
|
specialArgs = commonSpecialArgs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -48,12 +45,13 @@ let
|
||||||
hostName:
|
hostName:
|
||||||
nixosSystem {
|
nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [
|
modules =
|
||||||
../modules/oizys.nix
|
[
|
||||||
inputs.lix-module.nixosModules.default
|
inputs.comin.nixosModules.comin
|
||||||
inputs.hyprland.nixosModules.default
|
]
|
||||||
inputs.comin.nixosModules.comin
|
++ (selfModules ''oizys'')
|
||||||
] ++ (hostFiles hostName);
|
++ (nixosModules ''lix-module|hyprland|sops-nix'')
|
||||||
|
++ (hostFiles hostName);
|
||||||
|
|
||||||
specialArgs = commonSpecialArgs // {
|
specialArgs = commonSpecialArgs // {
|
||||||
inherit
|
inherit
|
||||||
|
|
Loading…
Reference in a new issue