X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=flakes%2Fpeertube%2Fflake.nix;fp=flakes%2Fpeertube%2Fflake.nix;h=df6ef4a7e9fe5ef314becb5a924d4435fdb2b145;hb=ded643e14096a7cb166c78dd961cf68fb4ddb0cf;hp=0000000000000000000000000000000000000000;hpb=c82fab2ac12441338fb1ff9a4081fbc4afc1ea20;p=perso%2FImmae%2FConfig%2FNix.git diff --git a/flakes/peertube/flake.nix b/flakes/peertube/flake.nix new file mode 100644 index 0000000..df6ef4a --- /dev/null +++ b/flakes/peertube/flake.nix @@ -0,0 +1,306 @@ +{ + description = "A free software to take back control of your videos"; + inputs.myuids = { + url = "https://git.immae.eu/perso/Immae/Config/Nix.git"; + type = "git"; + dir = "flakes/myuids"; + }; + inputs.flake-utils.url = "github:numtide/flake-utils"; + inputs.nixpkgs.url = "github:NixOS/nixpkgs"; + inputs.peertube = { + url = "github:Chocobozzz/PeerTube/v3.0.1"; + flake = false; + }; + + outputs = { self, myuids, nixpkgs, peertube, flake-utils }: flake-utils.lib.eachSystem ["x86_64-linux"] (system: + let + version = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.peertube.locked.rev; + pkgs = import nixpkgs { inherit system; overlays = [ + (self: super: { nodejs = self.nodejs-12_x; }) + ]; }; + inherit (pkgs) callPackage stdenv jq youtube-dl fetchurl nodePackages yarn2nix-moretea; + + patchedSource = stdenv.mkDerivation { + pname = "peertube"; + inherit version; + src = peertube; + phases = [ "unpackPhase" "patchPhase" "installPhase" ]; + patches = [ ./fix_yarn_lock.patch ]; + installPhase = '' + mkdir $out + cp -a . $out/ + ''; + }; + yarnModulesConfig = { + bcrypt = { + buildInputs = [ nodePackages.node-pre-gyp ]; + postInstall = let + bcrypt_version = "5.0.0"; + bcrypt_lib = fetchurl { + url = "https://github.com/kelektiv/node.bcrypt.js/releases/download/v${bcrypt_version}/bcrypt_lib-v${bcrypt_version}-napi-v3-linux-x64-glibc.tar.gz"; + sha256 = "0j3p2px1xb17sw3gpm8l4apljajxxfflal1yy552mhpzhi21wccn"; + }; + in + '' + if [ "${bcrypt_version}" != "$(cat package.json | ${jq}/bin/jq -r .version)" ]; then + echo "Mismatching version please update bcrypt in derivation" + false + fi + mkdir -p lib/binding && tar -C lib/binding -xf ${bcrypt_lib} + patchShebangs ../node-pre-gyp + npm run install + ''; + }; + 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 <