summary refs log tree commit diff
path: root/nixos/modules/services/network-filesystems/ipfs.nix
diff options
context:
space:
mode:
authorJohn Ericson <git@JohnEricson.me>2020-08-11 17:46:39 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2020-08-11 22:08:19 +0000
commite6fe9abd8b1b80c9911bc1469eef9cfb0b3f0003 (patch)
tree14f124af4b04b2d66ee7330c2fa41f7980271bc7 /nixos/modules/services/network-filesystems/ipfs.nix
parent70d68f04787d0e168723000946368ad110db6476 (diff)
downloadnixpkgs-e6fe9abd8b1b80c9911bc1469eef9cfb0b3f0003.tar
nixpkgs-e6fe9abd8b1b80c9911bc1469eef9cfb0b3f0003.tar.gz
nixpkgs-e6fe9abd8b1b80c9911bc1469eef9cfb0b3f0003.tar.bz2
nixpkgs-e6fe9abd8b1b80c9911bc1469eef9cfb0b3f0003.tar.lz
nixpkgs-e6fe9abd8b1b80c9911bc1469eef9cfb0b3f0003.tar.xz
nixpkgs-e6fe9abd8b1b80c9911bc1469eef9cfb0b3f0003.tar.zst
nixpkgs-e6fe9abd8b1b80c9911bc1469eef9cfb0b3f0003.zip
nixos/ipfs: Allow QUIC connections to socket activate too
Well, via the underlying UDP. QUIC-level socket activation we'll get
someday.
Diffstat (limited to 'nixos/modules/services/network-filesystems/ipfs.nix')
-rw-r--r--nixos/modules/services/network-filesystems/ipfs.nix20
1 files changed, 17 insertions, 3 deletions
diff --git a/nixos/modules/services/network-filesystems/ipfs.nix b/nixos/modules/services/network-filesystems/ipfs.nix
index 5c096d26d82..f298f831fa7 100644
--- a/nixos/modules/services/network-filesystems/ipfs.nix
+++ b/nixos/modules/services/network-filesystems/ipfs.nix
@@ -25,6 +25,15 @@ let
       then "/${lib.concatStringsSep "/" (lib.tail addr)}"
     else null; # not valid for listen stream, skip
 
+  multiaddrToListenDatagram = addrRaw: let
+      addr = splitMulitaddr addrRaw;
+      s = builtins.elemAt addr;
+    in if s 0 == "ip4" && s 2 == "udp"
+      then "${s 1}:${s 3}"
+    else if s 0 == "ip6" && s 2 == "udp"
+      then "[${s 1}]:${s 3}"
+    else null; # not valid for listen datagram, skip
+
 in {
 
   ###### interface
@@ -268,9 +277,14 @@ in {
 
     systemd.sockets.ipfs-gateway = {
       wantedBy = [ "sockets.target" ];
-      socketConfig.ListenStream = let
-          fromCfg = multiaddrToListenStream cfg.gatewayAddress;
-        in [ "" ] ++ lib.optional (fromCfg != null) fromCfg;
+      socketConfig = {
+        ListenStream = let
+            fromCfg = multiaddrToListenStream cfg.gatewayAddress;
+          in [ "" ] ++ lib.optional (fromCfg != null) fromCfg;
+        ListenDatagram = let
+            fromCfg = multiaddrToListenDatagram cfg.gatewayAddress;
+          in [ "" ] ++ lib.optional (fromCfg != null) fromCfg;
+      };
     };
 
     systemd.sockets.ipfs-api = {