Compare commits
5 Commits
df00e58bd9
...
1abc06f58c
Author | SHA1 | Date | |
---|---|---|---|
1abc06f58c | |||
b3f3813b36 | |||
56b471cdd4 | |||
136dd36b8c | |||
3f68d344d1 |
41
.gitea/workflows/update-flake.yaml
Normal file
41
.gitea/workflows/update-flake.yaml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
name: Update Nix Flake
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "30 0 * * *" # daily run
|
||||||
|
workflow_dispatch: {}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-flake:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
token: "${{ secrets.GH_TOKEN }}"
|
||||||
|
fetch-depth: 0
|
||||||
|
ref: flake-updates
|
||||||
|
|
||||||
|
- name: Fetch latest changes and reset branch
|
||||||
|
run: |
|
||||||
|
git fetch origin master
|
||||||
|
git reset --hard origin/master
|
||||||
|
|
||||||
|
- name: Set up Nix
|
||||||
|
uses: cachix/install-nix-action@v31
|
||||||
|
|
||||||
|
- name: Update Flake
|
||||||
|
run: nix flake update
|
||||||
|
|
||||||
|
- name: Commit and push changes
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
git config user.name "Gitea Actions"
|
||||||
|
git config user.email "actions@gitea.local"
|
||||||
|
git add flake.lock
|
||||||
|
if git diff --cached --quiet; then
|
||||||
|
echo "No changes to commit."
|
||||||
|
else
|
||||||
|
git commit -m "Update flake.lock $(date -I)"
|
||||||
|
git push origin flake-updates
|
||||||
|
fi
|
@ -2,6 +2,7 @@ keys:
|
|||||||
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
||||||
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
||||||
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
|
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
|
||||||
|
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
||||||
creation_rules:
|
creation_rules:
|
||||||
- path_regex: secrets/secrets.yaml$
|
- path_regex: secrets/secrets.yaml$
|
||||||
key_groups:
|
key_groups:
|
||||||
@ -10,6 +11,12 @@ creation_rules:
|
|||||||
- *aspi-ssh
|
- *aspi-ssh
|
||||||
- *pianonix-ssh
|
- *pianonix-ssh
|
||||||
|
|
||||||
|
- path_regex: secrets/secrets-builder.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *primary
|
||||||
|
- *builder-ssh
|
||||||
|
|
||||||
- path_regex: secrets/.+
|
- path_regex: secrets/.+
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
|
19
Readme.org
19
Readme.org
@ -12,3 +12,22 @@ The structure is managed by [[https://snowfall.org/guides/lib/quickstart/][Snowf
|
|||||||
and [[file:flake.nix]] was symlinked to file:~/.config/home-manager/flake.nix
|
and [[file:flake.nix]] was symlinked to file:~/.config/home-manager/flake.nix
|
||||||
|
|
||||||
For deployment!!
|
For deployment!!
|
||||||
|
|
||||||
|
* Secrets management with sops
|
||||||
|
Full documentation here: https://github.com/Mic92/sops-nix
|
||||||
|
|
||||||
|
** Edit secrets
|
||||||
|
#+begin_src sh
|
||||||
|
sops edit secrets/secrets.yaml
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Authorize new device
|
||||||
|
- Generate public key from ssh -> Private age key generation not needed
|
||||||
|
#+begin_src sh
|
||||||
|
ssh-to-age < /etc/ssh/ssh_host_ed25519_key
|
||||||
|
#+end_src
|
||||||
|
- Add age public key to file:.sops.yaml
|
||||||
|
- Update keys
|
||||||
|
#+begin_src sh
|
||||||
|
sops updatekeys secrets/*
|
||||||
|
#+end_src
|
||||||
|
@ -51,6 +51,15 @@ in
|
|||||||
];
|
];
|
||||||
mandatoryFeatures = [ ];
|
mandatoryFeatures = [ ];
|
||||||
}
|
}
|
||||||
|
# {
|
||||||
|
# hostName = "localhost";
|
||||||
|
# protocol = null;
|
||||||
|
# systems = [
|
||||||
|
# "x86_64-linux"
|
||||||
|
# ];
|
||||||
|
# maxJobs = 4;
|
||||||
|
# speedFactor = 1;
|
||||||
|
# }
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -42,23 +42,5 @@ in
|
|||||||
# List of defined secrets
|
# List of defined secrets
|
||||||
# They all become files linked inside the "/run/secrets/" directory
|
# They all become files linked inside the "/run/secrets/" directory
|
||||||
|
|
||||||
sops.secrets."vnc-passwd" = {
|
|
||||||
owner = config.users.users.julian.name;
|
|
||||||
sopsFile = ../../../secrets/vnc-passwd;
|
|
||||||
format = "binary";
|
|
||||||
};
|
|
||||||
sops.secrets."wifi/pianonix" = { };
|
|
||||||
|
|
||||||
sops.secrets."password/aspi" = {
|
|
||||||
neededForUsers = true; # necessary for setting password
|
|
||||||
};
|
|
||||||
sops.secrets."password/pianonix" = {
|
|
||||||
neededForUsers = true; # necessary for setting password
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.secrets."syncthing/pianonix/key" = { };
|
|
||||||
sops.secrets."syncthing/pianonix/cert" = { };
|
|
||||||
sops.secrets."syncthing/public-keys/aspi-nix" = { };
|
|
||||||
sops.secrets."syncthing/public-keys/pianonix" = { };
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
30
secrets/secrets-builder.yaml
Normal file
30
secrets/secrets-builder.yaml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
gitea_token: ENC[AES256_GCM,data:FuLEQRo8NtCIsGhtksbaKTZGliiR/5lRr6wHQCArUNN1IXFpPW49k/hZl20Wgg==,iv:MN7FBNIms/5Q841gfikk4WMaqyuXOTSQifC9IKFF0AM=,tag:RZFnJ49RZ+z9kXoTHdtYug==,type:str]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPaEtBdWM5WURZcllRVkp5
|
||||||
|
MjA2OVl6dzAzd3RjRGVDNzhuYjVXdjVEOGdFClEzenJhMjYwaW9hZGhXOVJLTjVY
|
||||||
|
NkJudW1tcHl3VGdKTHdmdmF6cHBqM0UKLS0tIGF4K0FMcnNhVWNZa1Q5Vzc5MFAr
|
||||||
|
UUJVNEpnYUN2UEp2N0UwUmJLd1NQQ1kK61EzjD/Z1VEWXHzmkih8/ZyXRoq/Ocpv
|
||||||
|
3dAWLVTGx6nsPHOkGZ9Hl0fMIOafu/kjO7ixzAeq21FluS97ZL/qLQ==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKMVBwNmhlS3J1dGxVZkhm
|
||||||
|
UVhXemZQbGpJTEFNZlBkWTFhb0lmRStVQWlZCm15UXAvTTZWNS8zdWk4QjV5TlZp
|
||||||
|
TkxFK3dETTdSWGxBUGwzL284T2hReTAKLS0tIGp1TmV6Q2lMcDdVWTRXNHFMcWRn
|
||||||
|
eWFYMlY1MmEvWjVid2NJTmFMK0FXWWcKOtUk1kcSTj5UOBLESMwQLG+LtIDwUtMz
|
||||||
|
l5k02Zw2whQh6IrAqXhJSUpT6AiXSoYtcy5nNjZsoC53xsfLfu97kA==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2025-03-21T20:07:45Z"
|
||||||
|
mac: ENC[AES256_GCM,data:VrZZ2fiv0JKPBijy+1s99D8FQvRFfoNZ48+58wy/Mir979GKihx/l7o3zYEpTWalRY8gbaHjLeH0i0bIgbGW4WQg+5gGZ4PjJhOMcZMAuMdoaGi0CqYOyOPXrzfDL8V5S5s1izjY/UhwURZdSiJeNfHS2cQVsFMt5vfTYSWDOM0=,iv:gVJPSVvKiCrb6KUyzfpO5ep1I8JTAHJGJCj22UhcV+o=,tag:9yGCU+5CtLOk+aa+pYrJ5g==,type:str]
|
||||||
|
pgp: []
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.9.4
|
@ -25,6 +25,20 @@
|
|||||||
# Set your time zone.
|
# Set your time zone.
|
||||||
time.timeZone = "Europe/Berlin";
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
sops.secrets."vnc-passwd" = {
|
||||||
|
owner = config.users.users.julian.name;
|
||||||
|
sopsFile = ../../../secrets/vnc-passwd;
|
||||||
|
format = "binary";
|
||||||
|
};
|
||||||
|
sops.secrets."wifi/pianonix" = { };
|
||||||
|
sops.secrets."syncthing/pianonix/key" = { };
|
||||||
|
sops.secrets."syncthing/pianonix/cert" = { };
|
||||||
|
# sops.secrets."syncthing/public-keys/aspi-nix" = { };
|
||||||
|
# sops.secrets."syncthing/public-keys/pianonix" = { };
|
||||||
|
sops.secrets."password/pianonix" = {
|
||||||
|
neededForUsers = true; # necessary for setting password
|
||||||
|
};
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
sops.enable = true;
|
sops.enable = true;
|
||||||
nix-settings.enable = true;
|
nix-settings.enable = true;
|
||||||
|
@ -36,6 +36,10 @@
|
|||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
sops.secrets = {
|
||||||
|
"password/aspi".neededForUsers = true; # necessary for setting password
|
||||||
|
};
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
sops.enable = true;
|
sops.enable = true;
|
||||||
nix-settings.enable = true;
|
nix-settings.enable = true;
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
modules = {
|
modules = {
|
||||||
keymap.enable = true;
|
keymap.enable = true;
|
||||||
locales.enable = true;
|
locales.enable = true;
|
||||||
|
sops.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.nix = {
|
users.users.nix = {
|
||||||
@ -104,16 +105,16 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Ollama used by open-webui as llm backend
|
# Ollama used by open-webui as llm backend
|
||||||
services.ollama = {
|
# services.ollama = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
# acceleration = "rocm";
|
# # acceleration = "rocm";
|
||||||
};
|
# };
|
||||||
services.open-webui = {
|
# services.open-webui = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
port = 8080;
|
# port = 8080;
|
||||||
openFirewall = true;
|
# openFirewall = true;
|
||||||
host = "builder.julian-mutter.de";
|
# host = "builder.julian-mutter.de";
|
||||||
};
|
# };
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
networking.firewall.allowedTCPPorts = [
|
||||||
80
|
80
|
||||||
@ -212,6 +213,22 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# =========== Gitea actions ==========
|
||||||
|
services.gitea-actions-runner.instances."builder" = {
|
||||||
|
enable = true;
|
||||||
|
url = "https://gitlab.julian-mutter.de";
|
||||||
|
name = "builder";
|
||||||
|
tokenFile = config.sops.secrets."gitea_token".path;
|
||||||
|
labels = [ ]; # use default labels
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.podman.enable = true;
|
||||||
|
|
||||||
|
sops.secrets."gitea_token" = {
|
||||||
|
owner = config.users.users.nix.name;
|
||||||
|
sopsFile = ../../../secrets/secrets-builder.yaml;
|
||||||
|
};
|
||||||
|
|
||||||
# =========== Binary Cache ==========
|
# =========== Binary Cache ==========
|
||||||
services.nix-serve = {
|
services.nix-serve = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user