dorion: 5.0.1 → 6.7.1; dorion: build from source (#265771)

This commit is contained in:
Aleksana 2025-06-06 19:36:21 +08:00 committed by GitHub
commit dfa2b3813e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 195 additions and 37 deletions

View file

@ -0,0 +1,31 @@
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index 13a6b54..f6bd9d6 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -5049,6 +5049,8 @@ dependencies = [
[[package]]
name = "tauri-plugin-shell"
version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69d5eb3368b959937ad2aeaf6ef9a8f5d11e01ffe03629d3530707bbcb27ff5d"
dependencies = [
"encoding_rs",
"log",
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index 4dcaa86..daef086 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -12,13 +12,6 @@ rust-version = "1.84.1"
strip = "debuginfo"
lto = false
-# Patches
-[package.metadata.patch]
-crates = ["tauri-plugin-shell"]
-
-[patch.crates-io]
-tauri-plugin-shell = { path="./target/patch/tauri-plugin-shell-2.2.1" }
-
[build-dependencies]
tauri-build = { version = "2.0.0", features = [] }

View file

@ -1,66 +1,193 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchurl,
autoPatchelfHook,
dpkg,
rustPlatform,
cmake,
ninja,
wrapGAppsHook4,
glib-networking,
gst_all_1,
libappindicator,
libsysprof-capture,
libayatana-appindicator,
webkitgtk_4_0,
wrapGAppsHook3,
nodejs,
openssl,
pkg-config,
yq-go,
pnpm_9,
webkitgtk_4_1,
cargo-tauri,
desktop-file-utils,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "dorion";
version = "5.0.1";
src = fetchurl {
url = "https://github.com/SpikeHD/Dorion/releases/download/v${finalAttrs.version}/Dorion_${finalAttrs.version}_amd64.deb";
hash = "sha256-cCZikTZ+IU3mq/FkJfeggXLyWIsWG+a2qu1GbgW93WQ=";
let
webkitgtk_4_1' = webkitgtk_4_1.override {
enableExperimental = true;
};
unpackCmd = ''
dpkg -X $curSrc .
'';
shelter = fetchurl {
url = "https://raw.githubusercontent.com/uwu/shelter-builds/fab6f100bd0ab8583d67f792f66722a7d2a14bd1/shelter.js";
hash = "sha256-d9vaKLrl8RYNcHnE1iGN49ov6U/Y+9XpEsio+c1Sguc=";
meta = {
homepage = "https://github.com/uwu/shelter";
sourceProvenance = [ lib.sourceTypes.binaryBytecode ]; # actually, minified JS
license = lib.licenses.cc0;
};
};
in
runtimeDependencies = [
glib-networking
libappindicator
libayatana-appindicator
rustPlatform.buildRustPackage (finalAttrs: {
pname = "dorion";
version = "6.7.1";
src = fetchFromGitHub {
owner = "SpikeHD";
repo = "Dorion";
tag = "v${finalAttrs.version}";
hash = "sha256-d4G3royqhz+te5wPWVLNqqG/w0qOvTd7dKcWSzxUMUo=";
};
cargoPatches = [
./no-cargo-patch.patch
];
cargoRoot = "src-tauri";
buildAndTestSubdir = finalAttrs.cargoRoot;
useFetchCargoVendor = true;
cargoHash = "sha256-1xpAJkS31DjrZCY5WJ4/Z1t1ALED5gz7xYLhVR1Qzww=";
pnpmDeps = pnpm_9.fetchDeps {
inherit (finalAttrs) pname version src;
hash = "sha256-xBonUzA4+1zbViEsKap6CaG6ZRldW1LjNYIB+FmVRFs=";
};
# CMake (webkit extension)
cmakeDir = ".";
cmakeBuildDir = "src-tauri/extension_webkit";
dontUseCmakeConfigure = true;
dontUseNinjaBuild = true;
dontUseNinjaCheck = true;
dontUseNinjaInstall = true;
# cmake's supposed to set this automatically
# ... but the detection is based on the presence of ninja build hook
cmakeFlags = [
"-GNinja"
];
nativeBuildInputs = [
autoPatchelfHook
dpkg
wrapGAppsHook3
pnpm_9.configHook
cargo-tauri.hook
nodejs
pkg-config
wrapGAppsHook4
yq-go
desktop-file-utils
cmake
ninja
];
buildInputs = [
glib-networking
gst_all_1.gst-plugins-bad
openssl
webkitgtk_4_1'
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-good
webkitgtk_4_0
gst_all_1.gst-plugins-rs
glib-networking
libsysprof-capture
libayatana-appindicator
];
installPhase = ''
runHook preInstall
postPatch = ''
# remove updater
rm -rf updater
mkdir -pv $out
mv -v {bin,lib,share} $out
# patch cargo-deps
pushd $cargoDepsCopy/tauri-plugin-shell-*
patch -p1 < /build/source/src-tauri/patches/tauri-plugin-shell+*.patch
popd
runHook postInstall
substituteInPlace $cargoDepsCopy/libappindicator-sys-*/src/lib.rs \
--replace-fail "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
# disable pre-build script and disable auto-updater
yq -iPo=json '
.bundle.resources = (.bundle.resources | map(select(. != "updater*")))
' src-tauri/tauri.conf.json
# link shelter injection
ln -s ${shelter} src-tauri/injection/shelter.js
# link html/frontend data
ln -s /build/source/src /build/source/src-tauri/html
'';
configurePhase = ''
cmakeConfigurePhase
pnpmConfigHook
'';
buildPhase = ''
ninjaBuildPhase
cd /build/source
tauriBuildHook
'';
postInstall = ''
# Set up the resource directories
mkdir -p $out/lib/Dorion
ln -s $out/lib/Dorion $out/lib/dorion
rm -rf $out/lib/Dorion/injection
cp -r src-tauri/injection $out/lib/Dorion
cp -r src $out/lib/Dorion
# Modify the desktop file
desktop-file-edit \
--set-comment "Tiny alternative Discord client" \
--set-key="Exec" --set-value="Dorion %U" \
--set-key="TryExec" --set-value="Dorion" \
--set-key="StartupWMClass" --set-value="Dorion" \
--set-key="StartupNotify" --set-value="true" \
--set-key="Categories" --set-value="Network;InstantMessaging;Chat;" \
--set-key="Keywords" --set-value="dorion;discord;vencord;chat;im;vc;ds;dc;dsc;tauri;" \
--set-key="Terminal" --set-value="false" \
--set-key="MimeType" --set-value="x-scheme-handler/discord" \
$out/share/applications/Dorion.desktop
'';
# error: failed to run custom build command for `Dorion v6.5.3 (/build/source/src-tauri)`
# Permission denied (os error 13)
doCheck = false;
env = {
TAURI_RESOURCE_DIR = "${placeholder "out"}/lib";
};
meta = {
homepage = "https://github.com/SpikeHD/Dorion";
homepage = "https://spikehd.github.io/projects/dorion/";
description = "Tiny alternative Discord client";
license = lib.licenses.gpl3Only;
mainProgram = "dorion";
maintainers = with lib.maintainers; [ aleksana ];
platforms = lib.intersectLists (lib.platforms.linux) (lib.platforms.x86_64);
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
longDescription = ''
Dorion is an alternative Discord client aimed towards lower-spec or
storage-sensitive PCs that supports themes, plugins, and more!
'';
changelog = "https://github.com/SpikeHD/Dorion/releases/tag/v${finalAttrs.version}";
downloadPage = "https://github.com/SpikeHD/Dorion/releases/tag/v${finalAttrs.version}";
license = with lib.licenses; [
gpl3Only
cc0 # Shelter
];
mainProgram = "Dorion";
maintainers = with lib.maintainers; [
nyabinary
aleksana
griffi-gh
getchoo
];
platforms = lib.platforms.linux;
sourceProvenance = [
lib.sourceTypes.binaryBytecode # actually, minified JS
lib.sourceTypes.fromSource
];
};
})