tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
freetube: build from source
pluie.me
1 year ago
13faeaf2
c4435d0b
verified
This commit was signed with the committer's
known signature
.
pluie.me
SSH Key Fingerprint:
SHA256:YtI1D7vlcZ4obaiJ4tQihtswcMhHKdfYZuc4whOX2y8=
+98
-33
2 changed files
expand all
collapse all
unified
split
pkgs
by-name
fr
freetube
package.nix
patch-build-script.patch
+85
-33
pkgs/by-name/fr/freetube/package.nix
···
1
1
{
2
2
-
stdenv,
3
2
lib,
4
4
-
fetchurl,
5
5
-
appimageTools,
6
6
-
makeWrapper,
3
3
+
stdenvNoCC,
4
4
+
fetchFromGitHub,
5
5
+
fetchYarnDeps,
6
6
+
replaceVars,
7
7
+
makeDesktopItem,
8
8
+
9
9
+
nodejs,
10
10
+
yarnConfigHook,
11
11
+
yarnBuildHook,
12
12
+
makeShellWrapper,
13
13
+
copyDesktopItems,
7
14
electron,
15
15
+
8
16
nixosTests,
9
17
}:
10
10
-
11
11
-
stdenv.mkDerivation rec {
18
18
+
let
19
19
+
description = "Open Source YouTube app for privacy";
20
20
+
in
21
21
+
stdenvNoCC.mkDerivation (finalAttrs: {
12
22
pname = "freetube";
13
23
version = "0.22.1";
14
24
15
15
-
src = fetchurl {
16
16
-
url = "https://github.com/FreeTubeApp/FreeTube/releases/download/v${version}-beta/freetube_${version}_amd64.AppImage";
17
17
-
hash = "sha256-HbU5yRSP5Gk473ZoQL3HD2Bph/U/sq1Dd0eFpxyKc9s=";
25
25
+
src = fetchFromGitHub {
26
26
+
owner = "FreeTubeApp";
27
27
+
repo = "FreeTube";
28
28
+
tag = "v${finalAttrs.version}-beta";
29
29
+
hash = "sha256-FND4jYnNeqsyCXkVB+DKr8hu720+XEjOZJ/iRZGI3y8=";
18
30
};
19
31
20
20
-
passthru.tests = nixosTests.freetube;
32
32
+
# Darwin requires writable Electron dist
33
33
+
postUnpack =
34
34
+
if stdenvNoCC.hostPlatform.isDarwin then
35
35
+
''
36
36
+
cp -r ${electron.dist} electron-dist
37
37
+
chmod -R u+w electron-dist
38
38
+
''
39
39
+
else
40
40
+
''
41
41
+
ln -s ${electron.dist} electron-dist
42
42
+
'';
21
43
22
22
-
appimageContents = appimageTools.extractType2 { inherit pname version src; };
23
23
-
24
24
-
dontUnpack = true;
25
25
-
dontConfigure = true;
26
26
-
dontBuild = true;
44
44
+
patches = [
45
45
+
(replaceVars ./patch-build-script.patch {
46
46
+
electron-version = electron.version;
47
47
+
})
48
48
+
];
27
49
28
28
-
nativeBuildInputs = [ makeWrapper ];
50
50
+
yarnOfflineCache = fetchYarnDeps {
51
51
+
yarnLock = "${finalAttrs.src}/yarn.lock";
52
52
+
hash = "sha256-cvRnPxRy3oawZUu97qYu+IgbXLYej/kykrCDJ4qLvIg=";
53
53
+
};
29
54
30
30
-
installPhase = ''
31
31
-
runHook preInstall
55
55
+
nativeBuildInputs = [
56
56
+
nodejs
57
57
+
yarnConfigHook
58
58
+
yarnBuildHook
59
59
+
makeShellWrapper
60
60
+
copyDesktopItems
61
61
+
];
32
62
33
33
-
mkdir -p $out/bin $out/share/${pname} $out/share/applications $out/share/icons/hicolor/scalable/apps
63
63
+
installPhase =
64
64
+
''
65
65
+
runHook preInstall
66
66
+
''
67
67
+
+ lib.optionalString stdenvNoCC.hostPlatform.isLinux ''
68
68
+
mkdir -p $out/share/freetube
69
69
+
cp -r build/*-unpacked/{locales,resources{,.pak}} -t $out/share/freetube
34
70
35
35
-
cp -a ${appimageContents}/{locales,resources} $out/share/${pname}
36
36
-
cp -a ${appimageContents}/freetube.desktop $out/share/applications/${pname}.desktop
37
37
-
cp -a ${appimageContents}/usr/share/icons/hicolor/scalable/freetube.svg $out/share/icons/hicolor/scalable/apps
71
71
+
makeWrapper ${lib.getExe electron} $out/bin/freetube \
72
72
+
--add-flags "$out/share/freetube/resources/app.asar" \
73
73
+
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
38
74
39
39
-
substituteInPlace $out/share/applications/${pname}.desktop \
40
40
-
--replace 'Exec=AppRun' 'Exec=${pname}'
75
75
+
install -D _icons/icon.svg $out/share/icons/hicolor/scalable/apps/freetube.svg
76
76
+
''
77
77
+
+ lib.optionalString stdenvNoCC.hostPlatform.isDarwin ''
78
78
+
mkdir -p $out/Applications
79
79
+
cp -r build/mac*/FreeTube.app $out/Applications
80
80
+
ln -s "$out/Applications/FreeTube.app/Contents/MacOS/FreeTube" $out/bin/freetube
81
81
+
''
82
82
+
+ ''
83
83
+
runHook postInstall
84
84
+
'';
41
85
42
42
-
runHook postInstall
43
43
-
'';
86
86
+
desktopItems = [
87
87
+
(makeDesktopItem {
88
88
+
name = "freetube";
89
89
+
desktopName = "FreeTube";
90
90
+
comment = description;
91
91
+
exec = "freetube %U";
92
92
+
terminal = false;
93
93
+
type = "Application";
94
94
+
icon = "freetube";
95
95
+
startupWMClass = "FreeTube";
96
96
+
mimeTypes = [ "x-scheme-handler/freetube" ];
97
97
+
categories = [ "Network" ];
98
98
+
})
99
99
+
];
44
100
45
45
-
postFixup = ''
46
46
-
makeWrapper ${electron}/bin/electron $out/bin/${pname} \
47
47
-
--add-flags $out/share/${pname}/resources/app.asar \
48
48
-
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime=true}}"
49
49
-
'';
101
101
+
passthru.tests = nixosTests.freetube;
50
102
51
103
meta = {
52
52
-
description = "Open Source YouTube app for privacy";
104
104
+
inherit description;
53
105
homepage = "https://freetubeapp.io/";
54
106
license = lib.licenses.agpl3Only;
55
107
maintainers = with lib.maintainers; [
···
61
113
inherit (electron.meta) platforms;
62
114
mainProgram = "freetube";
63
115
};
64
64
-
}
116
116
+
})
+13
pkgs/by-name/fr/freetube/patch-build-script.patch
···
1
1
+
diff --git a/_scripts/ebuilder.config.js b/_scripts/ebuilder.config.js
2
2
+
index 5b79d961..9f5945d2 100644
3
3
+
--- a/_scripts/ebuilder.config.js
4
4
+
+++ b/_scripts/ebuilder.config.js
5
5
+
@@ -1,6 +1,8 @@
6
6
+
const { name, productName } = require('../package.json')
7
7
+
8
8
+
const config = {
9
9
+
+ electronVersion: "@electron-version@",
10
10
+
+ electronDist: "electron-dist",
11
11
+
appId: `io.freetubeapp.${name}`,
12
12
+
copyright: 'Copyleft © 2020-2024 freetubeapp@protonmail.com',
13
13
+
// asar: false,