1{ stdenvNoCC
2, lib
3, fetchFromGitHub
4, ffmpeg
5, yt-dlp
6, electron
7, makeWrapper
8, makeDesktopItem
9, copyDesktopItems
10, yarn2nix-moretea
11, chromium
12}:
13
14stdenvNoCC.mkDerivation rec {
15 pname = "Sharedown";
16 version = "2.0.0";
17
18 src = fetchFromGitHub {
19 owner = "kylon";
20 repo = pname;
21 rev = version;
22 sha256 = "sha256-Z6OsZvVzk//qEkl4ciNz4cQRqC2GFg0qYgmliAyz6fo=";
23 };
24
25 nativeBuildInputs = [
26 copyDesktopItems
27 makeWrapper
28 ];
29
30 desktopItems = [
31 (makeDesktopItem {
32 name = "Sharedown";
33 exec = "Sharedown";
34 icon = "Sharedown";
35 comment = "An Application to save your Sharepoint videos for offline usage.";
36 desktopName = "Sharedown";
37 categories = "Network;Archiving";
38 })
39 ];
40
41 dontBuild = true;
42
43 installPhase =
44 let
45 binPath = lib.makeBinPath ([
46 ffmpeg
47 yt-dlp
48 ]);
49
50 modules = yarn2nix-moretea.mkYarnModules {
51 name = "${pname}-modules-${version}";
52 inherit pname version;
53
54 yarnFlags = yarn2nix-moretea.defaultYarnFlags ++ [
55 "--production"
56 ];
57
58 packageJSON = "${src}/package.json";
59 yarnLock = ./yarn.lock;
60 yarnNix = ./yarndeps.nix;
61 };
62 in
63 ''
64 runHook preInstall
65
66 mkdir -p "$out/bin" "$out/share/Sharedown" "$out/share/applications" "$out/share/icons/hicolor/512x512/apps"
67
68 # Electron app
69 cp -r *.js *.json sharedownlogo.png sharedown "${modules}/node_modules" "$out/share/Sharedown"
70
71 # Desktop Launcher
72 cp build/icon.png "$out/share/icons/hicolor/512x512/apps/Sharedown.png"
73
74 # Install electron wrapper script
75 makeWrapper "${electron}/bin/electron" "$out/bin/Sharedown" \
76 --add-flags "$out/share/Sharedown" \
77 --prefix PATH : "${binPath}" \
78 --set PUPPETEER_EXECUTABLE_PATH "${chromium}/bin/chromium"
79
80 runHook postInstall
81 '';
82
83 passthru.updateScript = ./update.sh;
84
85 meta = with lib; {
86 description = "Application to save your Sharepoint videos for offline usage";
87 homepage = "https://github.com/kylon/Sharedown";
88 license = licenses.gpl3Plus;
89 maintainers = with maintainers; [
90 jtojnar
91 ];
92 platforms = platforms.unix;
93 };
94}