chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / lr / lrcget / package.nix
blob0d77c2d09f226b444df1ed82dc67b4bfea720ed2
2   dbus,
3   openssl,
4   gtk3,
5   webkitgtk,
6   pkg-config,
7   wrapGAppsHook3,
8   fetchFromGitHub,
9   buildNpmPackage,
10   rustPlatform,
11   lib,
12   stdenv,
13   copyDesktopItems,
14   makeDesktopItem,
15   alsa-lib,
16   darwin,
18 rustPlatform.buildRustPackage rec {
19   pname = "lrcget";
20   version = "0.4.0";
22   src = fetchFromGitHub {
23     owner = "tranxuanthang";
24     repo = "lrcget";
25     rev = "${version}";
26     hash = "sha256-OrmSaRKhGCl5sTirzICx8PBsQm23pYUBBtb07+P1ZbY=";
27   };
29   sourceRoot = "${src.name}/src-tauri";
31   cargoHash = "sha256-V9+/sfCxeZJ39nOuMBv2YlkzewoS+N3kFyBGdIqkw/A=";
33   frontend = buildNpmPackage {
34     inherit version src;
35     pname = "lrcget-ui";
36     # FIXME: This is a workaround, because we have a git dependency node_modules/lrc-kit contains install scripts
37     # but has no lockfile, which is something that will probably break.
38     forceGitDeps = true;
39     distPhase = "true";
40     dontInstall = true;
41     # To fix `npm ERR! Your cache folder contains root-owned files`
42     makeCacheWritable = true;
44     npmDepsHash = "sha256-qQ5UMO3UuD6IvUveTRF35qTlGq5PMbxp1Q4UroDqVtk=";
46     postBuild = ''
47       cp -r dist/ $out
48     '';
49   };
51   # copy the frontend static resources to final build directory
52   # Also modify tauri.conf.json so that it expects the resources at the new location
53   postPatch = ''
54     cp -r $frontend ./frontend
56     substituteInPlace tauri.conf.json --replace-fail '"distDir": "../dist"' '"distDir": "./frontend"'
57   '';
59   nativeBuildInputs = [
60     pkg-config
61     wrapGAppsHook3
62     copyDesktopItems
63     rustPlatform.bindgenHook
64   ];
66   buildInputs =
67     [
68       dbus
69       openssl
70       gtk3
71     ]
72     ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
73       webkitgtk
74       alsa-lib
75     ]
76     ++ lib.optionals stdenv.hostPlatform.isDarwin [
77       darwin.apple_sdk.frameworks.CoreAudio
78       darwin.apple_sdk.frameworks.WebKit
79     ];
81   # Disable checkPhase, since the project doesn't contain tests
82   doCheck = false;
84   postInstall = ''
85     install -DT icons/128x128@2x.png $out/share/icons/hicolor/128x128@2/apps/lrcget.png
86     install -DT icons/128x128.png $out/share/icons/hicolor/128x128/apps/lrcget.png
87     install -DT icons/32x32.png $out/share/icons/hicolor/32x32/apps/lrcget.png
88   '';
90   # WEBKIT_DISABLE_COMPOSITING_MODE essential in NVIDIA + compositor https://github.com/NixOS/nixpkgs/issues/212064#issuecomment-1400202079
91   postFixup = ''
92     wrapProgram "$out/bin/lrcget" \
93       --set WEBKIT_DISABLE_COMPOSITING_MODE 1
94   '';
96   desktopItems = [
97     (makeDesktopItem {
98       name = "LRCGET";
99       exec = "lrcget";
100       icon = "lrcget";
101       desktopName = "LRCGET";
102       comment = meta.description;
103     })
104   ];
106   meta = {
107     description = "Utility for mass-downloading LRC synced lyrics for your offline music library";
108     homepage = "https://github.com/tranxuanthang/lrcget";
109     changelog = "https://github.com/tranxuanthang/lrcget/releases/tag/${version}";
110     license = lib.licenses.mit;
111     maintainers = with lib.maintainers; [
112       anas
113       Scrumplex
114     ];
115     mainProgram = "lrcget";
116     platforms = with lib.platforms; unix ++ windows;
117   };