Compare commits

..
Author SHA1 Message Date
ahtlon f5a810875f add test file 2026-03-14 13:44:41 +01:00
ahtlon 83de212561 we 2026-03-14 13:17:12 +01:00
ahtlon 024d48a15e flake.lock: Update
Flake lock file updates:

• Updated input 'microvm':
    'github:astro/microvm.nix/f6dcfb7c16cc3775536c825dc0698d4ede13d063' (2026-02-25)
  → 'github:astro/microvm.nix/25ebda3c558e923720c965832dc9a04f559a055c' (2026-03-09)
• Updated input 'microvm/spectrum':
    'git+https://spectrum-os.org/git/spectrum?ref=refs/heads/main&rev=c5d5786d3dc938af0b279c542d1e43bce381b4b9' (2025-10-03)
  → 'git+https://spectrum-os.org/git/spectrum?ref=refs/heads/main&rev=fe39e122d898f66e89ffa17d4f4209989ccb5358' (2026-02-27)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/41c6b421bdc301b2624486e11905c9af7b8ec68e' (2026-02-24)
  → 'github:NixOS/nixos-hardware/3966ce987e1a9a164205ac8259a5fe8a64528f72' (2026-03-08)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/e764fc9a405871f1f6ca3d1394fb422e0a0c3951' (2026-02-24)
  → 'github:NixOS/nixpkgs/3e20095fe3c6cbb1ddcef89b26969a69a1570776' (2026-03-13)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/2fc6539b481e1d2569f25f8799236694180c0993' (2026-02-23)
  → 'github:NixOS/nixpkgs/fe416aaedd397cacb33a610b33d60ff2b431b127' (2026-03-12)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/334daa7c273dd8bf7a0cd370e4e16022b64e55e9' (2026-02-25)
  → 'github:Mic92/sops-nix/d1ff3b1034d5bab5d7d8086a7803c5a5968cd784' (2026-03-09)
