diff --git a/nixos/modules/services/network-filesystems/kubo.nix b/nixos/modules/services/network-filesystems/kubo.nix --- a/nixos/modules/services/network-filesystems/kubo.nix +++ b/nixos/modules/services/network-filesystems/kubo.nix @@ -45,6 +45,11 @@ let then "[${s 1}]:${s 3}" else null; # not valid for listen datagram, skip + multiaddrsFunc = f: addrsRaw: if builtins.isString addrsRaw then let out = f addrsRaw; in lib.optional (out != null) out else lib.filter (x: x != null) (map f addrsRaw); + + multiaddrsToListenStream = multiaddrsFunc multiaddrToListenStream; + multiaddrsToListenDatagram = multiaddrsFunc multiaddrToListenDatagram; + in { @@ -137,19 +142,19 @@ in options = { Addresses.API = mkOption { - type = types.str; + type = types.oneOf [ types.str (types.listOf types.str) ]; default = "/ip4/127.0.0.1/tcp/5001"; description = lib.mdDoc "Where Kubo exposes its API to"; }; Addresses.Gateway = mkOption { - type = types.str; + type = types.oneOf [ types.str (types.listOf types.str) ]; default = "/ip4/127.0.0.1/tcp/8080"; description = lib.mdDoc "Where the IPFS Gateway can be reached"; }; Addresses.Swarm = mkOption { - type = types.listOf types.str; + type = types.oneOf [ types.str (types.listOf types.str) ]; default = [ "/ip4/0.0.0.0/tcp/4001" "/ip6/::/tcp/4001" @@ -294,14 +299,14 @@ in socketConfig = { ListenStream = let - fromCfg = multiaddrToListenStream cfg.settings.Addresses.Gateway; + fromCfg = multiaddrsToListenStream cfg.settings.Addresses.Gateway; in - [ "" ] ++ lib.optional (fromCfg != null) fromCfg; + [ "" ] ++ fromCfg; ListenDatagram = let - fromCfg = multiaddrToListenDatagram cfg.settings.Addresses.Gateway; + fromCfg = multiaddrsToListenDatagram cfg.settings.Addresses.Gateway; in - [ "" ] ++ lib.optional (fromCfg != null) fromCfg; + [ "" ] ++ fromCfg; }; }; @@ -311,9 +316,9 @@ in # in the multiaddr. socketConfig.ListenStream = let - fromCfg = multiaddrToListenStream cfg.settings.Addresses.API; + fromCfg = multiaddrsToListenStream cfg.settings.Addresses.API; in - [ "" "%t/ipfs.sock" ] ++ lib.optional (fromCfg != null) fromCfg; + [ "" "%t/ipfs.sock" ] ++ fromCfg; }; };