Compare commits

..
Author SHA1 Message Date
ahtlonandahtlon 764c19f959 Add mosquitto
Check flake syntax / flake-check (push) Successful in 34m14s
Hydra callback / on_pr (pull_request) Successful in 1h17m39s
Hydra callback / on_push (pull_request) Has been skipped
2026-08-11 17:50:21 +02:00
ahtlonandahtlon e79698d76c Update gatekeeper 2026-08-11 17:50:21 +02:00
ahtlonandahtlon 585fa338c5 Fix gatekeeper missing the key 2026-08-11 17:50:21 +02:00
ahtlonandahtlon 4b1a3961cb fix flake check 2026-08-11 17:50:21 +02:00
ahtlonandahtlon 30e65e1efd add goldman, the rpi that runs gatekeeper 2026-08-11 17:50:21 +02:00
9 changed files with 214 additions and 79 deletions
Generated
+99
View File
@@ -78,6 +78,29 @@
"type": "github"
}
},
"gatekeeper": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
],
"pyproject-build-systems": "pyproject-build-systems",
"pyproject-nix": "pyproject-nix",
"uv2nix": "uv2nix"
},
"locked": {
"lastModified": 1786138873,
"narHash": "sha256-+G/hTquaK4AjYxNSJTpcZXUEKxFDv9lOn3x+lHHTWJw=",
"ref": "refs/heads/master",
"rev": "c5934d05c6f01c94c36221deb7ed4de03aa91ca1",
"revCount": 127,
"type": "git",
"url": "https://git.dynamicdiscord.de/malobeo/gatekeeper"
},
"original": {
"type": "git",
"url": "https://git.dynamicdiscord.de/malobeo/gatekeeper"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -255,11 +278,62 @@
"type": "github"
}
},
"pyproject-build-systems": {
"inputs": {
"nixpkgs": [
"gatekeeper",
"nixpkgs"
],
"pyproject-nix": [
"gatekeeper",
"pyproject-nix"
],
"uv2nix": [
"gatekeeper",
"uv2nix"
]
},
"locked": {
"lastModified": 1776659114,
"narHash": "sha256-qapCOQmR++yZSY43dzrp3wCrkOTLpod+ONtJWBk6iKU=",
"owner": "pyproject-nix",
"repo": "build-system-pkgs",
"rev": "ffaa2161dd5d63e0e94591f86b54fc239660fb2e",
"type": "github"
},
"original": {
"owner": "pyproject-nix",
"repo": "build-system-pkgs",
"type": "github"
}
},
"pyproject-nix": {
"inputs": {
"nixpkgs": [
"gatekeeper",
"nixpkgs"
]
},
"locked": {
"lastModified": 1778901413,
"narHash": "sha256-GSKXTAnFqRAMlZkJrIPcQMYf+lpMr66K3i60mB9STvc=",
"owner": "pyproject-nix",
"repo": "pyproject.nix",
"rev": "a228447c3e179d477c1b6246ef3efa8cfe3c469a",
"type": "github"
},
"original": {
"owner": "pyproject-nix",
"repo": "pyproject.nix",
"type": "github"
}
},
"root": {
"inputs": {
"disko": "disko",
"dns": "dns",
"ep3-bs": "ep3-bs",
"gatekeeper": "gatekeeper",
"home-manager": "home-manager",
"mfsync": "mfsync",
"microvm": "microvm",
@@ -461,6 +535,31 @@
"type": "github"
}
},
"uv2nix": {
"inputs": {
"nixpkgs": [
"gatekeeper",
"nixpkgs"
],
"pyproject-nix": [
"gatekeeper",
"pyproject-nix"
]
},
"locked": {
"lastModified": 1779269674,
"narHash": "sha256-P1LHCRdYpdtHAEzuEsNHrI6d9mVPl5a2fyFDZGHNVbI=",
"owner": "pyproject-nix",
"repo": "uv2nix",
"rev": "69aec536f6d1acc415ed2e20299312802aba98c6",
"type": "github"
},
"original": {
"owner": "pyproject-nix",
"repo": "uv2nix",
"type": "github"
}
},
"zineshop": {
"inputs": {
"nixpkgs": [
+5
View File
@@ -37,6 +37,11 @@
inputs.nixpkgs.follows = "nixpkgs";
};
gatekeeper = {
url = "git+https://git.dynamicdiscord.de/malobeo/gatekeeper";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
nixos-generators = {
url = "github:nix-community/nixos-generators";
inputs.nixpkgs.follows = "nixpkgs";
-52
View File
@@ -1,52 +0,0 @@
{ self, config, lib, pkgs, inputs, ... }:
with lib;
let
antamap-pkg = pkgs.stdenv.mkDerivation {
name = "antamap";
src = pkgs.fetchgit {
url = "https://0xacab.org/AND/antamap.git";
branchName = "master";
rev = "f62cc588df661e089d4ffb17adb78e667bda8f87";
sha256 = "sha256-vMAk2pphApkp1YkFBtX4cQDAyxDgMLnrhI4DTVgBYdE=";
};
installPhase = "mkdir -p $out; cp -R * $out/";
};
in
{
networking = {
hostName = mkDefault "antamap";
useDHCP = false;
};
imports = [
../modules/malobeo_user.nix
../modules/sshd.nix
];
services.nginx = {
enable = true;
virtualHosts."_" = {
listen = [
{ addr = "0.0.0.0"; port = 80; }
];
root = "${antamap-pkg}";
extraConfig = ''
proxy_buffering off;
proxy_cache off;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
'';
};
};
networking.firewall.allowedTCPPorts = [ 80 ];
system.stateVersion = "22.11"; # Did you read the comment?
}
-10
View File
@@ -146,7 +146,6 @@ in
"zineshop"
"vaultwarden"
"pretalx"
"antamap"
];
networking = {
@@ -287,15 +286,6 @@ in
'';
};
};
virtualHosts."antamap.malobeo.org" = {
locations."/" = {
proxyPass = "http://${hosts.malobeo.hosts.antamap.network.address}:80";
extraConfig = ''
proxy_set_header Host $host;
'';
};
};
};
services.tor = {
-3
View File
@@ -2,15 +2,12 @@
{
sops.secrets.njalacloud = {};
sops.secrets.njalazines = {};
sops.secrets.njalaantamap = {};
systemd.services."dyndns" = {
script = ''
KEYCLOUD=$(cat /run/secrets/njalacloud)
KEYZINES=$(cat /run/secrets/njalazines)
KEYANATAMAP=$(cat /run/secrets/njalaantamap)
${pkgs.curl}/bin/curl --fail --silent --show-error "https://njal.la/update/?h=cloud.malobeo.org&k="$KEYCLOUD"&auto"
${pkgs.curl}/bin/curl --fail --silent --show-error "https://njal.la/update/?h=zines.malobeo.org&k="$KEYZINES"&auto"
${pkgs.curl}/bin/curl --fail --silent --show-error "https://njal.la/update/?h=antamap.malobeo.org&k="$KEYANATAMAP"&auto"
'';
serviceConfig = {
Type = "oneshot";
+7 -8
View File
@@ -3,11 +3,11 @@ shop_cleartext: ENC[AES256_GCM,data:sifpX/R6JCcNKgwN2M4Dbflgnfs5CqB8ez5fULPohuFS
shop_auth: ENC[AES256_GCM,data:0NDIRjmGwlSFls12sCb5OlgyGTCHpPQIjycEJGhYlZsWKhEYXV2u3g1RHMkF8Ny913jarjf0BgwSq5pBD9rgPL9t8X8=,iv:3jgCv/Gg93Mhdm4eYzwF9QrK14QL2bcC4wwSajCA88o=,tag:h8dhMK46hABv9gYW4johkA==,type:str]
njalacloud: ENC[AES256_GCM,data:sp79Ij1vd9pQZuPUR1phmw==,iv:AWKZoOfBA/n16pWQCfA0dZmH1KajCztnLvYItoZZbgA=,tag:BIUrobBoO96pxUz1sjIYIw==,type:str]
njalazines: ENC[AES256_GCM,data:fnObUEnXYvdj9HtkZNzXVA==,iv:0Zj2n2we9w4fj/n7e1ayd9XgFEMAGCHk4QLTu1IlRnQ=,tag:zeOLAB0oE6XbxqdqhdRNxw==,type:str]
njalaantamap: ENC[AES256_GCM,data:nUc+E7HNbW0EDclzNDV6+w==,iv:H8nqeuOrvvu8O8QhGWkBkYWAQXwkBehf/jU6u/grs1A=,tag:mqX6jn47DyeSuk8xzG0e/Q==,type:str]
njala_api_key: ENC[AES256_GCM,data:ohSVzQUvFjia/s9WceqnZCdLyk3N1Lm2BCBmXeBlkWD2dyrohKCnd9GiJ499IORpuYcOXyM=,iv:Uczk8op5mgqe8gefxgU9YuTqOsYvjzHCKvzA7GDsgio=,tag:XA7JRq/LsGkpHcQSO36Whg==,type:str]
sops:
age:
- enc: |
- recipient: age136sz3lzhxf74ryruvq34d4tmmxnezkqkgu6zqa3dm582c22fgejqagrqxk
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2ZFBYMHMzTFRMLzhCbnBE
MXkreklWSUVOckl5OTJ0VzlWS2tIOFBRRVVJCk90OXJoMHQza0hTSGt5VUphNjY1
@@ -15,8 +15,8 @@ sops:
TStjbTBkMTNOcHBja0JRYUdvSWJUN00KtOPBH8xZy/GD9Ua3H6jisoluCR+UzaeE
pAWM9Y6Gn6f7jv2BPKVTaWsyrafsYP7cDabQe2ancAuuKvkng/jrEw==
-----END AGE ENCRYPTED FILE-----
recipient: age136sz3lzhxf74ryruvq34d4tmmxnezkqkgu6zqa3dm582c22fgejqagrqxk
- enc: |
- recipient: age1ljpdczmg5ctqyeezn739hv589fwhssjjnuqf7276fqun6kc62v3qmhkd0c
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhc282T2VVamFGcG1Ub3hp
S1VwKzVsWW1sRXczZnRNdkxDWE5Sd0hhVUJRCkovNGZ1ZlN0c1VyMXV0WThJMGFi
@@ -24,9 +24,8 @@ sops:
QVZyNWVOMTh3ejBha21Qb2xCRkFERGMKH9nMQUoS5bGcLUx2T1dOmKd9jshttTrP
SKFx7MXcjFRLKS2Ij12V8ftjL3Uod6be5zoMibkxK19KmXY/514Jww==
-----END AGE ENCRYPTED FILE-----
recipient: age1ljpdczmg5ctqyeezn739hv589fwhssjjnuqf7276fqun6kc62v3qmhkd0c
lastmodified: "2026-08-28T12:19:14Z"
mac: ENC[AES256_GCM,data:TnElCRaL/b238clfFVEq+Ot1lwg5MLMchCkmhi5PmADRn2exA42Zeq5v1M/IM5sHt4xEyFLn5R/88Y49DAfehRFwu6rddV+3lnFV40k2rWRtMfQOUXSrCd7lGxZdFbMU0eIXF5jaATFbcP0wO03FohNA69/u6kNsS0y0jK3vuLQ=,iv:xPeNXUIavVYFfAv1fs5TXCHXmvnXQDs4mJZMHOX7qG8=,tag:85hrBTKMh1ckTtXpOxj5lg==,type:str]
lastmodified: "2026-02-20T19:25:05Z"
mac: ENC[AES256_GCM,data:g+bFYqJN1X8F52tpIO60S2WKxLG27ZrP399fsfE6o7rPtIMimZou/4oUo7i+kpNtygEuCr3+suP8TPas4x5zMXhRjnjJuwJwL/NwdciHZU0O3rPJgucCEWqr9OdAtxezDM9c2vv+jzqZxWT9t0fIpB9RxO5oy1pHZs0RCgjAJR4=,iv:v6RdTMeQUxSdjIVNFbx2HtxCsdVgFTQTzMXS5Fj62is=,tag:pLoZMBRIXYElO5rY+xX9zg==,type:str]
pgp:
- created_at: "2025-02-11T18:32:49Z"
enc: |-
@@ -67,4 +66,4 @@ sops:
-----END PGP MESSAGE-----
fp: aef8d6c7e4761fc297cda833df13aebb1011b5d4
unencrypted_suffix: _unencrypted
version: 3.13.1
version: 3.11.0
+93
View File
@@ -0,0 +1,93 @@
{ config, pkgs, inputs, modulesPath, ... }:
let
sshKeys = import ../ssh_keys.nix;
in
{
networking.hostName = "goldman"; # Define your hostname.
nixpkgs.hostPlatform = { system = "aarch64-linux"; };
imports =
[
inputs.gatekeeper.nixosModules.gatekeeper
../modules/malobeo_user.nix
#inputs.nixos-hardware.nixosModules.raspberry-pi-3
(modulesPath + "/profiles/minimal.nix")
#(modulesPath + "/installer/sd-card/sd-image.nix")
];
fileSystems."/" =
{ device = "/dev/disk/by-label/NIXOS_SD";
fsType = "ext4";
};
#Try to reduce size
documentation.man.enable = false;
documentation.nixos.enable = false;
services.openssh.enable = true;
services.openssh.ports = [ 22 ];
services.openssh.settings.PasswordAuthentication = false;
services.openssh.settings.PermitRootLogin = "prohibit-password";
users.users.root.openssh.authorizedKeys.keys = sshKeys.admins;
# Use the extlinux boot loader. (NixOS wants to enable GRUB by default)
boot.loader.grub.enable = false;
# Enables the generation of /boot/extlinux/extlinux.conf
boot.loader.generic-extlinux-compatible.enable = true;
networking.dhcpcd.enable = true;
# Set your time zone.
time.timeZone = "Europe/Berlin";
services.mosquitto = {
enable = true;
listeners = [{
acl = [ "pattern readwrite #" ];
omitPasswordAuth = true;
settings.allow_anonymous = true;
}];
};
services = {
gatekeeper = {
enable = true;
envFile = pkgs.writeText "env" ''
MIFARE_APP_MASTER_KEY="7b195adb892073c9e34ebe7e0ca28b2b"
MIFARE_ACL_READ_BASE_KEY="741a50f2b189cc9f151e0600f50a6e1a"
MIFARE_ACL_WRITE_BASE_KEY="f1aa99f81cca268de98d422ee0ccb65c"
SECRET_KEY="8b14d0b447bff7efa24d5019cc59a999786e31f6f865173bbd642bf18de5ad85"
MQTT_HOST = "localhost"
MQTT_PORT = "1883"
'';
mock = "False";
};
};
environment.systemPackages = with pkgs; [
htop
wget
git
pciutils
gpio-utils
nix-tree
lgpio
];
services.avahi = {
enable = true;
nssmdns4 = true;
publish = {
enable = true;
addresses = true;
userServices = true;
};
};
networking.firewall.allowedTCPPorts = [ 80 443 1883];
system.stateVersion = "23.05";
}
+9 -5
View File
@@ -58,6 +58,15 @@ in
address = "192.168.1.105";
};
};
goldman = {
type = "rpi";
network = {
local = true;
hostId = "16";
address = "192.168.1.106";
};
};
durruti = {
type = "microvm";
@@ -108,11 +117,6 @@ in
type = "microvm";
network = createMaloNet "18" "52:DA:0D:F9:EF:F4";
};
antamap = {
type = "microvm";
network = createMaloNet "20" "52:DA:0D:F9:EF:F6";
};
};
};
}
+1 -1
View File
@@ -58,7 +58,7 @@ in
networkctl down wg-initrd
'';
serviceConfig.Type = "oneshot";
};
};
};
network = {
flushBeforeStage2 = true;