about summary refs log tree commit diff
path: root/modules/nixos/ipfs.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nixos/ipfs.nix')
-rw-r--r--modules/nixos/ipfs.nix145
1 files changed, 0 insertions, 145 deletions
diff --git a/modules/nixos/ipfs.nix b/modules/nixos/ipfs.nix
deleted file mode 100644
index cd28372..0000000
--- a/modules/nixos/ipfs.nix
+++ /dev/null
@@ -1,145 +0,0 @@
-{
-  config,
-  lib,
-  libNginx,
-  this,
-  ...
-}:
-with lib;
-let
-  cfg = config.nixfiles.modules.ipfs;
-
-  gatewayDefaultPort = 6001;
-  apiDefaultPort = 5001;
-  swarmDefaultPort = 4001;
-in
-{
-  options.nixfiles.modules.ipfs = {
-    enable = mkEnableOption "IPFS daemon";
-
-    domain = mkOption {
-      description = "Domain name sans protocol scheme.";
-      type = with types; str;
-      default = "ipfs.${config.networking.fqdn}";
-    };
-
-    gatewayPort = mkOption {
-      description = "Gateway port.";
-      type = with types; port;
-      default = if this.isHeadless then gatewayDefaultPort + 990 else gatewayDefaultPort;
-    };
-
-    apiPort = mkOption {
-      description = "API port.";
-      type = with types; port;
-      default = if this.isHeadless then apiDefaultPort + 990 else apiDefaultPort;
-    };
-
-    swarmPort = mkOption {
-      description = "Swarm port.";
-      type = with types; port;
-      default = swarmDefaultPort;
-    };
-  };
-
-  config = mkIf cfg.enable (mkMerge [
-    {
-      services.kubo = {
-        enable = true;
-
-        user = my.username;
-        inherit (config.my) group;
-
-        dataDir = "${config.dirs.data}/ipfs";
-
-        autoMigrate = true;
-        autoMount = true;
-        emptyRepo = true;
-        enableGC = true;
-
-        # https://github.com/ipfs/kubo/blob/master/docs/config.md
-        settings = mkMerge [
-          (
-            let
-              filterAddresses =
-                [
-                  "/ip4/100.64.0.0/ipcidr/10"
-                  "/ip4/169.254.0.0/ipcidr/16"
-                  "/ip4/172.16.0.0/ipcidr/12"
-                  "/ip4/192.0.0.0/ipcidr/24"
-                  "/ip4/192.0.2.0/ipcidr/24"
-                  "/ip4/192.168.0.0/ipcidr/16"
-                  "/ip4/198.18.0.0/ipcidr/15"
-                  "/ip4/198.51.100.0/ipcidr/24"
-                  "/ip4/203.0.113.0/ipcidr/24"
-                  "/ip4/240.0.0.0/ipcidr/4"
-                  "/ip6/100::/ipcidr/64"
-                  "/ip6/2001:2::/ipcidr/48"
-                  "/ip6/2001:db8::/ipcidr/32"
-                  "/ip6/fe80::/ipcidr/10"
-                ]
-                ++ optionals (!hasAttr "wireguard" this) [
-                  "/ip4/10.0.0.0/ipcidr/8"
-                  "/ip6/fc00::/ipcidr/7"
-                ];
-            in
-            {
-              Addresses = {
-                API = "/ip4/127.0.0.1/tcp/${toString cfg.apiPort}";
-                Gateway = "/ip4/127.0.0.1/tcp/${toString cfg.gatewayPort}";
-                Swarm =
-                  let
-                    port = toString cfg.swarmPort;
-                  in
-                  [
-                    "/ip4/0.0.0.0/tcp/${port}"
-                    "/ip6/::/tcp/${port}"
-                    "/ip4/0.0.0.0/udp/${port}/quic"
-                    "/ip4/0.0.0.0/udp/${port}/quic-v1"
-                    "/ip4/0.0.0.0/udp/${port}/quic-v1/webtransport"
-                    "/ip6/::/udp/${port}/quic"
-                    "/ip6/::/udp/${port}/quic-v1"
-                    "/ip6/::/udp/${port}/quic-v1/webtransport"
-                  ];
-
-                NoAnnounce = filterAddresses;
-              };
-              Swarm.AddrFilters = filterAddresses;
-            }
-          )
-        ];
-
-        localDiscovery = true;
-
-        startWhenNeeded = true;
-      };
-
-      networking.firewall = rec {
-        allowedTCPPorts = [ swarmDefaultPort ];
-        allowedUDPPorts = allowedTCPPorts;
-      };
-    }
-    (mkIf this.isHeadless {
-      nixfiles.modules.nginx = {
-        enable = true;
-        upstreams = with cfg; {
-          kubo_gateway.servers."127.0.0.1:${toString gatewayPort}" = { };
-          kubo_api.servers."127.0.0.1:${toString apiPort}" = { };
-        };
-        virtualHosts = {
-          ${cfg.domain} = {
-            locations."/".proxyPass = "http://kubo_gateway";
-            extraConfig = libNginx.config.internalOnly;
-          };
-          "api.${cfg.domain}" = {
-            locations = {
-              "/".proxyPass = "http://kubo_api";
-              "~ ^/$".return = "301 http${optionalString config.nixfiles.modules.acme.enable "s"}://api.${cfg.domain}/webui";
-            };
-            extraConfig = libNginx.config.internalOnly;
-          };
-        };
-      };
-    })
-  ]);
-}

Consider giving Nix/NixOS a try! <3