mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-13 21:50:33 +03:00
clash-verge-rev: use cargo-tauri.hook, refactor (#407062)
This commit is contained in:
commit
268c5a19ed
3 changed files with 53 additions and 115 deletions
|
@ -8,8 +8,6 @@
|
||||||
wrapGAppsHook3,
|
wrapGAppsHook3,
|
||||||
v2ray-geoip,
|
v2ray-geoip,
|
||||||
v2ray-domain-list-community,
|
v2ray-domain-list-community,
|
||||||
copyDesktopItems,
|
|
||||||
makeDesktopItem,
|
|
||||||
libsoup,
|
libsoup,
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
|
@ -31,7 +29,7 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
service-cargo-hash = "sha256-lMOQznPlkHIMSm5nOLuGP9qJXt3CXnd+q8nCu+Xbbt8=";
|
service-cargo-hash = "sha256-lMOQznPlkHIMSm5nOLuGP9qJXt3CXnd+q8nCu+Xbbt8=";
|
||||||
npm-hash = "sha256-v9+1NjXo/1ogmep+4IP+9qoUR1GJz87VGeOoMzQ1Rfw=";
|
pnpm-hash = "sha256-v9+1NjXo/1ogmep+4IP+9qoUR1GJz87VGeOoMzQ1Rfw=";
|
||||||
vendor-hash = "sha256-y3XVHi00mnuVFxSd02YBgfWuXYRVIs+e0tITXNOFRsA=";
|
vendor-hash = "sha256-y3XVHi00mnuVFxSd02YBgfWuXYRVIs+e0tITXNOFRsA=";
|
||||||
|
|
||||||
service = callPackage ./service.nix {
|
service = callPackage ./service.nix {
|
||||||
|
@ -44,23 +42,13 @@ let
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
|
||||||
webui = callPackage ./webui.nix {
|
|
||||||
inherit
|
|
||||||
version
|
|
||||||
src
|
|
||||||
pname
|
|
||||||
meta
|
|
||||||
npm-hash
|
|
||||||
;
|
|
||||||
};
|
|
||||||
|
|
||||||
unwrapped = callPackage ./unwrapped.nix {
|
unwrapped = callPackage ./unwrapped.nix {
|
||||||
inherit
|
inherit
|
||||||
pname
|
pname
|
||||||
version
|
version
|
||||||
src
|
src
|
||||||
|
pnpm-hash
|
||||||
vendor-hash
|
vendor-hash
|
||||||
webui
|
|
||||||
meta
|
meta
|
||||||
libsoup
|
libsoup
|
||||||
;
|
;
|
||||||
|
@ -92,20 +80,6 @@ stdenv.mkDerivation {
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
wrapGAppsHook3
|
wrapGAppsHook3
|
||||||
copyDesktopItems
|
|
||||||
];
|
|
||||||
|
|
||||||
desktopItems = [
|
|
||||||
(makeDesktopItem {
|
|
||||||
name = "clash-verge";
|
|
||||||
exec = "clash-verge";
|
|
||||||
comment = "Clash Verge Rev";
|
|
||||||
type = "Application";
|
|
||||||
icon = "clash-verge";
|
|
||||||
desktopName = "Clash Verge Rev";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Network" ];
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
@ -121,6 +95,7 @@ stdenv.mkDerivation {
|
||||||
ln -s ${v2ray-geoip}/share/v2ray/geoip.dat $out/lib/Clash\ Verge/resources/geoip.dat
|
ln -s ${v2ray-geoip}/share/v2ray/geoip.dat $out/lib/Clash\ Verge/resources/geoip.dat
|
||||||
ln -s ${v2ray-domain-list-community}/share/v2ray/geosite.dat $out/lib/Clash\ Verge/resources/geosite.dat
|
ln -s ${v2ray-domain-list-community}/share/v2ray/geosite.dat $out/lib/Clash\ Verge/resources/geosite.dat
|
||||||
ln -s ${dbip-country-lite.mmdb} $out/lib/Clash\ Verge/resources/Country.mmdb
|
ln -s ${dbip-country-lite.mmdb} $out/lib/Clash\ Verge/resources/Country.mmdb
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,35 +2,53 @@
|
||||||
pname,
|
pname,
|
||||||
version,
|
version,
|
||||||
src,
|
src,
|
||||||
libayatana-appindicator,
|
|
||||||
vendor-hash,
|
|
||||||
glib,
|
|
||||||
webui,
|
|
||||||
pkg-config,
|
|
||||||
libsoup,
|
|
||||||
rustPlatform,
|
|
||||||
makeDesktopItem,
|
|
||||||
libsForQt5,
|
|
||||||
kdePackages,
|
|
||||||
meta,
|
meta,
|
||||||
webkitgtk_4_1,
|
|
||||||
openssl,
|
pnpm-hash,
|
||||||
|
vendor-hash,
|
||||||
|
|
||||||
|
rustPlatform,
|
||||||
|
|
||||||
|
cargo-tauri,
|
||||||
jq,
|
jq,
|
||||||
|
moreutils,
|
||||||
|
nodejs,
|
||||||
|
pkg-config,
|
||||||
|
pnpm_9,
|
||||||
|
|
||||||
|
glib,
|
||||||
|
kdePackages,
|
||||||
|
libayatana-appindicator,
|
||||||
|
libsForQt5,
|
||||||
|
libsoup,
|
||||||
|
openssl,
|
||||||
|
webkitgtk_4_1,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
rustPlatform.buildRustPackage {
|
rustPlatform.buildRustPackage {
|
||||||
inherit version src meta;
|
inherit version src meta;
|
||||||
pname = "${pname}-unwrapped";
|
pname = "${pname}-unwrapped";
|
||||||
sourceRoot = "${src.name}/src-tauri";
|
|
||||||
|
cargoRoot = "src-tauri";
|
||||||
|
buildAndTestSubdir = "src-tauri";
|
||||||
|
|
||||||
useFetchCargoVendor = true;
|
useFetchCargoVendor = true;
|
||||||
cargoHash = vendor-hash;
|
cargoHash = vendor-hash;
|
||||||
|
|
||||||
|
pnpmDeps = pnpm_9.fetchDeps {
|
||||||
|
inherit pname version src;
|
||||||
|
hash = pnpm-hash;
|
||||||
|
};
|
||||||
|
|
||||||
env = {
|
env = {
|
||||||
OPENSSL_NO_VENDOR = 1;
|
OPENSSL_NO_VENDOR = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
# We disable the option to try to use the bleeding-edge version of mihomo
|
||||||
|
# If you need a newer version, you can override the mihomo input of the wrapped package
|
||||||
|
sed -i -e '/Mihomo Alpha/d' ./src/components/setting/mods/clash-core-viewer.tsx
|
||||||
|
|
||||||
substituteInPlace $cargoDepsCopy/libappindicator-sys-*/src/lib.rs \
|
substituteInPlace $cargoDepsCopy/libappindicator-sys-*/src/lib.rs \
|
||||||
--replace-fail "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
|
--replace-fail "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
|
||||||
|
|
||||||
|
@ -41,48 +59,38 @@ rustPlatform.buildRustPackage {
|
||||||
--replace-fail '"kwriteconfig5"' '"${libsForQt5.kconfig}/bin/kwriteconfig5"' \
|
--replace-fail '"kwriteconfig5"' '"${libsForQt5.kconfig}/bin/kwriteconfig5"' \
|
||||||
--replace-fail '"kwriteconfig6"' '"${kdePackages.kconfig}/bin/kwriteconfig6"'
|
--replace-fail '"kwriteconfig6"' '"${kdePackages.kconfig}/bin/kwriteconfig6"'
|
||||||
|
|
||||||
cat tauri.conf.json | jq 'del(.bundle.resources) | del(.bundle.externalBin) | .build.frontendDist = "${webui}" | .build.beforeBuildCommand = ""' > tauri.conf.json.2
|
# this file tries to override the linker used when compiling for certain platforms
|
||||||
mv tauri.conf.json.2 tauri.conf.json
|
rm .cargo/config.toml
|
||||||
cat tauri.linux.conf.json | jq 'del(.bundle.externalBin)' > tauri.linux.conf.json.2
|
|
||||||
mv tauri.linux.conf.json.2 tauri.linux.conf.json
|
# disable updater and don't try to bundle helper binaries
|
||||||
chmod 777 ../.cargo
|
jq '
|
||||||
rm ../.cargo/config.toml
|
.bundle.createUpdaterArtifacts = false |
|
||||||
|
del(.bundle.resources) |
|
||||||
|
del(.bundle.externalBin)
|
||||||
|
' src-tauri/tauri.conf.json | sponge src-tauri/tauri.conf.json
|
||||||
|
|
||||||
|
jq 'del(.bundle.externalBin)' src-tauri/tauri.linux.conf.json | sponge src-tauri/tauri.linux.conf.json
|
||||||
|
|
||||||
# As a side effect of patching the service to fix the arbitrary file overwrite issue,
|
# As a side effect of patching the service to fix the arbitrary file overwrite issue,
|
||||||
# we also need to update the timestamp format in the filename to the second level.
|
# we also need to update the timestamp format in the filename to the second level.
|
||||||
# This ensures that the Clash kernel can still be restarted within one minute without problems.
|
# This ensures that the Clash kernel can still be restarted within one minute without problems.
|
||||||
substituteInPlace src/utils/dirs.rs \
|
substituteInPlace src-tauri/src/utils/dirs.rs \
|
||||||
--replace-fail '%Y-%m-%d-%H%M' '%Y-%m-%d-%H%M%S'
|
--replace-fail '%Y-%m-%d-%H%M' '%Y-%m-%d-%H%M%S'
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pkg-config
|
cargo-tauri.hook
|
||||||
rustPlatform.cargoSetupHook
|
|
||||||
jq
|
jq
|
||||||
|
moreutils
|
||||||
|
nodejs
|
||||||
|
pkg-config
|
||||||
|
pnpm_9.configHook
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
openssl
|
libayatana-appindicator
|
||||||
libsoup
|
libsoup
|
||||||
|
openssl
|
||||||
webkitgtk_4_1
|
webkitgtk_4_1
|
||||||
];
|
];
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
install -DT icons/128x128@2x.png $out/share/icons/hicolor/128x128@2/apps/clash-verge.png
|
|
||||||
install -DT icons/128x128.png $out/share/icons/hicolor/128x128/apps/clash-verge.png
|
|
||||||
install -DT icons/32x32.png $out/share/icons/hicolor/32x32/apps/clash-verge.png
|
|
||||||
'';
|
|
||||||
|
|
||||||
desktopItems = [
|
|
||||||
(makeDesktopItem {
|
|
||||||
name = "clash-verge-rev";
|
|
||||||
exec = "clash-verge %u";
|
|
||||||
icon = "clash-verge-rev";
|
|
||||||
desktopName = "Clash Verge Rev";
|
|
||||||
genericName = meta.description;
|
|
||||||
mimeTypes = [ "x-scheme-handler/clash" ];
|
|
||||||
type = "Application";
|
|
||||||
terminal = false;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
{
|
|
||||||
version,
|
|
||||||
src,
|
|
||||||
pname,
|
|
||||||
pnpm_9,
|
|
||||||
nodejs,
|
|
||||||
stdenv,
|
|
||||||
meta,
|
|
||||||
npm-hash,
|
|
||||||
}:
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
inherit version src meta;
|
|
||||||
pname = "${pname}-webui";
|
|
||||||
pnpmDeps = pnpm_9.fetchDeps {
|
|
||||||
inherit pname version src;
|
|
||||||
hash = npm-hash;
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
nodejs
|
|
||||||
pnpm_9.configHook
|
|
||||||
];
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
chmod -R +644 -- ./src/components/setting/mods/clash-core-viewer.tsx
|
|
||||||
chmod -R +644 -- ./src/components/setting/mods
|
|
||||||
sed -i -e '/Mihomo Alpha/d' ./src/components/setting/mods/clash-core-viewer.tsx
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
|
|
||||||
node --max_old_space_size=1024000 ./node_modules/vite/bin/vite.js build
|
|
||||||
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
cp -r dist $out
|
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue