somewhat working state of software

This commit is contained in:
Tassilo - 2022-08-20 23:49:51 +02:00
commit b5c0c4322f
Signed by: revol-xut
GPG Key ID: 4F56FF7759627D07
49 changed files with 998 additions and 1604 deletions

13
.github/workflows/deadnix.yml vendored Normal file
View File

@ -0,0 +1,13 @@
name: "deadnix"
on: [ push, pull_request ]
jobs:
deadnix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v17
- uses: astro/deadnix-action@main
with:
flags: "-l"

View File

@ -2,6 +2,6 @@
"name": "Barkhausen/Turmlabor",
"lat": 51.027105,
"lon": 13.723606,
"station_id": 0,
"region": "dresden"
"id": "64afe4d2-c834-44f2-926f-da6e7533f237",
"region": 0
}

View File

@ -2,6 +2,6 @@
"name": "Zentralwerk",
"lat": 51.0810632,
"lon": 13.7280758,
"station_id": 1,
"region": "dresden"
"id": "8aa034af-3545-4c36-b235-17e46cad6f07",
"region": 0
}

View File

@ -2,5 +2,6 @@
"name": "Chemnitz 1",
"lat": 50.822755,
"lon": 12.933914,
"station_id": 2
"id": "579efcd8-52c1-493e-b3b2-3c4614c3429b",
"region": 1
}

View File

@ -2,6 +2,6 @@
"name": "Mobile",
"lat": 0,
"lon": 0,
"station_id": 1000,
"region": "dresden"
"id": "285a6f4e-9123-4fcf-beeb-092463256c74",
"region": 0
}

View File

@ -1,405 +0,0 @@
{
"102": {
"name": "LSA Anton-/Leipziger Straße",
"lat": 51.063033,
"lon": 13.736958
},
"103": {
"name": "Anton-/Zur Eisenbahnstraße",
"lat": 51.064067,
"lon": 13.736935
},
"104": {
"name": "Schlesischer Platz",
"lat": 51.064783,
"lon": 13.740362
},
"107": {
"name": "Albertplatz",
"lat": 51.063252,
"lon": 13.746367
},
"108": {
"name": "Albertplatz West",
"lat": 51.064241,
"lon": 13.744951
},
"109": {
"name": "Bautzner/Rothenburger",
"lat": 51.062925,
"lon": 13.751871
},
"119": {
"name": "Straßburger Platz",
"lat": 51.046078,
"lon": 13.754815
},
"120": {
"name": "Lennéstraße/Hauptallee",
"lat": 51.042455,
"lon": 13.751296
},
"121": {
"name": "Lennéplatz",
"lat": 51.038294,
"lon": 13.746646
},
"136": {
"name": "Könneritzstraße/Jahnstraße",
"lat": 51.055101,
"lon": 13.723554
},
"200": {
"name": "Synagoge",
"lat": 51.052611,
"lon": 13.747128
},
"201": {
"name": "St. Petersburger Straße/Pulmann-Newa",
"lat": 51.042306,
"lon": 13.736348
},
"203": {
"name": "Pirnaischer Platz",
"lat": 51.049434,
"lon": 13.744379
},
"204": {
"name": "Rathenauplatz",
"lat": 51.051463,
"lon": 13.747008
},
"205": {
"name": "Carolaplatz",
"lat": 51.057410,
"lon": 13.745794
},
"206": {
"name": "Neustädter Markt",
"lat": 51.057757,
"lon": 13.741322
},
"207": {
"name": "Robert-Blum-Straße / Große Meißner Str.",
"lat": 51.061568,
"lon": 13.737761
},
"208": {
"name": "Bodenbacher / Zwinglistraße",
"lat": 51.033500,
"lon": 13.782810
},
"268": {
"name": "Albertplatz Süd",
"lat": 51.061454,
"lon": 13.746032
},
"305": {
"name": "Karcherallee",
"lat": 51.0370345,
"lon": 13.7781818
},
"307": {
"name": "Stübelallee/Zwinglistraße",
"lat": 51.0346967,
"lon": 13.7840746
},
"308": {
"name": "Zwinglistraße",
"lat": 51.0340625,
"lon": 13.7833343
},
"310": {
"name": "Rennplatzstraße",
"lat": 51.0272979,
"lon": 13.8004320
},
"311": {
"name": "Marienberger Straße",
"lat": 51.0256244,
"lon": 13.8052278
},
"324": {
"name": "Fetscherplatz",
"lat": 51.046367,
"lon": 13.770653
},
"330": {
"name": "Schandauer Straße/Alternberger Straße",
"lat": 51.0394224,
"lon": 13.8059762
},
"346": {
"name": "Schillerplatz",
"lat": 51.052175,
"lon": 13.805205
},
"357": {
"name": "Hepkestraße",
"lat": 51.0327378,
"lon": 13.8052781
},
"363": {
"name": "Blasewitzer/Fetscherstraße",
"lat": 51.052881,
"lon": 13.777738
},
"387": {
"name": "Seidnitz Center",
"lat": 51.0297010,
"lon": 13.8024819
},
"405": {
"name": "Caspar-David-Friedrich-Straße",
"lat": 51.0264364,
"lon": 13.7556769
},
"406": {
"name": "Heinrich-Zille-Straße",
"lat": 51.0255861,
"lon": 13.7572326
},
"421": {
"name": "Wasaplatz",
"lat": 51.027979,
"lon": 13.759444
},
"429": {
"name": "Moränenende/Breitscheidstraße",
"lat": 51.0135254,
"lon": 13.8110393
},
"435": {
"name": "Moränenende/Wilhelm-Liebknecht-Straße",
"lat": 51.0125937,
"lon": 13.8100717
},
"452": {
"name": "Tiergartenstraße",
"lat": 51.0298346,
"lon": 13.7711960
},
"453": {
"name": "Karchallee/Winterbergstraße",
"lat": 51.0331947,
"lon": 13.7745916
},
"454": {
"name": "Dresden Grunaer Weg",
"lat": 51.0309016,
"lon": 13.7803976
},
"455": {
"name": "Winderbergstraße",
"lat": 51.0241871,
"lon": 13.7973314
},
"459": {
"name": "Mügelner Straße/Moränenende",
"lat": 51.0112617,
"lon": 13.8079246
},
"504": {
"name": "Reichenbachstraße",
"lat": 51.0348507,
"lon": 13.7312898
},
"506": {
"name": "Fritz-Foerster-Platz",
"lat": 51.0301741,
"lon": 13.7307460
},
"552": {
"name": "Zellescher Weg",
"lat": 51.0284316,
"lon": 13.7459510
},
"604": {
"name": "Nürnberger/Budapester Str.",
"lat": 51.0369342,
"lon": 13.7157618
},
"606": {
"name": "Chemnitzer/Nöthritzer Str.",
"lat": 51.0292989,
"lon": 13.7071278
},
"651": {
"name": "Nürnberger Platz",
"lat": 51.0323243,
"lon": 13.7261459
},
"804": {
"name": "Tharandter/Kesselsdorfer Straße",
"lat": 51.0436693,
"lon": 13.7043013
},
"851": {
"name": "Löbtauer Straße/Fröbelstraße",
"lat": 51.0500279,
"lon": 13.7126293
},
"1101": {
"name": "Louisenstraße",
"lat": 51.0680048,
"lon": 13.7477077
},
"1102": {
"name": "Bischofsweg",
"lat": 51.0713760,
"lon": 13.7506816
},
"1103": {
"name": "Tannenstraße",
"lat": 51.0737276,
"lon": 13.7528442
},
"1151": {
"name": "Bischofsplatz",
"lat": 51.071993,
"lon": 13.746973
},
"1104": {
"name": "Staufenbergallee",
"lat": 51.0766329,
"lon": 13.7555318
},
"1202": {
"name": "LSA Bautzner Straße/Pulsnitzer",
"lat": 51.0633708,
"lon": 13.7578833
},
"1203": {
"name": "Pulsnitzer Straße",
"lat": 51.063314,
"lon": 13.757515
},
"1205": {
"name": "Diakonissenkrankenhaus",
"lat": 51.0641348,
"lon": 13.7621847
},
"1220": {
"name": "Nordstraße",
"lat": 51.0661350,
"lon": 13.7694067
},
"1301": {
"name": "Körnerplatz/Grundstr.",
"lat": 51.0539600,
"lon": 13.8150960
},
"1501": {
"name": "Hansastraße/Eisenbahnstraße",
"lat": 51.0657888,
"lon": 13.7381732
},
"3402": {
"name": "Dresden Johannisfriedhof",
"lat": 51.0368414,
"lon": 13.8125265
},
"408": {
"name": "Corinthstraße",
"lat": 51.0213106,
"lon": 13.7643742
},
"403": {
"name": "Stehlener Platz",
"lat": 51.0331333,
"lon": 13.7488785
},
"402": {
"name": "Gerhart-Hauptmann-Straße/Tiergartenstraße",
"lat": 51.0374158,
"lon": 13.7487953
},
"401": {
"name": "Lenneplatz",
"lat": 51.0380162,
"lon": 13.7474113
},
"121": {
"name": "Leneestraße/Gellerstraße",
"lat": 51.0383636,
"lon": 13.7466174
},
"123": {
"name": "Gret-Palucca-Straße",
"lat": 51.0389626,
"lon": 13.7394281
},
"501": {
"name": "Fritz-Löffler-Straße/Stehlener Straße",
"lat": 51.0389726,
"lon": 13.7332578
},
"192": {
"name": "Hauptbahnhof",
"lat": 51.0396540,
"lon": 13.7337835
},
"302": {
"name": "Comeniusplatz",
"lat": 51.0416777,
"lon": 13.7666030
},
"1504": {
"name": "Dresden Grossenhainer Platz",
"lat": 51.074117,
"lon": 13.738611
},
"1404": {
"name": "Dresden Grossenhainer Strasse / Frintz-Reuter-Strasse",
"lat": 51.075230,
"lon": 13.734514
},
"1270": {
"name": "Stauffenbergalle / Hans-Oster-Strasse",
"lat": 51.075896,
"lon": 13.757962
},
"1293": {
"name":"Hans-Oster-Strasse",
"lat": 51.074884,
"lon": 13.760771
},
"1257": {
"name":"Marienallee",
"lat": 51.073226,
"lon": 13.765502
},
"1271": {
"name":"Landesdirektion Sachsen",
"lat": 51.071685,
"lon": 13.770473
},
"1258": {
"name":"Waldschloesschenstrasse",
"lat": 51.069858,
"lon": 13.775674
},
"1206": {
"name":"Waldschloesschen",
"lat": 51.067329,
"lon": 13.776489
},
"1276": {
"name": "Jaegerpark Heideblick",
"lat": 51.070416,
"lon": 13.788827
},
"1301": {
"name": "Koernerplatz",
"lat": 51.054347,
"lon": 13.814161
},
"112": {
"name": "Rosa-Luxemburg-Platz",
"lat": 51.059115,
"lon": 13.752996
}
}

View File

