Merge branch 'another-refactor'

This commit is contained in:
oxapentane - 2022-07-10 22:06:36 +02:00
commit d0faa8923a
Signed by: oxapentane
GPG Key ID: 91FA5E5BF9AA901C
30 changed files with 381 additions and 1413 deletions

View File

@ -2,6 +2,6 @@
"name": "Zentralwerk",
"lat": 51.0810632,
"lon": 13.7280758,
"id": "61ef8e8b-f4d8-4d1d-8fa8-1a1d3d48888e",
"region": 14612000
"id": "8aa034af-3545-4c36-b235-17e46cad6f07",
"region": 0
}

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,6 +1,7 @@
{
"nodes": {
"click": {
<<<<<<< HEAD
"inputs": {
"nixpkgs": [
"dump-dvb",
@ -48,14 +49,47 @@
"clicky-bunty-server_2": {
"inputs": {
"naersk": "naersk_4",
=======
"inputs": {
>>>>>>> another-refactor
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
<<<<<<< HEAD
"stops": "stops_4",
"utils": "utils_5"
},
"locked": {
=======
"utils": "utils"
},
"locked": {
"lastModified": 1657401201,
"narHash": "sha256-59C4mIKZ5ZCE5c5PiUL1TEOsOGm0fWOuiG6oJwM0tGw=",
"owner": "dump-dvb",
"repo": "click",
"rev": "7ba2ec99d39e6e95b10940ab33712d91742a765e",
"type": "github"
},
"original": {
"owner": "dump-dvb",
"repo": "click",
"type": "github"
}
},
"clicky-bunty-server": {
"inputs": {
"naersk": "naersk",
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
"stops": "stops",
"utils": "utils_2"
},
"locked": {
>>>>>>> another-refactor
"lastModified": 1657398177,
"narHash": "sha256-3QEvHevT/gjLKuYP4KTFlOuNQb3fvVBpXEXbICX+aRY=",
"owner": "dump-dvb",
@ -73,6 +107,7 @@
"inputs": {
"naersk": "naersk_2",
"nixpkgs": [
<<<<<<< HEAD
"nixpkgs"
],
"stops": "stops_2",
@ -101,6 +136,13 @@
],
"stops": "stops_5",
"utils": "utils_6"
=======
"dump-dvb",
"nixpkgs"
],
"stops": "stops_2",
"utils": "utils_3"
>>>>>>> another-refactor
},
"locked": {
"lastModified": 1657403938,
@ -120,6 +162,7 @@
"inputs": {
"naersk": "naersk_3",
"nixpkgs": [
<<<<<<< HEAD
"nixpkgs"
],
"stops": "stops_3",
@ -155,6 +198,20 @@
"owner": "dump-dvb",
"repo": "decode-server",
"rev": "c1e24573c71fff0919cae7fb5af53153c11a1532",
=======
"dump-dvb",
"nixpkgs"
],
"stops": "stops_3",
"utils": "utils_4"
},
"locked": {
"lastModified": 1657479879,
"narHash": "sha256-nrrlUCO2A1UL13RRGVmWasIenAh8g2i13LVD/Mj0Uy8=",
"owner": "dump-dvb",
"repo": "decode-server",
"rev": "7731fbc37a76d49569eff63525ff0a960e3ec5e4",
>>>>>>> another-refactor
"type": "github"
},
"original": {
@ -187,9 +244,15 @@
"dump-dvb": {
"inputs": {
"click": "click",
<<<<<<< HEAD
"clicky-bunty-server": "clicky-bunty-server_2",
"data-accumulator": "data-accumulator_2",
"decode-server": "decode-server_2",
=======
"clicky-bunty-server": "clicky-bunty-server",
"data-accumulator": "data-accumulator",
"decode-server": "decode-server",
>>>>>>> another-refactor
"docs": "docs",
"dvb-api": "dvb-api",
"funnel": "funnel",
@ -197,16 +260,28 @@
"nixpkgs"
],
"radio-conf": "radio-conf",
<<<<<<< HEAD
"utils": "utils_11",
=======
"utils": "utils_8",
>>>>>>> another-refactor
"wartrammer": "wartrammer",
"windshield": "windshield"
},
"locked": {
<<<<<<< HEAD
"lastModified": 1657469990,
"narHash": "sha256-k7mhrWfYJtc/i/B+4Gm668v5Ao+eMjO6xDqFpf8bEDA=",
"owner": "dump-dvb",
"repo": "dump-dvb.nix",
"rev": "c50aacb2cdfb625c5b64a4b69051346075853fd9",
=======
"lastModified": 1657482866,
"narHash": "sha256-sgZLBYAm92SdCJSb62cC3oa+fQluaiXEx4kgHtCpCqg=",
"owner": "dump-dvb",
"repo": "dump-dvb.nix",
"rev": "c45da1511414fba143e3136450247444d6aba703",
>>>>>>> another-refactor
"type": "github"
},
"original": {
@ -217,12 +292,16 @@
},
"dvb-api": {
"inputs": {
"naersk": "naersk_7",
"naersk": "naersk_4",
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
<<<<<<< HEAD
"utils": "utils_8"
=======
"utils": "utils_5"
>>>>>>> another-refactor
},
"locked": {
"lastModified": 1657370165,
@ -230,6 +309,7 @@
"owner": "dump-dvb",
"repo": "dvb-api",
"rev": "ee21584244a3af9154efa90832784e9f98e852be",
<<<<<<< HEAD
"type": "github"
},
"original": {
@ -252,6 +332,8 @@
"owner": "dump-dvb",
"repo": "dvb-api",
"rev": "ee21584244a3af9154efa90832784e9f98e852be",
=======
>>>>>>> another-refactor
"type": "github"
},
"original": {
@ -277,11 +359,12 @@
},
"funnel": {
"inputs": {
"naersk": "naersk_8",
"naersk": "naersk_5",
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
<<<<<<< HEAD
"utils": "utils_9"
},
"locked": {
@ -312,6 +395,16 @@
"owner": "dump-dvb",
"repo": "funnel",
"rev": "e1f146f7bd5cf91fcf18c67b02260e575431ca71",
=======
"utils": "utils_6"
},
"locked": {
"lastModified": 1657482444,
"narHash": "sha256-YSfcekPeUVZ9oZDPi69Q5ZqfcHoPRf5vSdZMOlxS7wU=",
"owner": "dump-dvb",
"repo": "funnel",
"rev": "2b4480fde563596971c0d250ba2ad6502d19ec2e",
>>>>>>> another-refactor
"type": "github"
},
"original": {
@ -359,80 +452,6 @@
"type": "github"
}
},
"naersk_10": {
"inputs": {
"nixpkgs": "nixpkgs_10"
},
"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_11": {
"inputs": {
"nixpkgs": "nixpkgs_11"
},
"locked": {
"lastModified": 1655042882,
"narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=",
"owner": "nix-community",
"repo": "naersk",
"rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"naersk_12": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1655042882,
"narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=",
"owner": "nix-community",
"repo": "naersk",
"rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"naersk_13": {
"inputs": {
"nixpkgs": "nixpkgs_13"
},
"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_2": {
"inputs": {
"nixpkgs": "nixpkgs_2"
@ -473,60 +492,6 @@
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"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_5": {
"inputs": {
"nixpkgs": "nixpkgs_5"
},
"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_6": {
"inputs": {
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1655042882,
"narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=",
"owner": "nix-community",
"repo": "naersk",
"rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"naersk_7": {
"inputs": {
"nixpkgs": "nixpkgs_7"
},
"locked": {
"lastModified": 1652722411,
"narHash": "sha256-FxzNgYiH9c91hUVAntcjrqY//KOTUPP2a4e8Wyuysxg=",
@ -541,9 +506,9 @@
"type": "github"
}
},
"naersk_8": {
"naersk_5": {
"inputs": {
"nixpkgs": "nixpkgs_8"
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1655042882,
@ -559,9 +524,9 @@
"type": "github"
}
},
"naersk_9": {
"naersk_6": {
"inputs": {
"nixpkgs": "nixpkgs_9"
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1652722411,
@ -607,6 +572,7 @@
"type": "github"
}
},
<<<<<<< HEAD
"nixpkgs_10": {
"locked": {
"lastModified": 1652840887,
@ -665,6 +631,8 @@
"type": "indirect"
}
},
=======
>>>>>>> another-refactor
"nixpkgs_2": {
"locked": {
"lastModified": 1653326962,
@ -694,48 +662,6 @@
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1653326962,
"narHash": "sha256-W8feCYqKTsMre4nAEpv5Kx1PVFC+hao/LwqtB2Wci/8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "41cc1d5d9584103be4108c1815c350e07c807036",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1653326962,
"narHash": "sha256-W8feCYqKTsMre4nAEpv5Kx1PVFC+hao/LwqtB2Wci/8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "41cc1d5d9584103be4108c1815c350e07c807036",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1656936967,
"narHash": "sha256-7EWfyOpyS33v5WsaIxm9Rw5yUBkoBZLHds8SsS0Mr/4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e0db4edff65df3bd12012adb36244a9409d7a754",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_7": {
"locked": {
"lastModified": 1652840887,
"narHash": "sha256-gEK4NNa4GwIgTZE63kt/4WTFAWRTJVSa30+h4ZjFh9U=",
@ -749,7 +675,7 @@
"type": "indirect"
}
},
"nixpkgs_8": {
"nixpkgs_5": {
"locked": {
"lastModified": 1657413868,
"narHash": "sha256-qDC9kUZhGhoDtOzhd6kIMUQHRZNys6/xsJAWrJB+gqU=",
@ -763,7 +689,7 @@
"type": "indirect"
}
},
"nixpkgs_9": {
"nixpkgs_6": {
"locked": {
"lastModified": 1652840887,
"narHash": "sha256-gEK4NNa4GwIgTZE63kt/4WTFAWRTJVSa30+h4ZjFh9U=",
@ -777,13 +703,48 @@
"type": "indirect"
}
},
"nixpkgs_7": {
"locked": {
"lastModified": 1657296039,
"narHash": "sha256-Ghh39+aS+pw5sTP/ZO8VIKE6sBhMadDaQZtf+3yu4Vc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "71d7a4c037dc4f3e98d5c4a81b941933cf5bf675",
"type": "github"
},
"original": {
<<<<<<< HEAD
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_8": {
"locked": {
"lastModified": 1657413868,
"narHash": "sha256-qDC9kUZhGhoDtOzhd6kIMUQHRZNys6/xsJAWrJB+gqU=",
=======
>>>>>>> another-refactor
"owner": "NixOS",
"ref": "nixos-22.05",
"repo": "nixpkgs",
<<<<<<< HEAD
"rev": "7802f1b6479d6f04bea5cc94e8290ea61e210ecf",
=======
>>>>>>> another-refactor
"type": "github"
}
},
"radio-conf": {
"inputs": {
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
<<<<<<< HEAD
"utils": "utils_10"
=======
"utils": "utils_7"
>>>>>>> another-refactor
},
"locked": {
"lastModified": 1657130203,
@ -799,6 +760,7 @@
"type": "github"
}
},
<<<<<<< HEAD
"radio-conf_2": {
"inputs": {
"nixpkgs": [
@ -825,17 +787,21 @@
"clicky-bunty-server": "clicky-bunty-server",
"data-accumulator": "data-accumulator",
"decode-server": "decode-server",
=======
"root": {
"inputs": {
>>>>>>> another-refactor
"dump-dvb": "dump-dvb",
"dvb-api": "dvb-api_2",
"funnel": "funnel_2",
"microvm": "microvm",
"naersk": "naersk_12",
"nixpkgs": "nixpkgs_12",
"radio-conf": "radio-conf_2",
"nixpkgs": "nixpkgs_7",
"sops-nix": "sops-nix",
<<<<<<< HEAD
"stops": "stops_7",
"wartrammer": "wartrammer_2",
"windshield": "windshield_2"
=======
"stops": "stops_4"
>>>>>>> another-refactor
}
},
"sops-nix": {
@ -846,11 +812,19 @@
"nixpkgs-22_05": "nixpkgs-22_05"
},
"locked": {
<<<<<<< HEAD
"lastModified": 1657468625,
"narHash": "sha256-yNDWBqCtERVPyoUgxB/txYQiKzXLn4SgkA/Oj/vLZp8=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "11c61acdd6dec70cf2c3e200d16d7fec00b2edbe",
=======
"lastModified": 1657474083,
"narHash": "sha256-AVs6Tnu5E81VrT4jPzkkUdBnV2YEoHao7/JI2XBC04U=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "2c898a6d760c0c47fecd76317175206951ab884d",
>>>>>>> another-refactor
"type": "github"
},
"original": {
@ -910,10 +884,11 @@
"stops_4": {
"flake": false,
"locked": {
"lastModified": 1652912878,
"narHash": "sha256-HexjCe/egqPy+pgJniQB+EgFc04lH0HCuZ7kNzRsBJU=",
"lastModified": 1657469803,
"narHash": "sha256-Iuu1wcSfqXog9AZpE6CRyWSVjQy342a0XhTX42YfUII=",
"owner": "dump-dvb",
"repo": "stop-names",
<<<<<<< HEAD
"rev": "17c22c4d4908f08166e7a737abc65dee5d46dcc4",
"type": "github"
},
@ -962,6 +937,8 @@
"narHash": "sha256-Iuu1wcSfqXog9AZpE6CRyWSVjQy342a0XhTX42YfUII=",
"owner": "dump-dvb",
"repo": "stop-names",
=======
>>>>>>> another-refactor
"rev": "373f443980a4bbefb7a8eb8eb358e0ed7a88856b",
"type": "github"
},
@ -973,6 +950,7 @@
},
"utils": {
"locked": {
<<<<<<< HEAD
"lastModified": 1652776076,
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
"owner": "numtide",
@ -1003,6 +981,8 @@
},
"utils_11": {
"locked": {
=======
>>>>>>> another-refactor
"lastModified": 1656928814,
"narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
"owner": "numtide",
@ -1016,6 +996,7 @@
"type": "github"
}
},
<<<<<<< HEAD
"utils_12": {
"locked": {
"lastModified": 1652776076,
@ -1107,6 +1088,9 @@
}
},
"utils_18": {
=======
"utils_10": {
>>>>>>> another-refactor
"locked": {
"lastModified": 1649676176,
"narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
@ -1138,11 +1122,11 @@
},
"utils_3": {
"locked": {
"lastModified": 1656928814,
"narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
"lastModified": 1652776076,
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249",
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
"type": "github"
},
"original": {
@ -1213,6 +1197,7 @@
},
"utils_8": {
"locked": {
<<<<<<< HEAD
"lastModified": 1652776076,
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
"owner": "numtide",
@ -1230,6 +1215,10 @@
"locked": {
"lastModified": 1656928814,
"narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
=======
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
>>>>>>> another-refactor
"owner": "numtide",
"repo": "flake-utils",
"rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249",
@ -1241,14 +1230,48 @@
"type": "github"
}
},
"utils_8": {
"locked": {
"lastModified": 1656928814,
"narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_9": {
"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"
}
},
"wartrammer": {
"inputs": {
"naersk": "naersk_9",
"naersk": "naersk_6",
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
<<<<<<< HEAD
"utils": "utils_12"
=======
"utils": "utils_9"
>>>>>>> another-refactor
},
"locked": {
"lastModified": 1657129381,
@ -1264,6 +1287,7 @@
"type": "github"
}
},
<<<<<<< HEAD
"wartrammer_2": {
"inputs": {
"naersk": "naersk_13",
@ -1286,13 +1310,19 @@
"type": "github"
}
},
=======
>>>>>>> another-refactor
"windshield": {
"inputs": {
"nixpkgs": [
"dump-dvb",
"nixpkgs"
],
<<<<<<< HEAD
"utils": "utils_13"
=======
"utils": "utils_10"
>>>>>>> another-refactor
},
"locked": {
"lastModified": 1657126666,
@ -1307,6 +1337,7 @@
"repo": "windshield",
"type": "github"
}
<<<<<<< HEAD
},
"windshield_2": {
"inputs": {
@ -1328,6 +1359,8 @@
"repo": "windshield",
"type": "github"
}
=======
>>>>>>> another-refactor
}
},
"root": "root",

128
flake.nix
View File

@ -1,44 +1,19 @@
{
inputs = {
nixpkgs.url = github:NixOS/nixpkgs/nixos-22.05;
dump-dvb = {
url = github:dump-dvb/dump-dvb.nix;
inputs.nixpkgs.follows = "nixpkgs";
};
naersk = {
url = github:nix-community/naersk;
inputs.nixpkgs.follows = "nixpkgs";
};
microvm = {
url = github:astro/microvm.nix;
inputs.nixpkgs.follows = "nixpkgs";
};
radio-conf = {
url = github:dump-dvb/radio-conf;
inputs.nixpkgs.follows = "nixpkgs";
};
nixpkgs.url = github:NixOS/nixpkgs/nixos-22.05;
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";
};
funnel = {
url = github:dump-dvb/funnel;
sops-nix = {
url = github:Mic92/sops-nix;
inputs.nixpkgs.follows = "nixpkgs";
};
@ -46,48 +21,27 @@
url = github:dump-dvb/stop-names;
flake = false;
};
windshield = {
url = github:dump-dvb/windshield;
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";
};
sops-nix = {
url = github:Mic92/sops-nix;
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, dump-dvb, nixpkgs, microvm, radio-conf, data-accumulator, decode-server, dvb-api, funnel, stops, windshield, wartrammer, clicky-bunty-server, sops-nix, ... }@inputs:
outputs =
inputs@{ self
, dump-dvb
, microvm
, nixpkgs
, sops-nix
, stops
, ...
}:
let
pkgs = nixpkgs.legacyPackages."x86_64-linux";
lib = pkgs.lib;
data-hoarder-modules = [
./modules/base.nix
./modules/data-hoarder/data-accumulator.nix
./modules/data-hoarder/nginx.nix
./modules/data-hoarder/api.nix
./modules/data-hoarder/socket.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 = [
dump-dvb.overlays.default
@ -123,6 +77,7 @@
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
@ -156,10 +111,7 @@
data-hoarder = self.nixosConfigurations.data-hoarder.config.system.build.vm;
mobile-box-vm = self.nixosConfigurations.mobile-box.config.system.build.vm;
mobile-box-disk = self.nixosConfigurations.mobile-box.config.system.build.diskImage;
user-stop-box-wyse-3040-image = self.nixosConfigurations.user-stop-box-wyse-3040.config.system.build.diskImage;
user-stop-box-rpi4-image = self.nixosConfigurations.user-stop-box-rpi4.config.system.build.diskImage;
staging-microvm = self.nixosConfigurations.staging-data-hoarder.config.microvm.declaredRunner;
decode-server = decode-server.packages."x86_64-linux".telegram-decoder;
} // (import ./pkgs/deployment.nix { inherit self pkgs; systems = stop_boxes; });
in
{
@ -171,20 +123,18 @@
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/traffic-stop-boxes/mobile-box.nix
./modules/traffic-stop-boxes/mobile-box-dresden.nix
./modules/dump-dvb
./user-config.nix
sops-nix.nixosModules.sops
{
nixpkgs.overlays = [
dump-dvb.overlays.default
];
dump-dvb.stopsJson = "${stops}/stops.json";
dump-dvb.systemNumber = 130;
dump-dvb.telegramDecoder.configFile = "${self}/configs/mobile_box.json";
}
];
};
@ -208,45 +158,6 @@
}
] ++ data-hoarder-modules;
};
user-stop-box-wyse-3040 = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
diskModule
./hosts/user-stop-box/configuration.nix
./hosts/user-stop-box/hardware-configuration.nix
./hardware/configuration-dell-wyse-3040.nix
./modules/base.nix
./modules/dump-dvb
./modules/user-stop-box/user.nix
./user-config.nix
{
nixpkgs.overlays = [
dump-dvb.overlays.default
];
dump-dvb.stopsJson = "${stops}/stops.json";
}
];
};
user-stop-box-rpi4 = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
specialArgs = { inherit inputs; };
modules = [
diskModule
./hosts/user-stop-box-rpi4/configuration.nix
./hosts/user-stop-box-rpi4/hardware-configuration.nix
./hardware/configuration-rpi-4b.nix
./user-config.nix
./modules/base.nix
./modules/dump-dvb
./modules/user-stop-box/user.nix
{
nixpkgs.overlays = [
dump-dvb.overlays.default
];
}
];
};
};
hydraJobs = {
@ -255,10 +166,7 @@
traffic-stop-box-0."x86_64-linux" = self.nixosConfigurations.traffic-stop-box-0.config.system.build.toplevel;
traffic-stop-box-0-disk."x86_64-linux" = self.nixosConfigurations.traffic-stop-box-0.config.system.build.diskImage;
mobile-box."x86_64-linux" = self.nixosConfigurations.mobile-box.config.system.build.toplevel;
user-stop-box-wyse-3040-image."x86_64-linux" = self.nixosConfigurations.user-stop-box-wyse-3040.config.system.build.diskImage;
user-stop-box-rpi4-image."x86_64-linux" = self.nixosConfigurations.user-stop-box-rpi4.config.system.build.diskImage;
sops-binaries."x86_64-linux" = sops-nix.packages."x86_64-linux".sops-install-secrets;
decode-server."x86_64-linux" = self.packages."x86_64-linux".decode-server;
};
};
}

View File

@ -26,16 +26,12 @@
}
];
};
environment.systemPackages = with pkgs; [ influxdb ];
networking.defaultGateway = "192.109.108.61";
networking.nameservers = [ "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

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

View File

@ -3,9 +3,6 @@
{
boot.tmpOnTmpfs = true;
hardware.hackrf.enable = true;
hardware.rtl-sdr.enable = true;
networking.hostName = "traffic-stop-box-${toString config.dump-dvb.systemNumber}"; # Define your hostname.
# Set your time zone.

View File

@ -1,36 +0,0 @@
{ ... }:
{
boot.tmpOnTmpfs = true;
hardware.hackrf.enable = true;
hardware.rtl-sdr.enable = true;
networking.hostName = "user-station-box"; # Define your hostname.
# Set your time zone.
time.timeZone = "Europe/Berlin";
documentation.enable = false;
nix = {
buildCores = 1;
gc = {
automatic = true;
dates = "daily";
};
};
services.journald.extraConfig = ''
SystemMaxUse=5M
'';
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "21.11"; # Did you read the comment?
}

View File

@ -1,31 +0,0 @@
# 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.
{ modulesPath, ... }:
{
imports =
[
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" "sdhci_acpi" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{
device = "/dev/disk/by-label/nixos";
fsType = "ext4";
autoResize = true;
};
fileSystems."/boot" =
{
device = "/dev/disk/by-label/ESP";
fsType = "vfat";
};
swapDevices = [ ];
}

View File

@ -1,40 +0,0 @@
{ ... }:
{
boot.tmpOnTmpfs = true;
hardware.hackrf.enable = true;
hardware.rtl-sdr.enable = true;
networking.hostName = "user-station-box"; # Define your hostname.
# Set your time zone.
time.timeZone = "Europe/Berlin";
documentation.enable = false;
nix = {
buildCores = 1;
gc = {
automatic = true;
dates = "daily";
};
};
services.journald.extraConfig = ''
SystemMaxUse=5M
'';
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.systemd-boot.configurationLimit = 1;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "21.11"; # Did you read the comment?
}

View File

@ -1,30 +0,0 @@
# 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.
{ modulesPath, ... }:
{
imports =
[
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" "sdhci_acpi" ];
boot.initrd.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{
device = "/dev/disk/by-label/nixos";
fsType = "ext4";
autoResize = true;
};
fileSystems."/boot" =
{
device = "/dev/disk/by-label/ESP";
fsType = "vfat";
};
swapDevices = [ ];
}

View File

@ -1,23 +1,14 @@
{ pkgs, ... }:
{
users.users.root.initialPassword = "rewt";
nix = {
package = pkgs.nixFlakes;
extraOptions = ''
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 +21,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,22 +49,9 @@
../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;

View File

@ -1,54 +0,0 @@
{ pkgs, config, ... }: {
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";
"HTTP_PORT" = "9001";
"GRAPH_FILE" = "${config.dump-dvb.graphJson}";
"STOPS_FILE" = "${config.dump-dvb.stopsJson}";
};
serviceConfig = {
Type = "forking";
User = "dvb-api";
Restart = "always";
};
};
};
};
services = {
nginx = {
enable = true;
recommendedProxySettings = true;
virtualHosts = {
"api.${config.dump-dvb.domain}" = {
forceSSL = true;
enableACME = true;
locations = {
"/" = {
proxyPass = "http://127.0.0.1:9001/";
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,46 +1,14 @@
/*
This file contains the configuration for the gnuradio sdr decoding pipeline
*/
{ pkgs, config, ... }:
let
port = 8070;
in
{
imports = [
./postgres.nix
];
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_dvbdump.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";
};
};
};
{ config, ... }: {
dump-dvb.clickyBuntyServer = {
enable = true;
host = "127.0.0.1";
port = 8070;
postgresHost = "127.0.0.1";
postgresPort = 5423;
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;
};
services = {
@ -53,7 +21,7 @@ in
enableACME = true;
locations = {
"/" = {
proxyPass = "http://127.0.0.1:${toString port}/";
proxyPass = with config.dump-dvb.clickyBuntyServer; "http://${host}:${toString port}/";
proxyWebsockets = true;
};
};
@ -61,15 +29,4 @@ in
};
};
};
# user accounts for systemd units
users.users = {
clicky-bunty-server = {
name = "clicky-bunty-server";
description = "";
isSystemUser = true;
group = config.users.groups.postgres-dvbdump.name;
};
};
}

View File

@ -1,61 +1,27 @@
/*
This file contains the configuration for the gnuradio sdr decoding pipeline
*/
{ pkgs, config, lib, ... }: {
imports = [
./postgres.nix
];
systemd = {
services = {
"data-accumulator" = {
enable = true;
requires = [ "influxdb.service" ];
after = [ "influxdb.service" ];
wantedBy = [ "multi-user.target" ];
script = ''
export POSTGRES_TELEGRAMS_PASSWORD=$(cat ${config.sops.secrets.postgres_password_telegrams.path})
export POSTGRES_DVBDUMP_PASSWORD=$(cat ${config.sops.secrets.postgres_password_dvbdump.path})
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";
"POSTGRES_HOST" = "127.0.0.1";
"POSTGRES_PORT" = "5432";
"DATABASE_BACKEND" = "POSTGRES";
};
serviceConfig = {
Type = "forking";
User = "data-accumulator";
Restart = "always";
};
};
"influxdb" = {
serviceConfig = {
Restart = lib.mkForce "always";
};
};
};
};
services = {
influxdb = {
enable = true;
};
};
# user accounts for systemd units
users.users = {
data-accumulator = {
name = "data-accumulator";
description = "";
isNormalUser = false;
isSystemUser = true;
group = config.users.groups.postgres-dvbdump.name;
{ config, ... }:
{
dump-dvb.dataAccumulator = {
enable = true;
host = "0.0.0.0";
port = 8080;
DB = {
backend = "POSTGRES";
host = "127.0.0.1";
port = 5432;
telegramsPasswordFile = config.sops.secrets.postgres_password_telegrams.path;
dvbPasswordFile = config.sops.secrets.postgres_password_dvbdump.path;
};
GRPC = [
{
name = "FUNNEL";
host = "127.0.0.1";
port = 50051;
}
{
name = "API";
host = "127.0.0.1";
port = 9002;
}
];
};
}

View File

@ -0,0 +1,14 @@
{ config, ... }: {
imports = [
./clicky-bunty.nix
./data-accumulator.nix
./documentation.nix
./file_sharing.nix
./grafana.nix
./map.nix
./nginx.nix
./secrets.nix
./socket.nix
./website.nix
];
}

View File

@ -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,15 +1,19 @@
{ config, ... }:
{ 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 = [ config.users.users.clicky-bunty-server.name config.users.users.data-accumulator.name ];
members = [ clicky-bunty-user data-accumulator-user ];
};
postgres-telegrams = {
name = "postgres-telegrams";
members = [ config.users.users.clicky-bunty-server.name config.users.users.data-accumulator.name ];
members = [ clicky-bunty-user data-accumulator-user ];
};
};
@ -17,7 +21,7 @@
sops.secrets = {
wg-seckey = { };
postgres_password_hash_salt = {
owner = config.users.users.clicky-bunty-server.name;
owner = clicky-bunty-user;
};
postgres_password_dvbdump = {
group = config.users.groups.postgres-dvbdump.name;

View File

@ -1,28 +1,15 @@
{ pkgs, config, ... }: {
systemd = {
services = {
"funnel" = {
enable = true;
wantedBy = [ "multi-user.target" ];
script = "exec ${pkgs.funnel}/bin/funnel &";
environment = {
"GRPC_HOST" = "127.0.0.1:50052";
"DEFAULT_WEBSOCKET_HOST" = "127.0.0.1:9002";
"GRAPH_FILE" = "${config.dump-dvb.graphJson}";
"STOPS_FILE" = "${config.dump-dvb.stopsJson}";
};
serviceConfig = {
Type = "forking";
User = "funnel";
Restart = "always";
};
};
dump-dvb.funnel = {
enable = true;
GRPC = {
host = "127.0.0.1";
port = 9002;
};
defaultWebsocket = {
host = "127.0.0.1";
port = 50052;
};
};
services = {
nginx = {
enable = true;
@ -33,7 +20,7 @@
enableACME = true;
locations = {
"/" = {
proxyPass = "http://127.0.0.1:9002/";
proxyPass = with config.dump-dvb.funnel.GRPC; "http://${host}:${toString port}/";
proxyWebsockets = true;
};
};
@ -41,14 +28,4 @@
};
};
};
# user accounts for systemd units
users.users = {
funnel = {
name = "funnel";
description = "public websocket serive";
isNormalUser = true;
extraGroups = [ ];
};
};
}

View File

@ -1 +0,0 @@
{ }

View File

@ -1,7 +1,5 @@
{
imports = [
./gnuradio.nix
./telegram-decoder.nix
./general-options.nix
];
}

View File

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

View File

@ -1,66 +0,0 @@
{ pkgs, config, lib, ... }:
let
receiver = pkgs.gnuradio-decoder;
cfg = config.dump-dvb.services.gnuradio;
in
{
options.dump-dvb.services.gnuradio = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''Wether to enable dump-dvb gnuradio reciever'';
};
device = lib.mkOption {
type = lib.types.str;
default = "";
example = "hackrf=0";
description = ''Device string to pass to gnuradio'';
};
frequency = lib.mkOption {
type = lib.types.int;
default = 170795000;
description = ''Frequency to tune radio to'';
};
offset = lib.mkOption {
type = lib.types.int;
default = 19550;
description = ''Offset of the signal from center frequency'';
};
};
config = lib.mkIf config.dump-dvb.services.gnuradio.enable {
systemd.services."gnuradio" = {
enable = true;
wantedBy = [ "multi-user.target" ];
script = "exec ${receiver}/bin/gnuradio-decoder-cpp ${toString cfg.frequency} ${toString cfg.offset} ${cfg.device} &";
serviceConfig = {
Type = "forking";
User = "gnuradio";
Restart = "on-failure";
StartLimitBurst = "2";
StartLimitIntervalSec = "150s";
};
};
users.groups.gnuradio = { };
users.users.gnuradio = {
name = "gnuradio";
description = "gnu radio service user";
isNormalUser = true;
group = "gnuradio";
extraGroups = [ "plugdev" ];
};
security.wrappers.gnuradio-decode = {
owner = "gnuradio";
group = "users";
capabilities = "cap_sys_nice+eip";
source = "${receiver}/bin/gnuradio-decoder-cpp";
};
};
}

View File

@ -1,13 +0,0 @@
{ ... }:
{
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="
];
}

View File

@ -1,63 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.dump-dvb.services.telegram-decoder;
in
{
options.dump-dvb.services.telegram-decoder = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''Wether to enable dump-dvb telegram-decoder'';
};
server = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ "https://dump.dvb.solutions/" ];
description = ''URL of the dump-dvb websocket'';
};
configFile = lib.mkOption {
type = lib.types.str;
default = "/etc/telegram-decoder/settings.json";
description = ''Path to telegram-decoder config'';
};
authTokenFile = lib.mkOption {
type = lib.types.str;
default = "/etc/telegram-decoder/token";
description = ''Path to telegram-decoder auth token'';
};
};
config = lib.mkIf config.dump-dvb.services.telegram-decoder.enable {
environment.systemPackages = [ pkgs.telegram-decoder ];
users.groups.telegram-decoder = { };
users.users.telegram-decoder = {
name = "telegram-decoder";
description = "gnu radio service user";
group = "telegram-decoder";
isSystemUser = true;
};
systemd.services."telegram-decoder" = {
enable = true;
wantedBy = [ "multi-user.target" ];
script = "exec ${pkgs.telegram-decoder}/bin/telegram-decode --config ${cfg.configFile} --server ${(builtins.concatStringsSep " " cfg.server)} &";
environment = {
AUTHENTICATION_TOKEN_PATH = cfg.authTokenFile;
};
serviceConfig = {
Type = "forking";
User = "telegram-decoder";
Restart = "on-failure";
StartLimitBurst = "2";
StartLimitIntervalSec = "150s";
};
};
};
}

View File

@ -0,0 +1,33 @@
{ config, pkgs, ... }:
{
dump-dvb = {
gnuradio = {
enable = true;
device = "hackrf=0";
frequency = 170795000;
offset = 19550;
};
telegramDecoder = {
enable = true;
server = [ "http://127.0.0.1:8080" ];
};
dataAccumulator = {
enable = true;
host = "0.0.0.0";
port = 8080;
DB.backend = "CSVFILE";
CSVFile = "/var/lib/data-accumulator/formatted.csv";
};
};
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,133 +0,0 @@
{ pkgs, ... }:
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 = {
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

@ -13,13 +13,13 @@ let
receiver_config = lib.elemAt receiver_configs config.dump-dvb.systemNumber;
in
{
dump-dvb.services.gnuradio = {
dump-dvb.gnuradio = {
enable = true;
frequency = receiver_config.frequency;
offset = receiver_config.offset;
device = receiver_config.device;
};
dump-dvb.services.telegram-decoder = {
dump-dvb.telegramDecoder = {
enable = true;
server = [ "http://10.13.37.1:8080" "http://10.13.37.5:8080" ];
configFile = file;

View File

@ -1,12 +0,0 @@
{
dump-dvb.services.gnuradio = {
enable = true;
# frequency = 105200000;
# offset = 1100;
# device = "";
};
dump-dvb.services.telegram-decoder = {
enable = true;
};
}