|
26 | 26 | substring |
27 | 27 | versionOlder |
28 | 28 |
|
29 | | - fileContents |
30 | 29 | readFile |
31 | 30 |
|
32 | 31 | literalExpression |
@@ -129,17 +128,18 @@ let |
129 | 128 | in replaceSec' { }; |
130 | 129 |
|
131 | 130 | # Erlang/Elixir uses a somewhat special format for IP addresses |
132 | | - erlAddr = addr: fileContents |
133 | | - (pkgs.runCommand addr { |
134 | | - nativeBuildInputs = [ cfg.package.elixirPackage ]; |
135 | | - code = '' |
136 | | - case :inet.parse_address('${addr}') do |
137 | | - {:ok, addr} -> IO.inspect addr |
138 | | - {:error, _} -> System.halt(65) |
139 | | - end |
140 | | - ''; |
141 | | - passAsFile = [ "code" ]; |
142 | | - } ''elixir "$codePath" >"$out"''); |
| 131 | + erlAddr = addr: |
| 132 | + let |
| 133 | + isIPv4 = (lib.match "^([0-9]+\\.){3}[0-9]+$" addr) != null; |
| 134 | + in |
| 135 | + if isIPv4 then |
| 136 | + "{${lib.concatStringsSep "," (lib.splitString "." addr)}}" |
| 137 | + else |
| 138 | + let |
| 139 | + inherit (lib.network.ipv6.fromString addr) address; |
| 140 | + parsed = lib.map (x: "16#${x}") (lib.splitString ":" address); |
| 141 | + in |
| 142 | + "{${lib.concatStringsSep "," parsed}}"; |
143 | 143 |
|
144 | 144 | configFile = format.generate "config.exs" |
145 | 145 | (replaceSec |
@@ -327,11 +327,11 @@ let |
327 | 327 | AKKOMA_CONFIG_PATH="''${RUNTIME_DIRECTORY%%:*}/config.exs" \ |
328 | 328 | ERL_EPMD_ADDRESS="${cfg.dist.address}" \ |
329 | 329 | ERL_EPMD_PORT="${toString cfg.dist.epmdPort}" \ |
330 | | - ERL_FLAGS=${escapeShellArg (escapeShellArgs ([ |
| 330 | + ERL_FLAGS="${escapeShellArgs ([ |
331 | 331 | "-kernel" "inet_dist_use_interface" (erlAddr cfg.dist.address) |
332 | 332 | "-kernel" "inet_dist_listen_min" (toString cfg.dist.portMin) |
333 | 333 | "-kernel" "inet_dist_listen_max" (toString cfg.dist.portMax) |
334 | | - ] ++ cfg.dist.extraFlags))} \ |
| 334 | + ] ++ cfg.dist.extraFlags)}" \ |
335 | 335 | RELEASE_COOKIE="$(<"''${RUNTIME_DIRECTORY%%:*}/cookie")" \ |
336 | 336 | RELEASE_NAME="akkoma" \ |
337 | 337 | exec "${cfg.package}/bin/$(basename "$0")" "$@" |
|
0 commit comments