diff --git a/configs/retiolum-map.nix b/configs/retiolum-map.nix new file mode 100644 index 0000000..633e2e7 --- /dev/null +++ b/configs/retiolum-map.nix @@ -0,0 +1,49 @@ +{ pkgs, ... }: +let + network = "retiolum"; + + stateDirectory = "retiolum-map"; + + geo-ip-database = pkgs.fetchurl { + url = "http://c.krebsco.de/GeoLite2-City.mmdb"; + sha256 = "01lcmphcw4lgy02v9sa5xly991nsk0x0w6vm0dcr1mq6zg4b15v5"; + }; + tinc-graph-source = pkgs.fetchFromGitHub { + owner = "kmein"; + repo = "tinc-graph"; + rev = "cd563ce69f221f297ec3836aa97425c06306827f"; + sha256 = "0as1mqbrlsjvylfvdn7f5574fq84w4xbm7gm38vm1fligwa2a3sq"; + }; + tinc-graph = pkgs.callPackage tinc-graph-source {}; +in +{ + systemd.services.retiolum-index = { + description = "Retiolum indexing service"; + wants = [ "tinc.${network}.service" ]; + script = '' + ${tinc-graph}/bin/tinc-graph --geoip-file ${geo-ip-database} --network ${network} \ + | ${pkgs.coreutils}/bin/tee network.json \ + | ${tinc-graph}/bin/tinc-statistics > statistics.json + + cp ${tinc-graph}/static/map.html map.html + cp ${tinc-graph}/static/graph.html graph.html + ''; + startAt = "hourly"; + path = [ pkgs.coreutils pkgs.jq pkgs.tinc_pre ]; + serviceConfig = { + Type = "oneshot"; + User = "root"; + StateDirectory = stateDirectory; + WorkingDirectory = "/var/lib/${stateDirectory}"; + }; + }; + + services.nginx = { + enable = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + virtualHosts."graph.r".locations."/".root = "/var/lib/${stateDirectory}"; + }; +} diff --git a/systems/makanek/configuration.nix b/systems/makanek/configuration.nix index a7bf61d..5f38401 100644 --- a/systems/makanek/configuration.nix +++ b/systems/makanek/configuration.nix @@ -58,6 +58,7 @@ in +