diff --git a/default.nix b/default.nix index 2b9f3a9..74aa19c 100644 --- a/default.nix +++ b/default.nix @@ -7,6 +7,8 @@ in rec { janus-gateway = callPackage ./pkgs/janus-gateway { inherit usrsctp; }; + nextcloud-spreed-signaling = callPackage ./pkgs/nextcloud-spreed-signaling { }; + usrsctp = callPackage ./pkgs/usrsctp { }; } diff --git a/flake.nix b/flake.nix index ff6314c..c8b13c1 100644 --- a/flake.nix +++ b/flake.nix @@ -29,6 +29,7 @@ in { inherit (localPkgs) janus-gateway + nextcloud-spreed-signaling usrsctp ; }; diff --git a/pkgs/nextcloud-spreed-signaling/default.nix b/pkgs/nextcloud-spreed-signaling/default.nix new file mode 100644 index 0000000..7c624c7 --- /dev/null +++ b/pkgs/nextcloud-spreed-signaling/default.nix @@ -0,0 +1,37 @@ +{ stdenv, lib, buildGoPackage, fetchFromGitHub, easyjson }: + +buildGoPackage rec { + pname = "nextcloud-spreed-signaling"; + version = "0.2.0"; + + goPackagePath = "github.com/strukturag/nextcloud-spreed-signaling"; + + subPackages = [ + "src/signaling" + "src/server" + "src/proxy" + ]; + + src = fetchFromGitHub { + owner = "strukturag"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-heDi/kWyPDZ9oPjBhNRBAkiKkkEnXmfSanYvCUSB5Ls="; + }; + + nativeBuildInputs = [ easyjson ]; + + goDeps = ./deps.nix; + + preBuild = '' + ln -s $PWD/go/src/${goPackagePath}/src/* go/src + easyjson -all go/src/signaling/{api_signaling,api_backend,api_proxy,natsclient,room}.go + ''; + + meta = with lib; { + description = "Standalone signaling server for Nextcloud Talk"; + homepage = src.meta.homepage; + license = licenses.agpl3; + maintainers = with maintainers; [ aw ]; + }; +} diff --git a/pkgs/nextcloud-spreed-signaling/deps.nix b/pkgs/nextcloud-spreed-signaling/deps.nix new file mode 100644 index 0000000..32327ad --- /dev/null +++ b/pkgs/nextcloud-spreed-signaling/deps.nix @@ -0,0 +1,137 @@ +[ + { + goPackagePath = "github.com/dlintw/goconf"; + fetch = { + type = "git"; + url = "https://github.com/dlintw/goconf"; + rev = "dcc070983490608a14480e3bf943bad464785df5"; + sha256 = "1fah0g4f1gpb9hqv80svp39ijamggimdsxsiw8w1bkj67mrhgcd7"; + }; + } + { + goPackagePath = "github.com/google/uuid"; + fetch = { + type = "git"; + url = "https://github.com/google/uuid"; + rev = "0e4e31197428a347842d152773b4cace4645ca25"; + sha256 = "1rbpfa0v0ly9sdnixcxhf79swki54ikgm1zkwwkj64p1ws66syqd"; + }; + } + { + goPackagePath = "github.com/gorilla/context"; + fetch = { + type = "git"; + url = "https://github.com/gorilla/context"; + rev = "08b5f424b9271eedf6f9f0ce86cb9396ed337a42"; + sha256 = "03p4hn87vcmfih0p9w663qbx9lpsf7i7j3lc7yl7n84la3yz63m4"; + }; + } + { + goPackagePath = "github.com/gorilla/mux"; + fetch = { + type = "git"; + url = "https://github.com/gorilla/mux"; + rev = "ac112f7d75a0714af1bd86ab17749b31f7809640"; + sha256 = "1fwn36y9zd8fh9rbdiq5gg69d9crp2hvbdziy1kf9hq65426pydk"; + }; + } + { + goPackagePath = "github.com/gorilla/securecookie"; + fetch = { + type = "git"; + url = "https://github.com/gorilla/securecookie"; + rev = "e59506cc896acb7f7bf732d4fdf5e25f7ccd8983"; + sha256 = "16bqimpxs9vj5n59vm04y04v665l7jh0sddxn787pfafyxcmh410"; + }; + } + { + goPackagePath = "github.com/gorilla/websocket"; + fetch = { + type = "git"; + url = "https://github.com/gorilla/websocket"; + rev = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"; + sha256 = "1bhgs2542qs49p1dafybqxfs2qc072xv41w5nswyrknwyjxxs2a1"; + }; + } + { + goPackagePath = "github.com/mailru/easyjson"; + fetch = { + type = "git"; + url = "https://github.com/mailru/easyjson"; + rev = "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"; + sha256 = "0d9m8kyhbawa452vnwn255xxnh6pkp3im0d2310rw1k14nh3yh1p"; + }; + } + { + goPackagePath = "github.com/nats-io/go-nats"; + fetch = { + type = "git"; + url = "https://github.com/nats-io/go-nats"; + rev = "d4ca4c8b588d5da9c2ac82d6e445ce4feaba18ba"; + sha256 = "0raaki95zbl5nnmkbyy77lpq8qsyr50kmsd7g2wvk1yfxar2c5ia"; + }; + } + { + goPackagePath = "github.com/nats-io/nuid"; + fetch = { + type = "git"; + url = "https://github.com/nats-io/nuid"; + rev = "3cf34f9fca4e88afa9da8eabd75e3326c9941b44"; + sha256 = "04yb56wvgn7caxqasfwpmz77a9n3w2hsb7ghdl729l7973v96ghl"; + }; + } + { + goPackagePath = "github.com/notedit/janus-go"; + fetch = { + type = "git"; + url = "https://github.com/notedit/janus-go"; + rev = "10eb8b95d1a0469ac8921c5ce5fb55b4c0d3ad7d"; + sha256 = "0ng184pp2bhrdd3ak4qp2cnj2y3zch90l2jvd3x5gspy5w6vmszn"; + }; + } + { + goPackagePath = "github.com/oschwald/maxminddb-golang"; + fetch = { + type = "git"; + url = "https://github.com/oschwald/maxminddb-golang"; + rev = "1960b16a5147df3a4c61ac83b2f31cd8f811d609"; + sha256 = "02hy0vvx95nx34b41lfgn061q7s8d8m020bvw38fmlsbnfm4y28l"; + }; + } + { + goPackagePath = "go.etcd.io/etcd"; + fetch = { + type = "git"; + url = "https://github.com/etcd-io/etcd"; + rev = "ae9734ed278b7a1a7dfc82e800471ebbf9fce56f"; + sha256 = "0bvky593241i60qf6793sxzsxwfl3f56cgscnva9f2jfhk157wmy"; + }; + } + { + goPackagePath = "golang.org/x/net"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/net"; + rev = "f01ecb60fe3835d80d9a0b7b2bf24b228c89260e"; + sha256 = "0j992rd9mjbyqmn53b5g41x8x0i1q8723qy8138fj96brqis3xda"; + }; + } + { + goPackagePath = "golang.org/x/sys"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/sys"; + rev = "ac767d655b305d4e9612f5f6e33120b9176c4ad4"; + sha256 = "1ds29n5lh4j21hmzxz7vk7hv1k6sixc7f0zsdc9xqdg0j7d212zm"; + }; + } + { + goPackagePath = "gopkg.in/dgrijalva/jwt-go.v3"; + fetch = { + type = "git"; + url = "https://gopkg.in/dgrijalva/jwt-go.v3"; + rev = "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e"; + sha256 = "08m27vlms74pfy5z79w67f9lk9zkx6a9jd68k3c4msxy75ry36mp"; + }; + } +]