| 1 | { config, lib, ... }: |
| 2 | let |
| 3 | nodes = { |
| 4 | ofborg-eval02 = { |
| 5 | substituter = "eval02.ofborg.org"; |
| 6 | public-key = "eval02.ofborg.org:85vbhZviIv2eeC3VKK2T/X/zzgIYLYjyGw3Pi+Pqh34="; |
| 7 | }; |
| 8 | ofborg-eval03 = { |
| 9 | substituter = "eval03.ofborg.org"; |
| 10 | public-key = "eval03.ofborg.org:HATIHUe6QMH83dbDpnUv9VeuaNDBjeWshW2monmRK1c="; |
| 11 | }; |
| 12 | ofborg-eval04 = { |
| 13 | substituter = "eval04.ofborg.org"; |
| 14 | public-key = "eval04.ofborg.org:k4s/u1JWDew+dwXcuFvAAVFK2DfN6ib+73iCwX5gkBE="; |
| 15 | }; |
| 16 | ofborg-build01 = { |
| 17 | substituter = "build01.ofborg.org"; |
| 18 | public-key = "build01.ofborg.org:Edgo6+RgHXa8nlxuLAgh18fMhQuXGdXNcYK6yNKQaQ8="; |
| 19 | }; |
| 20 | ofborg-build02 = { |
| 21 | substituter = "build02.ofborg.org"; |
| 22 | public-key = "build02.ofborg.org:uw5IBpYv129c8+ltrQ288TGvmE5JqNZA+q7GW3tDaUk="; |
| 23 | }; |
| 24 | ofborg-build03 = { |
| 25 | substituter = "build03.ofborg.org"; |
| 26 | public-key = "build03.ofborg.org:8LFTt2s1cbzniV4MLkT30qEHPY0cK3RP+6fk03GD3lw="; |
| 27 | }; |
| 28 | ofborg-build04 = { |
| 29 | substituter = "build04.ofborg.org"; |
| 30 | public-key = "build04.ofborg.org:NHEGj8moimu2TiZNIA4DOb4kVhvds6Vlzr2TAwX1mUY="; |
| 31 | }; |
| 32 | ofborg-build05 = { |
| 33 | substituter = "build05.ofborg.org"; |
| 34 | public-key = "build05.ofborg.org:RPuXIkyo86mCmsfYqyK/STIbPE+DM9Ixcw7HUe64Ss4="; |
| 35 | }; |
| 36 | }; |
| 37 | ownNode = nodes."${config.networking.hostName}"; |
| 38 | allOtherNodes = lib.filterAttrs (n: _: n != config.networking.hostName) nodes; |
| 39 | in |
| 40 | { |
| 41 | services.harmonia.cache = { |
| 42 | enable = true; |
| 43 | signKeyPaths = [ "/run/secrets/harmonia/secret" ]; |
| 44 | settings = { |
| 45 | priority = 50; |
| 46 | }; |
| 47 | }; |
| 48 | |
| 49 | nix.settings = { |
| 50 | fallback = true; |
| 51 | extra-substituters = lib.mapAttrsToList (_: config: "http://${config.substituter}") allOtherNodes; |
| 52 | extra-trusted-public-keys = lib.mapAttrsToList (_: config: config.public-key) allOtherNodes; |
| 53 | }; |
| 54 | |
| 55 | networking.firewall.allowedTCPPorts = [ 80 ]; |
| 56 | services.nginx = { |
| 57 | enable = true; |
| 58 | recommendedTlsSettings = true; |
| 59 | virtualHosts."${ownNode.substituter}" = { |
| 60 | locations."/".extraConfig = '' |
| 61 | proxy_pass http://127.0.0.1:5000; |
| 62 | proxy_set_header Host $host; |
| 63 | proxy_redirect http:// https://; |
| 64 | proxy_http_version 1.1; |
| 65 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| 66 | proxy_set_header Upgrade $http_upgrade; |
| 67 | proxy_set_header Connection $connection_upgrade; |
| 68 | ''; |
| 69 | }; |
| 70 | }; |
| 71 | } |