2026-03-14 13:17:12 +01:00
ahtlon 2e8db8d1bb ANOTHER CHANGE FOR THE TEST BRANCH!!!! 2026-03-14 13:17:12 +01:00
ahtlon 9968512975 sad 2026-03-14 13:17:12 +01:00
ahtlon ca53a08e35 weh! 2026-03-14 13:17:12 +01:00
ahtlon e582dd2bfe test commit 2026-03-14 13:17:12 +01:00
ahtlon 394c0610ce Try out workflow check 2026-03-14 13:14:15 +01:00
44 changed files with 6229 additions and 608 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
+29
View File
@@ -0,0 +1,29 @@
name: Weekly Flake Update
on:
pull_request:
types:
- opened
- synchronize
permissions:
contents: write
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@v3
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ github.workspace }}
- run: echo "🍏 This job's status is ${{ job.status }}."
- run: echo "Cat HEAD= $(cat .git/HEAD)"
- run: echo "Git parse HEAD= $(git rev-parse --abbrev-ref HEAD)"
-63
View File
@@ -1,63 +0,0 @@
name: Hydra callback
on:
pull_request:
types:
- opened
- synchronize
paths:
- '**.nix'
- flake.lock
push:
branches:
- master
paths:
- '**.nix'
- flake.lock
permissions:
contents: write
jobs:
on_pr:
if: github.event.pull_request
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: Find pr number
run: |
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
+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.
+350
View File
@@ -0,0 +1,350 @@
{
"allow_maintainer_edit": false,
"assignee": null,
"assignees": null,
"base": {
"label": "master",
"ref": "master",
"repo": {
"allow_fast_forward_only_merge": false,
"allow_manual_merge": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_rebase_update": true,
"allow_squash_merge": true,
"archived": false,
"archived_at": "1970-01-01T01:00:00+01:00",
"autodetect_manual_merge": false,
"avatar_url": "",
"clone_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure.git",
"created_at": "2024-10-24T19:38:14+02:00",
"default_allow_maintainer_edit": false,
"default_branch": "master",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"description": "",
"empty": false,
"fork": true,
"forks_count": 0,
"full_name": "ahtlon/infrastructure",
"has_actions": true,
"has_code": true,
"has_issues": false,
"has_packages": false,
"has_projects": false,
"has_pull_requests": true,
"has_releases": false,
"has_wiki": false,
"html_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure",
"id": 29,
"ignore_whitespace_conflicts": false,
"internal": false,
"language": "",
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/ahtlon/infrastructure/languages",
"licenses": [],
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "infrastructure",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 5,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "https://git.dynamicdiscord.de/avatars/7399d018a0bcee0f2da113bdeeafec029316d8e8ce774b829de4125b026c0599",
"created": "2024-10-23T17:19:18+02:00",
"description": "",
"email": "ahtlon@noreply.git.dynamicdiscord.de",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "https://git.dynamicdiscord.de/ahtlon",
"id": 8,
"is_admin": false,
"language": "",
"last_login": "0001-01-01T00:00:00Z",
"location": "",
"login": "ahtlon",
"login_name": "",
"prohibit_login": false,
"restricted": false,
"source_id": 0,
"starred_repos_count": 0,
"username": "ahtlon",
"visibility": "public",
"website": ""
},
"parent": {
"allow_fast_forward_only_merge": false,
"allow_manual_merge": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_rebase_update": true,
"allow_squash_merge": true,
"archived": false,
"archived_at": "1970-01-01T01:00:00+01:00",
"autodetect_manual_merge": false,
"avatar_url": "",
"clone_url": "https://git.dynamicdiscord.de/malobeo/infrastructure.git",
"created_at": "2022-10-04T18:35:43+02:00",
"default_allow_maintainer_edit": false,
"default_branch": "master",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"description": "",
"empty": false,
"fork": false,
"forks_count": 1,
"full_name": "malobeo/infrastructure",
"has_actions": true,
"has_code": true,
"has_issues": true,
"has_packages": false,
"has_projects": true,
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "https://git.dynamicdiscord.de/malobeo/infrastructure",
"id": 15,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
"allow_only_contributors_to_track_time": true,
"enable_issue_dependencies": true,
"enable_time_tracker": true
},
"language": "",
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure/languages",
"licenses": [],
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "infrastructure",
"object_format_name": "sha1",
"open_issues_count": 40,
"open_pr_counter": 4,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "https://git.dynamicdiscord.de/avatars/9ea8af20ca015cb078b2971cd4e91e6d",
"created": "2023-03-29T17:26:16+02:00",
"description": "",
"email": "",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "https://git.dynamicdiscord.de/malobeo",
"id": 7,
"is_admin": false,
"language": "",
"last_login": "0001-01-01T00:00:00Z",
"location": "",
"login": "malobeo",
"login_name": "",
"prohibit_login": false,
"restricted": false,
"source_id": 0,
"starred_repos_count": 0,
"username": "malobeo",
"visibility": "public",
"website": ""
},
"permissions": {
"admin": false,
"pull": true,
"push": false
},
"private": false,
"projects_mode": "",
"release_counter": 0,
"size": 2878,
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/malobeo/infrastructure.git",
"stars_count": 1,
"template": false,
"topics": [],
"updated_at": "2026-03-12T01:11:13+01:00",
"url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure",
"watchers_count": 2,
"website": ""
},
"permissions": {
"admin": false,
"pull": true,
"push": false
},
"private": false,
"projects_mode": "all",
"release_counter": 0,
"size": 14507,
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/ahtlon/infrastructure.git",
"stars_count": 0,
"template": false,
"topics": [],
"updated_at": "2026-03-12T01:05:43+01:00",
"url": "https://git.dynamicdiscord.de/api/v1/repos/ahtlon/infrastructure",
"watchers_count": 1,
"website": ""
},
"repo_id": 29,
"sha": "dacdb2214ea6ff645c444ce0eaab68c317f0a616"
},
"body": "",
"closed_at": null,
"comments": 0,
"created_at": "2026-03-11T17:29:55+01:00",
"diff_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8.diff",
"draft": false,
"due_date": null,
"head": {
"label": "nixpkgs_bump_20260305",
"ref": "nixpkgs_bump_20260305",
"repo": {
"allow_fast_forward_only_merge": false,
"allow_manual_merge": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_rebase_update": true,
"allow_squash_merge": true,
"archived": false,
"archived_at": "1970-01-01T01:00:00+01:00",
"autodetect_manual_merge": false,
"avatar_url": "",
"clone_url": "https://git.dynamicdiscord.de/malobeo/infrastructure.git",
"created_at": "2022-10-04T18:35:43+02:00",
"default_allow_maintainer_edit": false,
"default_branch": "master",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"description": "",
"empty": false,
"fork": false,
"forks_count": 1,
"full_name": "malobeo/infrastructure",
"has_actions": true,
"has_code": true,
"has_issues": true,
"has_packages": false,
"has_projects": true,
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "https://git.dynamicdiscord.de/malobeo/infrastructure",
"id": 15,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
"allow_only_contributors_to_track_time": true,
"enable_issue_dependencies": true,
"enable_time_tracker": true
},
"language": "",
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure/languages",
"licenses": [],
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "infrastructure",
"object_format_name": "sha1",
"open_issues_count": 40,
"open_pr_counter": 4,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "https://git.dynamicdiscord.de/avatars/9ea8af20ca015cb078b2971cd4e91e6d",
"created": "2023-03-29T17:26:16+02:00",
"description": "",
"email": "",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "https://git.dynamicdiscord.de/malobeo",
"id": 7,
"is_admin": false,
"language": "",
"last_login": "0001-01-01T00:00:00Z",
"location": "",
"login": "malobeo",
"login_name": "",
"prohibit_login": false,
"restricted": false,
"source_id": 0,
"starred_repos_count": 0,
"username": "malobeo",
"visibility": "public",
"website": ""
},
"permissions": {
"admin": false,
"pull": true,
"push": false
},
"private": false,
"projects_mode": "",
"release_counter": 0,
"size": 2878,
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/malobeo/infrastructure.git",
"stars_count": 1,
"template": false,
"topics": [],
"updated_at": "2026-03-12T01:11:13+01:00",
"url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure",
"watchers_count": 2,
"website": ""
},
"repo_id": 15,
"sha": "7c66a24563d0e95c292aafeaa08056effc6152d9"
},
"html_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8",
"id": 66,
"is_locked": false,
"labels": [],
"merge_base": "344eeb437b0aa29baee1227e48878f987e21e296",
"merge_commit_sha": null,
"mergeable": true,
"merged": false,
"merged_at": null,
"merged_by": null,
"milestone": null,
"number": 8,
"patch_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8.patch",
"pin_order": 0,
"requested_reviewers": null,
"requested_reviewers_teams": null,
"state": "open",
"target_repo_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure.git",
"title": "Update flake.lock",
"updated_at": "2026-03-11T17:29:55+01:00",
"url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8",
"user": {
"active": false,
"avatar_url": "https://git.dynamicdiscord.de/avatars/7399d018a0bcee0f2da113bdeeafec029316d8e8ce774b829de4125b026c0599",
"created": "2024-10-23T17:19:18+02:00",
"description": "",
"email": "ahtlon@noreply.git.dynamicdiscord.de",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "https://git.dynamicdiscord.de/ahtlon",
"id": 8,
"is_admin": false,
"language": "",
"last_login": "0001-01-01T00:00:00Z",
"location": "",
"login": "ahtlon",
"login_name": "",
"prohibit_login": false,
"restricted": false,
"source_id": 0,
"starred_repos_count": 0,
"username": "ahtlon",
"visibility": "public",
"website": ""
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
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": 1773018425,
"narHash": "sha256-fpgZBmZpKoEXEowBK/6m8g9FcOLWQ4UxhXHqCw2CpSM=",
"owner": "astro",
"repo": "microvm.nix",
"rev": "6ad601df0a07d9855c5e8f9b81135ecaf7c287eb",
"rev": "25ebda3c558e923720c965832dc9a04f559a055c",
"type": "github"
},
"original": {
@@ -176,15 +176,12 @@
}
},
"nixos-hardware": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1781622756,
"narHash": "sha256-JrPh4M6S7aPsEE9tOENuZrxC6o2szSLlK+t4+nLke9s=",
"lastModified": 1772972630,
"narHash": "sha256-mUJxsNOrBMNOUJzN0pfdVJ1r2pxeqm9gI/yIKXzVVbk=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "08018c72174a4df5657f8d94178ac69fb9c243e5",
"rev": "3966ce987e1a9a164205ac8259a5fe8a64528f72",
"type": "github"
},
"original": {
@@ -212,11 +209,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1781577229,
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
"lastModified": 1773282481,
"narHash": "sha256-b/GV2ysM8mKHhinse2wz+uP37epUrSE+sAKXy/xvBY4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
"rev": "fe416aaedd397cacb33a610b33d60ff2b431b127",
"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": 1773375660,
"narHash": "sha256-SEzUWw2Rf5Ki3bcM26nSKgbeoqi2uYy8IHVBqOKjX3w=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0",
"rev": "3e20095fe3c6cbb1ddcef89b26969a69a1570776",
"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": 1773096132,
"narHash": "sha256-M3zEnq9OElB7zqc+mjgPlByPm1O5t2fbUrH3t/Hm5Ag=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a",
"rev": "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784",
"type": "github"
},
"original": {
@@ -296,11 +280,11 @@
"spectrum": {
"flake": false,
"locked": {
"lastModified": 1778940603,
"narHash": "sha256-voSM8dZNlaOWN3kbYFky+FNY6fFQOEw0xF+ZMpZKkCQ=",
"lastModified": 1772189877,
"narHash": "sha256-i1p90Rgssb//aNiTDFq46ZG/fk3LmyRLChtp/9lddyA=",
"ref": "refs/heads/main",
"rev": "367dd227f539267eae2b62770b4c17b88ac8c1f1",
"revCount": 1265,
"rev": "fe39e122d898f66e89ffa17d4f4209989ccb5358",
"revCount": 1255,
"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";
};
+350
View File
@@ -0,0 +1,350 @@
AAAAAA{
"allow_maintainer_edit": false,
"assignee": null,
"assignees": null,
"base": {
"label": "master",
"ref": "master",dd
"repo": {
"allow_fast_ddasdad_only_merge": false,
"allow_manual_merge": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_rebase_update": true,
"allow_squash_merge": true,
"archived": false,
"archived_at": "1970-01-01T01:00:00+01:00",
"autodetect_manual_merge": false,
"avatar_url": "",
"clone_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure.git",
"created_at": "2024-10-24T19:38:14+02:00",
"default_allow_maintainer_edit": false,
"default_branch": "master",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"description": "",
"empty": false,
"fork": true,
"forks_count": 0,
"full_name": "ahtlon/infrastructure",
"has_actions": true,
"has_code": true,
"has_issues": false,
"has_packages": false,
"has_projects": false,
"has_pull_requests": true,
"has_releases": false,
"has_wiki": false,
"html_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure",
"id": 29,
"ignore_whitespace_conflicts": false,
"internal": false,
"language": "",
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/ahtlon/infrastructure/languages",
"licenses": [],
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "infrastructure",
"object_format_name": "sha1",
"open_issues_count": 0,
"open_pr_counter": 6,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "https://git.dynamicdiscord.de/avatars/7399d018a0bcee0f2da113bdeeafec029316d8e8ce774b829de4125b026c0599",
"created": "2024-10-23T17:19:18+02:00",
"description": "",
"email": "ahtlon@noreply.git.dynamicdiscord.de",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "https://git.dynamicdiscord.de/ahtlon",
"id": 8,
"is_admin": false,
"language": "",
"last_login": "0001-01-01T00:00:00Z",
"location": "",
"login": "ahtlon",
"login_name": "",
"prohibit_login": false,
"restricted": false,
"source_id": 0,
"starred_repos_count": 0,
"username": "ahtlon",
"visibility": "public",
"website": ""
},
"parent": {
"allow_fast_forward_only_merge": false,
"allow_manual_merge": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_rebase_update": true,
"allow_squash_merge": true,
"archived": false,
"archived_at": "1970-01-01T01:00:00+01:00",
"autodetect_manual_merge": false,
"avatar_url": "",
"clone_url": "https://git.dynamicdiscord.de/malobeo/infrastructure.git",
"created_at": "2022-10-04T18:35:43+02:00",
"default_allow_maintainer_edit": false,
"default_branch": "master",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"description": "",
"empty": false,
"fork": false,
"forks_count": 1,
"full_name": "malobeo/infrastructure",
"has_actions": true,
"has_code": true,
"has_issues": true,
"has_packages": false,
"has_projects": true,
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "https://git.dynamicdiscord.de/malobeo/infrastructure",
"id": 15,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
"allow_only_contributors_to_track_time": true,
"enable_issue_dependencies": true,
"enable_time_tracker": true
},
"language": "",
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure/languages",
"licenses": [],
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "infrastructure",
"object_format_name": "sha1",
"open_issues_count": 40,
"open_pr_counter": 4,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "https://git.dynamicdiscord.de/avatars/9ea8af20ca015cb078b2971cd4e91e6d",
"created": "2023-03-29T17:26:16+02:00",
"description": "",
"email": "",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "https://git.dynamicdiscord.de/malobeo",
"id": 7,
"is_admin": false,
"language": "",
"last_login": "0001-01-01T00:00:00Z",
"location": "",
"login": "malobeo",
"login_name": "",
"prohibit_login": false,
"restricted": false,
"source_id": 0,
"starred_repos_count": 0,
"username": "malobeo",
"visibility": "public",
"website": ""
},
"permissions": {
"admin": false,
"pull": true,
"push": false
},
"private": false,
"projects_mode": "",
"release_counter": 0,
"size": 2878,
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/malobeo/infrastructure.git",
"stars_count": 1,
"template": false,
"topics": [],
"updated_at": "2026-03-12T01:11:13+01:00",
"url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure",
"watchers_count": 2,
"website": ""
},
"permissions": {
"admin": false,
"pull": true,
"push": false
},
"private": false,
"projects_mode": "all",
"release_counter": 0,
"size": 14584,
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/ahtlon/infrastructure.git",
"stars_count": 0,
"template": false,
"topics": [],
"updated_at": "2026-03-13T16:33:51+01:00",
"url": "https://git.dynamicdiscord.de/api/v1/repos/ahtlon/infrastructure",
"watchers_count": 1,
"website": ""
},
"repo_id": 29,
"sha": "e73516fbe79022d12608e9616b75b3a388bd0e5f"
},
"body": "",
"closed_at": null,
"comments": 0,
"created_at": "2026-03-11T17:29:55+01:00",
"diff_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8.diff",
"draft": false,
"due_date": null,
"head": {
"label": "nixpkgs_bump_20260305",
"ref": "nixpkgs_bump_20260305",
"repo": {
"allow_fast_forward_only_merge": false,
"allow_manual_merge": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_rebase_update": true,
"allow_squash_merge": true,
"archived": false,
"archived_at": "1970-01-01T01:00:00+01:00",
"autodetect_manual_merge": false,
"avatar_url": "",
"clone_url": "https://git.dynamicdiscord.de/malobeo/infrastructure.git",
"created_at": "2022-10-04T18:35:43+02:00",
"default_allow_maintainer_edit": false,
"default_branch": "master",
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"description": "",
"empty": false,
"fork": false,
"forks_count": 1,
"full_name": "malobeo/infrastructure",
"has_actions": true,
"has_code": true,
"has_issues": true,
"has_packages": false,
"has_projects": true,
"has_pull_requests": true,
"has_releases": true,
"has_wiki": true,
"html_url": "https://git.dynamicdiscord.de/malobeo/infrastructure",
"id": 15,
"ignore_whitespace_conflicts": false,
"internal": false,
"internal_tracker": {
"allow_only_contributors_to_track_time": true,
"enable_issue_dependencies": true,
"enable_time_tracker": true
},
"language": "",
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure/languages",
"licenses": [],
"link": "",
"mirror": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"name": "infrastructure",
"object_format_name": "sha1",
"open_issues_count": 40,
"open_pr_counter": 4,
"original_url": "",
"owner": {
"active": false,
"avatar_url": "https://git.dynamicdiscord.de/avatars/9ea8af20ca015cb078b2971cd4e91e6d",
"created": "2023-03-29T17:26:16+02:00",
"description": "",
"email": "",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "https://git.dynamicdiscord.de/malobeo",
"id": 7,
"is_admin": false,
"language": "",
"last_login": "0001-01-01T00:00:00Z",
"location": "",
"login": "malobeo",
"login_name": "",
"prohibit_login": false,
"restricted": false,
"source_id": 0,
"starred_repos_count": 0,
"username": "malobeo",
"visibility": "public",
"website": ""
},
"permissions": {
"admin": false,
"pull": true,
"push": false
},
"private": false,
"projects_mode": "",
"release_counter": 0,
"size": 2878,
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/malobeo/infrastructure.git",
"stars_count": 1,
"template": false,
"topics": [],
"updated_at": "2026-03-12T01:11:13+01:00",
"url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure",
"watchers_count": 2,
"website": ""
},
"repo_id": 15,
"sha": "7c66a24563d0e95c292aafeaa08056effc6152d9"
},
"html_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8",
"id": 66,
"is_locked": false,
"labels": [],
"merge_base": "344eeb437b0aa29baee1227e48878f987e21e296",
"merge_commit_sha": null,
"mergeable": true,
"merged": false,
"merged_at": null,
"merged_by": null,
"milestone": null,
"number": 8,
"patch_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8.patch",
"pin_order": 0,
"requested_reviewers": null,
"requested_reviewers_teams": null,
"state": "open",
"target_repo_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure.git",
"title": "Update flake.lock",
"updated_at": "2026-03-11T17:29:55+01:00",
"url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8",
"user": {
"active": false,
"avatar_url": "https://git.dynamicdiscord.de/avatars/7399d018a0bcee0f2da113bdeeafec029316d8e8ce774b829de4125b026c0599",
"created": "2024-10-23T17:19:18+02:00",
"description": "",
"email": "ahtlon@noreply.git.dynamicdiscord.de",
"followers_count": 0,
"following_count": 0,
"full_name": "",
"html_url": "https://git.dynamicdiscord.de/ahtlon",
"id": 8,
"is_admin": false,
"language": "",
"last_login": "0001-01-01T00:00:00Z",
"location": "",
"login": "ahtlon",
"login_name": "",
"prohibit_login": false,
"restricted": false,
"source_id": 0,
"starred_repos_count": 0,
"username": "ahtlon",
"visibility": "public",
"website": ""
}
}
-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" ]) ;
};
}
+1 -8
View File
@@ -32,7 +32,7 @@
"hetzner" = {
role = "client";
address = "10.100.0.6";
address = "10.100.0.7";
allowedIPs = [ "10.100.0.6/32" ];
publicKey = "csRzgwtnzmSLeLkSwTwEOrdKq55UOxZacR5D3GopCTQ=";
};
@@ -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"
+1
View File
@@ -0,0 +1 @@
1