@ -1,20 +1,55 @@
{
"nodes": {
"clicky-bunty-server": {
"click": {
"inputs": {
"naersk": "naersk",
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"stops": "stops",
"utils": "utils"
"utils": [
"dump-dvb",
"utils"
]
},
"locked": {
"lastModified": 1654709411,
"narHash": "sha256-SHat3Lez6RypS1n5msLnJhISwdeeIm+6uegCXnNEBo0=",
"lastModified": 1658183882,
"narHash": "sha256-pGyYUJix8ofkc5uDo2EqTUSPKwDQn03jDq14LcXWZcI=",
"owner": "dump-dvb",
"repo": "click",
"rev": "5c0a8e1f0bd773b7a1ba6682172198519098c3b6",
"type": "github"
},
"original": {
"owner": "dump-dvb",
"repo": "click",
"type": "github"
}
},
"clicky-bunty-server": {
"inputs": {
"naersk": [
"dump-dvb",
"naersk"
],
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"stops": [
"dump-dvb",
"stops-no-flake"
],
"utils": [
"dump-dvb",
"utils"
]
},
"locked": {
"lastModified": 1661029441,
"narHash": "sha256-p7bV2qqywGTMj5QauYpAgoW43b7rHiGiBuaifD1PLkE=",
"owner": "dump-dvb",
"repo": "clicky-bunty-server",
"rev": "0d1b844ac59fae6948e732eb3d75a7685ee9cbab",
"rev": "983f2a1b02865900586b263ad38eeeeb65e8b362",
"type": "github"
},
"original": {
@ -25,19 +60,29 @@
},
"data-accumulator": {
"inputs": {
"naersk": "naersk_2",
"naersk": [
"dump-dvb",
"naersk"
],
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"stops": "stops_2",
"utils": "utils_2"
"stops": [
"dump-dvb",
"stops-no-flake"
],
"utils": [
"dump-dvb",
"utils"
]
},
"locked": {
"lastModified": 1654117475,
"narHash": "sha256-3cfXx6rSTzw3ZuQGPe7afTI/oPnGZCHjt2MUwd8Yc+0=",
"lastModified": 1661029195,
"narHash": "sha256-JCcQtpkprD0d81ha2WIVOUH1+zQo6rPE2DPLPWzd2QQ=",
"owner": "dump-dvb",
"repo": "data-accumulator",
"rev": "390d5a5ac7fdb00b450db54fd3441f82768b1dfd",
"rev": "2492ea3e900575f7be9eb3c5d5ec42697a23fe15",
"type": "github"
},
"original": {
@ -48,19 +93,29 @@
},
"decode-server": {
"inputs": {
"naersk": "naersk_3",
"naersk": [
"dump-dvb",
"naersk"
],
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"stops": "stops_3",
"utils": "utils_3"
"stops": [
"dump-dvb",
"stops-no-flake"
],
"utils": [
"dump-dvb",
"utils"
]
},
"locked": {
"lastModified": 1653682460,
"narHash": "sha256-KoBboNOhtwTiJ7T7slegLjHQzgsyT6RwY+3m+vHiXyI=",
"lastModified": 1661029284,
"narHash": "sha256-Tj3HRFjhV1M27cr3lnNZgIpwcu1GZepLT3D+jl/5vrA=",
"owner": "dump-dvb",
"repo": "decode-server",
"rev": "d4d7111224b04a0bd1b6fb9de2d0a6ab3d521750",
"rev": "c795d64d7c070802cd61deca868a007d660fa86a",
"type": "github"
},
"original": {
@ -72,15 +127,16 @@
"docs": {
"inputs": {
"nixpkgs": [
"dump-dvb",
"nixpkgs"
]
},
"locked": {
"lastModified": 1654448662,
"narHash": "sha256-f41BFJ01ahKlin32z/cXOGW4lSawFoNUmFOlTk71aik=",
"lastModified": 1658401321,
"narHash": "sha256-nYkoOdszuWDpKmenSWUbVumH5W1GmJ2LlWBpcT/ar4w=",
"owner": "dump-dvb",
"repo": "documentation",
"rev": "5b0f44bfb5eda89c0b95c22744ec47ad4693db9a",
"rev": "f2c93b5e90822001b53749f771aef1d8eaec7b91",
"type": "github"
},
"original": {
@ -89,20 +145,77 @@
"type": "github"
}
},
"dump-dvb": {
"inputs": {
"click": "click",
"clicky-bunty-server": "clicky-bunty-server",
"data-accumulator": "data-accumulator",
"decode-server": "decode-server",
"docs": "docs",
"dvb-api": "dvb-api",
"funnel": "funnel",
"naersk": "naersk",
"nixpkgs": [
"nixpkgs"
],
"radio-conf": "radio-conf",
"stops": "stops",
"stops-no-flake": "stops-no-flake",
"utils": "utils",
"wartrammer": "wartrammer",
"windshield": "windshield"
},
"locked": {
"lastModified": 1661030421,
"narHash": "sha256-0ZtjIHz/+iSN1mDrcQC9isiMLndNpAuYd0NAbEtcpUA=",
"owner": "dump-dvb",
"repo": "dump-dvb.nix",
"rev": "b90f22ea7820ee66b41f945e2d85b1a311f4be5e",
"type": "github"
},
"original": {
"owner": "dump-dvb",
"repo": "dump-dvb.nix",
"type": "github"
}
},
"dump-dvb-rust": {
"flake": false,
"locked": {
"lastModified": 1660926193,
"narHash": "sha256-FPFXx3MKWgwSWju7gMgQrWvcTrddTHoB9ccQuI6A3m0=",
"owner": "dump-dvb",
"repo": "dump-dvb.rs",
"rev": "a21ff43262cb69ec6ee221d3dd3fca83b265c964",
"type": "github"
},
"original": {
"owner": "dump-dvb",
"repo": "dump-dvb.rs",
"type": "github"
}
},
"dvb-api": {
"inputs": {
"naersk": "naersk_4",
"naersk": [
"dump-dvb",
"naersk"
],
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"utils": "utils_4"
"utils": [
"dump-dvb",
"utils"
]
},
"locked": {
"lastModified": 1654707041,
"narHash": "sha256-sYhd0ODSjE0MpfmtKYZIAUElpc1DAoVt6ZD05J7TJJQ=",
"lastModified": 1661029053,
"narHash": "sha256-pEeJuK3ei7oWRM5oQEHUy6zpWM28HbNza8Bw/3UwU8w=",
"owner": "dump-dvb",
"repo": "dvb-api",
"rev": "7cbb17f234179ddb8a5f2251592f1a2d0c9ae2a2",
"rev": "2eb6f5c64fe172fee2df596bb9fbcf8a862fa63a",
"type": "github"
},
"original": {
@ -111,13 +224,36 @@
"type": "github"
}
},
"fenix": {
"inputs": {
"nixpkgs": [
"dump-dvb",
"stops",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1651732109,
"narHash": "sha256-W3GuTyMxswHGfaYTQ4Ajev6GxfDef8YyxyYbFgrfwNk=",
"owner": "nix-community",
"repo": "fenix",
"rev": "4b6dda7529e6d1d8d2ce43b7cb18efdefd5c4c3c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
@ -126,6 +262,32 @@
"type": "github"
}
},
"funnel": {
"inputs": {
"dump-dvb-rust": "dump-dvb-rust",
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"utils": [
"dump-dvb",
"utils"
]
},
"locked": {
"lastModified": 1661006543,
"narHash": "sha256-uRVmm3Mhl8oMcHrPd7pC3kMIyqm1T9hCRyp6b+iMUwI=",
"owner": "dump-dvb",
"repo": "funnel",
"rev": "4d5cd1b488789633d80fb0342d253d09fa5f122c",
"type": "github"
},
"original": {
"owner": "dump-dvb",
"repo": "funnel",
"type": "github"
}
},
"microvm": {
"inputs": {
"flake-utils": "flake-utils",
@ -134,11 +296,11 @@
]
},
"locked": {
"lastModified": 1657207009,
"narHash": "sha256-/bdumaIAEC3ugF8lTjZJxqfvpuGtEbWV4W1Ay1aLH2Y=",
"lastModified": 1661025286,
"narHash": "sha256-TL22ncW8Hryd2rzDaN4m0jISNmf4Ujq64XAtgSSOU6k=",
"owner": "astro",
"repo": "microvm.nix",
"rev": "11a91e22156ed60bcef4b650b68731ad40eafcd1",
"rev": "1fc540367ad8fc00c01603e1c7df9bf5fba0eff6",
"type": "github"
},
"original": {
@ -148,107 +310,18 @@
}
},
"naersk": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1653413650,
"narHash": "sha256-wojDHjb+eU80MPH+3HQaK0liUy8EgR95rvmCl24i58Y=",
"owner": "nix-community",
"repo": "naersk",
"rev": "69daaceebe12c070cd5ae69ba38f277bbf033695",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"naersk_2": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1653413650,
"narHash": "sha256-wojDHjb+eU80MPH+3HQaK0liUy8EgR95rvmCl24i58Y=",
"owner": "nix-community",
"repo": "naersk",
"rev": "69daaceebe12c070cd5ae69ba38f277bbf033695",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"naersk_3": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1653413650,
"narHash": "sha256-wojDHjb+eU80MPH+3HQaK0liUy8EgR95rvmCl24i58Y=",
"owner": "nix-community",
"repo": "naersk",
"rev": "69daaceebe12c070cd5ae69ba38f277bbf033695",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"naersk_4": {
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1652722411,
"narHash": "sha256-FxzNgYiH9c91hUVAntcjrqY//KOTUPP2a4e8Wyuysxg=",
"owner": "nix-community",
"repo": "naersk",
"rev": "94beb7a3edfeb3bcda65fa3f2ebc48ec6b40bf72",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"naersk_5": {
"inputs": {
"nixpkgs": [
"dump-dvb",
"nixpkgs"
]
},
"locked": {
"lastModified": 1654608517,
"narHash": "sha256-KIxHjDDJYhoiLanLjpeAk5AuZsfip8M62JhkuloEGb0=",
"lastModified": 1659610603,
"narHash": "sha256-LYgASYSPYo7O71WfeUOaEUzYfzuXm8c8eavJcel+pfI=",
"owner": "nix-community",
"repo": "naersk",
"rev": "14997a79cd78fe34ad6390f18a327ee0593e5eec",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"naersk_6": {
"inputs": {
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1652722411,
"narHash": "sha256-FxzNgYiH9c91hUVAntcjrqY//KOTUPP2a4e8Wyuysxg=",
"owner": "nix-community",
"repo": "naersk",
"rev": "94beb7a3edfeb3bcda65fa3f2ebc48ec6b40bf72",
"rev": "c6a45e4277fa58abd524681466d3450f896dc094",
"type": "github"
},
"original": {
@ -259,99 +332,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1653326962,
"narHash": "sha256-W8feCYqKTsMre4nAEpv5Kx1PVFC+hao/LwqtB2Wci/8=",
"lastModified": 1660926553,
"narHash": "sha256-19Ib1b7Ny+yGhnxwnH1KhhB2hvALuNuqevA6XzqkQmo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "41cc1d5d9584103be4108c1815c350e07c807036",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs-21_11": {
"locked": {
"lastModified": 1654346688,
"narHash": "sha256-Y7QtZkfdxTvACCvWmDjpN6qOf4OKkZATufHcJP2VMKM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2de556c4cd46a59e8ce2f85ee4dd400983213d45",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-21.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-22_05": {
"locked": {
"lastModified": 1654373220,
"narHash": "sha256-3vKFnZz2oYHo4YcelaNOhO4XQ2jiIEXrp1s4w+e773c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d6cb04299ce8964290ae7fdcb87aa50da0500b5c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-22.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1653326962,
"narHash": "sha256-W8feCYqKTsMre4nAEpv5Kx1PVFC+hao/LwqtB2Wci/8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "41cc1d5d9584103be4108c1815c350e07c807036",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1653326962,
"narHash": "sha256-W8feCYqKTsMre4nAEpv5Kx1PVFC+hao/LwqtB2Wci/8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "41cc1d5d9584103be4108c1815c350e07c807036",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1652840887,
"narHash": "sha256-gEK4NNa4GwIgTZE63kt/4WTFAWRTJVSa30+h4ZjFh9U=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "52dc75a4fee3fdbcb792cb6fba009876b912bfe0",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1654622265,
"narHash": "sha256-AltUA8bPbXeRgzcDhQEURVHqQhTByxk6Xtgf+CYmEFk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "11e805f9935f6ab4b049351ac14f2d1aa93cf1d3",
"rev": "00e376e3f3c22d991052dfeaf154c42b09deeb29",
"type": "github"
},
"original": {
@ -361,33 +346,39 @@
"type": "github"
}
},
"nixpkgs_6": {
"nixpkgs-22_05": {
"locked": {
"lastModified": 1652840887,
"narHash": "sha256-gEK4NNa4GwIgTZE63kt/4WTFAWRTJVSa30+h4ZjFh9U=",
"lastModified": 1660410996,
"narHash": "sha256-arkfX1YYFmwMyDTCguzoOI4epABC41FGQU4J1/G3/9M=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "52dc75a4fee3fdbcb792cb6fba009876b912bfe0",
"rev": "70b6236f3cbc815f2cae8d597418c714cf83d1c8",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
"owner": "NixOS",
"ref": "release-22.05",
"repo": "nixpkgs",
"type": "github"
}
},
"radio-conf": {
"inputs": {
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"utils": "utils_5"
"utils": [
"dump-dvb",
"utils"
]
},
"locked": {
"lastModified": 1654440596,
"narHash": "sha256-Xem2DT3F6mWQF8up3Dm+wjY4r1t4aRr7SK/uq1yrcAg=",
"lastModified": 1658420111,
"narHash": "sha256-e+jPDYoiouTk15CNedhdN1dC6x/QGv6TwVLPsjRTJI8=",
"owner": "dump-dvb",
"repo": "radio-conf",
"rev": "8a1392e1be56270cd9a20cb60e3b0830740f4dff",
"rev": "b30cedd3f6eec77430a8298a253854bede33b4ed",
"type": "github"
},
"original": {
@ -398,19 +389,27 @@
},
"root": {
"inputs": {
"clicky-bunty-server": "clicky-bunty-server",
"data-accumulator": "data-accumulator",
"decode-server": "decode-server",
"docs": "docs",
"dvb-api": "dvb-api",
"dump-dvb": "dump-dvb",
"microvm": "microvm",
"naersk": "naersk_5",
"nixpkgs": "nixpkgs_5",
"radio-conf": "radio-conf",
"sops-nix": "sops-nix",
"stops": "stops_4",
"wartrammer": "wartrammer",
"windshield": "windshield"
"nixpkgs": "nixpkgs",
"sops-nix": "sops-nix"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1651656737,
"narHash": "sha256-+nc9Rrc1PBGAx2jXV57Af8WL4nQTTNGX2fp63YD7ynU=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "1f709d54463972b189a3120be4073c507f2fbc00",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"sops-nix": {
@ -418,15 +417,14 @@
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-21_11": "nixpkgs-21_11",
"nixpkgs-22_05": "nixpkgs-22_05"
},
"locked": {
"lastModified": 1654401128,
"narHash": "sha256-uCdQ2fzIPGakHw2TkvOncUvCl7Fo7z/vagpDWYooO7s=",
"lastModified": 1660540143,
"narHash": "sha256-oqeOdJH0ey/UyG1G31BV6Lk8qjI+VKboTpTJB317OhM=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "f075361ecbde21535b38e41dfaa28a28f160855c",
"rev": "773365016f5202a199f5aff72cac75c64add4528",
"type": "github"
},
"original": {
@ -436,13 +434,27 @@
}
},
"stops": {
"flake": false,
"inputs": {
"fenix": "fenix",
"naersk": [
"dump-dvb",
"naersk"
],
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"utils": [
"dump-dvb",
"utils"
]
},
"locked": {
"lastModified": 1652912878,
"narHash": "sha256-HexjCe/egqPy+pgJniQB+EgFc04lH0HCuZ7kNzRsBJU=",
"lastModified": 1660735706,
"narHash": "sha256-7z3NA6J+dRoHYFxn/yddADDTEjXa9yhV9y9a94mDq9A=",
"owner": "dump-dvb",
"repo": "stop-names",
"rev": "17c22c4d4908f08166e7a737abc65dee5d46dcc4",
"rev": "1c48780a2491bfdeaf669c86cb4b979f1f1b9cc9",
"type": "github"
},
"original": {
@ -451,46 +463,14 @@
"type": "github"
}
},
"stops_2": {
"stops-no-flake": {
"flake": false,
"locked": {
"lastModified": 1652912878,
"narHash": "sha256-HexjCe/egqPy+pgJniQB+EgFc04lH0HCuZ7kNzRsBJU=",
"lastModified": 1660735706,
"narHash": "sha256-7z3NA6J+dRoHYFxn/yddADDTEjXa9yhV9y9a94mDq9A=",
"owner": "dump-dvb",
"repo": "stop-names",
"rev": "17c22c4d4908f08166e7a737abc65dee5d46dcc4",
"type": "github"
},
"original": {
"owner": "dump-dvb",
"repo": "stop-names",
"type": "github"
}
},
"stops_3": {
"flake": false,
"locked": {
"lastModified": 1652912878,
"narHash": "sha256-HexjCe/egqPy+pgJniQB+EgFc04lH0HCuZ7kNzRsBJU=",
"owner": "dump-dvb",
"repo": "stop-names",
"rev": "17c22c4d4908f08166e7a737abc65dee5d46dcc4",
"type": "github"
},
"original": {
"owner": "dump-dvb",
"repo": "stop-names",
"type": "github"
}
},
"stops_4": {
"flake": false,
"locked": {
"lastModified": 1652912878,
"narHash": "sha256-HexjCe/egqPy+pgJniQB+EgFc04lH0HCuZ7kNzRsBJU=",
"owner": "dump-dvb",
"repo": "stop-names",
"rev": "17c22c4d4908f08166e7a737abc65dee5d46dcc4",
"rev": "1c48780a2491bfdeaf669c86cb4b979f1f1b9cc9",
"type": "github"
},
"original": {
@ -501,101 +481,11 @@
},
"utils": {
"locked": {
"lastModified": 1652776076,
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_2": {
"locked": {
"lastModified": 1652776076,
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_3": {
"locked": {
"lastModified": 1652776076,
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_4": {
"locked": {
"lastModified": 1652776076,
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_5": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_6": {
"locked": {
"lastModified": 1652776076,
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_7": {
"locked": {
"lastModified": 1649676176,
"narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
@ -606,18 +496,25 @@
},
"wartrammer": {
"inputs": {
"naersk": "naersk_6",
"naersk": [
"dump-dvb",
"naersk"
],
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"utils": "utils_6"
"utils": [
"dump-dvb",
"utils"
]
},
"locked": {
"lastModified": 1653046795,
"narHash": "sha256-RAyibDtiN4Mkq0rqc3dLlu1WbimiJUCQO+YmTY/LwvQ=",
"lastModified": 1661029389,
"narHash": "sha256-4VvHymHR/1LthzVnCKuUCoTT1YE/3EScfH/mv76r/cY=",
"owner": "dump-dvb",
"repo": "wartrammer-40k",
"rev": "b6e8fca267fdcd207f39b6c2318c007f73f962d8",
"rev": "5b1841bf91a0a0be210cd64e57e4f9bc2dbf6879",
"type": "github"
},
"original": {
@ -629,16 +526,20 @@
"windshield": {
"inputs": {
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"utils": "utils_7"
"utils": [
"dump-dvb",
"utils"
]
},
"locked": {
"lastModified": 1653517562,
"narHash": "sha256-e8NvJnAJx7NHropu22frUaV0AnQswb9B81zfwILFsUs=",
"lastModified": 1661009326,
"narHash": "sha256-k5/18j5Nsw+lotVLMePhOr5XbIG39nQ/iURQdOJHF2U=",
"owner": "dump-dvb",
"repo": "windshield",
"rev": "9dd262e10674ebffe0c9c9398c6cd639231f165c",
"rev": "224d4c0ab0f98ccaed873f59b50c070f72565576",
"type": "github"
},
"original": {

116
flake.nix
View File

@ -1,9 +1,7 @@
{
inputs = {
nixpkgs.url = github:NixOS/nixpkgs/nixos-22.05;
naersk = {
url = github:nix-community/naersk;
dump-dvb = {
url = github:dump-dvb/dump-dvb.nix;
inputs.nixpkgs.follows = "nixpkgs";
};
@ -12,50 +10,7 @@
inputs.nixpkgs.follows = "nixpkgs";
};
radio-conf = {
url = github:dump-dvb/radio-conf;
inputs.nixpkgs.follows = "nixpkgs";
};
data-accumulator = {
url = github:dump-dvb/data-accumulator;
inputs.nixpkgs.follows = "nixpkgs";
};
decode-server = {
url = github:dump-dvb/decode-server;
inputs.nixpkgs.follows = "nixpkgs";
};
dvb-api = {
url = github:dump-dvb/dvb-api;
inputs.nixpkgs.follows = "nixpkgs";
};
stops = {
url = github:dump-dvb/stop-names;
flake = false;
};
windshield = {
url = github:dump-dvb/windshield;
inputs.nixpkgs.follows = "nixpkgs";
};
docs = {
url = github:dump-dvb/documentation;
inputs.nixpkgs.follows = "nixpkgs";
};
wartrammer = {
url = github:dump-dvb/wartrammer-40k;
inputs.nixpkgs.follows = "nixpkgs";
};
clicky-bunty-server = {
url = github:dump-dvb/clicky-bunty-server;
inputs.nixpkgs.follows = "nixpkgs";
};
nixpkgs.url = github:NixOS/nixpkgs/nixos-22.05;
sops-nix = {
url = github:Mic92/sops-nix;
@ -63,35 +18,28 @@
};
};
outputs = { self, nixpkgs, naersk, microvm, radio-conf, data-accumulator, decode-server, dvb-api, stops, windshield, docs, wartrammer, clicky-bunty-server, sops-nix, ... }@inputs:
outputs =
inputs@{ self
, dump-dvb
, microvm
, nixpkgs
, sops-nix
, ...
}:
let
pkgs = nixpkgs.legacyPackages."x86_64-linux";
lib = pkgs.lib;
data-hoarder-modules = [
./modules/base.nix
./modules/options.nix
./modules/data-hoarder/data-accumulator.nix
./modules/data-hoarder/nginx.nix
./modules/data-hoarder/public_api.nix
./modules/data-hoarder/map.nix
./modules/data-hoarder/file_sharing.nix
./modules/data-hoarder/grafana.nix
./modules/data-hoarder/website.nix
./modules/data-hoarder/documentation.nix
./modules/data-hoarder/clicky-bunty.nix
./modules/data-hoarder/secrets.nix
./modules/data-hoarder
./modules/dump-dvb
sops-nix.nixosModules.sops
dump-dvb.nixosModules.default
{
nixpkgs.overlays = [
data-accumulator.overlay."x86_64-linux"
dvb-api.overlay."x86_64-linux"
windshield.overlay."x86_64-linux"
docs.overlay."x86_64-linux"
clicky-bunty-server.overlay."x86_64-linux"
dump-dvb.overlays.default
];
dvb-dump.stopsJson = "${stops}/stops.json";
dvb-dump.graphJson = "${stops}/graph.json";
}
];
@ -121,18 +69,20 @@
modules = [
diskModule
sops-nix.nixosModules.sops
dump-dvb.nixosModules.default
./hosts/traffic-stop-boxes/configuration.nix
./hosts/traffic-stop-boxes/hardware-configuration.nix
./hardware/configuration-dell-wyse-3040.nix
./modules/base.nix
./modules/options.nix
./modules/traffic-stop-boxes/gnuradio.nix
./modules/traffic-stop-boxes/radio_wireguard_client.nix
./modules/traffic-stop-boxes/secrets.nix
./modules/traffic-stop-boxes/radio-config.nix
./modules/dump-dvb
{
nixpkgs.overlays = [ radio-conf.overlay."x86_64-linux" decode-server.overlay."x86_64-linux" ];
dvb-dump.systemNumber = number;
dvb-dump.stopsJson = "${stops}/stops.json";
nixpkgs.overlays = [
dump-dvb.overlays.default
];
dump-dvb.systemNumber = number;
}
];
};
@ -146,6 +96,7 @@
stop_boxes = nixpkgs.lib.foldl (x: y: nixpkgs.lib.mergeAttrs x (generate_system y)) { } id_list;
packages = {
default = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
traffic-stop-box = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
staging-data-hoarder = self.nixosConfigurations.staging-data-hoarder.config.system.build.vm;
data-hoarder = self.nixosConfigurations.data-hoarder.config.system.build.vm;
@ -156,7 +107,6 @@
} // (import ./pkgs/deployment.nix { inherit self pkgs; systems = stop_boxes; });
in
{
defaultPackage."x86_64-linux" = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
packages."x86_64-linux" = packages;
nixosConfigurations = stop_boxes // {
@ -165,22 +115,16 @@
specialArgs = { inherit inputs; };
modules = [
diskModule
dump-dvb.nixosModules.default
./hosts/mobile-box/configuration.nix
./hosts/mobile-box/hardware-configuration.nix
./hardware/configuration-dell-wyse-3040.nix
./modules/base.nix
./modules/options.nix
./modules/traffic-stop-boxes/mobile-box.nix
./modules/traffic-stop-boxes/mobile-box-dresden.nix
./modules/dump-dvb
sops-nix.nixosModules.sops
{
nixpkgs.overlays = [
radio-conf.overlay."x86_64-linux"
decode-server.overlay."x86_64-linux"
data-accumulator.overlay."x86_64-linux"
wartrammer.overlay."x86_64-linux"
];
dvb-dump.stopsJson = "${stops}/stops.json";
dvb-dump.systemNumber = 130;
dump-dvb.telegramDecoder.configFile = "${self}/configs/mobile_box.json";
}
];
};
@ -188,6 +132,7 @@
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
microvm.nixosModules.microvm
./hosts/data-hoarder/configuration.nix
./modules/data-hoarder/wireguard_server.nix
microvm.nixosModules.microvm
@ -199,6 +144,9 @@
modules = [
./hosts/staging/configuration.nix
microvm.nixosModules.microvm
{
environment.systemPackages = with pkgs; [ tcpdump ];
}
] ++ data-hoarder-modules;
};
};
@ -212,5 +160,5 @@
mobile-box-disk."x86_64-linux" = self.nixosConfigurations.mobile-box.config.system.build.diskImage;
sops-binaries."x86_64-linux" = sops-nix.packages."x86_64-linux".sops-install-secrets;
};
};
};
}

View File

@ -1,4 +1,4 @@
{ config, pkgs, inputs, ... }:
{ ... }:
{
# The global useDHCP flag is deprecated, therefore explicitly set to false here.

View File

@ -0,0 +1,28 @@
{ lib, pkgs, ... }:
{
imports = [
];
boot = {
loader = {
grub.enable = false;
raspberryPi = {
enable = true;
version = 4;
};
};
kernelPackages = pkgs.linuxPackages_latest;
# No ZFS on latest kernel:
supportedFilesystems = lib.mkForce [ "vfat" "ext4" ];
};
# sdImage = {
# compressImage = false;
# imageBaseName = config.networking.hostName;
# firmwareSize = 512;
# };
networking.useDHCP = false;
networking.interfaces.eth0.useDHCP = true;
}

View File

@ -2,42 +2,39 @@
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, inputs, ... }:
{
microvm = {
vcpu = 4;
mem = 4096;
hypervisor = "cloud-hypervisor";
socket = "${config.networking.hostName}.socket";
interfaces = [{
mem = 4096;
vcpu = 8;
interfaces = [ {
type = "tap";
id = "serv-dvb-dh";
mac = "00:de:5b:f9:e3:3e";
}];
shares = [{
source = "/nix/store";
mountPoint = "/nix/.ro-store";
tag = "store";
proto = "virtiofs";
socket = "store.socket";
}
id = "serv-dvb-prod";
mac = "02:db:db:db:db:db";
} ];
shares = [
{
source = "/nix/store";
mountPoint = "/nix/.ro-store";
tag = "store";
proto = "virtiofs";
socket = "store.socket";
}
{
source = "/var/lib/microvms/data-hoarder/etc";
mountPoint = "/etc";
tag = "etc";
proto = "virtiofs";
socket = "etc.socket";
}
}
{
source = "/var/lib/microvms/data-hoarder/var";
mountPoint = "/var";
tag = "var";
proto = "virtiofs";
socket = "var.socket";
}];
}
];
};
networking.hostName = "data-hoarder"; # Define your hostname.
@ -46,21 +43,19 @@
time.timeZone = "Europe/Berlin";
networking.interfaces.eth0 = {
useDHCP = false;
ipv4.addresses = [{
address = "172.20.73.69";
prefixLength = 25;
}];
ipv4.addresses = [
{
address = "172.20.73.69";
prefixLength = 25;
}
];
};
environment.systemPackages = with pkgs; [ influxdb ];
networking.defaultGateway = "172.20.73.1";
networking.nameservers = [ "172.20.73.8" "9.9.9.9" ];
sops.defaultSopsFile = ../../secrets/data-hoarder/secrets.yaml;
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ 80 443 22 51820 ];
networking.firewall.trustedInterfaces = [ "wg-dvb" ];

View File

@ -1,4 +1,4 @@
{ config, pkgs, inputs, ... }:
{ ... }:
{
boot.tmpOnTmpfs = true;
@ -12,6 +12,7 @@
time.timeZone = "Europe/Berlin";
documentation.enable = false;
documentation.nixos.enable = false;
nix = {
buildCores = 1;

View File

@ -0,0 +1,6 @@
{
imports = [
./configuration.nix
./hardware-configuration.nix
];
}

View File

@ -1,7 +1,7 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ config, lib, modulesPath, ... }:
{
imports =
@ -18,6 +18,7 @@
{
device = "/dev/disk/by-label/nixos";
fsType = "ext4";
autoResize = true;
};
fileSystems."/boot" =

View File

@ -2,7 +2,7 @@
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, inputs, ... }:
{ config, pkgs, ... }:
{
microvm = {
@ -13,7 +13,7 @@
interfaces = [{
type = "tap";
id = "staging-dh";
id = "serv-dvb-stag";
mac = "00:de:5b:f9:e2:3d";
}];
@ -67,7 +67,7 @@
# Or disable the firewall altogether.
networking.firewall.enable = true;
dvb-dump.domain = "staging.dvb.solutions";
dump-dvb.domain = "staging.dvb.solutions";
networking.wg-quick.interfaces.wg-dvb = {
address = [ "10.13.37.5/32" ];
privateKeyFile = config.sops.secrets.wg-seckey.path;

View File

@ -1,17 +1,15 @@
{ config, pkgs, inputs, ... }:
{ config, ... }:
{
boot.tmpOnTmpfs = true;
hardware.hackrf.enable = true;
hardware.rtl-sdr.enable = true;
networking.hostName = "traffic-stop-box-${toString config.dvb-dump.systemNumber}"; # Define your hostname.
networking.hostName = "traffic-stop-box-${toString config.dump-dvb.systemNumber}"; # Define your hostname.
# Set your time zone.
time.timeZone = "Europe/Berlin";
documentation.enable = false;
documentation.nixos.enable = false;
nix = {
buildCores = 1;

View File

@ -1,7 +1,7 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ config, lib, modulesPath, ... }:
{
imports =

View File

@ -1,5 +1,4 @@
{ pkgs, config, ... }:
{ pkgs, ... }:
{
nix = {
package = pkgs.nixFlakes;
@ -7,17 +6,8 @@
experimental-features = nix-command flakes
'';
autoOptimiseStore = true;
binaryCaches = [
"https://dump-dvb.cachix.org"
"https://nix-serve.hq.c3d2.de"
];
binaryCachePublicKeys = [
"dump-dvb.cachix.org-1:+Dq7gqpQG4YlLA2X3xJsG1v3BrlUGGpVtUKWk0dTyUU="
"nix-serve.hq.c3d2.de:KZRGGnwOYzys6pxgM8jlur36RmkJQ/y8y62e52fj1ps="
];
};
# Select internationalisation properties.
console = {
font = "Lat2-Terminus16";
keyMap = "uk";
@ -30,6 +20,24 @@
"C.UTF-8/UTF-8"
];
environment.systemPackages = with pkgs; [
git
htop
tmux
(vim_configurable.override {
guiSupport = false;
luaSupport = false;
perlSupport = false;
pythonSupport = false;
rubySupport = false;
cscopeSupport = false;
netbeansSupport = false;
})
wget
git-crypt
iftop
];
users.users.root = {
openssh.authorizedKeys.keyFiles = [
../keys/ssh/revol-xut
@ -40,23 +48,19 @@
../keys/ssh/astro
];
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
git
htop
tmux
(vim_configurable.override { guiSupport = false; luaSupport = false; perlSupport = false; pythonSupport = false; rubySupport = false; cscopeSupport = false; netbeansSupport = false; })
wget
git-crypt
iftop
];
# Enable the OpenSSH daemon.
services.openssh = {
enable = true;
permitRootLogin = "prohibit-password";
passwordAuthentication = false;
};
programs.mosh.enable = true;
users.motd = ''
_._ _,-'""`-._
(,-.`._,'( |\`-/| Be vewy vewy quiet!
`-.-' \ )-`( , o o) We're hunting tewegwams!
`- \`_`"'-
'';
dump-dvb.stopsJson = "${pkgs.stops}/json/stops.json";
dump-dvb.graphJson = "${pkgs.stops}/json/graph.json";
}

View File

@ -0,0 +1,13 @@
{ pkgs, config, ... }: {
services.nginx = {
enable = true;
virtualHosts."click.${config.dump-dvb.domain}" = {
enableACME = true;
forceSSL = true;
locations."/" = {
root = "${pkgs.click}/web/";
index = "index.html";
};
};
};
}

View File

@ -1,80 +1,32 @@
/*
This file contains the configuration for the gnuradio sdr decoding pipeline
*/
{ pkgs, config, lib, ... }:
let
port = 8070;
in
{
systemd = {
services = {
"clicky-bunty-server" = {
enable = true;
description = "dvbdump managment service";
requires = [ "influxdb.service" ];
after = [ "influxdb.service" ];
wantedBy = [ "multi-user.target" ];
script = ''
export RUST_BACKTRACE=FULL
export SALT_PATH=${config.sops.secrets.postgres_password_hash_salt.path}
export POSTGRES_PASSWORD=$(cat ${config.sops.secrets.postgres_password.path})
exec ${pkgs.clicky-bunty-server}/bin/clicky-bunty-server --host 127.0.0.1 --port ${toString port}&
'';
environment = {
"POSTGRES_HOST" = "127.0.0.1";
"POSTGRES_PORT" = "5432";
};
serviceConfig = {
Type = "forking";
User = "clicky-bunty-server";
Restart = "always";
};
};
"pg-dvbdump-setup" = {
description = "prepare dvbdump postgres database";
wantedBy = [ "multi-user.target" ];
after = [ "networking.target" "postgresql.service" ];
serviceConfig.Type = "oneshot";
path = [ pkgs.sudo config.services.postgresql.package ];
script = ''
sudo -u ${config.services.postgresql.superUser} psql -c "ALTER ROLE dvbdump WITH PASSWORD '$(cat ${config.sops.secrets.postgres_password.path})'"
'';
};
};
{ config, ... }: {
dump-dvb.clickyBuntyServer = {
enable = true;
host = "127.0.0.1";
port = 8070;
postgresHost = "127.0.0.1";
postgresPort = config.services.postgresql.port;
postgresPasswordFile = config.sops.secrets.postgres_password_dvbdump.path;
saltFile = config.sops.secrets.postgres_password_hash_salt.path;
user = "clicky-bunty-server";
group = config.users.groups.postgres-dvbdump.name;
};
systemd.services."clicky-bunty-server" = {
after = [ "postgresql.service" ];
wants = [ "postgresql.service" ];
};
services = {
postgresql = {
port = 5432;
enable = true;
ensureUsers = [
{
name = "dvbdump";
ensurePermissions = {
"DATABASE dvbdump" = "ALL PRIVILEGES";
};
}
];
ensureDatabases = [
"dvbdump"
];
};
nginx = {
enable = true;
recommendedProxySettings = true;
virtualHosts = {
"management-backend.${config.dvb-dump.domain}" = {
"management-backend.${config.dump-dvb.domain}" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
proxyPass = "http://127.0.0.1:${toString port}/";
proxyPass = with config.dump-dvb.clickyBuntyServer; "http://${host}:${toString port}/";
proxyWebsockets = true;
};
};
@ -82,14 +34,4 @@ in
};
};
};
# user accounts for systemd units
users.users = {
clicky-bunty-server = {
name = "clicky-bunty-server";
description = "";
isNormalUser = true;
};
};
}

View File

@ -1,50 +1,31 @@
/*
This file contains the configuration for the gnuradio sdr decoding pipeline
*/
{ pkgs, config, lib, ... }: {
systemd = {
services = {
"data-accumulator" = {
enable = true;
requires = [ "influxdb.service" ];
after = [ "influxdb.service" ];
wantedBy = [ "multi-user.target" ];
script = ''
exec ${pkgs.data-accumulator}/bin/data-accumulator --host 0.0.0.0 --port 8080&
'';
environment = {
"INFLUX_HOST" = "http://localhost:8086";
"GRPC_HOST" = "http://127.0.0.1:50051";
};
serviceConfig = {
Type = "forking";
User = "data-accumulator";
Restart = "always";
};
};
"influxdb" = {
serviceConfig = {
Restart = lib.mkForce "always";
};
};
{ config, ... }:
{
dump-dvb.dataAccumulator = {
enable = true;
host = "0.0.0.0";
port = 8080;
DB = {
backend = "POSTGRES";
host = "127.0.0.1";
port = config.services.postgresql.port;
telegramsPasswordFile = config.sops.secrets.postgres_password_telegrams.path;
dvbPasswordFile = config.sops.secrets.postgres_password_dvbdump.path;
};
GRPC = [
{
name = "FUNNEL";
host = config.dump-dvb.funnel.GRPC.host;
port = config.dump-dvb.funnel.GRPC.port;
}
{
name = "API";
host = config.dump-dvb.api.GRPC.host;
port = config.dump-dvb.api.GRPC.port;
}
];
};
services = {
influxdb = {
enable = true;
};
};
# user accounts for systemd units
users.users = {
data-accumulator = {
name = "data-accumulator";
description = "";
isNormalUser = true;
};
systemd.services."data-accumulator" = {
after = [ "postgresql.service" ];
wants = [ "postgresql.service" ];
};
}

View File

@ -0,0 +1,17 @@
{
imports = [
./click.nix
./clicky-bunty.nix
./data-accumulator.nix
./documentation.nix
./dvb-api.nix
./file_sharing.nix
./grafana.nix
./map.nix
./nginx.nix
./postgres.nix
./secrets.nix
./socket.nix
./website.nix
];
}

View File

@ -1,10 +1,10 @@
{ pkgs, lib, config, ... }: {
{ pkgs, config, ... }: {
services = {
nginx = {
enable = true;
recommendedProxySettings = true;
virtualHosts = {
"docs.${config.dvb-dump.domain}" = {
"docs.${config.dump-dvb.domain}" = {
enableACME = true;
forceSSL = true;
locations = {

View File

@ -0,0 +1,35 @@
{ config, ... }:
let
service_number = 1;
in {
dump-dvb.api = {
enable = true;
GRPC = {
host = "127.0.0.1";
port = 50050 + service_number;
};
port = 9000 + service_number;
graphFile = config.dump-dvb.graphJson;
stopsFile = config.dump-dvb.stopsJson;
};
services = {
nginx = {
enable = true;
recommendedProxySettings = true;
virtualHosts = {
"api.${config.dump-dvb.domain}" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
proxyPass = with config.dump-dvb.api; "http://127.0.0.1:${toString port}/";
proxyWebsockets = true;
};
};
};
};
};
};
}

View File

@ -1,10 +1,10 @@
{ pkgs, lib, config, ... }: {
{ config, ... }: {
services = {
nginx = {
enable = true;
recommendedProxySettings = true;
virtualHosts = {
"files.${config.dvb-dump.domain}" = {
"files.${config.dump-dvb.domain}" = {
enableACME = true;
forceSSL = true;
root = "/var/lib/data-accumulator/";
@ -14,30 +14,5 @@
};
};
};
cron = {
enable = true;
systemCronJobs = [
"0 0 0 * * cd /var/lib/data-accumulator/ && cp ./formatted.csv ./data/$(date +\"%d-%m-%Y\")-raw-data.csv"
];
};
};
systemd.services.dump-csv = {
path = with pkgs; [ influxdb gzip ];
script = ''
cd /tmp
TMPFILE=$(mktemp telegrams.XXXXX.csv.gz)
TIMESTAMP=$(date +"%Y%m%d-%H%M")
influx -precision rfc3339 -database dvbdump -execute "SELECT * FROM telegram_r_09 WHERE time > now()-1h" -format csv | gzip -c > $TMPFILE
chmod a+r $TMPFILE
mv $TMPFILE /var/lib/data-accumulator/data/telegrams-''${TIMESTAMP}.csv.gz
'';
};
systemd.timers.dump-csv = {
partOf = [ "dump-csv.service" ];
wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = "hourly";
};
}

View File

@ -1,4 +1,4 @@
{ pkgs, config, lib, ... }: {
{ config, lib, ... }: {
services = {
# metrics collector
@ -54,7 +54,7 @@
params = { module = [ "http_2xx" ]; };
static_configs = [{
targets = [
"api.${config.dvb-dump.domain}"
"api.${config.dump-dvb.domain}"
];
}];
relabel_configs = [
@ -82,7 +82,7 @@
# visualizer
grafana = {
enable = true;
domain = "monitoring.${config.dvb-dump.domain}";
domain = "monitoring.${config.dump-dvb.domain}";
port = 2342;
addr = "127.0.0.1";

View File

@ -1,17 +1,27 @@
{ pkgs, config, lib, ... }: {
{ pkgs, config, ... }: {
services = {
nginx = {
enable = true;
recommendedProxySettings = true;
virtualHosts = {
"map.${config.dvb-dump.domain}" = {
"map.${config.dump-dvb.domain}" = {
forceSSL = true;
enableACME = true;
extraConfig = ''
autoindex on;
'';
locations = {
"/" = {
root = if (config.dvb-dump.domain == "dvb.solutions") then "${pkgs.windshield}/bin/" else "${pkgs.windshield-staging}/bin/";
root = if (config.dump-dvb.domain == "dvb.solutions") then "${pkgs.windshield}/bin/" else "${pkgs.windshield-staging}/bin/";
index = "index.html";
};
"/stops.json" = {
root = "${pkgs.stops}/json";
};
"/graph.json" = {
root = "${pkgs.stops}/json";
};
};
};
};

View File

@ -1,4 +1,4 @@
{ pkgs, config, lib, ... }: {
{ ... }: {
security.acme.acceptTerms = true;
security.acme.defaults.email = "dump-dvb@protonmail.com";
services.nginx = {

View File

@ -0,0 +1,80 @@
{ pkgs, config, ... }: {
services.postgresql = {
enable = true;
port = 5432;
package = pkgs.postgresql_14;
initialScript = pkgs.writeText "dvbdump-initScript" ''
CREATE DATABASE dvbdump;
CREATE USER dvbdump;
GRANT ALL PRIVILEGES ON DATABASE dvbdump TO dvbdump;
ALTER ROLE dvbdump WITH PASSWORD '$(cat ${config.sops.secrets.postgres_password_dvbdump.path})';
CREATE DATABASE telegrams;
CREATE USER telegrams;
GRANT ALL PRIVILEGES ON DATABASE telegrams TO telegrams;
ALTER ROLE telegrams WITH PASSWORD '$(cat ${config.sops.secrets.postgres_password_telegrams.path})';
CREATE USER grafana;
GRANT CONNECT ON DATABASE telegrams TO grafana;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO grafana;
ALTER ROLE grafana WITH PASSWORD '$(cat ${config.sops.secrets.postgres_password_grafana.path})';
\c telegrams
create table r09_telegrams (
id serial8 primary key not null,
time timestamp not null,
station UUID not null,
region integer not null,
telegram_type int8 not null,
delay int,
reporting_point int not null,
junction int not null,
direction int2 not null,
request_status int2 not null,
priority int2,
direction_request int2,
line int,
run_number int,
destination_number int,
train_length int2,
vehicle_number int,
operator int2
);
ALTER TABLE r09_telegrams OWNER TO telegrams;
create table raw_telegrams (
id serial8 primary key not null,
time timestamp not null,
station UUID not null,
region integer not null,
telegram_type int8 not null,
data bytea not null
);
ALTER TABLE raw_telegrams OWNER TO telegrams;
'';
};
systemd.services.dump-csv = {
path = [ config.services.postgresql.package ];
serviceConfig = {
User = "postgres";
};
script = ''
TMPFILE=$(mktemp)
psql -d telegrams -c "COPY (SELECT id, to_char(time::timestamp at time zone 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS') time, station, region, telegram_type, delay, reporting_point, junction, direction, request_status, priority, direction_request, line, run_number, destination_number, train_length, vehicle_number, operator FROM r09_telegrams) TO '$TMPFILE' DELIMITER ',' HEADER CSV;"
mv $TMPFILE /var/lib/data-accumulator/telegram-dump.csv
chmod a+r /var/lib/data-accumulator/telegram-dump.csv
'';
};
systemd.timers.dump-csv = {
partOf = [ "dump-csv.service" ];
wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = "hourly";
};
}

View File

@ -1,64 +0,0 @@
{ pkgs, config, lib, ... }: {
systemd = {
services = {
"dvb-api" = {
enable = true;
wantedBy = [ "multi-user.target" ];
script = "exec ${pkgs.dvb-api}/bin/dvb-api &";
environment = {
"GRPC_HOST" = "127.0.0.1:50051";
"DEFAULT_WEBSOCKET_HOST" = "127.0.0.1:9001";
"GRAPH_FILE" = "${config.dvb-dump.graphJson}";
"STOPS_FILE" = "${config.dvb-dump.stopsJson}";
};
serviceConfig = {
Type = "forking";
User = "dvb-api";
Restart = "always";
};
};
};
};
services = {
nginx = {
enable = true;
recommendedProxySettings = true;
virtualHosts = {
"socket.${config.dvb-dump.domain}" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
proxyPass = "http://127.0.0.1:9001/";
proxyWebsockets = true;
};
};
};
"api.${config.dvb-dump.domain}" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
proxyPass = "http://127.0.0.1:9002/";
proxyWebsockets = true;
};
};
};
};
};
};
# user accounts for systemd units
users.users = {
dvb-api = {
name = "dvb-api";
description = "public dvb api serive";
isNormalUser = true;
extraGroups = [ ];
};
};
}

View File

@ -1,14 +1,40 @@
{ config, pkgs, ... }:
{ config, ... }:
let
clicky-bunty-user = config.dump-dvb.clickyBuntyServer.user;
data-accumulator-user = config.dump-dvb.dataAccumulator.user;
in
{
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
users.groups = {
postgres-dvbdump = {
name = "postgres-dvbdump";
members = [ clicky-bunty-user data-accumulator-user ];
};
postgres-telegrams = {
name = "postgres-telegrams";
members = [ clicky-bunty-user data-accumulator-user ];
};
};
sops.secrets = {
wg-seckey = { };
postgres_password_hash_salt = {
owner = config.users.users.clicky-bunty-server.name;
owner = clicky-bunty-user;
};
postgres_password = {
owner = config.users.users.clicky-bunty-server.name;
postgres_password_dvbdump = {
group = config.users.groups.postgres-dvbdump.name;
mode = "0440";
};
postgres_password_telegrams = {
group = config.users.groups.postgres-dvbdump.name;
mode = "0440";
};
postgres_password_grafana = {
group = config.users.groups.postgres-dvbdump.name;
mode = "0440";
};
};
}

View File

@ -0,0 +1,34 @@
{ config, ... }:
let
serice_number = 2;
in {
dump-dvb.funnel = {
enable = true;
GRPC = {
host = "127.0.0.1";
port = 50050 + serice_number;
};
defaultWebsocket = {
host = "127.0.0.1";
port = 9000 + serice_number;
};
};
services = {
nginx = {
enable = true;
recommendedProxySettings = true;
virtualHosts = {
"socket.${config.dump-dvb.domain}" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
proxyPass = with config.dump-dvb.funnel.defaultWebsocket; "http://${host}:${toString port}/";
proxyWebsockets = true;
};
};
};
};
};
};
}

View File

@ -1,14 +1,16 @@
{ pkgs, lib, config, ... }: {
{ config, ... }: {
services.nginx = {
enable = true;
virtualHosts = {
"${config.dvb-dump.domain}" = {
"${config.dump-dvb.domain}" = {
enableACME = true;
forceSSL = true;
locations."/" = {
extraConfig = ''
return 307 https://docs.dvb.solutions;
'';
locations = {
"/" = {
extraConfig = ''
return 307 https://docs.dvb.solutions;
'';
};
};
};
};

View File

@ -0,0 +1,5 @@
{
imports = [
./general-options.nix
];
}

View File

@ -0,0 +1,18 @@
{ lib, ... }:
with lib; {
options = {
dump-dvb.systemNumber = mkOption {
type = types.int;
default = 0;
description = "number of the system";
};
dump-dvb.domain = mkOption {
type = types.str;
default = "dvb.solutions";
description = "domain the server is running on";
};
};
}

View File

@ -1,26 +0,0 @@
{ config, lib, ... }:
with lib; {
options.dvb-dump.systemNumber = mkOption {
type = types.int;
default = 0;
description = "number of the system";
};
options.dvb-dump.stopsJson = mkOption {
type = types.path;
default = ../configs/stops.json;
description = "stops conig json";
};
options.dvb-dump.graphJson = mkOption {
type = types.path;
default = ../configs/graph.json;
description = "graph json containing the network graphs";
};
options.dvb-dump.domain = mkOption {
type = types.str;
default = "dvb.solutions";
description = "domain the server is running on";
};
}

View File

@ -1,78 +0,0 @@
/*
This file contains the configuration for the gnuradio sdr decoding pipeline
*/
{ pkgs, config, lib, ... }:
let
file = ../../configs + "/config_${toString config.dvb-dump.systemNumber}.json";
receiver_configs = [
{ frequency = "170795000"; offset = "19550"; device = "hackrf=0"; } # dresden - barkhausen
{ frequency = "170795000"; offset = "19500"; device = "hackrf=0"; } # dresden - zentralwerk
{ frequency = "153850000"; offset = "20000"; device = ""; } # chemnitz
{ frequency = "170795000"; offset = "19550"; device = "hackrf=0"; } # dresden unused
{ frequency = "170795000"; offset = "19550"; device = "hackrf=0"; } # dresden unused
];
receiver = pkgs.gnuradio-decoder;
receiver_config = lib.elemAt receiver_configs config.dvb-dump.systemNumber;
in
{
systemd = {
services = {
"gnuradio" = {
enable = true;
wantedBy = [ "multi-user.target" ];
script = "exec ${receiver}/bin/gnuradio-decoder-cpp ${receiver_config.frequency} ${receiver_config.offset} ${receiver_config.device} &";
serviceConfig = {
Type = "forking";
User = "gnuradio";
Restart = "on-failure";
StartLimitBurst = "2";
StartLimitIntervalSec = "150s";
};
};
"telegram-decoder" = {
enable = true;
wantedBy = [ "multi-user.target" ];
script = "exec ${pkgs.telegram-decoder}/bin/telegram-decode --config ${file} --server http://10.13.37.1:8080 http://10.13.37.5:8080 &";
serviceConfig = {
Type = "forking";
User = "telegram-decoder";
Restart = "on-failure";
StartLimitBurst = "2";
StartLimitIntervalSec = "150s";
};
};
};
};
# user accounts for systemd units
users.users = {
gnuradio = {
name = "gnuradio";
description = "gnu radio service user";
isNormalUser = true;
extraGroups = [ "plugdev" ];
};
telegram-decoder = {
name = "telegram-decoder";
description = "gnu radio service user";
isNormalUser = true;
};
};
security.wrappers = {
gnuradio-decode = {
owner = "gnuradio";
group = "users";
capabilities = "cap_sys_nice+eip";
source = "${receiver}/bin/gnuradio-decoder-cpp";
};
};
}

View File

@ -0,0 +1,36 @@
{ pkgs, config, ... }:
{
dump-dvb = {
gnuradio = {
enable = true;
device = "hackrf=0";
frequency = 170795000;
offset = 19550;
};
telegramDecoder = {
enable = true;
server = [ "http://127.0.0.1:8080" ];
offline = true;
};
dataAccumulator = {
enable = true;
host = "0.0.0.0";
port = 8080;
DB.backend = "CSVFILE";
R09CsvFile = "/var/lib/data-accumulator/formatted.csv";
offline = true;
};
};
networking.firewall.allowedTCPPorts = [ 80 config.dump-dvb.wartrammer.port ];
dump-dvb.wartrammer.enable = true;
systemd.services."start-wifi-hotspot" = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
};
script = ''
${pkgs.linux-router}/bin/lnxrouter --ap wlp0s20u2 dump-dvb -g 10.3.141.1 -p trolling-dvb
'';
};
}

View File

@ -1,144 +0,0 @@
{ pkgs, config, lib, ... }:
let
file = ../../configs/mobile_box.json;
in
{
systemd = {
services = {
"gnuradio" = {
enable = true;
wantedBy = [ "multi-user.target" ];
script = "exec ${pkgs.gnuradio-decoder}/bin/gnuradio-decoder-cpp 170795000 19550 &";
serviceConfig = {
Type = "forking";
User = "gnuradio";
Restart = "on-failure";
StartLimitBurst = "2";
StartLimitIntervalSec = "150s";
};
};
"telegram-decoder" = {
enable = true;
wantedBy = [ "multi-user.target" ];
script = "exec ${pkgs.telegram-decoder}/bin/telegram-decode --config ${file} --server http://127.0.0.1:8080 &";
serviceConfig = {
Type = "forking";
User = "telegram-decoder";
Restart = "on-failure";
StartLimitBurst = "2";
StartLimitIntervalSec = "150s";
};
};
"data-accumulator" = {
enable = true;
wantedBy = [ "multi-user.target" ];
script = ''
exec ${pkgs.data-accumulator}/bin/data-accumulator --host 0.0.0.0 --port 8080&
'';
environment = {
"CSV_FILE" = "/var/lib/data-accumulator/formatted.csv";
};
serviceConfig = {
Type = "forking";
User = "data-accumulator";
Restart = "on-failure";
StartLimitBurst = "2";
StartLimitIntervalSec = "150s";
};
};
"wartrammer" = {
enable = true;
wantedBy = [ "multi-user.target" ];
script = ''
exec ${pkgs.wartrammer-backend}/bin/wartrammer-40k --port 7680
'';
serviceConfig = {
Type = "forking";
User = "wartrammer";
Restart = "on-failure";
StartLimitBurst = "2";
StartLimitIntervalSec = "150s";
};
};
"start-wifi-hotspot" = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
};
script = ''
${pkgs.linux-router}/bin/lnxrouter --ap wlp0s20u2 dump-dvb -g 10.3.141.1 -p trolling-dvb
'';
};
};
};
services = {
nginx = {
enable = true;
recommendedProxySettings = true;
virtualHosts = {
"wartrammer" = {
locations = {
"/" = {
root = "${pkgs.wartrammer-frontend}/bin/";
index = "index.html";
};
"/api" = {
proxyPass = "http://127.0.0.1:7680";
};
};
};
};
};
};
environment.systemPackages = with pkgs; [
usbutils
hackrf
iw
tcpdump
];
# user accounts for systemd units
users.users = {
gnuradio = {
name = "gnuradio";
description = "gnu radio service user";
isNormalUser = true;
extraGroups = [ "plugdev" ];
};
telegram-decoder = {
name = "telegram-decoder";
description = "gnu radio service user";
isNormalUser = true;
};
data-accumulator = {
name = "data-accumulator";
description = "";
isNormalUser = true;
};
wartrammer = {
name = "wartrammer";
description = "";
isNormalUser = true;
};
};
security.wrappers = {
gnuradio-decode = {
owner = "gnuradio";
group = "users";
capabilities = "cap_sys_nice+eip";
source = "${pkgs.gnuradio-decoder}/bin/gnuradio-decoder-cpp";
};
};
}

View File

@ -0,0 +1,32 @@
{ config, lib, ... }:
let
file = ../../configs/config_${toString config.dump-dvb.systemNumber}.json;
receiver_configs = [
{ frequency = 170795000; offset = 19550; device = "hackrf=0"; RF = 14; IF = 8; BB = 42; } # dresden - barkhausen
{ frequency = 170795000; offset = 19400; device = "hackrf=0"; RF = 14; IF = 8; BB = 42; } # dresden - zentralwerk
{ frequency = 153850000; offset = 20000; device = ""; RF = 14; IF = 32; BB = 42; } # chemnitz
{ frequency = 170795000; offset = 19550; device = "hackrf=0"; RF = 14; IF = 32; BB = 42; } # dresden unused
{ frequency = 170795000; offset = 19550; device = "hackrf=0"; RF = 14; IF = 32; BB = 42; } # dresden unused
];
receiver_config = lib.elemAt receiver_configs config.dump-dvb.systemNumber;
in
{
dump-dvb.gnuradio = {
enable = true;
frequency = receiver_config.frequency;
offset = receiver_config.offset;
device = receiver_config.device;
RF = receiver_config.RF;
IF = receiver_config.IF;
BB = receiver_config.BB;
};
dump-dvb.telegramDecoder = {
enable = true;
server = [ "http://10.13.37.1:8080" "http://10.13.37.5:8080" ];
configFile = file;
authTokenFile = config.sops.secrets.telegram-decoder-token.path;
};
}

View File

@ -4,7 +4,7 @@
networking.firewall.allowedUDPPorts = [ 51820 ];
networking.wg-quick.interfaces.wg-dvb = {
address = [ "10.13.37.${toString (config.dvb-dump.systemNumber + 100)}/32" ];
address = [ "10.13.37.${toString (config.dump-dvb.systemNumber + 100)}/32" ];
privateKeyFile = config.sops.secrets.wg-seckey.path;
postUp = ''
${pkgs.iputils}/bin/ping -c 10 10.13.37.1 || true

View File

@ -1,7 +1,8 @@
{ config, pkgs, ... }:
{ config, ... }:
{
sops.defaultSopsFile = ../../secrets/traffic-stop-box-${toString config.dvb-dump.systemNumber}/secrets.yaml;
sops.defaultSopsFile = ../../secrets/traffic-stop-box-${toString config.dump-dvb.systemNumber}/secrets.yaml;
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
sops.secrets.wg-seckey = { };
sops.secrets.telegram-decoder-token.owner = config.users.users.telegram-decoder.name;
}

View File

@ -0,0 +1,14 @@
{ ... }:
{
users.mutableUsers = true;
users.users.tramwarrior = {
extraGroups = [ "wheel" "plugdev" ];
group = "users";
home = "/home/tramwarrior";
isNormalUser = true;
createHome = true;
initialPassword = "changeme";
uid = 1000;
};
}

View File

@ -2,8 +2,9 @@
let
installScript = (system:
let ip = "10.13.37.${toString (system.config.dvb-dump.systemNumber + 100)}";
in (pkgs.writeScriptBin "deploy" ''
let ip = "10.13.37.${toString (system.config.dump-dvb.systemNumber + 100)}";
in
(pkgs.writeScriptBin "deploy" ''
#!${pkgs.runtimeShell}
ssh root@${ip} "ps cax | grep \"nixos-rebuild\" > /dev/null"
if [ $? -eq 0 ]
@ -12,25 +13,29 @@ let
exit 1
else
nix copy --to ssh://root@${ip} ${self}
ssh root@${ip} -- nixos-rebuild switch --flake ${self} -L
ssh root@${ip} -- nixos-rebuild switch --option narinfo-cache-negative-ttl 0 --flake ${self} -L
fi
''));
installScripts = pkgs.lib.mapAttrs' (name: system:
pkgs.lib.attrsets.nameValuePair ("deploy-" + name) (installScript system))
installScripts = pkgs.lib.mapAttrs'
(name: system:
pkgs.lib.attrsets.nameValuePair ("deploy-" + name) (installScript system))
systems;
deployAllExecutablePathsConcatted =
pkgs.lib.strings.concatMapStringsSep " " (path: "${path}/bin/deploy")
(builtins.attrValues installScripts);
(builtins.attrValues installScripts);
deployAllScript = (name:
pkgs.writeScriptBin name (''
#!${pkgs.runtimeShell} -ex
${pkgs.parallel}/bin/parallel --will-cite -j10 ::: ${deployAllExecutablePathsConcatted} || echo "Some deployment failed"
''));
pkgs.writeScriptBin name (
''
#!${pkgs.runtimeShell} -ex
${pkgs.parallel}/bin/parallel --will-cite -j10 ::: ${deployAllExecutablePathsConcatted} || echo "Some deployment failed"
''
));
in {
in
{
deploy-all = deployAllScript "deploy-all";
nuke-all = deployAllScript "nuke-all";
} // installScripts

View File

@ -1,111 +1,104 @@
wg-seckey: ENC[AES256_GCM,data:8VK1pYu9ybz545kaWIo60DkUr6g/5qW2LZF3o3FKG0OOOW+ybTnOHQ1lwkA=,iv:JlDx+EGVzCMLjJbVTL8wJw7+Zgc0Nlee+3G/sqxZBlY=,tag:bXxpal6apw84I7jkCZsLIg==,type:str]
postgres_password: ENC[AES256_GCM,data:LhJJiWVlSL0=,iv:CI/oVto6ncK6l2QF7IsTQ/ca954LH/GFmZgZQ43u1zc=,tag:itvpJLVzSjmlOdw5bZ9Orw==,type:str]
postgres_password_hash_salt: ENC[AES256_GCM,data:1lXMgJajRHXi4MI=,iv:QDeMNauoCfC7egIkGUb/Ecp6vfZ/UxqjtTL6V3sadHM=,tag:5T3TXHc9JYno7O91NTp6xg==,type:str]
wg-seckey: ENC[AES256_GCM,data:9KI+ZN51wiXgykD1DBMY7iZP/mNLV2nyOoIget1xMAQk98EM06EfBWIYJnA=,iv:JlDx+EGVzCMLjJbVTL8wJw7+Zgc0Nlee+3G/sqxZBlY=,tag:3nC2m/IRbxJTFbXRUSsSOQ==,type:str]
postgres_password_dvbdump: ENC[AES256_GCM,data:ZtJf3tAYolPg,iv:QNY2eFNOOQInW8OdaIdowec0T/N9IJORY5kpzU6MpCc=,tag:Q8kJS5RjFsaTzmg9Nj1wuA==,type:str]
postgres_password_telegrams: ENC[AES256_GCM,data:aMYRe5FU0aQw,iv:38emu7odFBQeaZox0sXjBlpThCIrnkEaQ8gbS8bvCuk=,tag:ASePcgnKNqvhBFp7vesHAg==,type:str]
postgres_password_grafana: ENC[AES256_GCM,data:A+Y0y7sNvrZP,iv:DMordUO6RU9Ym+uiGe2/KiA0rN47zIWs6WrijhWMuB8=,tag:+1vDD5KvojGYf/BTaDiW7A==,type:str]
postgres_password_hash_salt: ENC[AES256_GCM,data:N2Nl1eKmlFfFPJE=,iv:QDeMNauoCfC7egIkGUb/Ecp6vfZ/UxqjtTL6V3sadHM=,tag:SewaZDry00jUOBc12UI38g==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1zmuyxqnhq7naxa8egf24gzz2tjqtg5j9yv8zhvcxta08xqr8h9aqq7fjca
- recipient: age1djp5hk6vpm5glzqy9h2e2cgam5xydx888glgs85kvs57spaf8v0sfm0pa2
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqcTA4ek1lRCtCbGEzS25v
TFVWNEdYbXhpVFd6VHZmNEFZSUJXa3luaVFjCmZOM3lGYTNXUERjSDRtQmJTKzNL
ZnRQMzMvWU9mSHdYSGpmVG9vMURxVmcKLS0tIDE5RHJCOVAxR1o3MHl5WVZjcjlz
Rm9aRUo0ZXBKcmZEYmVCTDlnY2U5S2sKd4ek+LOCVGdXqd6IbV93TpVuk8bjViSF
lGcxiIGVp9kVNTrYhMtDtJMKB9Af4Bz7KAtzAWlliBfcQsYGm5dRnw==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaQnUzSkV0d3dnOUswUFJw
MGZtblhLY0VtTVlRSmVvbXowa01mbWlpN25BCnNlcUFaamtsaWdZQWx1WDNuLzNt
MkNCcHV5NmxVSXBIMGpBWncySjlyamcKLS0tIFZ4dlA1d0NOa0RKRlN3eXNIQksv
dDdvOHZvSkNBalpFc2FZbTgxTjdUTUkKTBbicjlqpj3AY4ehyiynVmx+cHfksOqG
SAjR/QehgcilXx7mM0jOG8T+vhMQd/w2tyH/nABzB4kkWzJdsrBSlg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1m4g4y5ga2m8xdvs7rarda3tyk4gtkyta6pfyq2n3xmy47z20kfxq73m8r8
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBodmRyaXFxMWhvSTdKM1Vj
MUk0bWlBdlhya3ptQ09FcUZPZTdUejE4S0ZBClh3cVFsWXNzM0hvQ25NSDZtTXNN
Q0haRGcvZG11YlRNRGtLK2xmS2NBYXMKLS0tIERpNmhHV3RqeEFDOVc2dU1iQVJL
NWQ1Nk45aHNLSjZGZEFUL3FscXhacmMKlOZyEgzmUmVhUE3ueZCKWdHishaIuUYM
KgYFOT/z0EedcxKcOQMqLhMJudBjedjiETzqZFARVW70tLZRaRKWqg==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCOU5qUmZWUGF4MTJaOTVL
RUtWL3I1VEJaVFFNNXhKVHdTVDgxQUdDZERNCm9zak9HSVN3eFVkRDdLcE4zb0NJ
YzhjR3RtbHl6Y0Q2VklRNVdxclhHZEEKLS0tIGE2T0h5R3k1WG84V3ovM1JlUlVj
d0hySTdzYzcrd2o4ZmxYeGRUempaZlEKyQ29Yuk2g365pQmGGgCmbxoP7W2nvcwn
Z5Mo85xd4K/+r87KBaAPHpd6GLgyLWw1RajJ9ISI3NUWeVdBFj6k+A==
-----END AGE ENCRYPTED FILE-----
- recipient: age1djp5hk6vpm5glzqy9h2e2cgam5xydx888glgs85kvs57spaf8v0sfm0pa2
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBnSTBVcjhhckowaGp6ZGk1
cjVNZUZ3cGxLeWwxbG9UOTJQT2FTZ1ByZEU4CnExMkZ6NktGRktJdmg5YnNsYStt
OWkxQmY0ekNCVUhERFd5WGtabFJVdUkKLS0tIHI0Q3dWd3ZnenJCWTBFNzFnQ2ZM
QjIxQkgvcU96RXk5MGdVQlZWb25DYUkKMRfn8BvncSWH/xoq0yFSh+owExMC/Gul
tcWESostCsbfHlgmzd2m2m9gLnavQuWdd5CxL4aenKgHpbnm5jtCjQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2022-07-10T01:03:40Z"
mac: ENC[AES256_GCM,data:5/2de25MkLWh8oCu1wmxyjSCJLywU56/HipGvm5Y13a8BjKIqSlhh6EAZZuYn/pc6kzCyiTPuCYeQqnizjo3ZjsZRwiNYZ9VS7t+c2OGfmw3H3ozsFcKA9GhJ8G8iud+8QM7gaTV7lIQks2DLrCMEvqOKRCHT73TFUydShB+oak=,iv:MyOBhGsRmk+0dfUqAY3p+GITt+h5xuyf1xK6Kjql7Lg=,tag:IENCLfSe2tBJu9ShagxmZw==,type:str]
lastmodified: "2022-07-18T18:10:17Z"
mac: ENC[AES256_GCM,data:HDNKdVoSUSNWQBfMWOnV2H83wvMNd1vsloM9yI5kDHeWOqiBVsToA5W+qwJXqWcwB4ivlvZtLqZ42Yc2gz0qfbkRfTPnT27jOAtY/6JIrSxqO7eG22Rtlm8HpAzEKTet1wqvmmtDvTIyb+3nJMkWpxjb/gkLZAW53XhNwvcVWDA=,iv:A3p0N4F75eQFWOj1NKEIQpr2PUg4kbhX17OuZnQM+T8=,tag:mTdL6bXJkdL8hvU56W8+YA==,type:str]
pgp:
- created_at: "2022-06-06T02:08:35Z"
- created_at: "2022-07-13T11:06:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
wcFMA7zUOKwzpAE7AQ/8C24bNd9MfghQAXXj/VWpy/87mPulxOWjEs8QW0iZnre4
42l9uGy9AFUyOWgwpHaftQzAT5x8TmtXYUE0p8BoNIxpNQ70AkSQX+jKcyo/7w8g
BFwnKNzAW0nVcFR9vjeP/4/eetNNjrs9hxDvtRzWqviYjnXzclc1Yhs29p346aEg
p/cZPUbybYfxjLsAbLV/MmvroksSrf5qOL4Vx83ynw+FN2nKqAO8LnosPwf7y8cf
N0UxNvE4kx70zOtmmg/fg2dPLrELnFmsg2Svl7Z8W35oRvzHrl1Rru1s3WydMDNn
0XFwDavgxik3SEzk9zUPwrYZyMAVUJx9pUrDkv4SZEIwPl8icbChVMeY4Dq1FpFd
gk3A1gCtGQUJRcvrCFqdDJxM0mtP2NHR4Mz8He5l/7rPl4qHFcFrGqDu/kFmhF5N
cP7mraHJyHzYduU1R9mjR1O8CZJ6GFUYnJfBw+JE5YxBcoDO5mc6NdqW8S2DSWTu
TJ2aM3GxkdVw/dBFlH5ytovDyFUQH4p8dhx9HelBSl6VCzJv8qHdedKRZO50CIQ5
BUmr5zbj2JwBJ9KGbsAzhzptOov79aH1i65htkiiPnfTkrJ13CxEQNQDEU2T9L1X
UioqB+kIVJPqIp8tLIu6VMH8VmB9mit9n64aug0PZq/ryXbRHiElHPNlaOyuK3TS
UQEJBLlQLr2ONi9Kin1UbG3jTptXUrGw3ZemuC2q0Fh3+I1PUVnlMLBNnP8is/gV
NSg4cbmvW5iKVRDq5e3k/kquFNrXDnXDON+pYy/RpVWWzw==
=PDav
wcFMA7zUOKwzpAE7AQ//Q9teTCFPJ4w7I7/gMAJdd3Hg7dj/penylroOOYRUR+tL
C08XWdl9PoTZyS7C5rhYHUdD+spYFI0UJFnFN/lZ41rzsQ+sYBoRp9Q0r3yT6xNF
cLHg0ZNkwn9j0z4ErjwIwTf3OlMvZ6rcRPgtU5t/Z1phlky9Lvw4J4qjtkmWGGPu
7L9sBWbxlzDFyhf91QdiSnQXZUbg1a+Uqu6vjBhUmNezMMv71riW6/7F4Ej7ln+P
UyFvOPtiUAgCKWHEjWwyTAl/a/5s3j+Axk+auAWOq8PUIjEcxoXp8G6vAPeUmZ5X
SIOUuc5VVJzPQIUa2Ie7TGegCpDYKlGetZrULT7QRTc36V9RZbH5k3He2vtNoFw8
VMKehkJmPCNacE0JUt6Ov2GKk5CI8o5Dl6+4/PNqP9uDxTLfF+StBk5SkR3NWidt
3krR+pOYCGIPyX9GIk/RE99iPIfzpwmupWxpQQwRW/sg4dDBNynF+Cf3PvXqtTfC
ra92TK5YULBVFq9uGX5f8oXgmL9FmAiMmI+w9QZhvbg2lq3GOZqrT/NLhgq47IMX
16/kpKe7HknwFhpJx9ZkktyXVdIuJ/4vnqFTatdQcTrVqkbmSn0FVqPn1xBwkUyJ
sUhVKZaHa8JNHogPCJHAs5iZmYG76j9WSO95R8e0yGifKeywW4+EyUi3GHR71TPS
UQEVJh3006dO6pY3U6YSaA2l5by7lXR1kV6wyYvyyC2bPIba8Z4n1z3C5oMxm6sV
fUD2Yz8vcuvr3m57T1sc9jrmN9XRxeZoJK2G8627VkjmPQ==
=2rie
-----END PGP MESSAGE-----
fp: DD0998E6CDF294537FC604F991FA5E5BF9AA901C
- created_at: "2022-06-06T02:08:35Z"
- created_at: "2022-07-13T11:06:24Z"
enc: |-
-----BEGIN PGP MESSAGE-----
wcFMA/YLzOYaRIJJAQ/+I9CggsPrG4JVusgndy+dKPKQ7Qfo9N6JfuOsNX7wU8MY
w1VgiM5K8q7SLgv3KNklOGYwKKrmsCjW8fgTbrM2OjuiydFfik/TbALa4YzvVVBa
99/i9udS5p7y9jzs3dQqX/Nke7fTXqdweHHajsI7z2b+LE1Ag6At3UQJnIkHi2ai
Go4vaNEhcqly7Rxf4OlGTjIGKDANCo41NLHDKRMTpNFIX55NHmPciqFoMCpJUzhC
V6t7jSFhvZzPlQxT34qlIAfiDJ+LhVyABAgRdcB2x8UhbIiKzBxbzyLXTgyXYAZ8
xVp5jbjhizq+sUbJtkdLBC8ISBr2l8lAKfAfVzpMEt9AxYfRQ+y98jO7fdL2plbO
f9YzNALH28EmAajrMsdsRBiaev8VZ9n6r8U+TpGuMiEmSwOYfxIP5g4e46RSmtAt
SOAEKMzJB+f5D70PhlGHijMMOQv1FBF+scYtwsGgIuv3P9Vki1lDpHGa3YwaXelF
sVnu7I/VYRtmWfgxcSPdnOGuPElLnvuqBLelVlE2FCwyoau6Qq8iEeVRtiBqUSz0
fHAOq8yYBSOgXlDDUGWFvl3E6Bm/0FISbpNxreCu2K3iOudINxGhZWBYKQRwUAqx
3O+Equ25waCNX/6BhzBG4vxh8cPf4GQx3lwJ4DkK3RenE8QlaP3BL6hiwJ4NNlrS
UQFIwzlyAKfNQYRr4X3wuK3IdLrzHOnWk0QBAmp3EdDZNa7BSUdnZhkkwMy3xPFf
v2rOpfDURWiseH3xvS5MMqyMl/2UVpGuezIfaRD+0o7vcw==
=2e0v
wcFMA/YLzOYaRIJJAQ//Q/RqkjX0CyD1HL9vrZeanYQnA4Sk6dpfSglM/lJLZNoV
77726TYxNFhEW39V36Hrfm3HDAini6Pkt9dN8TPQe4DB5aOacN5TY0JnNSOrqFvD
9NHtvR31c4uwajMFaPV/J4yZRe9hE7o1EqnlWIAaTUBFtAdVai4Y9h0KdMdwJyC/
+iXrEL2IFVsRjhkljS1tnRndfs8DG4fP7O45rFlruaAOaW33iskAqct90Ifuek0I
Fxo7BwYXSVHmHE9XA3sbVaWdOlIQMhDWuWetmoFENG72l3l9BJL3sSpxu2kLHTtg
jOn33eh31pIyEiMjpizmc2JyWoBgwNC/kFd31gU23W9jvk1dZ3Hj66Hopo0nILXA
o272xVpsT6N4KX/MG+97b2gXeTzxBVx0OCtmtsj7UQ6V3xGjnK7YFa83Fgqjtz7B
8UGR7x8CA7w0hkHEenk/DEksJYYl4givwqKR/oQVQBlPut+ZWBMyAZAklPdpS44k
Hh9LU8ya04UWzgipDZ5axp3XcxXbWTuoiqmCJGe+d+FmgNVVpnG/MyENrAL0QQea
/z5oCNzy+K7i8VzLQCaYD3MU9zLICAjEPSO2AfG2jVbDd2jjSimxVJLUszWuoDfZ
oAkXWLO47hSKPvKOk/MVZyTUYwtuZRNndlvyn2+FZobYk6tPQGGRSNnLht/LsVDS
UQEbg5AKhxR1EQSrt1N4881y/4YpO+3K8QBTSZ0ublLhmzovrTH6AKk/6oS1GfSO
zhXocWWDioEcQHlxzXp9fzCICDYJiooBCF32eBAf4N5lUg==
=iP47
-----END PGP MESSAGE-----
fp: 91EBE87016391323642A6803B966009D57E69CC6
- created_at: "2022-06-06T02:08:35Z"
- created_at: "2022-07-13T11:06:24Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQEMA1N/l9+zlMQzAQf/QhLk5YyHxzFopg4oc+sME5yH49T6SGa8NOjpaP0EuBv+
UJDfF7AVZR6NwBBJdfh6sn6cOfonYZ0Gvj0bEWg4p9Vz4ZwdAgbAYQFSSoWImwzi
MKt5pZ/K+1G7p/X3atYG5Qb/2vzJpmzCEjzD/fYb8oxqC+pVpajycUkf6J8Kef1F
41Fitj9oKApe6yz0TrKTzx0c40KkKvm+vYX8s84GfY0U7OXQNL4SUtRXtFd/jt+Z
u8sRhj5dVVfFQs4r0fBZwBCrmnNg772ZNB2zYMakXbQ5QTNogHs1nwhK5sTWMePo
3wJDjC9dChSNtBYvILUXpJihidxNQ+KFA/CNa5G87NJeAarsovof25x7p05tLYHd
nbrqrLO+s6inxtWX8x1hkmKr7mGl9TzlFAJhBf2NusOWlUOwabkEqpFwVKMDwbjG
fAapKkgiirdw6UtYY62s5byvzk99k2nqrJrACeTyVA==
=9u6o
hQEMA1N/l9+zlMQzAQf/Zux59mqN99J+9DquvMZ8cOZGVwxZbsVsYsAqueGgS+k4
7Iz7patT/SSMeGQzROzCabDYmmbsjhBQVR/RUh2Mecss4P12M4TCkql97J/VIXb/
LFQNcUeR9HZFBCHnKQGPdrh865PuYgvAIyOgNjgxxBhxSK+Em+YpaxnSY+kGRxl5
K0B9WE6jhykAwhX2nah6DakgZOQuGVG1nHaYuXUDXZXmUrxx+hjkjcxoNkYe5rpa
MJM1RQ/sHHNlxdC+jM/oprRarUH77Nn9NsQioTSfGv0o4ix1gsQ3+yPu5wQwbiWd
anRaAI5BgdD3fA9TchDtQbUbQsChi/Br7gnL53LWk9JeAV+0k2SQiIJ6AK9wh1q1
apxKPTJTWeI4UtA8GHcI3KlkjE9jdG9URFSts9b9lMkGU9K8O8jOGYg9ygZL5wkY
K3I5ke9UUym/eBuceB6hZZOvwRmCqN50Uxy8YkpTCA==
=uqMQ
-----END PGP MESSAGE-----
fp: 069836A578F7939612DB4934F77D0F7E247A1EE4
- created_at: "2022-06-06T02:08:35Z"
- created_at: "2022-07-13T11:06:24Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQEMA1N/l9+zlMQzAQf/VHdzw/fPZ07hJYSwKIkauCytiXRUjl9A6+ukChgOVfMx
9cDylqFLe7cLfHDPU9MSs1pAUiahxyPKyd1OxWCx+EqTU63p6/EN+0JZuevhNeoU
8Zj/2KCK4q5eFUUgNlPriF4lH0GV+Nnm7mfZPSAhKi+Qsz70y09XCWx86TXQ/vzz
v1ILb87hv0Vs3UUw09UAvb2TVQM5fBr98sEhiOrWF1fXkoDbhZ79M+twLfV78veF
r8MGO2oEAqCdfSypGewGJDDc++x03rFkLEdRhLE3TpUwrtyE/nEDRvCHR1og5LEP
D3GwKMJ8EmXY41JRH5pF4TcJo7zCrVgwvRBNZZu8DtJeAS3ulR72JvkLvXiISRsC
Ykf1fl+zIbI7f5aSs9ygMVHPK12sJzF8TKMr2AXQ4AfbsyyF3At8N95bpKtUIr5D
A1f50kC4R+MQj8i9zFTFiAX0CuurBHElYxhBrxqyDw==
=gFBo
hQEMA1N/l9+zlMQzAQf/YkwsNBOXOtnfkkrSJoVP3ehYwA9b3Ibll5GTop8zt2fP
Y8l54nK2ax0MmKyciRlewX417Dk+/qcrmS4A7K+X4Fe5k6gRzjJQWeun0s3cm+u8
EWv5pd5KgKJ95P/J5RrJ8zbIjorNwQs+GlrVtUc9sNzOrneoy5NZ4V2wJWP5DijN
KP2ndcZhB9DyLo3KEWRko0rxCq55sdYO94NINE28aZli/Id6R2H8DdCpxFqCu4oy
0nTFaurL0/4qgB3IIiAxgnUP9JPyhVi1Il2nP8DiARQa6rYn1X17bT3RvKm8ZddH
IUgKWHuwypI0b8yH6/L6EnTLXzgFitzdxNTltH3b0dJeAcIue5npwlG+4B70oHUb
d/SbpRnLPN09QSjzTyHtq2S1DBq4TJLENPt1rgMdeoTdsfCDNz0lbo8YrAbz0IBm
FT6H3IoE3hxgr7h7sWeXwxtwDJkYM1aCquUj5Whrtg==
=BSlR
-----END PGP MESSAGE-----
fp: ED06986DFAAE6A61B751DC2F537F97DFB394C433
unencrypted_suffix: _unencrypted
version: 3.7.2
version: 3.7.3

View File

@ -1,111 +1,104 @@
wg-seckey: ENC[AES256_GCM,data:7JRXuhyzwGgKUUzpuTLkdeQn1cORtDeIA2MSUq/DS0axG5LKG8l/7xI3Ab8=,iv:c3/J3k6TQ6+cpqk+/wutjwbVCyzY1X/rHSJU4iw0lJA=,tag:/VYfeFiuxw0rJBQ55LXiJw==,type:str]
postgres_password: ENC[AES256_GCM,data:cd5j2mKWIZJ68R5R+aMLTNiNukH8KxfhIxyVPn5Q0tI=,iv:4FGJXB0TEZH69bkHl58lVD0epACGsJ/HNTriyrtkY/8=,tag:WovCDYSQn29NlTtZu7+tcw==,type:str]
postgres_password_hash_salt: ENC[AES256_GCM,data:mUN9ladoJKxzhjetiBu94XOHPW0=,iv:3vlrIZUm+KaGXybchUDWtXQ6cfU8Vc/DCxLXhe+igOU=,tag:S2nsBByr6qZtbr1M04bqjA==,type:str]
wg-seckey: ENC[AES256_GCM,data:AX2wr/+USyZ7YzAOjzuGyJlgF9UhmZH2MvsXh4EWdFdi7a5ovrsaYuq+JYI=,iv:c3/J3k6TQ6+cpqk+/wutjwbVCyzY1X/rHSJU4iw0lJA=,tag:rwVvO8LuMhXVyYXd+Udg8w==,type:str]
postgres_password_dvbdump: ENC[AES256_GCM,data:Qi1INkPxAgsORPoY06PHZ2Ky7yzJSDlEf5Dyrax57cI=,iv:7ukkqTjIyxNTN1Y3yWYNvMyO1gbmkqHLfIC3qBUHwmQ=,tag:vYElUUDAMhfTeY+Ji6d1FQ==,type:str]
postgres_password_telegrams: ENC[AES256_GCM,data:M6kTHyF+NfFqqtmOBetxcw/zqPq28hq32OkYAQd/skQ=,iv:M1ECHZbNcr2e5X6iU4Bkr6D6nzLjGMFv92EXAcsuLrc=,tag:/5Z+3eAaIqJ7TcISwcQg7g==,type:str]
postgres_password_grafana: ENC[AES256_GCM,data:9SsU0RY1kiy0nCxED77hv8kanSh367yPeEq0IJPmvNJVJ0eRdwamxRag6rk=,iv:DjFV8DH37f1BrV53Ly1WEcaUbBRoZnwdFQLjwF7aVGA=,tag:Jej0O1t83FGflouSkRZWbQ==,type:str]
postgres_password_hash_salt: ENC[AES256_GCM,data:gMtDVjUwqOd75zOJMTaezhlBpUo=,iv:3vlrIZUm+KaGXybchUDWtXQ6cfU8Vc/DCxLXhe+igOU=,tag:LnBxOhl9rLsxV6hvaWphbA==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1zmuyxqnhq7naxa8egf24gzz2tjqtg5j9yv8zhvcxta08xqr8h9aqq7fjca
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuSWsySlVWK0dEUkRMNS9t
L2dRVjd1QmFXZWRsNDZrdjBSVHA4bi9vVVc4CnFXNllDdzBTY3Q2VktOaHJRR0hj
bHk2SmhNUEhMSkd1aS9rWHJGaXZMU1UKLS0tIExoaTE3V1ZQdCs5U1Iva2lic01U
TXVUNGVJSjMxTWIwcjAxTnY0Ri8xcmMKCFF0zSZsaVQmUq7jN6RY5hq8fJX2Qfff
HIBrXGP/ZFrsx1LtvRHb3oTCFjfVwFQn8GQmBa+vi/Dwh8cTo/r+4Q==
-----END AGE ENCRYPTED FILE-----
- recipient: age1xztjvj79kxdrf97mldvv9nas5vfm636y3agkcvtyyyd0xtg73aasx5y7dc
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBabXdNVXhjcHBCTDJtd21C
cVJsaXp6WmdYL1c1d0RwNUc4Mkt6YlVwQXpJCndLZ0JuOGV2QU43dVZJYUxmYkI5
N3JRUkVlTXF5MktieGdKUGs4Y2YwaUEKLS0tIHJtbG1GdmN6cit2THZJTGo1YjVi
d20yS2RjWW5WWmM2TGFycUp3MjJNRzQKSRwNxdtrF0f2xFZMZVdAt6KS8Wd7eRII
PI3t4g6z6aGc4tGOrk+H3qSbI3uwjao1VABYrpJasKLdzmkl1PcL3Q==
-----END AGE ENCRYPTED FILE-----
- recipient: age1djp5hk6vpm5glzqy9h2e2cgam5xydx888glgs85kvs57spaf8v0sfm0pa2
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4R01PTkE2b0k0ajZ0TDI3
MjQ2U2ZYMGpWMlFlMVRpU3BXOE5nTXB6WXl3ClFZMFU5dlQ0aG5IdnYyVXlZS1g5
UXBMQjlGUlloKy9tc0JZLzZnU3JoZUUKLS0tIEpaaHBCL1RlTkFHSG5EV3pxS0dV
M29vY3FLbHVSMDZocEdHc1M1NVIybHcK0PQDJh+pk/KNBlrAArVI78qXuwOv38bA
gGATRDi07q8a70on/cjgDIXN++F48u/4YZXUAM3XbD/TsOe3r40XkQ==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwU1BPaktUa3ZaMXNvbVZY
UXRuZVJ0Wk0vYmVrd2JCdktlY0xOcWpsZDFzCnk1YVNSaFJVTWNTd0RDVHQzU2kw
ZStQS1k2cTFiVm1HNFlNZkdQZXdDajAKLS0tIDlxdFB2blZDaUFMR0J5N1hWanpa
Nll6OStpWWNPbkp5d1NkQWlKS1B6SVUKhsikgWAYaCMYGRO9EbSlst9M7ou/4/E2
a9Z4gzNeMWhibDtrPp7pb8fAMLRnaMOBMsbK4+puw9E977+am1s+Vg==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2022-07-10T01:03:35Z"
mac: ENC[AES256_GCM,data:WzN5qHgAjt/GPBymeq7685KIWofsjDzL7Qos/ETOycVnZc/1vQ5Lh2g1088Vg+W5WWcOCXmh/jfOdxeW7VIQRx1NGD2oajnwbvE3KEGZwOd/SadfNKGks1IpVAKFvR8djp1eZLJE4YPKw7858iVHo37yMLgf2LqfZZYejQqfO+Y=,iv:FUQPagQWDh3bGbi5Q7xrbLtcDSKPjenaXDv0HU1pZGU=,tag:6PzMwDOv6Slh37SWccBfOw==,type:str]
- recipient: age1m4g4y5ga2m8xdvs7rarda3tyk4gtkyta6pfyq2n3xmy47z20kfxq73m8r8
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJTnNUYktrdzhtZHYzKy9v
ZDl4RDVlMEFKNzBwc3pkeFMzRHVYcERNekVJCklUSjNuaDM2N3pVSVR4aVRoUXFM
T2xDd1ByemNUNFNWbWsySE9IaHZsNFUKLS0tIFhkZCtiRWdRNWMxSHhrUmFMM01O
Y1NZQTlGSEdyaXZyenpxVHhYdzRBTHMKcH9ZSXQzEERzBmYYE4p6pbi8SudLX6jQ
ZPMo14oiOmEpu1Keek23BUeolnKBKEfsgn888yKaDsa0QKtBeUFd2Q==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2022-07-18T18:09:51Z"
mac: ENC[AES256_GCM,data:nTJlpxbWdTtUGyv1xVO4c0VLYEXTlJPLRa+hZq7dvnXkcZaBFLLO1n3fmf9SD8xpO+EMi3XqNPmIwI/8DI8xYI/sfLBtOFzwA2pYYf9bkI0tL2LKgyK47WXnDGwmMsxpoKQMtj2n0PR+I3upJpOs4SVNAmIrXBw/NyhV8IwgXoE=,iv:cpe2uvtLCDClaqD8MAz34JS+616ISfQ5I31o3u6jMEw=,tag:fKIud4ugdbsU+VSQ3cyH1A==,type:str]
pgp:
- created_at: "2022-05-29T14:13:53Z"
- created_at: "2022-07-13T11:06:12Z"
enc: |-
-----BEGIN PGP MESSAGE-----
wcFMA7zUOKwzpAE7ARAAk6rALWrZCk3tdJt0sKgLpkl3C5qpeOWG+64yvkvw/exn
F1mzZ8R7vuIGcbHPwI3c26RtWWIzI1HttCPAHf8zZOIR0E/VdEsm9qjWqYMgOn7h
oFFZuyVHsXrvwWgfjCocMzO6BQVS9ue1ruOiwLMANdAQzgSsIcZBq/SqwRP6v1Ea
r3vjedjKbceJVtxZoFtUDS5QVPPrUz7VN/JPFGrudWEkBZsgBWdmMA98MeegZQre
vEUgGYNqvXwU/QBjIzqQVAEpKNwpZ8t2x7k5XGJJjLwPXDA3ZkYtTFrfbHA9Wh7K
3fSf2VuAAYYuXOV72R1tJ0ZdV4MlVw7Q4eV0XeqwNwyrsEH73kpEEGBkKnWpvJ1H
p9/VJc2vjIkKxpVZAMa95z8YXVEPekz0GXDCdToEXaN5Pd4sbyMKgjHkk8q9mvgw
bkMRgQ/ukMUmF0JzX5RWrFAAF4nMq80yyjLIy41mA/5wUYVwLfDJxddfq0EUyIbn
zqK0geDlo+Pu4pfAPNfXSDo/ji4KDnzKOS0xKCkIO4sa8ovD/9IRzI3MS8iIyusI
BkZ4BjjRBYQpLRkpeDmPQScdRDn+A34zfpQtQ8sLpfsMEsQTtZGBKQCjQQmB/74D
iV11E/MER0Oii7EhrzLRO3m0rql1N+Lg0Qceto6M8L/3eS81OVBMYKfFSRpXNezS
UQG9FoKjYIeC7AImrj/vunvgvNOr3qpkFFBu83J+Isp3GAs24pou3mMPTLMDxXEe
Tiv9SupL3Mm+8ZtdxLurUxFfLgFYb2Q2tPIjXR/tpk5aoA==
=7bp1
wcFMA7zUOKwzpAE7AQ//bW9YEQTr642/ayAG5kTJnZtX1oDdI/WncUkz8pjBFDIO
jJphUM4EN1RYMh4ULB5WybEUZ2LWPdJwCPaACk+uoqBTQlezYNc7C+hKh1hEMjC6
MElXInSAwnylrT+VpjIPx/Wpqniru/Gt1oeBRmowdUmn/EUXQ1wtkP54WM+tCT0J
6IuaPCwvu/1CiQk1/JWEyUrpNKoPLNH8ld4e1CmvGLgFPvjFR1zGjNCJF8OfbEpD
Wvem5sY7i9nUzLa8P/eImlO8rrRRJF0lEtJWjOanGPeU/7ZGq+FjODXseOSyrOsK
QXP5/BWa6qOWYwXQW/sYn+Czp32puoBuWvSNOc3DPGFmnzzurlgzNu/mUETJZvUJ
wjA9f3C90JYYWE4J1rHocgwyf8fNpCDxJlMuyUmPxaV/p4jmCF+hJk39+2HetPMn
wqaIHqKM79YQi9m4ny/CAUi75g22JKTh3ssjngoonCRRqqtizZxjUPSnEhl6M80q
C+JN6esnobhMtLrPcbZphl6dzCo5d/uVkr8SupInlX58T7//RkM2tBoWl7CplX9u
tzJwj1h0EuUZ8025Ny006ye5JwxU37PYXPqcpkq84txtTWqb+kV5iZdO+v3TIdrq
vEqrnuPkYjxyhbo4wWOAODW0ihbaRpa9tY6tOQW9olK8rFbAtB+gk+k7Eo5oCA3S
UQGpb1beFolQniuAYy0/qq2o+PD3V2VTYdIJQ0Sf9ajhKz1g+yOSBXqyWg8ijZ6P
CkwvT9gRjyKBgg/w7Cb50UQCRCRf8go4badV3eoDD/Br1Q==
=vpyj
-----END PGP MESSAGE-----
fp: DD0998E6CDF294537FC604F991FA5E5BF9AA901C
- created_at: "2022-05-29T14:13:53Z"
- created_at: "2022-07-13T11:06:12Z"
enc: |-
-----BEGIN PGP MESSAGE-----
wcFMA/YLzOYaRIJJAQ/7BF67s+OxjSrGOrvqozF7nUOYLAFlPmvKR3JV1vmLYNer
gZOw/YuPhda3UCLQzDjPNtIOQznlpAgjS0zmLZInGbDzUNey524X4E9i1wK6Xu8U
bwmeljnYo6OIQO5i/2PtFYR+oMhIu5cz4P1iAykpIgYYDhzbRkI2npbRq05rR8MJ
HocvAxU6kMKqYTfo7spN0fxlhtbBkMlUOdKFc1IIyxk7g2Pf200wv0yTu55M0ZOG
5UUYMs4hpZ6yuKtkg+sPK4LoAZGYbsAMYosvGStHB8UC1OH37HIQ2wk7LfawRQHn
Glf0fzY1/1GtaVRQBBFJPykMc3WmhoJP3bwFJlsh5VJMWmQ0CptuXh0Cm1GcfO94
hVdQtMjD2Incg4uzKiPI4SEHJwuPPxCqDA+cnlY1TjVfWBjv4o8Ppx82eMslNUH6
Vp7NC4WGRN8J8LMOqtLBP4wau895XYGlqhul4SXCyvyPCN+cQrII7lyID630B5s8
42gNOI1W9FX14Yv1x4EiEnrY/bWxzS2HT/h7fKhxhNXvVzxZi6JH5vYiygk1DwrQ
p7pPsKo1VFY36BKfhHUuY2zzrAjWH7JxA2uiPW23v/wN0H+/Yd/l1PduinICfJhq
bPVM+WJl4O/XibLJwpJ5d11/1UPK39qPxKBIcBWwA9si2j6HuDagkJPDhTixR47S
UQEJLfjpw5guHZlcJiUR+FP8jU/x9ukB3m1soCkeuwYqlqu24V5AXG/ojJjfWLok
hO3PalLR2x5Y9S3LwzYG8s56hstzvK0DuJoOk7k5Sn5pUg==
=5Kcj
wcFMA/YLzOYaRIJJAQ//YF/b1lA2hal6BmBG9+YtExuInNgsjxddCTIgnxLGIgrJ
3DQTEQKnqa/BcgOGWJ8RAPwKnz+3ah3EEssS9bpz2mmSpJyXb/5aBJyh+bDvAjp/
YqUcF81mrAUKq9CdAJB2/dPNiJF0A/rbzIKaKEzgkwaL/GTahNYJn+F6ymm67x2M
Lfxn2nXyzJxVLmIp10U+CjuYRfKqSA2+mP2j0LmgM6xRc6yUoZiR4KmAYadSXQx9
1kN4QF5S4YTEsNlBG/r6WRyra7TC81oeNxbB2HPkixmHf/2EIMoBO8+ak2e8nkRF
gMgzjTf8iLhBvxn41QAj+EV9ZdD2dcMNPUXaYjyjKjiASZInKlsCLQBiXGDKh14n
d42eu1oV9K5vrGi4d24J1rdFwMnZmjQrCeXZTJMWLLz6R/UV+l6Bz7K/Wb0IFe+u
cUmW7bqQfLoaxiYANnzALZbiD9uo7fRJAQvP5IPCTqNt/PlmD+XaEQvbu9FwoEd6
OF0YdjAGg6NX0yJ2r2Hz8BBOkHjtiZp33ePBfW8wczjkq1U98y4JXnZHXlmswmUg
5asNkOQsjSPfvervZG3+upa9F1pURdzD64MZZrGeEaDiu0jlwY8LptnaD4EWejYD
iQ2LaqqgetFuLZgS/M/SudYcGYwlmppKlW1asFZkz3Zag8jVQChpU4mB19pYxQfS
UQHXrdCgli0FQk7mD9FRr85CD/xp2GMmZSk2l6l2KVdfx6/pKsKNMWEWKldtlTno
e8VZ/wySeR+fIo1tJH/WqC3Wnxl18g9/XwvYMDrjGDb6Rg==
=Rm1R
-----END PGP MESSAGE-----
fp: 91EBE87016391323642A6803B966009D57E69CC6
- created_at: "2022-05-29T14:13:53Z"
- created_at: "2022-07-13T11:06:12Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQEMA1N/l9+zlMQzAQf/SWjO5pHGzZNybQdONcOs2en0Famg5hIbxWlKLeQDaidd
2dN36HbUxudhe04+Rtto44MHvFg9yVitunlbHfNLKxaFcDdCJY9ryqxhF/89uBY5
hjaiXK4JPOLuNXrW72iderhZHT3sAcsm0KUJ7fwiYIgjBF6iC1gcGlqPlS5YsxcA
ERxnOtOSzG8jI7lVMkfX80KEM0z0fosLcuvZ8/u+dBt8D+OD/Osyuap1LxCXhAtr
yPSIE1t625ErvTrkborxpetoL5r7WRhVG996gmND/knIUu7TUE25/rlw/+6ru8aH
XUsOcIV1tVpzE5bobl0D+VtlAG99NelfuLm2nWHBW9JcAYLubLTlyskeUVyMZ1or
U+G+I0e2SGEQXztvtWs7+EW8NipG13nHWzeuTiTeU4XSxAygmhW48mkLhAOR8CBD
qUIYd+PdXICXsd+Nm/MMwsbZUCYAs6tmsWmtSTA=
=VLIi
hQEMA1N/l9+zlMQzAQf+KHtu7REDSz6oRTdLlchWm+uamqU9fUME/Sxdm3KtnET/
aoI5ELehXbKJnQ3VkES6rz83zkutogNgsoguNm9KOx669T5L1q9inHMTR66RFbQp
EhBrxWG2Ad7PriJOeVjrvRMLCve4eyqhbgYqGicChWFO8+GK5sAaoWXGRU2+T7/m
gLNVne7Lac7D8HIWHwWF77xkQMYOWSdigWm2CtdkoYt3d+JZA9IajPSGrwt+i8lA
4z0ydMCQp+1Za9Q7VRw6cN3v9zxvCSpAuwQWBCWyz7F5uQyVW4PFUdhCO+H3njlF
ZPWqk48EJzSHmopxOucjppgYXkvHq7rGuQLqSNYMcdJeAe0bOOAbsi0iIHNCGP3m
KVdmgZ06jJA2DQTbGocULJX10zpt+D5/V2o+ddlRExqsNB7VQGkKV1zxOewTFSKg
NLPNM3E8+jP8kdIYbqO+wnLBYgQxwFfwfMAqp5grmw==
=Q0m4
-----END PGP MESSAGE-----
fp: 069836A578F7939612DB4934F77D0F7E247A1EE4
- created_at: "2022-05-29T14:13:53Z"
- created_at: "2022-07-13T11:06:12Z"
enc: |
-----BEGIN PGP MESSAGE-----
hQEMA1N/l9+zlMQzAQgAhlIVB4XeHtEPjywb7tYEOnhfjFmkR/5a8/pU5dvmRoo5
BRXgb9m3qwsA1oPEO6JsfT6K47jn07uXhZgwQab3hNhTVR762uqpY9b8LNPpCHit
IyRdwvBw9FqCr2KUW8WaeogTA5g7QJ8JBEAy8HKO0nTPS0lVN5UJ4NdxytWsXUDC
SRUJGKdimjj9ob4t9hBA8bchU2eOfKwx/fL0bznwTlAEYygfb41W8ngS0/uHAFEs
2PaW6CEOURis9kpaI3gjTx7TcMcs1IviCckeS1CVA+EyQ7uL2wxOsYdafgJcjdHJ
9p6K5oW6rIJGp6O0y+P1tJ9B+SyVmL9mRzdEKq80aNJcAU+wbwDvm6S+Co3LHTcY
TuZUla1ydGam0pAwAAsgeiYuOrVmhJ78K0iNTNxCdV65/03TX4hs7B1ofAhxwUCG
bTvQ5y2EQNj1+FkO4i1m53IURxT6auqfeQqNVtg=
=80Tw
hQEMA1N/l9+zlMQzAQgAhdZFODQ/zkpAGL7yKGq4WTHwIhOVxz0gV9QGgiK2wTaC
zpfchwyDW2Z8rnri/k81vVblPTaUzU08nQ7WZsDnThzXGF9arEkj0o5olDtwUxN0
EsocR/bwaL+IF1x4o9SHcR4rGxUq8EUAOdZ8toeQu8qhSDGvkOWHHHktzE7AzGsM
tgRZo/+NGglr3lQt2MXS1R3d5rgdZSEU5BSgVYj/tycuLnywQfQPlY+mtiOwtYbv
gcc/kjl9OGZkM6xHoA4RUGtAaxNPzf/Mmum0L+R1ln4VhklGiZ24yPZJQrvlCaoH
konk0gmsPHBNmg6VAVmAnLmGYvVzTbmFuml6QQfrEdJeAbohmOmROqgMTUkmUFIL
XpUWmw0MowFuWutXgZQ6DlAyuuuABdgdVNoiLZxV1qPbLFwsqZ8RVxsVJqIYXOGG
BCqUU7qndsxzFkQ9sQLyf8xcwfL4cbx436TwnBP1AA==
=6el5
-----END PGP MESSAGE-----
fp: ED06986DFAAE6A61B751DC2F537F97DFB394C433
unencrypted_suffix: _unencrypted
version: 3.7.2
version: 3.7.3

View File

@ -1,4 +1,5 @@
wg-seckey: ENC[AES256_GCM,data:rPHDLe3HYqoj5xpLQEalw5K1zeVFUg8IAEUTsAKt3V2jSUiM0f8yPh2bFdg=,iv:4rLtKh3Xspet9pGrnFUn3/4kwqRjYeDHjzUWWsNX7Q0=,tag:8z0GyGYdi35PH3w4PujZoA==,type:str]
telegram-decoder-token: ENC[AES256_GCM,data:r2syc0nAr+OPLQJZi/G3MqLOmJbLcw7Kk7zgOeKQIcI=,iv:lm4sfW1KXe5WunmL01pRx4+DNxrji1HFUIrSn+6Q0Vw=,tag:mTq4pc1gH/i8cP6weq3dQg==,type:str]
sops:
kms: []
gcp_kms: []
@ -14,8 +15,8 @@ sops:
N0xrTmxmc0x4TWtjaElrMkxReUhCQXcKq6nGY7wrlZmr3H+m67CxfTn1G8MLD38j
QW5zCTE5peahrgDEpuQ/HvEarGyX8tFfVhr3v0svdgjjACAg2caz9w==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2022-05-29T05:07:59Z"
mac: ENC[AES256_GCM,data:FjfFAEhojITR8CY6x252GGhbky3wtKBvYxb1tjRCw77tmPTTN9BuEK87uXRm9GKuGhmiEi1Jd+V+aCUGKlUloqQLY2X7IONLPZUK+p5RekBimThWnUzPj2UToPYkib0E2cvRRyhWk0Ot/aCjRiiDiIsP85YlbNFx+J3rcxZF3Rg=,iv:6j/8soWURwGcLKUn5g6kh3nclj31wB97bcrFKQV43+8=,tag:s1tVSVKTKmvkgExzPzI8ug==,type:str]
lastmodified: "2022-07-26T12:54:04Z"
mac: ENC[AES256_GCM,data:jd3BQ1UOO/0L2nce93VD4jjI9LKDFOTaSu+FWsPKbOw1D1JQd85YBo4UW7UTjhQDM4sgI9gHUHOODlhxpkt1sT3VQ7XBpsLSL8zdjKy4u2DL6YPdXAz9Ap1nq8na82/b3FLhh7CIOMjRaFoVRriLX1JVoNHyn0G7/UdxwgcLul4=,iv:8CKrsOJcIxOlK6QdMZys7GpZ3DjbWQV7uiwk4i5x0iE=,tag:DUkGT97vMU4o7WSPrwVolg==,type:str]
pgp:
- created_at: "2022-05-29T14:14:08Z"
enc: |-
@ -88,4 +89,4 @@ sops:
-----END PGP MESSAGE-----
fp: ED06986DFAAE6A61B751DC2F537F97DFB394C433
unencrypted_suffix: _unencrypted
version: 3.7.2
version: 3.7.3

View File

@ -1,4 +1,5 @@
wg-seckey: ENC[AES256_GCM,data:v3ZZcnkzyOXqBcxUqXWqv0GoLTrc9oE2UFvolCuyg/jWBkmA2BeZ/hmPFTs=,iv:uOUwhbT3xYMbAAY+iNLl4pNWFJvXaFbIC0hir9t2sFE=,tag:YuxKlQaoq/DkdEqgCgELHQ==,type:str]
telegram-decoder-token: ENC[AES256_GCM,data:mF8PVyq0D0a0UUG/bLmeTQ8mdsQiFJtQUL2oig0iYPE=,iv:R0wTTU7vtBQV4ynyfVy/wQJYkfGa2M03DZ9limEIiQw=,tag:aIYkV1rwjoJz48zVgrhSbA==,type:str]
sops:
kms: []
gcp_kms: []
@ -14,8 +15,8 @@ sops:
eDlibXBhc2xvaTFVNlpGTURtOUJCd1EK27PVh/HThLvHJLgbJyei7bsUkKfeYPWU
7ziDaIw3QLlaIJq5GMe0hZVAxwVhO0hVpkbIklYRQ4ErV64rJPYIKw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2022-05-29T05:11:02Z"
mac: ENC[AES256_GCM,data:PMutuIGIFYxJ6z4AcyQsSW1RpglbGI0LnmSj8T/T+8/1+EnuMz6MnW7Y6JPbxgFcFE2ukwP/YYwaaoPD94zgwlEYDPtZFjlsWDIE3PgU+f7nzg6S9uyZcSYvPGt6kxB+Pw8jqPpv39jhyIz7rhcNvnaNM7b9GF66kv5dibt0Uq4=,iv:NLHjBXTUuYbcALqP8I/hRiyQfh48yDnChtWA3yAH93I=,tag:Ty0dkRHnPE4eCL49TWUgHA==,type:str]
lastmodified: "2022-07-26T12:54:19Z"
mac: ENC[AES256_GCM,data:ibKzHbJoGqlf5ExKlma10uez1xaZIWz2sn3si7HmIP9v2ZjMT2CwZ8ARZ5R7PC9H5Qr44VbmuryzcLDK31e7x7OgmkbyGKDzj0YcEgTOngonf8qGuxrLu0jNKRZF+jW9SLV/JDdDvFFWlEFV202CA3T5QzlblVbexodHv5CnNVs=,iv:GFAuvNksuwqz7KwAYgcUSUJRf2EpQrs6TGRdA5PE0Ig=,tag:t3foIGJFJnQNsGveTiBFBg==,type:str]
pgp:
- created_at: "2022-05-29T14:14:14Z"
enc: |-
@ -88,4 +89,4 @@ sops:
-----END PGP MESSAGE-----
fp: ED06986DFAAE6A61B751DC2F537F97DFB394C433
unencrypted_suffix: _unencrypted
version: 3.7.2
version: 3.7.3

View File

@ -1,4 +1,5 @@
wg-seckey: ENC[AES256_GCM,data:eoFthwflpzD1ghENFcbUzY94GlluPqYljMPOMlQ5C+mi06eMUPW/bkR9rZ0=,iv:POEwqlU+lbzEVebCs0DTRhpdFaAMnqMMC0jAAGUt0Qk=,tag:DM4aNr+vTJO7BtP2zQE3Qw==,type:str]
telegram-decoder-token: ENC[AES256_GCM,data:J8uWDOPX2sc9x/KdTmWX3GFM4+6dB0ABwI5CZt/YZ2A=,iv:ntgMv9KJ0a0qLgS6N/9fxjoyGboMLJZHnOjPwR0H8mU=,tag:VnMjz5qnD5NFqCQcSjZUhA==,type:str]
sops:
kms: []
gcp_kms: []
@ -14,8 +15,8 @@ sops:
RFJ6Yno0ZTBuVFFmYitES1Rrb3dXeE0K3T9Oc9w6SqlUfxGLBlzzxbfypPM0e3Sc
wdwEAZpZtQSnKBTJqfU1zdLlXGRm29zTR/9761jNeIBguLvnHLillw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2022-05-29T05:11:44Z"
mac: ENC[AES256_GCM,data:B4erXYeGDDNTNOyNVr6FC05BzVe0kYYpUbauUAKVS2LyzkYNvTUXJI3SVjgB59TaBYK2KxYZd+apK4zg/HgY5zPUo9L6PzsvMnBXr9X3vTE0VJDrofGXnYbhJsZMic67+qlPmJsudUU0XREUzdFYXdfsBFGX8yG8HmnvfS7v4To=,iv:Des7ccn+io0Q8sHfcnr9TMqwzg6eAR1TV/ryX/l1z5o=,tag:y5tE/gKUVSwCDtLi52RhOg==,type:str]
lastmodified: "2022-07-26T12:54:39Z"
mac: ENC[AES256_GCM,data:4R69Gb9hW1kBY5Tq5Y6VZlN/TlxQLN2jlrVHrd/oWy4G8MBi+z97ph8WbSVx0mD8G2pffPjk44eTHPGXMSshrpIrEnXuBtkxeNu5wAFNxZESnEWqonskTca8HM9D5IK4RBVloY5QZhr86IWTMSxJoEkQff4fu1E26g+aE5jYtek=,iv:aorfrBReDIX67dR1E8QY/lfAD2H6A+EQMpjmXpEc0E8=,tag:qozu3wWHYJJ8wTnETkZoBg==,type:str]
pgp:
- created_at: "2022-05-29T14:14:19Z"
enc: |-
@ -88,4 +89,4 @@ sops:
-----END PGP MESSAGE-----
fp: ED06986DFAAE6A61B751DC2F537F97DFB394C433
unencrypted_suffix: _unencrypted
version: 3.7.2
version: 3.7.3