]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - pkgs/webapps/peertube/default.nix
Use peertube flake in modules
[perso/Immae/Config/Nix.git] / pkgs / webapps / peertube / default.nix
diff --git a/pkgs/webapps/peertube/default.nix b/pkgs/webapps/peertube/default.nix
deleted file mode 100644 (file)
index c38cc15..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-{ ldap ? false, sendmail ? false, light ? null, syden ? false, runCommand, libsass
-, lib, stdenv, rsync, fetchzip, youtube-dl, fetchurl, mylibs, python, nodejs, nodePackages, yarn2nix-moretea }:
-let
-  nodeHeaders = fetchurl {
-    url = "https://nodejs.org/download/release/v${nodejs.version}/node-v${nodejs.version}-headers.tar.gz";
-    sha256 = "12415ss4fxxafp3w8rxp2jbb16y0d7f01b7wv72nmy3cwiqxqkhn";
-  };
-  source = mylibs.fetchedGithub ./peertube.json;
-  patchedSource = stdenv.mkDerivation (source // rec {
-    phases = [ "unpackPhase" "patchPhase" "installPhase" ];
-    patches = [ ./yarn_fix_http_node.patch ]
-      ++ lib.optionals ldap [ ./ldap.patch ]
-      ++ lib.optionals sendmail [ ./sendmail.patch ]
-      ++ lib.optionals syden [ ./syden.patch ];
-    installPhase = let
-      # Peertube supports several languages, but they take a very long
-      # time to build. The build script accepts --light which builds
-      # only English, and --light-fr which only builds English + French.
-      # This small hack permits to builds only English + A chosen
-      # language depending on the value of "light"
-      # Default (null) is to build every language
-      lightFix = if light == true || light == null then "" else ''
-        sed -i -e "s/fr-FR/${light}/g" -e "s/--light-fr/--light-language/" $out/scripts/build/client.sh
-      '';
-    in ''
-      mkdir $out
-      cp -a . $out/
-      ${lightFix}
-      '';
-  });
-  serverPatchedPackage = runCommand "server-package" {} ''
-    mkdir -p $out
-    cp ${patchedSource}/package.json $out/
-    cp ${patchedSource}/yarn.lock $out/
-  '';
-  clientPatchedPackage = runCommand "client-package" {} ''
-    mkdir -p $out
-    cp ${patchedSource}/client/package.json $out/
-    cp ${patchedSource}/client/yarn.lock $out/
-  '';
-
-  yarnModulesConfig = {
-    bcrypt = {
-      buildInputs = [ nodePackages.node-pre-gyp ];
-      postInstall = let
-        node_module_version = "72";
-        bcrypt_lib = fetchurl {
-          url = "https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.7/bcrypt_lib-v3.0.7-node-v${node_module_version}-linux-x64-glibc.tar.gz";
-          sha256 = "0kpm9j0yc4lqsafldfsql3m72rr1fapljlb6ddxvy3zi13rb7ppx";
-        };
-      in
-        ''
-          if [ "$(node -e "console.log(process.versions.modules)")" != "${node_module_version}" ]; then
-            echo "mismatching version with nodejs please update bcrypt derivation"
-            false
-          fi
-          mkdir lib && tar -C lib -xf ${bcrypt_lib}
-          patchShebangs ../node-pre-gyp
-          npm run install
-        '';
-    };
-    dtrace-provider = {
-      buildInputs = [ python nodePackages.node-gyp ];
-      postInstall = ''
-        npx node-gyp rebuild --tarball=${nodeHeaders}
-        '';
-    };
-    node-sass = {
-      buildInputs = [ libsass python ];
-      postInstall =
-        ''
-          node scripts/build.js --tarball=${nodeHeaders}
-        '';
-    };
-
-    sharp = {
-      buildInputs = [ python nodePackages.node-gyp ];
-      postInstall =
-        let
-          tarball = fetchurl {
-            url = "https://github.com/lovell/sharp-libvips/releases/download/v8.8.1/libvips-8.8.1-linux-x64.tar.gz";
-            sha256 = "0xqv61g6s6rkvc31zq9a3bf8rp56ijnpw0xhr91hc88asqprd5yh";
-          };
-        in
-        ''
-          mkdir vendor
-          tar -C vendor -xf ${tarball}
-          patchShebangs ../prebuild-install
-          npx node install/libvips
-          npx node install/dll-copy
-          npx prebuild-install || npx node-gyp rebuild --tarball=${nodeHeaders}
-        '';
-    };
-    utf-8-validate = {
-      buildInputs = [ nodePackages.node-gyp-build ];
-    };
-    youtube-dl = {
-      postInstall = ''
-        mkdir bin
-        ln -s ${youtube-dl}/bin/youtube-dl bin/youtube-dl
-        cat > bin/details <<EOF
-        {"version":"${youtube-dl.version}","path":null,"exec":"youtube-dl"}
-        EOF
-        '';
-    };
-  };
-  serverYarnModulesArg = rec {
-    pname = "peertube-server-yarn-modules";
-    version = source.version;
-    name = "${pname}-${version}";
-    packageJSON = "${serverPatchedPackage}/package.json";
-    yarnLock = "${serverPatchedPackage}/yarn.lock";
-    yarnNix = ./server-yarn-packages.nix;
-    pkgConfig = yarnModulesConfig;
-  };
-  clientYarnModulesArg = rec {
-    pname = "peertube-client-yarn-modules";
-    version = source.version;
-    name = "${pname}-${version}";
-    packageJSON = "${clientPatchedPackage}/package.json";
-    yarnLock = "${clientPatchedPackage}/yarn.lock";
-    yarnNix = ./client-yarn-packages.nix;
-    pkgConfig = yarnModulesConfig;
-  };
-  yarnModulesNoWorkspace = args: (yarn2nix-moretea.mkYarnModules args).overrideAttrs(old: {
-    buildPhase = builtins.replaceStrings [" ./package.json"] [" /dev/null; cp deps/*/package.json ."] old.buildPhase;
-  });
-
-  patchedPackages = stdenv.mkDerivation (source // rec {
-    patches = if ldap then [ ./ldap.patch ] else [ ./yarn_fix_http_node.patch ];
-    installPhase = ''
-      mkdir $out
-      cp package.json yarn.lock $out/
-      '';
-  });
-  serverYarnModules = yarnModulesNoWorkspace serverYarnModulesArg;
-  serverYarnModulesProd = yarnModulesNoWorkspace (serverYarnModulesArg // { yarnFlags = yarn2nix-moretea.defaultYarnFlags ++ [ "--production" ]; });
-  clientYarnModules = yarnModulesNoWorkspace clientYarnModulesArg;
-
-  server = stdenv.mkDerivation ({
-    pname = "peertube-server";
-    version = source.version;
-    src = patchedSource;
-    buildPhase = ''
-      ln -s ${serverYarnModules}/node_modules .
-      npm run build:server
-      '';
-    installPhase = ''
-      mkdir $out
-      cp -a dist $out
-      '';
-    buildInputs = [ nodejs serverYarnModules ];
-  });
-
-  client = stdenv.mkDerivation ({
-    pname = "peertube-client";
-    version = source.version;
-    src = patchedSource;
-    buildPhase = let
-      lightArg = if light == null then "" else if light == true then "--light" else "--light-language";
-    in ''
-      ln -s ${serverYarnModules}/node_modules .
-      cp -a ${clientYarnModules}/node_modules client/
-      chmod +w client/node_modules
-      patchShebangs .
-      npm run build:client -- ${lightArg}
-      '';
-    installPhase = ''
-      mkdir $out
-      cp -a client/dist $out
-      '';
-    buildInputs = [ nodejs clientYarnModules ];
-  });
-
-  package = stdenv.mkDerivation rec {
-    version = source.version;
-    pname = "peertube";
-    src = patchedSource;
-    buildPhase = ''
-      ln -s ${serverYarnModulesProd}/node_modules .
-      ln -s ${clientYarnModules}/node_modules client/
-      rm -rf dist && cp -a ${server}/dist dist
-      rm -rf client/dist && cp -a ${client}/dist client/
-      '';
-    installPhase = ''
-      mkdir $out
-      cp -a * $out
-      ln -s /tmp $out/.cache
-      '';
-
-    meta = {
-      description = "A free software to take back control of your videos";
-
-      longDescription = ''
-        PeerTube aspires to be a decentralized and free/libre alternative to video
-        broadcasting services.
-        PeerTube is not meant to become a huge platform that would centralize
-        videos from all around the world. Rather, it is a network of
-        inter-connected small videos hosters.
-        Anyone with a modicum of technical skills can host a PeerTube server, aka
-        an instance. Each instance hosts its users and their videos. In this way,
-        every instance is created, moderated and maintained independently by
-        various administrators.
-        You can still watch from your account videos hosted by other instances
-        though if the administrator of your instance had previously connected it
-        with other instances.
-      '';
-
-      license = stdenv.lib.licenses.agpl3Plus;
-
-      homepage = "https://joinpeertube.org/";
-
-      platforms = stdenv.lib.platforms.linux; # not sure here
-      maintainers = with stdenv.lib.maintainers; [ matthiasbeyer immae ];
-    };
-  };
-in
-  package