Compare commits

..
Author SHA1 Message Date
ahtlon 22e49eb5a1 2 2026-03-25 10:25:45 +01:00
ahtlon 9648ff2adc fix 2026-03-25 10:19:25 +01:00
ahtlon 9faf4de28d add hydra wait thingie 2026-03-25 09:52:43 +01:00
ahtlon 5634919fa6 cut var 2026-03-14 13:42:53 +01:00
ahtlon 394c0610ce Try out workflow check 2026-03-14 13:14:15 +01:00
36 changed files with 83 additions and 582 deletions
+1 -13
View File
@@ -2,7 +2,7 @@ name: Weekly Flake Update
on:
schedule:
- cron: "0 4 1/14 * *"
- cron: "0 0 * * 4"
workflow_dispatch:
permissions:
@@ -89,18 +89,6 @@ jobs:
grep -q ${{ github.ref_name }} &&
exit 1 ||
exit 0
- name: close other bump requests
run: |
for i in $(tea pr -o simple | grep "Automatic Nixpkgs update" | awk '{print $1}')
do
if [ "$i" = "" ]
then
echo "No bumps to close"
exit 0
else
tea pr close $i
fi
done
- name: Force push branch
run: git push --force -u origin nixpkgs_bump_$(date +%Y%m%d)
- name: Create pull request
+6 -38
View File
@@ -1,26 +1,15 @@
name: Hydra callback
name: Weekly Flake Update
on:
pull_request:
types:
- opened
- synchronize
paths:
- '**.nix'
- flake.lock
push:
branches:
- master
paths:
- '**.nix'
- flake.lock
types:
- opened
permissions:
contents: write
jobs:
on_pr:
if: github.event.pull_request
hydra_callback:
runs-on: ubuntu-latest
env:
NIXPKGS_ALLOW_UNFREE: 1
@@ -35,29 +24,8 @@ jobs:
github_access_token: ${{ secrets.AHTLONS_GITHUB_TOKEN }}
- name: Find pr number
run: |
echo PR=$(echo "${{ github.ref }}" | cut -d / -f 3) >> "$GITHUB_ENV"
echo 'PR=$(echo "${{ github.ref }}" | cut -d / -f 3)' >> "$GITHUB_ENV"
- name: run hydra wait
timeout-minutes: 200
run: |
echo "Running now @ pr no $PR"
nix run nixpkgs#hydra-cli -- -H https://hydra.malobeo.org jobset-wait malobeo "$PR"
on_push:
if: github.event.push
runs-on: ubuntu-latest
env:
NIXPKGS_ALLOW_UNFREE: 1
steps:
- name: Install sudo
run: |
apt-get update
apt-get install -y sudo
- name: Set up Nix
uses: https://github.com/cachix/install-nix-action@v31
with:
github_access_token: ${{ secrets.AHTLONS_GITHUB_TOKEN }}
- name: run hydra wait
timeout-minutes: 200
run: |
echo "Running now @ master"
nix run nixpkgs#hydra-cli -- -H https://hydra.malobeo.org jobset-wait malobeo master
nix run nixpkgs#hydra-cli -- -H https://hydra.dynamicdiscord.de jobset-wait malobeo2 "$PR"
+1 -1
View File
@@ -12,7 +12,7 @@
"type": 0,
"inputs": {
"nixexpr": {
"value": "https://git.dynamicdiscord.de/malobeo/infrastructure master",
"value": "https://git.dynamicdiscord.de/ahtlon/infrastructure master",
"type": "git",
"emailresponsible": false
},
+2 -2
View File
@@ -4,8 +4,8 @@ this repository contains nixos configurations of the digital malobeo infrastruct
### deploying configuration
hosts are deployed automatically from master. The [hydra build server](https://hydra.malobeo.org/jobset/malobeo/infrastructure) will build new commits and on success, hosts will periodically pull those changes.
Big changes (like updating flake lock) could be commited to the staging branch first. [Hydra builds staging seperate](https://hydra.malobeo.org/jobset/malobeo/staging), and on success you can merge into master.
hosts are deployed automatically from master. The [hydra build server](https://hydra.dynamicdiscord.de/jobset/malobeo/infrastructure) will build new commits and on success, hosts will periodically pull those changes.
Big changes (like updating flake lock) could be commited to the staging branch first. [Hydra builds staging seperate](https://hydra.dynamicdiscord.de/jobset/malobeo/staging), and on success you can merge into master.
### deploy fresh host
if you want to deploy a completly new host refer to [docs](https://docs.malobeo.org/anleitung/create.html)
+1
View File
@@ -1,5 +1,6 @@
[book]
authors = ["ahtlon"]
language = "de"
multilingual = false
src = "src"
title = "Malobeo Infrastruktur Dokumentation"
+2 -2
View File
@@ -4,8 +4,8 @@ this repository contains nixos configurations of the digital malobeo infrastruct
### deploying configuration
hosts are deployed automatically from master. The [hydra build server](https://hydra.malobeo.org/jobset/malobeo/infrastructure) will build new commits and on success, hosts will periodically pull those changes.
Big changes (like updating flake lock) could be commited to the staging branch first. [Hydra builds staging seperate](https://hydra.malobeo.org/jobset/malobeo/staging), and on success you can merge into master.
hosts are deployed automatically from master. The [hydra build server](https://hydra.dynamicdiscord.de/jobset/malobeo/infrastructure) will build new commits and on success, hosts will periodically pull those changes.
Big changes (like updating flake lock) could be commited to the staging branch first. [Hydra builds staging seperate](https://hydra.dynamicdiscord.de/jobset/malobeo/staging), and on success you can merge into master.
### deploy fresh host
if you want to deploy a completly new host refer to [docs](https://docs.malobeo.org/anleitung/create.html)
+1 -33
View File
@@ -1,36 +1,4 @@
# Create a new host
### Base config
there is an example config [here](../files/base_host.md) *note: TODO*
## If this is a physical host
Create the keys and secrets using `add-host-keys`
This will ask for a hostname and then
- create and encrypt a ssh-key with sops
- create and encrypt a second ssh-key for the init
- convert the main key to a sops pubkey and display it
- create public/private wireguard keys and display the pubkey
- generate a reproducible mac-address
After this you have to
- write the age public key into machines/.sops.yaml under `keys:`
- write a new creation rule for the `secrets.yaml` under `creation_rules:` like
```
creation_rules:
- path_regex: {hostname}/secrets.yaml$
key_groups:
- pgp:
- *admin_kalipso
- *admin_kalipso_dsktp
age:
- *admin_atlan
- *machine_{hostname}
```
- create the secrets.yaml using `sops {hostname}/secrets.yaml`
- you can already add `wg_private: {wg priv key}` here
- add the host to the `hosts.nix` file (if microvm use the generated mac here)
- add the host to `machines/modules/malobeo/peers.nix` for vpn access (use the wireguard pubkey here)
# deploy the host with nixos-anywhere
# Create host with nixos-anywhere
We use a nixos-anywhere wrapper script to deploy new hosts.
The wrapper script takes care of copying persistent host keys before calling nixos-anywhere.
Generated
+25 -41
View File
@@ -85,16 +85,16 @@
]
},
"locked": {
"lastModified": 1781319724,
"narHash": "sha256-ZGuxexEMo4Xv28KJ0dX/m/PHN4oZIOnxHZpNTyrvx4M=",
"lastModified": 1763992789,
"narHash": "sha256-WHkdBlw6oyxXIra/vQPYLtqY+3G8dUVZM8bEXk0t8x4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "8355f0a16b2dbb06a97959a918af5b239bbe05ae",
"rev": "44831a7eaba4360fb81f2acc5ea6de5fde90aaa3",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-26.05",
"ref": "release-25.05",
"repo": "home-manager",
"type": "github"
}
@@ -126,11 +126,11 @@
"spectrum": "spectrum"
},
"locked": {
"lastModified": 1781389237,
"narHash": "sha256-Ne1/E5XNUq0gleaQz0vW5R4xf/0h/uEZ+bOW1aNjeQk=",
"lastModified": 1772055583,
"narHash": "sha256-iPIm1orqkhsxqju6EVODOrV1BmyA5HNTZ8a1o812bFM=",
"owner": "astro",
"repo": "microvm.nix",
"rev": "6ad601df0a07d9855c5e8f9b81135ecaf7c287eb",
"rev": "f6dcfb7c16cc3775536c825dc0698d4ede13d063",
"type": "github"
},
"original": {
@@ -176,15 +176,12 @@
}
},
"nixos-hardware": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1781622756,
"narHash": "sha256-JrPh4M6S7aPsEE9tOENuZrxC6o2szSLlK+t4+nLke9s=",
"lastModified": 1771969195,
"narHash": "sha256-qwcDBtrRvJbrrnv1lf/pREQi8t2hWZxVAyeMo7/E9sw=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "08018c72174a4df5657f8d94178ac69fb9c243e5",
"rev": "41c6b421bdc301b2624486e11905c9af7b8ec68e",
"type": "github"
},
"original": {
@@ -212,11 +209,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1781577229,
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
"lastModified": 1771848320,
"narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
"rev": "2fc6539b481e1d2569f25f8799236694180c0993",
"type": "github"
},
"original": {
@@ -228,29 +225,16 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1781216227,
"narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=",
"lastModified": 1771903837,
"narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0",
"rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-26.05",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
@@ -265,7 +249,7 @@
"microvm": "microvm",
"nixos-generators": "nixos-generators",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable",
"sops-nix": "sops-nix",
"tasklist": "tasklist",
@@ -280,11 +264,11 @@
]
},
"locked": {
"lastModified": 1780547341,
"narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=",
"lastModified": 1772048434,
"narHash": "sha256-/wA0OaH6kZ/pFA+nXR/tvg5oupOmEDmMS5us79JT60o=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a",
"rev": "334daa7c273dd8bf7a0cd370e4e16022b64e55e9",
"type": "github"
},
"original": {
@@ -296,11 +280,11 @@
"spectrum": {
"flake": false,
"locked": {
"lastModified": 1778940603,
"narHash": "sha256-voSM8dZNlaOWN3kbYFky+FNY6fFQOEw0xF+ZMpZKkCQ=",
"lastModified": 1759482047,
"narHash": "sha256-H1wiXRQHxxPyMMlP39ce3ROKCwI5/tUn36P8x6dFiiQ=",
"ref": "refs/heads/main",
"rev": "367dd227f539267eae2b62770b4c17b88ac8c1f1",
"revCount": 1265,
"rev": "c5d5786d3dc938af0b279c542d1e43bce381b4b9",
"revCount": 996,
"type": "git",
"url": "https://spectrum-os.org/git/spectrum"
},
+2 -2
View File
@@ -3,7 +3,7 @@
inputs = {
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
sops-nix.url = "github:Mic92/sops-nix";
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
@@ -43,7 +43,7 @@
};
home-manager= {
url = "github:nix-community/home-manager/release-26.05";
url = "github:nix-community/home-manager/release-25.05";
inputs = {
nixpkgs.follows = "nixpkgs";
};
-9
View File
@@ -16,7 +16,6 @@ keys:
- &machine_nextcloud age1g084sl230x94mkd2wq92s03mw0e8mnpjdjfx9uzaxw6psm8neyzqqwpnqe
- &machine_vaultwarden age1zs9puemeevc5kt84w9d2mc5396w0t9p60qxymkpatwvwxunzs5usmxr3an
- &machine_pretalx age1y04q8n7mgk82c87rfddm0u72h0ny6sfzktjsk0cc3gu93kezudfqdp9v9g
- &machine_albert age1mfarz0n7qfa7vg8zz355qf8eregm6myl38lld0h767nuvhgjqd4qruxuhn
#this dummy key is used for testing.
- &machine_dummy age18jn5mrfs4gqrnv0e2sxsgh3kq4sgxx39hwr8z7mz9kt7wlgaasjqlr88ng
creation_rules:
@@ -115,14 +114,6 @@ creation_rules:
age:
- *admin_atlan
- *machine_pretalx
- path_regex: albert/secrets.yaml$
key_groups:
- pgp:
- *admin_kalipso
- *admin_kalipso_dsktp
age:
- *admin_atlan
- *machine_albert
- path_regex: .*/secrets/.*
key_groups:
- pgp:
-91
View File
@@ -1,91 +0,0 @@
{ inputs, config, ... }:
let
sshKeys = import ../ssh_keys.nix;
peers = import ../modules/malobeo/peers.nix;
hosts = import ../hosts.nix {};
in
{
networking.hostName = "albert";
sops.defaultSopsFile = ./secrets.yaml;
sops.secrets.wg_private = {};
imports =
[ # Include the results of the hardware scan.
#./hardware-configuration.nix
../modules/sshd.nix
../modules/minimal_tools.nix
../modules/autoupdate.nix
inputs.self.nixosModules.malobeo.vpn
inputs.self.nixosModules.malobeo.initssh
inputs.self.nixosModules.malobeo.disko
inputs.self.nixosModules.malobeo.metrics
inputs.self.nixosModules.malobeo.users
inputs.self.nixosModules.malobeo.backup
./hydra.nix
];
virtualisation.vmVariantWithDisko = {
virtualisation = {
memorySize = 4096;
cores = 3;
};
};
virtualisation.vmVariant.virtualisation.graphics = false;
malobeo.metrics = {
enable = true;
enablePromtail = true;
logNginx = true;
lokiHost = hosts.malobeo.hosts.overwatch.network.address;
};
malobeo.autoUpdate = {
enable = true;
url = "https://hydra.malobeo.org";
project = "malobeo";
jobset = "infrastructure";
cacheurl = "https://cache.malobeo.org";
};
malobeo.users = {
malobeo = false;
admin = true;
backup = true;
};
malobeo.disks = {
enable = true;
hostId = "a3c31011";
root = {
disk0 = "disk/by-id/nvme-WD_PC_SN740_SDDQNQD-512G-1001_22445F801371";
};
};
malobeo.initssh = {
enable = true;
authorizedKeys = sshKeys.admins;
ethernetDrivers = ["e1000e"];
};
services.malobeo.vpn = {
enable = true;
name = "albert";
privateKeyFile = config.sops.secrets.wg_private.path;
};
networking = {
firewall = {
allowedTCPPorts = [ 80 443 3000 ];
};
};
nixpkgs.config.allowUnfree = true;
services.acpid.enable = true;
networking.networkmanager.enable = true;
time.timeZone = "Europe/Berlin";
system.stateVersion = "26.05"; # Do.. Not.. Change..
}
-105
View File
@@ -1,105 +0,0 @@
{ config, pkgs, inputs, ... }:
{
sops.secrets.cache_priv = {};
sops.secrets.gitea_token = {
owner = "hydra";
group = "hydra";
mode = "0440";
};
services.postfix = {
enable = true;
setSendmail = true;
};
imports =
[
inputs.self.nixosModules.malobeo.gitea-translator
];
services.malobeo.gitea-translator = {
enable = true;
};
services.hydra = {
enable = true;
hydraURL = "localhost:3000";
useSubstitutes = true;
notificationSender = "hydra@localhost";
extraConfig = ''
store_uri = file:///var/lib/hydra/cache?secret-key=/etc/nix/albert/secret
binary_cache_secret_key_file = /etc/nix/albert/secret
binary_cache_dir = /var/lib/hydra/cache
Include ${config.sops.secrets.gitea_token.path}
'';
};
systemd.services.hydra-manual-setup = {
description = "Create Admin User for Hydra";
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
wantedBy = [ "multi-user.target" ];
requires = [ "hydra-init.service" ];
after = [ "hydra-init.service" ];
environment = builtins.removeAttrs (config.systemd.services.hydra-init.environment) ["PATH"];
script = ''
if [ ! -e ~hydra/.setup-is-complete ]; then
# create signing keys
/run/current-system/sw/bin/install -d -m 551 /etc/nix/albert
/run/current-system/sw/bin/nix-store --generate-binary-cache-key albert /etc/nix/albert/secret /etc/nix/albert/public
/run/current-system/sw/bin/chown -R hydra:hydra /etc/nix/albert
/run/current-system/sw/bin/chmod 440 /etc/nix/albert/secret
/run/current-system/sw/bin/chmod 444 /etc/nix/albert/public
# create cache
/run/current-system/sw/bin/install -d -m 755 /var/lib/hydra/cache
/run/current-system/sw/bin/chown -R hydra-queue-runner:hydra /var/lib/hydra/cache
# done
touch ~hydra/.setup-is-complete
fi
'';
};
nix.gc = {
automatic = true;
dates = "15 3 * * *"; # [1]
};
nix.settings.trusted-users = ["hydra" "hydra-evaluator" "hydra-queue-runner"];
nix.settings.auto-optimise-store = true;
services.nix-serve = {
enable = true;
secretKeyFile = config.sops.secrets.cache_priv.path;
};
nix.buildMachines = [
{
hostName = "localhost";
systems = [ "x86_64-linux" "i686-linux" "aarch64-linux" ];
protocol = null;
maxJobs = 6;
supportedFeatures = ["kvm" "nixos-test" "big-parallel" "benchmark"];
}
];
nix.settings.allowed-uris = [
"github:"
"git+https://github.com/"
"git+ssh://github.com/"
"https://github.com/nixos/nixpkgs"
"git+https://git.dynamicdiscord.de/"
"git+ssh://git.dynamicdiscord.de/"
"https://git.dynamicdiscord.de"
];
services.nginx.virtualHosts."hydra.malobeo.org" = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass = "http://localhost:3000";
};
}
-66
View File
@@ -1,66 +0,0 @@
wg_private: ENC[AES256_GCM,data:rSENHGEat9wre1bFcM3LYnlGjf9gmcE9FmeCySzbGZ4SCCUl5QLQN/quXw0=,iv:Bdwlk5UHSiyA9gSW91LUPJyBG50FG/hpwyClzTOUoUI=,tag:/Jw549R5Qmg4WblL7rUE8w==,type:str]
gitea_token: ENC[AES256_GCM,data:1LevtPr5awIu2rcCGbLIsQA5QO0AhFk5Rep7RG28QdlFHDADCaEoS18pEEZ9NMYMZaGWIBA8Zq/NsCYxQGzuWh3TESZW7CO5kzCaSVG1aqjGpjfbeyG+xQEDtab2Owh+TVN/wVGUUDR1NBlWqE4Shw7mO228CWbxQRSQo3lsLhmf69fLEV1DDnH0Xt7Ml8tr7yLIeWHlG0BeOMKSkY17APahxqBx547Zw+kgaUW3WgTyxeWZaDjk/prK6bYV2euK4Il/4vTZE/x0mThmTThjszcAvdaon+V8y1Ax34gTyAgjvpFC2kE=,iv:1A8YNv/A0MEkGKV5Z9WPI4LwQFu2Z9BWuN2yfFHCPLI=,tag:hEfskDEAQiriXNjcYzziSg==,type:str]
cache_priv: ENC[AES256_GCM,data:NbfyBv68UCWuSjbUu5lFUXPgG+vYrxbAQeD77YlklTRm6MVS4lAEjUzjnjewcX6Khca1N7r7vGieFyaBlQm0264KGTP5tc7BnEIKJDOD/UHQBdMpZgUzd2cKQWK7Kx0=,iv:6VWsZd/VDjQ/BhfwHZBcL3Zp0W/9sO/ZC9sF1Jnqguo=,tag:/gSe6TyaZDKoRFaRKiYyzw==,type:str]
sops:
age:
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoM3lEUnJiamMyVzY0dHE5
YUE3KzA5ay95b2RRSTVIYUdyd1djNmIxMDFBCjFWN29TZDI2QnJramR4TmhOL3Ex
T0RISkMxM2IvUnRXTnkvUjJmSWNRTlkKLS0tIG4yaTlhTlhjVXZLODJUa0hwaGRD
bzlyNDJoRzBBMnViT0hmdWlDNk5DVjAK/u3XH8+MbjmaM3n46CGGjXFfY2aZkBNx
EDTiUmR3FJSHEcWBhICEevrAnDJgTRgiei187/sSjehIgv5ZngeupA==
-----END AGE ENCRYPTED FILE-----
recipient: age1ljpdczmg5ctqyeezn739hv589fwhssjjnuqf7276fqun6kc62v3qmhkd0c
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqRUcxaGszajdlVm9VWSsw
QWxTbEYyVzlxRm1NbnJ3Ly8yeW12S1NUUnlVClk5TjZvMW1zWHY3OGdjQkdoMGNT
L0JUdlhYTGZBZ3ZEOGhuN2FzSUNMZFUKLS0tIEhCVlFBcFhvYkw1RVlOQ29NSkJL
VGNyL0pmQlJOMnZ5YmhHem15YzlXWDAKBgcH7kd5uBWVQ1gHeR5CYZVP8IG4s1HG
N6DSIVisJf7qNuNw6M0J5nny6xfWeIEZJettF0xSHM1gSfr7oUbHOQ==
-----END AGE ENCRYPTED FILE-----
recipient: age1mfarz0n7qfa7vg8zz355qf8eregm6myl38lld0h767nuvhgjqd4qruxuhn
lastmodified: "2026-08-26T17:31:59Z"
mac: ENC[AES256_GCM,data:G0Xpe7zJZh4xAwFRUXSbR11ENqRd4UoU7gFK3nDM7Icm9DMyqyi3uBfg1j0c8yTCInIrnyX1dy7zUWjns+OAbXv8CMLXVUPdomgCxX0zUWEkTzgQqnJy97KFAmPPPMCGTUby3TMVQkcrk5/iATmydSMhs0lKErS4737u9jen/3I=,iv:YB3BqypuvamDJy64FeaSUQBCAdlr7a9UWJDNhGsTRvo=,tag:lXc7heG+MRiUo+SfRcRDNg==,type:str]
pgp:
- created_at: "2026-08-20T15:43:21Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA5HdvEwzh/H7AQwAi5C90LmuQOdXWpDxD4KE00yADfcbJH1no2ZFoC+w7AaN
tgVWX5IR0f0wM9eBL3CimMMwxtZLOTLWdJVQ/55XYqZDQmWzdhjSHIH+STSz8W3k
i0j3ufrr4rImqw5PGpiHdTVMq5Ffv0LwnwBGDdca+5YrH0qn9LrPJNj3pkMT2mDp
pwcCcoXsxucdBtpYhfgTbuHNQgyndVTgWpduIuaRVp3s7ISM3+9pozmzmtm+Q7cZ
ppPIHdTtPp595KC6DEhYP1WF32LTs6uuDuatip0Tz6+XAFJdOuFnGwcIpwtcK6iz
UnluXNArw8eBiaKFmSURkOcq9cjkscxdvgQXbSl1fTglEz5gjGdkc/XZIc/4gDP/
foa5Bxjp56+uF6qFd/RuUMmf9iu4I5qM+9WbU+iF9dZXtiaoABrFWbRpxYr/qX5c
J0lIF+Xtgz7AF5FUJox2G1Jlbf+xY1LbrVrvH1R+mrb8mbASi50X2LUzrl7Hgslv
NB9F1o4I7DJWewRC9eCB0lgBzkncGtgA5cjay7/kwejPr+TYGYFjDMl/7SNBSerw
jnto+uSFfsdiGb4WOeYZZBxAN+ALVxv4agK9mKoNJ/wKWsIz1udtENtECk/vS4AX
Ey+OfiJ8j3WJ
=09pj
-----END PGP MESSAGE-----
fp: c4639370c41133a738f643a591ddbc4c3387f1fb
- created_at: "2026-08-20T15:43:21Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQILA98TrrsQEbXUAQ/4+e8U4pIRBLMJSe2ryIiV1sTDC/OJUstfpn3dAesJrVVl
WtuOl/dwkLM6e6yFAJgd+F7rv8xDAka+99trkik6wG4POoXY5xkPjalJDmOFMesA
HD65LUFhChXyj5pPMyd5Far/Dv7an5/OPlfY2eWrMX+gep8jEIJgbnvPPyCI3wjf
7Uc6DZH0ctWuG/fnXjLBPB8lrqYLdjsLT68dCyDRVrWyhJUN1/u8oKRwoXR2vqi2
p+ubaGjc0IkVPHSFBiskN6cPp8fLC08qtlGHCJoSO1EZFms7KkdC/7a0pwNGIAji
1/Xjs9iU1iN52ATlxf+iSXqtbjd9i8Ye5wugne6Raerwc/vxQzpi/0yuKFRmvYGW
YrjKQHMoMxvlAqbkLbFeGfcgwm/n00twH9h1oeskAwwjYUnnwuDqvwqndqzIAFUK
6gFiRtxLZ1AVOEPfAVkzxznm+ZNvSbk/A8hENuWzZfGYmoTrQAHvCrMFr03EcvMM
Z+L8vX647E/4+Eh87CqZ03VQXZq9H8lMz+1ToQdwpurwnOpc9tMT1UcDh5FxkugW
3A2oomRByHoJw+51i6wujJZ3Rkx/H0SYXswCTsUHX6JOOrRWfNgUFnI2MeVDu0Tg
L7hmNQyKW2Ncf+EqT5i5dlucR85SLZ0IE6QJMAjzyuOcQBpSPW1/1U7XUtJDOdJY
AWto/wuOyoZml3GK1+pGfraL5JMYvhSu4jdmlTPAQibdVeS+nLBPVx/Wd+R6Lerv
QkWv772a1ho98j1LwWCu+mM18dveIElI6HZyIv4RE8YBbErKpL1pBQ==
=ciwJ
-----END PGP MESSAGE-----
fp: aef8d6c7e4761fc297cda833df13aebb1011b5d4
unencrypted_suffix: _unencrypted
version: 3.13.1
-26
View File
@@ -1,26 +0,0 @@
{
"data": "ENC[AES256_GCM,data:tLzYReb0okzTrfWMYBRgXr7MA+4=,iv:q/OZYLPA9sJ5sdlXLF5dJpd+E++OK81GyRWZlbNG8iU=,tag:mJgFIVEKBHjD0Ga9af5Egg==,type:str]",
"sops": {
"age": [
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2TUl5NTZHTDF4NklpbThn\nSkdJeFlodEx2OXFZRURSUDhGSDFzaHBqMWhjCmQzYUV5VWRPdVErdkxvcnkySERN\nVklUQU5MWVBDeDNvOElXZFhaRmdQUEkKLS0tIGtBUjZRWFgrZHZRTWJEb0JKKzc5\nWTJhMitWeWJ6d0xxZEZYSW8vdDdJUmMKCu4uPNOWlqGPV7rftZDnQRq3o2ZdKK4I\noqOnnCdT6Gg3Xuo/gs4steg/mgqNijRTd1Y8ZJUIkpYM1KNw6xVpJg==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age1ljpdczmg5ctqyeezn739hv589fwhssjjnuqf7276fqun6kc62v3qmhkd0c"
}
],
"lastmodified": "2026-08-20T15:24:41Z",
"mac": "ENC[AES256_GCM,data:+oWxWUPWo14zvhnupIlRFiBNVT3BjPIXjmsXYA8KCMARYtxWntr2hf4Ly1Flx2EZRM4dgvVtZAFeYwqFTD7RafNGHr+2SulOxAyYHYk+ld7IWdt/izi5eLV2AVZig+1o/B5+G1XTdDWRnKtp6+oCFw8PGNoohtS86eMR522zIKY=,iv:Zbvm86kzRh+4TsB5wWSZwqq++Sl1X99wkpcYnAGYo10=,tag:nEV1mn9atTG9HcOvJztEvw==,type:str]",
"pgp": [
{
"created_at": "2026-08-20T15:24:41Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQGMA5HdvEwzh/H7AQv+Prou85l0Vr0T/btpsk7dbr5CbIaiNUKcg3l4jiz+WTUr\np8az7LL9RxxMScqOiGiPOtl1hbfygLOUOebt3FkhGf9JChYCZ8MMGArzdO6KMsQg\na+BsfAgOKIq+AEVd5GX/a5mspl8zU3rG3QQgKDEpyxIa89ZK4mI974s94Xv8MD/4\nZGyCWgL+RFxQ6Ad/XSQU2+4wUBugBSKh0X+ETagmAZAqApdfZ0uYGNRD5bngVk1X\nYTDx2+uZ6vYFqNfqapKuG1hVZvsiU13tC3IQ8Swrg5rNwzS3OT9qQYoeSBCWYg1a\ndJLKaSfYqCYNbdKI8tYx3oeWeeQa9CgB2iCCGI6vGyyBdVI0NrWf/Vyghw1fQgmD\nJGEVsBcp4U0LQDL8znGj1ohL//cJug7SPWVBZYMUKecN6Ho6ILoHwoqiXrMPPE0/\nm1hTmP4kTtuUEnngnoBnFnCt19Ma+qBBc7ydkj7MILdczaZt7TpePUlGmQgQdB9U\n2p4acI0QQGEhp3jCzdt70lgBDDl6Jzf18HqOaREnRfeiedujQrd08ITqQZE/s4Gc\nIgu7zzG2DKr4VljPQbxof5E95SNW/+wsvxxu0Wbo/cpAjA7I2u8qyVA/QnvmMXHn\nKx8GMhIdmbUT\n=O/hu\n-----END PGP MESSAGE-----",
"fp": "c4639370c41133a738f643a591ddbc4c3387f1fb"
},
{
"created_at": "2026-08-20T15:24:41Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMA98TrrsQEbXUAQ/+PBo3H+FNYZ275YMIEZxsbeKY48eP4ZZRopZDrmKsgEYT\nI889inzKVoCBADYNnwheCDAo7gcnxRIGxNaL8ftu0gqu7M0OLtK/LJvmpan5RBYq\ncW5ou0mL0vObWqbGUlrGjaQoETFgy5oEfqhXGtpEccyqMcd89b9tciS9BfeKVusA\nBRE/d5vElDtkHsU4wSCPAhj4D3GlHn9AvdexCNt1J09tJWuti8OWYq1yrts5fUiM\nTCi3/gxEZLrbPa5Gu31VIs+FfO8nMPecjEsmszKqns/J0RNHrGrpLLiYFhL5Yaj0\nxaySk7LRDWB8sPRqp+dCEE24Tht0iOnQ29CU5UeKj7LRGPd4xYHVx8Tmdi4V0hBL\noTkpYt+kU2VvA5LJI+skx7akM2uNGvLRtaurj3In6JFv5Z2Y4ELrjVPF+TPSBieV\nn31ToI+F5STUaWb5j9Hk/Ch4L1UpM3OD6f5qZJ9EFAvrHLMWuAa2YSZkBLJ6c0eI\nVp4Rn8gd2E6jXGsBxR/c4VAZ/1gF9A4LMWAOrPkYzWZIHC9I+mc7OPT9nz4tW7xC\nf4czBHdLIEOCe0JgYsUIzr5PaWOBD7u/FH971qEEMKqYuGYuzv54V7L5lzprcgcQ\nRh4wbs6obg4Luh2/fUl4I+Xv4a8vuG8a8GdA5Kcf5ai8O3SsMeZUcc8CeIotZOLS\nWAF+3h7HQCyBf0qAKeHC51lUtJLUGYwMIIPMlZZkyjmRMfz0sm8HiKfAQycd4n4D\nK33Cjinqky3mPmv0c4NrK40r7wCdrrN5kCVJZK574vw47++s4zhVVww=\n=zDIP\n-----END PGP MESSAGE-----",
"fp": "aef8d6c7e4761fc297cda833df13aebb1011b5d4"
}
],
"version": "3.13.1"
}
}
@@ -1,26 +0,0 @@
{
"data": "ENC[AES256_GCM,data:hb56sZ8AYq+BBXE1igSFFDaWS04C5zp9Ieay60cKIRsZ2KZ/UC0Zw9vgNhugp1EUFt5oFzdNILWy+OHuK7/dtUV8IlpCyiyuOROggw704aMs1+h1SvfyxuzWVxHLxFgYX0QSCa01Jdvf8X+Md/zW7iNYWmUMr88ZvMXieU3rCI3NV+IKdCvHycW0uTyn2NdllD/wvnsRdvmxY5cjT5226YnlvroePO6rI6TkcGHy61WnrGSL8rU1FdxSEVO8RfIxd+lueQqrerNMyP/i+Dt+fyUXkazwItoWIXy3CYceI8nvxrq6YO0CGMF9NVWcjrmEFJKgZGzbFiIe7X28paHEn+lwc0RfrPgMyOqSVfvSzjBDUkvZ3dMASc9fEp7i4XT8J1W6Qh1XkmK1HKCzKlC0eOGYw89i8rP4vymhJNqArIreIG1LyYEVlXCOac2fuQ382izp2+tbKq77gnIpesqaDsob95dnONRJb8ZBePSiAxLSa+JBkQnLTArg0VaSKz9rK+ighFDTiq2FGDV/w6KG,iv:nyjIr1RjVkgnNDeP/HegpVh6yXBMferHC/qM9NiOcGw=,tag:PajjQ1c5KnwXF/3j1r8Dtg==,type:str]",
"sops": {
"age": [
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBK2R5d2tYTWo1MTNkS2ds\ndkZnZm1lVlpZN3UzOWsxMFFOYkd0Ykl4b0VJCkFVLzZocWVmVjF6SEJHZ3FOdmIw\nQnQ5RFM5T3praVhLbVUzakRsbnlncUkKLS0tIElWTFZ0RGdYN0tiUEdrR1ZERjVL\nSXFSMkY0eHFYa1lQK2NTZElxL1diYnMKn0WvatDVmpQHUoxXMw9tlLU/xv+A9Oue\nEctWF6gqBHIUr5YMNd1/Clb6y5nv15ID29uKY9KUPOrkvJiCITIn8g==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age1ljpdczmg5ctqyeezn739hv589fwhssjjnuqf7276fqun6kc62v3qmhkd0c"
}
],
"lastmodified": "2026-08-20T15:24:41Z",
"mac": "ENC[AES256_GCM,data:uxXGCKk4Dq7awNtok5bwudJqgPzYDhlmvV1RfwMQCC2X8DI9JAdN44lwuVadm2qRdcqqF1JnEotb7wWuQXQ2Ifg60aMiEGuvSjAFBqrhsGy4ZzoDsSPCatPLTf94JWXHfnB1n/BKKVrlBEn3pY42w6m9kYBKSmSo4FBOyQHJJmk=,iv:Wg3FIOTczCoNv0zoGHGJEuJbJFA1nM8nSSimUmLm24w=,tag:cNxZg1qU5ge1miHQMXE2Fw==,type:str]",
"pgp": [
{
"created_at": "2026-08-20T15:24:40Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQGMA5HdvEwzh/H7AQwAlzMuEl+LEktZCdo7nw5+i0MBuWhi5N74OaaXOPMgtWck\n5DfUp77lKwUlVD/wWwSQZcKSxKUYuVMwN9xpxKbhidbUEsOfylyrBEbJvJg/2Dxy\ncVcEBu7W3cqAHNm8jAz2uSpc0v4a6XcQZXOOAcY4ZVp+Jrjv404U/ylNguE5FO1+\nTbHd0fpXlJ/EIkV2+OB34KEjqMhqE3BViO2hNNqTItadvzECBHwDHfxdNR4HCW2W\noL0ofnGXOkf008RLcC2xGjiIP1aCdux5Rj5kTVLnAiuWuyLwieDmCQdPlnCg1Hz7\ncRYDoSq/KP4a3Td8olfyPYoBdjU0JTgdaG4mrK80w7RoFruz9s+MvIuEh0mTWlv8\nk3hQynCJINpXUSgeJsQJ9mHVr6sADHvD/XknJ7DghAE3SDQnEw7S8+W7TuZRL4YE\nsuxU+gxj0TyXL05dbDo3V0wrtC4DjcnVqwQ1DYXYtSTyPYzxbiwsHxksKXWmriuG\nBQXPP1EFBx90cvjqUHMO0lgBm9X/loNgE8ouu/nPf7vfS3CXTqVENiurUgcLLjZZ\nBA9CQxCqIm1hgbGqyjXqlkSdNrZiEE6YemhcTcD8VaXZdEe9po52cPuNF4j1uyE1\nsRTfjY7Q9lRW\n=qFFI\n-----END PGP MESSAGE-----",
"fp": "c4639370c41133a738f643a591ddbc4c3387f1fb"
},
{
"created_at": "2026-08-20T15:24:40Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMA98TrrsQEbXUAQ//erdf1kP6oiR0tdJmUCuFJ7y/jbdt+jJPJ2i6cAj6Vwe7\n6OvxzNVEUgVRJN0Owm8/9sHZJajZd92AbHsfcGqDDhutzUSweQ7PUcSvYcyMGey1\nggMuUNFlhoXWcxn3kSCVWqg1aJ0CGxqtyW1y4222zZpaSRdNRK0a8svo4yj7xJPe\njTiJl3H2OVx73uAUW1onbuoG8SAbQi51LiGWB+v4eoHoFZgH6C+pjLE4F9lEjskz\n5EZXvIW3EVMs0tQVtV6S0yBf6tRRI0KM9BYMXNSvApE2RQI3/zJrJvdkCl9ttN7C\nmqDMTLAqG685yaERBKPVyDTkixnt0dNtzhl1wjFoBOiQuvIPBGlmJO+03YxYoa5q\nDwFRvAaRDYAeh94ZAeIubgdA8B1xLdnpx3Ox56q1GSJU1gv1SE9WhE+woFul4VlY\nro+mOJzfjlHFKzMc4D1VwPEs0b1MYKurktXaBaXX9WHjejc8rK1wHMTadlvJ7xLG\nUjeeLCeytQzMjuTkHPMswkARj13iK5HgSz7GAUeefeauMyOOn3V6RtrpvrrD0ASv\nm8nBC8hIiNEKJIk2M47N6l/oRr1OOvuB8QmuPzDTuXc51Srgc8v/2ayIkoNmY93T\nnNoNZEnxiEqgHqeIenhHhe0VwHgXdLVOhEFR1sBDDFh2W6yjtdMSRXHjVB9Y80HS\nWAGkn8q+4fSx47xZTSfOoS0tagYQkN1MLykFnR0S6IgjLSIXF2TtORNCs6tqMgSK\nWZAJhO84PKTFeEh+Hwo88wUil31V02VEjnuAe2rhigvn9sTE7Pr2Znc=\n=nnbP\n-----END PGP MESSAGE-----",
"fp": "aef8d6c7e4761fc297cda833df13aebb1011b5d4"
}
],
"version": "3.13.1"
}
}
@@ -1 +0,0 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICPedKJa0L4v+35m+YK1CN4QRoXaF7oMOg74LiPnYgBj root@-initrd
@@ -1,26 +0,0 @@
{
"data": "ENC[AES256_GCM,data:B+2jQsx0tLwTbNwvXQxdR6gNNYgTeTXCiaSwWwaM2eJjmX40em6ekvf8lL8biAuyTgM5tp3n3mYmEJsk8P1EWgBlS2xmUAk6CLMXFs9oozGFbBcrQU74ffE4PgZoWJQnBt7vVB6ZHaCqFq09bbbUI/avqDCD402vXv4pUc7sL8cj6J1KSkjjAO2uJle3UcqcINYOQscSGGflN0HCJfAgQGco/61bKysUrfB6QRaayODfLrm3GLIwWfM9gk3wpLcdb3OtbPFTz9j/w2LLbu6P/ZGKU92O2CGcAG7tbHv4f5w3eDAY392nC/CA7GYcEvolMfrzP3zC1N/UXL6ImkLovKczBdJ3gPZUZikonPip58ZJIWIIgbINxrAv+S5ZWNL0VgITcXmi+IWoCQsGAWsrNeikMIAgqiFQcLInHMfPvb8S3BcZtoGBYq6zBKl0TU2zSWmcSDNMv+Lu+CBnYX31EYRC61MaIaJAtyc3okIdDGnR3a5bexSlIO1cT3sCYxrQTr/2,iv:mbpzAzdXJTkR5AUW4ByWuWrebRGcWO/D4RnyzIzIuQ0=,tag:/Ym4cCdykKhQRzZGEnW/FA==,type:str]",
"sops": {
"age": [
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZbnpISDBPaFFjQ0x0a0h4\nMldJbGlUUlpGZXNqcHZJcVFRUWE0YUo1eXpBCjFYcWhYVzM1TkxiTThuUmh1V2FI\nYVNlcC9YQm5oSTBhREF0YWM3aXkzMXcKLS0tIENYa2tlQy9kWUE4TFVvOGN6YUtl\nM1FLR3JFWGYzenpXMEFFdlZ4K1lWY1UK4ObhtwwiKDavy4960HavpMoPUIAvwyok\nBiiPXqW8VQRgYlaAn5mcufWnfnsl4kRAC2eSZo9Q381ACC65nVBNJA==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age1ljpdczmg5ctqyeezn739hv589fwhssjjnuqf7276fqun6kc62v3qmhkd0c"
}
],
"lastmodified": "2026-08-20T15:24:40Z",
"mac": "ENC[AES256_GCM,data:oV54qtArlFEaKGwlhTeMWKJJs9eiWoYda5Jyg/QzRYEP2sT7DmzdjcBKFtATRl8twHzbXqBj7jlXFZKcqSIaWxd/yMoDZbNiepul4CSdCSEgtzTH2lEkvVmpk3qTnPtIuPGQkXXuykz4auuPYlvEO1cPQh6mcz+BWzqFb1c6Fv0=,iv:X6WJO/tNVp+wtG2wfTw+kKnJRr8lzNZdzzAy+gVfdMA=,tag:XRz8/Xk3DaX4hILSFUzDQA==,type:str]",
"pgp": [
{
"created_at": "2026-08-20T15:24:40Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQGMA5HdvEwzh/H7AQwAoG8X9k+oTUtWVqV13RiurT0MYkTm8Sv7YEKzUTlnloES\nuXghxmaZM6HIg97WDATGv63RGHj4kguww1uyMjC03sQ2kqlLDLOvPz0p2EA5AZja\nQhW+QbcsCXuXDjmCMytrEW4HXXBKySrdVcqpf6yJr66jpxbUhj54fQoRPr4FTrm2\nLxSoFjZ+G1ZZOfV1vvp9duqXvV7PsR0hiIhAX/AS6MgSXAAtfXc++Xwl4w3/ZeQB\nI4Vn+4hJ3HqvDLQcGC8jTPCUxIoeb3HTlPcuWxLu20PGd33GMwvUOBXhXtKNdeSB\nddxNgN1nTVDJmDDgbKKB3MFB+GaIjtOYm19wUxh2rNyrGEVzmj6Reyf0e/sjJph+\nR1hlmHZklp+/42vnTWuTittIQIl9cjLTnpTMwkpO/StjcpTss1pMbIMM7uZpMPub\npUDodBdw/oCTWlaogj+9EAPfItQN1+T2wcGsCfgQOLv49mHyVN/gUsGDqIn8pv9W\nDzS8Tkyjb6qemBNsbMXy0lYByNYG40ROaYZoBcdygvFtudZlWPwF3Ka9FnWnxiZ5\n7b9XHoK9mPC1JfGaDkJvbsHHf+oxXuqhW+ue/jDlYQmDdaUeROITV7XmFC30zFuY\n4rF1UgVWEw==\n=vQ0V\n-----END PGP MESSAGE-----",
"fp": "c4639370c41133a738f643a591ddbc4c3387f1fb"
},
{
"created_at": "2026-08-20T15:24:40Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMA98TrrsQEbXUAQ/8CKXnmqU93XSdJ8WmS6BpssbMwcVDbgUl+U7wYOhq5ctr\nS2C0lPFO8g4QwQQiWBVCPuFqBypm0MjvaVfR86BqKkHPCcygRP3vTIzkR9mFfT//\n66Nhi4rBKJ41WDr4fMgsAOqNSvFvVsooK8AFpNg8uVBEpVkAOiPXd/3XtImO18Op\nuZs1yL+6OZxtF7smTwEEc3bZ4y3NQhefXLDJChnpCiLPNIJ25HG+QYpNz9Nokc4D\nvGbva5l6YtN+tGKyD3aNmnWL5N8jlKS92ZjaeQEdWECFcGEvCJDyAwwwDgWqAbui\nLETFynG1fV8MjrNuM3Ow4UWpn0FU4J38xI4AI4+6yBAdyOgBGX2fL6AS/2FQ0jQw\nEJbint8cETZTIb9AlazCWJrbIVCI8rw3JgmI9qR8caB3clAqp+1FNmiQV0mvlJG2\nS+8WxxlZW/ViUpe4XjuaSoVhlbpkHjeJLEs/uXC4ULWvdgerX+SvbVI3JoyTAdzU\n3qZpcUJBdtkhhaSY3MJNq1kSXmCIpwzbRpMGhRm2VmNccmCiGLTNhweIInK6is5a\nSxzprQUqsm9zdmhm75/7Dnm4GAxQ9XM8ItZjethnYtPgzDAYNIcRCW3fXc4LnkpB\nDqYzE8WElw+tb6LllRGG4iWeO3BN53Un/J2dQpqpoQchzsGggP9x6rRpZGf4ZKvS\nVgHnl30SJEno4IpxkHAkDQ8YZRJSeuTHTSk4ryrutFxpsq/hiqeqcD9KqqPdS0A6\noe4YP8PsI+xSdAJ34HdsoP4ZVl3ybFC4fzchDD2GQJiJJVX2OVWG\n=HjXN\n-----END PGP MESSAGE-----",
"fp": "aef8d6c7e4761fc297cda833df13aebb1011b5d4"
}
],
"version": "3.13.1"
}
}
@@ -1 +0,0 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFsZ2PYP5eqXAerPWPYp+ZLM7zRZUGZLD4W5/H7fSEe7 root@
-26
View File
@@ -1,26 +0,0 @@
{
"data": "ENC[AES256_GCM,data:M5KfpqjYoQwjpAqSktu/8luQS7CRLUPTCRLpGGIwc2siFq8GXXxX+73DzvSN,iv:/aXgooRQK3k1VGQCa97f7u4Mw1PDd4FBup1z4NWNg7E=,tag:CbqhhaIuzcIGuK9Uxv3nfA==,type:str]",
"sops": {
"age": [
{
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1MzVzWHRNSmdzL0syV0xo\nblI0OW10bE1sSGpFQmRpNjdaS1dkQmZVdkI0CnJobmdZNXVJSlVkQ05oQlJ3NElP\nMXJjS2o1dzdIb0daVjFSR1g2NDAzd1kKLS0tIFNUd0FPZkFqM2RHSGJkT1Y2TDlo\na1VEZ0hDSFN6UHlmZ0IrZE0vZ2NPWDgKXfpLmDnTVHSjqTOwn6c1w8oBR1RCepPZ\nT9w7PVQFrOv6nshF2QyOb8WvbeN8kpWWHbOgOldc4cT0aDSU00xrrw==\n-----END AGE ENCRYPTED FILE-----\n",
"recipient": "age1ljpdczmg5ctqyeezn739hv589fwhssjjnuqf7276fqun6kc62v3qmhkd0c"
}
],
"lastmodified": "2026-08-20T15:24:41Z",
"mac": "ENC[AES256_GCM,data:hVIji3rvNEu4ZyIfjuWsgN3A6x4iRvO/Pkj0E2WlX+cf19Tjubqnp6/IPEaNjzqnflwTBBulz3dK4QkenoJH53TvTlMB1um72W4hquzhOkkiqYu/QljyzyJ1VLzBXbdtbdyZxvgZIEu/OuBZA9MAGozfen7sYNpoL979NwQdBXQ=,iv:31JhyX+KGK5CMCBEiqc0XNyrsxQVEXiuxsiDYjZucZQ=,tag:36CvEpeZfOuxDWwluGdg2w==,type:str]",
"pgp": [
{
"created_at": "2026-08-20T15:24:41Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQGMA5HdvEwzh/H7AQv/cFmsAoVY6lRHQ9zTuuLsR3AhJEzmNf4GYUm2/rhB3Odp\n2SOtOvVku9uei7PxIyttVYelNVI28+MDP8B9wknkTRAIRgoRPJ7bPYa/3OVGn8co\neFBmqcHPTdssy4oaLa6KK6YZFyq/8Dg7Sy97nySALSBZHvX8CPqgnODVSgSRvoMO\nhORKFE2WFut0uPu/iUgyJAjRnJ9sWZ2O0alIuoYhDc6ruwrLymfWbQVHMi2YSq9v\n9oJ3yWlwnusLFSvHGvF4Qt40n77/dtbr2510UDO85ADJ+HTgmg/GkObrYaz8Obbl\nrWhmS2G1v4aY2+PSHCWUgdecCKm6S8mDcWUPwn6CM/Rs8lWrTTGbFwGE5faZ+/wp\n+g2fBlCbpR9ZSS7iY7mzu0mNDXVTw2zis8zaGyCAA45xhFITToaTgQ9oGRrBLOBJ\n5uutof/zM6NZsPXmOP6COCSVar47/zaY/2sfuzNJ9ILyg3fUqGu+eYSDszqQK9FS\ng+c7vrcWsB56GfArRgxT0lgBhVMyYgwqZDN5Do2Q0pj8nzvL6wYacFJjsdYIWppk\n3K2e09EWtx30s+6lAj0dFNw9Owr5ImkEsQycZr2pfbJc+QLsMW5/gIQNMpDz+fnG\nGvCs7yXcKShk\n=j9Cj\n-----END PGP MESSAGE-----",
"fp": "c4639370c41133a738f643a591ddbc4c3387f1fb"
},
{
"created_at": "2026-08-20T15:24:41Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMA98TrrsQEbXUAQ/8DNarclMtOlejcGih7sivOrlDKQKlfb/eQOncnOXfwYII\nc+T1gJmYZEsRPsp08rfuYsxvsE5RDhcdXMlre+07RCywSGKBE3f3PzK9YefMHpJy\nGGu8/cegPSAAnegqXi8I9UsWObjvRPCNXT+cWz+OgJ6ekjhY9G4GL6MtuCi/NQju\nMhony9LFvIXQTAdy5KY+msggT1O+ApTJQH7G80zLMsxUTeS+hew5XNVVXClnKAY0\nvT73vebL4qAJ8j6WiNVTL5kQBCMsKLK5JckOly5tzJ4XHu3zPrDy3ZwImlnYFPS4\nkpZoc2EFgZIe5b17UYIX8//RTuSmeZ8ljVChZX5mGTl1QgwVoaZumJsbgctj0/WO\nJG+hqTE4YMcZaMpgbRJnB/No+arODhYSH5kgM+Bg31+RFzzhzac/7v6A2fGj1O3Z\n4eFMEQYKm49KZhsrsU9U1uK03GFs67G/9qH6kXSc0sywsz/IxvzxVMBKk6fNchlD\niaHD7jxBaB+VrTeFBT7OOdIziakVJvOP9RlAaArxga52ugV41d9NV9cZyfmPG9SN\nluoQet3Y3jdUU30Y6ZRdkSZNzesBWBdUgBp2f3qutUU7OqR1sVoh/uhNkpwodK8o\nqIPWfcdmxw+RbgswoLcKQT+ls4jr/cygHe61Xor/dOXbd5F7krL30Ka5FoMyhCnS\nWAF6DKcCYaPQVw3vghfGEr9a+9ml3a5DyP4QEWc5dsl4CpOsoCK67wSQJVYVIu0B\njHuKLPT0rYwFwi11DyWTXMJE5qodtVdm7ocZW2BTF5czGRQuJaX8Qgs=\n=r1KM\n-----END PGP MESSAGE-----",
"fp": "aef8d6c7e4761fc297cda833df13aebb1011b5d4"
}
],
"version": "3.13.1"
}
}
+2 -2
View File
@@ -17,10 +17,10 @@ in
malobeo.autoUpdate = {
enable = true;
url = "https://hydra.malobeo.org";
url = "https://hydra.dynamicdiscord.de";
project = "malobeo";
jobset = "infrastructure";
cacheurl = "https://cache.malobeo.org";
cacheurl = "https://cache.dynamicdiscord.de";
};
malobeo.disks = {
+3 -3
View File
@@ -42,10 +42,10 @@ in
malobeo.autoUpdate = {
enable = true;
url = "https://hydra.malobeo.org";
url = "https://hydra.dynamicdiscord.de";
project = "malobeo";
jobset = "infrastructure";
cacheurl = "https://cache.malobeo.org";
cacheurl = "https://cache.dynamicdiscord.de";
};
malobeo.backup = {
@@ -165,7 +165,7 @@ in
defaults.email = "malobeo@systemli.org";
defaults = {
dnsProvider = "njalla";
environmentFile = config.sops.secrets.njala_api_key.path;
credentialsFile = config.sops.secrets.njala_api_key.path;
dnsPropagationCheck = false;
};
};
-11
View File
@@ -58,15 +58,6 @@ in
address = "192.168.1.105";
};
};
albert = {
type = "host";
network = {
local = true;
hostId = "19";
address = "192.168.1.111";
};
};
durruti = {
type = "microvm";
@@ -117,8 +108,6 @@ in
type = "microvm";
network = createMaloNet "18" "52:DA:0D:F9:EF:F4";
};
# last host id: 19
};
};
}
+2 -4
View File
@@ -14,10 +14,10 @@
malobeo.autoUpdate = {
enable = true;
url = "https://hydra.malobeo.org";
url = "https://hydra.dynamicdiscord.de";
project = "malobeo";
jobset = "infrastructure";
cacheurl = "https://cache.malobeo.org";
cacheurl = "https://cache.dynamicdiscord.de";
};
boot.loader.systemd-boot.enable = true;
@@ -46,8 +46,6 @@
];
};
nixpkgs.config.permittedInsecurePackages = [ "electron-39.8.10" ];
services.tor = {
enable = true;
client.enable = true;
+22 -22
View File
@@ -64,29 +64,29 @@ in
};
# mpd = {
# enable = true;
# musicDirectory = "/var/lib/mpd/music";
# settings = {
# audio_output = [{
# type = "alsa";
# name = "My ALSA";
# device = "hw:0,0"; # optional
# format = "44100:16:2"; # optional
# mixer_type = "hardware";
# mixer_device = "default";
# mixer_control = "PCM";
# }];
# };
mpd = {
enable = true;
musicDirectory = "/var/lib/mpd/music";
extraConfig = ''
audio_output {
type "alsa"
name "My ALSA"
device "hw:0,0" # optional
format "44100:16:2" # optional
mixer_type "hardware"
mixer_device "default"
mixer_control "PCM"
}
'';
# # Optional:
# network.listenAddress = "any"; # if you want to allow non-localhost connections
# startWhenNeeded = true; # systemd feature: only start MPD service upon connection to its socket
# };
# Optional:
network.listenAddress = "any"; # if you want to allow non-localhost connections
startWhenNeeded = true; # systemd feature: only start MPD service upon connection to its socket
};
# ympd = {
# enable = true;
# };
ympd = {
enable = true;
};
#samba = {
# enable = true;
@@ -199,7 +199,7 @@ in
defaults.email = "malobeo@systemli.org";
defaults = {
dnsProvider = "njalla";
environmentFile = config.sops.secrets.njala_api_key.path;
credentialsFile = config.sops.secrets.njala_api_key.path;
dnsPropagationCheck = false;
};
};
+1 -1
View File
@@ -17,7 +17,7 @@ in
default = false;
};
# https://hydra.malobeo.org/job/malobeo/infrastructure/louise/latest
# https://hydra.dynamicdiscord.de/job/malobeo/infrastructure/louise/latest
url = mkOption {
description = lib.mdDoc ''
Url to your hydra instace. like https://hydra.example.de
-2
View File
@@ -26,12 +26,10 @@ rec {
settings = {
substituters = [
"https://cache.malobeo.org"
"https://cache.dynamicdiscord.de"
"https://cache.nixos.org/"
];
trusted-public-keys = [
# TODO: add cache.malobeo.org key after creation
"cache.dynamicdiscord.de:DKueZicqi2NhJJXz9MYgUbiyobMs10fTyHCgAUibRP4="
];
trusted-users = [ "root" "@wheel" ];
@@ -55,7 +55,7 @@ in
serviceConfig = {
ExecStart = ''
${pkgs.python3}/bin/python3 ${../../../scripts/gitea_hydra_server.py} \
${pkgs.python3}/bin/python3 ${inputs.self + /scripts/gitea_hydra_server.py} \
--baseurl ${cfg.baseurl} \
--owner ${cfg.owner} \
--repo ${cfg.repo} \
@@ -75,4 +75,4 @@ in
};
};
};
}
}
+1 -1
View File
@@ -58,7 +58,7 @@ in
networkctl down wg-initrd
'';
serviceConfig.Type = "oneshot";
};
};
};
network = {
flushBeforeStage2 = true;
+4 -9
View File
@@ -41,22 +41,17 @@ in
};
};
services.alloy = {
services.promtail = {
enable = cfg.enablePromtail;
extraFlags = ["--config.format=promtail"]; #TODO please change this to native alloy config later
configPath = import ./promtail_config.nix {
configFile = import ./promtail_config.nix {
lokiAddress = cfg.lokiHost;
logNginx = cfg.logNginx;
config = config;
pkgs = pkgs;
};
};
users.groups.promtail = {};
users.users.promtail = {
isNormalUser = true;
group = "promtail";
extraGroups = [ "systemd-journal" ] ++ (lib.optionals cfg.logNginx [ "nginx" ]) ;
};
users.users.promtail.extraGroups = [ "systemd-journal" ] ++ (lib.optionals cfg.logNginx [ "nginx" ]) ;
};
}
-7
View File
@@ -52,13 +52,6 @@
publicKey = "h1A2yt7OQ5EJIilC8tQg203u27o6J6/c+Kd/pZ4UWAY=";
};
"albert" = {
role = "client";
address = "10.100.0.103";
allowedIPs = [ "10.100.0.103/32" ];
publicKey = "8wgQ+GYLX9PzldmeDOsrhnbBWPCGvHbT+7POT7e4oj4=";
};
"backup0" = {
role = "client";
address = "10.100.0.20";
+3 -4
View File
@@ -39,7 +39,7 @@ in
services.nextcloud = {
enable = true;
package = pkgs.nextcloud33;
package = pkgs.nextcloud32;
hostName = "cloud.malobeo.org";
config.adminpassFile = config.sops.secrets.nextcloudAdminPass.path;
maxUploadSize = "10G";
@@ -55,15 +55,14 @@ in
extraApps = {
inherit (config.services.nextcloud.package.packages.apps) contacts calendar polls registration collectives forms;
deck = pkgs.fetchNextcloudApp {
sha256 = "sha256-Oc/J0Ey7f9aHhLBWoAXaDMe2t0eeEQKvpwY510qNpiI=";
url = "https://s3.g.megas4.com/ya5mczgkbk6bw7tcy2yr4bl2vdryfe76ok2dj/malo/deck33.tar.gz";
sha256 = "sha256-epjwIANb6vTNx9KqaG6jZc14YPoFMBTCj+/c9JHcWkA=";
url = "https://link.storjshare.io/raw/jvrl62dakd6htpyxohjkiiqiw5ma/mal/deck32.tar.gz";
license = "agpl3Plus";
};
};
settings = {
trusted_domains = [ "cloud.malobeo.org" "cloud.hq.malobeo.org" ];
trusted_proxies = [ hosts.malobeo.hosts.fanny.network.address ];
overwriteprotocol = "https";
"maintenance_window_start" = "1";
"default_phone_region" = "DE";
};
-1
View File
@@ -37,7 +37,6 @@ in
services.grafana = {
enable = true;
settings = {
security.secret_key = "SW2YcwTIb9zpOOhoPsMm";
server = {
domain = "grafana.malobeo.org";
http_port = 2342;
+1 -2
View File
@@ -1,4 +1,4 @@
{ config, self, lib, pkgs, inputs, ... }:
{ config, self, lib, pkgs, ... }:
with lib;
@@ -58,7 +58,6 @@ in
services.pretalx = {
enable = true;
package = inputs.nixpkgs-unstable.legacyPackages."x86_64-linux".pretalx;
celery.extraArgs = [
"--concurrency=${toString config.microvm.vcpu}"
];
-1
View File
@@ -4,7 +4,6 @@
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCxgcjNOYbza3+RfANFDXy7HXNRFlkpDOAcGyB7MKshiVlbPByWRSjfZa0BeRNjpeCd8QkIodKUzqYOCOrc8ad3kiNbdLRcDz57A5xSLD3ynakoWJo0AmJjT3Ta1JJj8inNwwykR0ig5//SrtsZb9HkWJDAF017MokM2r8AWPE1QzcQdh93kojXcgTHrJHzEqgKbEGDEk37f1RvZG4umEFeqdK2FvS5isPa7P9X7hyyoDC8bvEy7xfaDrToJAoXon6r79taxH8UWIvy//xsU0NBLYK2eE4RQe2AjF6Ri+CybI6y1SsHOvyh4nNKWlfUOEL6UnIulRn/LXFOKCJi7xuoTeJXS0+w1DNEuiGosVNXPSKbUm/eDBVnb8Iyep9wmygSZayN82xL5lRlG3Mn45ttecqfm2SJkmduBA5qXcTdDPe/lXTZaVO9tbiIcJfUgd3ttEu2+6YjLn74D965PlovzvR6EhbVUZ8IkOAt4VmuTkXIdm8SCS7jzhsiKeUXoZ4rfa375zi79SIPuIkoMasj6d16wcYOeFIUIMFFccfQ9jQjr9NTSXC2dd7sfbI9I9mF7eRQSsUdSwpP8WH1b+M1MxTbdhEUdPwpOLviTTIuk8E8K8DQDZIcOOh38mCDpyoh02nwfRxlyoYVsKAHIQH02dHTvYEa3/pMsRwGc9W1Ow== kalipso@desktop"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINQg6a2EGmq+i9lfwU+SRMQ8MGN3is3VS6janzl9qOHo quaseb67@hzdr.de"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICKaEcGaSKU0xC5qCwzj2oCLLG4PYjWHZ7/CXHw4urVk atlan@nixos"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDi8yxrMZoXEy7e8/MZeyihOARU2tN0TpJTUX55UO31B atlan@argon"
];
backup = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDIGryhnXdmbGObONG88K+c9zeduMrwtoLHwzMDZg3UXB+Cnq2FXWOrlLZxA+95VUgHpyGZiykJmzeWrKhldDlDeGGd8QCCLeuliiOgXADTYjWaVfhd+6arPZrK2VtqqsguvH40gW1xfoGAOmAT4WFnxWxIaEip0V2u6NOoKTiH9I3bz2Qe4lfJvPXig+XwCXcukXd6XUkDFYDpiw8XNV3X7pqTus5d2RYR97bAhIYZZQ6h50ZpTY8N0lFh4RY5yfx8BhxJW3tfoi9uZvVuPx7dGPsZsSniENFPMNz3UwHGitTJMr4088cJrAGgd5lyFuLouiHiM2JMGA0wx9wWTbWJEwTLaTVQK9gSJf857ndV2zCh9vKlfko4w9bQgqxKg4U/mY8dXX1E7D51nD2ci8Ed+ZG+NEneFLyZhLsD82GkBY+YovA+4xm/pcx+hBhlyqGNxI8v+Jh+JhEyD/ZLgJfq3ZMbGIGsTiDwZ2flLLxImHHEoDoT6PHU6hDhPDJu560="
-1
View File
@@ -118,7 +118,6 @@ in (utils.lib.eachSystem (builtins.filter filter_system utils.lib.defaultSystems
users.imports = [ ./machines/modules/malobeo/users.nix ];
backup.imports = [ ./machines/modules/malobeo/backup.nix ];
printing.imports = [ ./machines/modules/malobeo/printing.nix ];
gitea-translator.imports = [ ./machines/modules/malobeo/gitea_translator.nix ];
};
hydraJobs = nixpkgs.lib.mapAttrs (_: nixpkgs.lib.hydraJob) (
+1
View File
@@ -1,3 +1,4 @@
set -o errexit
set -o pipefail
sshoptions="-o StrictHostKeyChecking=no -o ServerAliveInterval=1 -o ServerAliveCountMax=1 -p 222 -T"