{ 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 <