From a7c2609666ce12011cb479a0cd6f367645ecf87c Mon Sep 17 00:00:00 2001 From: Lillian-Violet Date: Tue, 12 Aug 2025 13:23:20 +0200 Subject: [PATCH] manually set up new freetube --- home-manager/hosts/GLaDOS/lillian.nix | 1 + nixos/desktop/default.nix | 3 +- pkgs/default.nix | 1 + pkgs/freetube-0.23.6/default.nix | 121 ++++++++++++++++++ pkgs/freetube-0.23.6/patch-build-script.patch | 13 ++ 5 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 pkgs/freetube-0.23.6/default.nix create mode 100644 pkgs/freetube-0.23.6/patch-build-script.patch diff --git a/home-manager/hosts/GLaDOS/lillian.nix b/home-manager/hosts/GLaDOS/lillian.nix index 4255251..cc55531 100644 --- a/home-manager/hosts/GLaDOS/lillian.nix +++ b/home-manager/hosts/GLaDOS/lillian.nix @@ -21,6 +21,7 @@ lutris vscodium intiface-central + unrar ]; programs.mangohud = { diff --git a/nixos/desktop/default.nix b/nixos/desktop/default.nix index ac4febd..a750ab7 100644 --- a/nixos/desktop/default.nix +++ b/nixos/desktop/default.nix @@ -36,6 +36,7 @@ dvt servo restart + freetube-0236 # System tools aha @@ -91,7 +92,7 @@ #rustdesk ]) ++ (with pkgs-edge; [ - freetube + # freetube # list of latest packages from nixpkgs master # Can be used to install latest version of some packages ]); diff --git a/pkgs/default.nix b/pkgs/default.nix index 464322b..4a754ee 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -14,4 +14,5 @@ pkgs: { phanpy = pkgs.callPackage ./phanpy {}; auto-mount = pkgs.callPackage ./auto-mount {}; simple-completion-language-server = pkgs.callPackage ./simple-completion-language-server {}; + freetube-0236 = pkgs.callPackage ./freetube-0.23.6 {}; } diff --git a/pkgs/freetube-0.23.6/default.nix b/pkgs/freetube-0.23.6/default.nix new file mode 100644 index 0000000..8391130 --- /dev/null +++ b/pkgs/freetube-0.23.6/default.nix @@ -0,0 +1,121 @@ +{ + lib, + stdenvNoCC, + fetchFromGitHub, + fetchYarnDeps, + replaceVars, + makeDesktopItem, + + nodejs, + yarnConfigHook, + yarnBuildHook, + makeShellWrapper, + copyDesktopItems, + electron, + + nixosTests, +}: +let + description = "Open Source YouTube app for privacy"; +in +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "freetube"; + version = "0.23.6"; + + src = fetchFromGitHub { + owner = "FreeTubeApp"; + repo = "FreeTube"; + tag = "v${finalAttrs.version}-beta"; + hash = "sha256-Z1L45RHlmylfqKBY37PC5TQ3ubOgH0AHFGM7VkmtkZ0="; + }; + + # Darwin requires writable Electron dist + postUnpack = + if stdenvNoCC.hostPlatform.isDarwin then + '' + cp -r ${electron.dist} electron-dist + chmod -R u+w electron-dist + '' + else + '' + ln -s ${electron.dist} electron-dist + ''; + + patches = [ + (replaceVars ./patch-build-script.patch { + electron-version = electron.version; + }) + ]; + + yarnOfflineCache = fetchYarnDeps { + yarnLock = "${finalAttrs.src}/yarn.lock"; + hash = "sha256-ia5wLRt3Hmo4/dsB1/rhGWGJ7LMnVR9ju9lSlQZDTTg="; + }; + + nativeBuildInputs = [ + nodejs + yarnConfigHook + yarnBuildHook + makeShellWrapper + copyDesktopItems + ]; + + installPhase = '' + runHook preInstall + '' + + lib.optionalString stdenvNoCC.hostPlatform.isLinux '' + mkdir -p $out/share/freetube + cp -r build/*-unpacked/{locales,resources{,.pak}} -t $out/share/freetube + + makeWrapper ${lib.getExe electron} $out/bin/freetube \ + --add-flags "$out/share/freetube/resources/app.asar" \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" + + install -D _icons/icon.svg $out/share/icons/hicolor/scalable/apps/freetube.svg + '' + + lib.optionalString stdenvNoCC.hostPlatform.isDarwin '' + mkdir -p $out/Applications + cp -r build/mac*/FreeTube.app $out/Applications + ln -s "$out/Applications/FreeTube.app/Contents/MacOS/FreeTube" $out/bin/freetube + '' + + '' + runHook postInstall + ''; + + desktopItems = [ + (makeDesktopItem { + name = "freetube"; + desktopName = "FreeTube"; + comment = description; + exec = "freetube %U"; + terminal = false; + type = "Application"; + icon = "freetube"; + startupWMClass = "FreeTube"; + mimeTypes = [ "x-scheme-handler/freetube" ]; + categories = [ "Network" ]; + }) + ]; + + passthru.tests = nixosTests.freetube; + + meta = { + inherit description; + homepage = "https://freetubeapp.io/"; + license = lib.licenses.agpl3Only; + maintainers = with lib.maintainers; [ + ryneeverett + pentane + ryand56 + sigmasquadron + ddogfoodd + ]; + badPlatforms = [ + # output app is called "Electron.app" while derivation expects "FreeTube.app" + #see: https://github.com/NixOS/nixpkgs/pull/384596#issuecomment-2677141349 + lib.systems.inspect.patterns.isDarwin + ]; + inherit (electron.meta) platforms; + mainProgram = "freetube"; + }; +}) diff --git a/pkgs/freetube-0.23.6/patch-build-script.patch b/pkgs/freetube-0.23.6/patch-build-script.patch new file mode 100644 index 0000000..c543391 --- /dev/null +++ b/pkgs/freetube-0.23.6/patch-build-script.patch @@ -0,0 +1,13 @@ +diff --git a/_scripts/ebuilder.config.js b/_scripts/ebuilder.config.js +index 5b79d961..9f5945d2 100644 +--- a/_scripts/ebuilder.config.js ++++ b/_scripts/ebuilder.config.js +@@ -1,6 +1,8 @@ + const { name, productName } = require('../package.json') + + const config = { ++ electronVersion: "@electron-version@", ++ electronDist: "electron-dist", + appId: `io.freetubeapp.${name}`, + copyright: 'Copyleft © 2020-2024 freetubeapp@protonmail.com', + // asar: false,