libglycin-gtk4: init (split out of libglycin) (#481377)

This commit is contained in:
Jan Tojnar
2026-02-04 07:19:57 +00:00
committed by GitHub
22 changed files with 358 additions and 157 deletions
+1
View File
@@ -22,6 +22,7 @@ haredo.section.md
installShellFiles.section.md
julec.section.md
just.section.md
libglycin.section.md
libiconv.section.md
libxml2.section.md
meson.section.md
+47
View File
@@ -0,0 +1,47 @@
# libglycin {#libglycin-hooks}
[Glycin](https://gitlab.gnome.org/GNOME/glycin) is a library for sandboxed and extendable image loading.
[]{#libglycin-setup-hook} For most applications using it, individual image formats are loaded through binaries provided by `glycin-loaders`. The paths of these loaders must be injected into the environment, e.g. using [`wrapGAppsHook`](#ssec-gnome-hooks). `libglycin.setupHook` will do that.
[]{#libglycin-patch-vendor-hook} Additionally, for Rust projects `glycin` Rust crate itself requires a patch to become self-contained. `libglycin.patchVendorHook` will do that. This is not needed for projects using the ELF library from `libglycin` package.
## Example code snippet {#libglycin-hooks-example-code-snippet}
```nix
{
lib,
rustPlatform,
libglycin,
glycin-loaders,
wrapGAppsHook4,
}:
rustPlatform.buildRustPackage {
# ...
cargoHash = "...";
nativeBuildInputs = [
wrapGAppsHook4
libglycin.patchVendorHook
];
buildInputs = [
libglycin.setupHook
glycin-loaders
];
# ...
}
```
## Variables controlling glycin-loaders {#libglycin-hook-variables-controlling}
### `glycinCargoDepsPath` {#glycin-cargo-deps-path}
Path to a directory containing the `glycin` crate to patch. Defaults to the crate directory created by `cargoSetupHook`, or `./vendor/`.
### `dontWrapGlycinLoaders` {#glycin-dont-wrap}
Disable adding the Glycin loaders path `XDG_DATA_DIRS` with `wrapGAppsHook`.
@@ -129,6 +129,8 @@ The hooks do the following:
- []{#ssec-gnome-hooks-gst-grl-plugins} Setup hooks of `gst_all_1.gstreamer` and `grilo` will populate the `GST_PLUGIN_SYSTEM_PATH_1_0` and `GRL_PLUGIN_PATH` variables, respectively, which will then be added to the wrapper by `wrapGApps*` hook.
- []{#ssec-gnome-hooks-libglycin} `libglycin`'s [setup hook](#libglycin-setup-hook) will populate `XDG_DATA_DIRS` with the path to the loaders.
You can also pass additional arguments to `makeWrapper` using `gappsWrapperArgs` in `preFixup` hook:
```nix
+24
View File
@@ -2473,6 +2473,27 @@
"setup-hook-gdk-pixbuf": [
"index.html#setup-hook-gdk-pixbuf"
],
"libglycin-hooks": [
"index.html#libglycin-hooks"
],
"libglycin-setup-hook": [
"index.html#libglycin-setup-hook"
],
"libglycin-patch-vendor-hook": [
"index.html#libglycin-patch-vendor-hook"
],
"libglycin-hooks-example-code-snippet": [
"index.html#libglycin-hooks-example-code-snippet"
],
"libglycin-hook-variables-controlling": [
"index.html#libglycin-hook-variables-controlling"
],
"glycin-cargo-deps-path": [
"index.html#glycin-cargo-deps-path"
],
"glycin-dont-wrap": [
"index.html#glycin-dont-wrap"
],
"ghc": [
"index.html#ghc"
],
@@ -3173,6 +3194,9 @@
"ssec-gnome-hooks-gst-grl-plugins": [
"index.html#ssec-gnome-hooks-gst-grl-plugins"
],
"ssec-gnome-hooks-libglycin": [
"index.html#ssec-gnome-hooks-libglycin"
],
"ssec-gnome-updating": [
"index.html#ssec-gnome-updating"
],
@@ -21,7 +21,6 @@
sqlite,
wayland,
zbar,
glycin-loaders,
nix-update-script,
}:
@@ -78,8 +77,6 @@ stdenv.mkDerivation (finalAttrs: {
gappsWrapperArgs+=(
# vp8enc preset
--prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets"
# See https://gitlab.gnome.org/sophie-h/glycin/-/blob/0.1.beta.2/glycin/src/config.rs#L44
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
+3 -9
View File
@@ -9,7 +9,6 @@
pkg-config,
wrapGAppsHook4,
appstream,
bubblewrap,
flatpak,
glib-networking,
glycin-loaders,
@@ -18,6 +17,7 @@
libadwaita,
libdex,
libglycin,
libglycin-gtk4,
libsoup_3,
libxmlb,
libyaml,
@@ -56,6 +56,8 @@ stdenv.mkDerivation (finalAttrs: {
libadwaita
libdex
libglycin
libglycin-gtk4
glycin-loaders
libsoup_3
libxmlb
libyaml
@@ -64,15 +66,7 @@ stdenv.mkDerivation (finalAttrs: {
libsecret
];
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : "$out/bin:${lib.makeBinPath [ bubblewrap ]}"
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
passthru = {
inherit (libglycin) glycinPathsPatch;
updateScript = nix-update-script { };
};
+3 -1
View File
@@ -11,6 +11,7 @@
desktop-file-utils,
libadwaita,
libglycin,
libglycin-gtk4,
libva-utils,
ffmpeg,
gst-thumbnailers,
@@ -42,6 +43,8 @@ python3Packages.buildPythonApplication (finalAttrs: {
buildInputs = [
libadwaita
libglycin
libglycin-gtk4
glycin-loaders
];
dependencies = [
@@ -60,7 +63,6 @@ python3Packages.buildPythonApplication (finalAttrs: {
preFixup = ''
makeWrapperArgs+=(
''${gappsWrapperArgs[@]}
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
--prefix PATH : ${lib.makeBinPath finalAttrs.runtimeDeps}
)
'';
+4 -8
View File
@@ -23,10 +23,10 @@
libshumate,
wrapGAppsHook4,
blueprint-compiler,
bubblewrap,
sqlite,
xdg-desktop-portal,
libseccomp,
libglycin,
glycin-loaders,
libwebp,
}:
@@ -64,6 +64,7 @@ stdenv.mkDerivation (finalAttrs: {
glib
grass-sass
gtk4
libglycin.patchVendorHook
meson
ninja
pkg-config
@@ -79,6 +80,8 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
glib
libglycin.setupHook
glycin-loaders
gtk4
gtksourceview5
lcms2
@@ -99,13 +102,6 @@ stdenv.mkDerivation (finalAttrs: {
gst-plugins-rs
]);
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
--prefix PATH : "${lib.makeBinPath [ bubblewrap ]}"
)
'';
env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.rustcTargetSpec;
passthru = {
+37 -47
View File
@@ -1,13 +1,12 @@
{
stdenv,
lib,
fetchurl,
cairo,
cargo,
gettext,
git,
gnome,
glib,
gtk4,
libglycin,
lcms2,
libheif,
libjxl,
@@ -17,43 +16,34 @@
meson,
ninja,
pkg-config,
python3,
shared-mime-info,
rustc,
rustPlatform,
common-updater-scripts,
_experimental-update-script-combinators,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "glycin-loaders";
version = "2.0.7";
src = fetchurl {
url = "mirror://gnome/sources/glycin/${lib.versions.majorMinor finalAttrs.version}/glycin-${finalAttrs.version}.tar.xz";
hash = "sha256-xBasKbbT7NxnuQwVU3uhKTzrevlvoQHK5nt9HTflCrA=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) src;
name = "glycin-loaders-deps-${finalAttrs.version}";
hash = "sha256-UVVVjMt4vWkLob0H/MxIaW6rkBSFImu+5dezaCnc3Q8=";
dontConfigure = true;
};
inherit (libglycin) version src cargoDeps;
nativeBuildInputs = [
cargo
gettext # for msgfmt
git
meson
ninja
pkg-config
rustc
rustPlatform.cargoSetupHook
]
++ lib.optionals finalAttrs.finalPackage.doCheck [
python3
# Tests use Rust glycin library.
libglycin.patchVendorHook
];
buildInputs = [
gtk4 # for GdkTexture
cairo
lcms2
libheif
libxml2 # for librsvg crate
librsvg
@@ -61,12 +51,20 @@ stdenv.mkDerivation (finalAttrs: {
libjxl
];
# Tests in passthru.tests to avoid dependency cycles.
checkInputs = [
glib
gtk4
lcms2
];
mesonFlags = [
"-Dglycin-loaders=true"
"-Dglycin-thumbnailer=false"
"-Dlibglycin=false"
"-Dlibglycin-gtk4=false"
"-Dvapi=false"
(lib.mesonBool "tests" finalAttrs.finalPackage.doCheck)
];
strictDeps = true;
@@ -74,38 +72,30 @@ stdenv.mkDerivation (finalAttrs: {
postPatch = ''
substituteInPlace glycin-loaders/meson.build \
--replace-fail "cargo_target_dir / rust_target / loader," "cargo_target_dir / '${stdenv.hostPlatform.rust.cargoShortTarget}' / rust_target / loader,"
''
+ lib.optionalString finalAttrs.finalPackage.doCheck ''
chmod +x build-aux/setup-integration-test.py
patchShebangs \
build-aux/setup-integration-test.py
'';
preCheck = lib.optionalString finalAttrs.finalPackage.doCheck ''
# Fix test files being considered application/octet-stream
export XDG_DATA_DIRS=${shared-mime-info}/share:$XDG_DATA_DIRS
# fonts test will not be able to create cache without this
export XDG_CACHE_HOME=$(mktemp -d)
'';
env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.rustcTargetSpec;
passthru = {
updateScript =
let
updateSource = gnome.updateScript {
attrPath = "glycin-loaders";
packageName = "glycin";
};
updateLockfile = {
command = [
"sh"
"-c"
''
PATH=${
lib.makeBinPath [
common-updater-scripts
]
}
update-source-version glycin-loaders --ignore-same-version --source-key=cargoDeps.vendorStaging > /dev/null
''
];
# Experimental feature: do not copy!
supportedFeatures = [ "silent" ];
};
in
_experimental-update-script-combinators.sequence [
updateSource
updateLockfile
];
tests = {
withTests = finalAttrs.finalPackage.overrideAttrs {
doCheck = true;
};
};
};
meta = {
+1 -6
View File
@@ -49,14 +49,9 @@ stdenv.mkDerivation (finalAttrs: {
gst_all_1.gst-plugins-ugly
fontconfig
libglycin
glycin-loaders
];
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
meta = {
description = "Generate thumbnailer for video and audio files";
homepage = "https://gitlab.gnome.org/GNOME/gst-thumbnailers";
@@ -17,6 +17,7 @@
libadwaita,
libarchive,
libglycin,
libglycin-gtk4,
libhighscore,
libmanette,
sqlite,
@@ -92,6 +93,7 @@ stdenv.mkDerivation (finalAttrs: {
libadwaita
libarchive
libglycin
libglycin-gtk4
libhighscore
libmanette-1-alpha
sqlite
+102
View File
@@ -0,0 +1,102 @@
{
lib,
stdenv,
cargo,
fontconfig,
gi-docgen,
glib,
gobject-introspection,
gtk4,
lcms2,
libglycin,
libseccomp,
meson,
ninja,
pkg-config,
python3,
rustPlatform,
rustc,
vala,
buildPackages,
withIntrospection ?
lib.meta.availableOn stdenv.hostPlatform gobject-introspection
&& stdenv.hostPlatform.emulatorAvailable buildPackages,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "libglycin-gtk4";
outputs = [
"out"
"dev"
"devdoc"
];
inherit (libglycin) version src cargoDeps;
nativeBuildInputs = [
meson
ninja
pkg-config
rustc
cargo
python3
rustPlatform.cargoSetupHook
]
++ lib.optionals withIntrospection [
vala
gi-docgen
gobject-introspection
];
buildInputs = [
fontconfig
glib
libseccomp
lcms2
gtk4
];
propagatedBuildInputs = [
libglycin
gtk4
# TODO: these should not be required by .pc file
fontconfig
libseccomp
lcms2
];
mesonFlags = [
(lib.mesonBool "glycin-loaders" false)
(lib.mesonBool "glycin-thumbnailer" false)
(lib.mesonBool "libglycin" false)
(lib.mesonBool "libglycin-gtk4" true)
(lib.mesonBool "introspection" withIntrospection)
(lib.mesonBool "vapi" withIntrospection)
(lib.mesonBool "capi_docs" withIntrospection)
];
postPatch = ''
patchShebangs \
build-aux/crates-version.py
'';
postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
moveToOutput "share/doc" "$devdoc"
'';
meta = {
description = "C-Bindings to convert glycin frames to GDK Textures";
homepage = "https://gitlab.gnome.org/GNOME/glycin";
license = with lib.licenses; [
mpl20 # or
lgpl21Plus
];
teams = [ lib.teams.gnome ];
platforms = lib.platforms.linux;
pkgConfigModules = [
"glycin-gtk4-1"
];
};
})
@@ -1,13 +0,0 @@
diff --git a/vendor/glycin/src/sandbox.rs b/vendor/glycin/src/sandbox.rs
index 90cd5f6..17a6469 100644
--- a/vendor/glycin/src/sandbox.rs
+++ b/vendor/glycin/src/sandbox.rs
@@ -251,7 +251,7 @@ impl Sandbox {
}
async fn bwrap_command(&self, seccomp_memfd: &Memfd) -> Result<Command, Error> {
- let mut command = Command::new("bwrap");
+ let mut command = Command::new("@bwrap@");
command.args([
"--unshare-all",
+52 -22
View File
@@ -1,7 +1,8 @@
{
lib,
stdenv,
fetchFromGitLab,
fetchurl,
makeSetupHook,
meson,
ninja,
pkg-config,
@@ -11,13 +12,18 @@
rustPlatform,
vala,
gi-docgen,
glib,
gobject-introspection,
glycin-loaders,
libglycin-gtk4,
fontconfig,
libseccomp,
lcms2,
gtk4,
gnome,
replaceVars,
bubblewrap,
jq,
moreutils,
common-updater-scripts,
_experimental-update-script-combinators,
buildPackages,
@@ -29,12 +35,22 @@ stdenv.mkDerivation (finalAttrs: {
pname = "libglycin";
version = "2.0.7";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "glycin";
tag = finalAttrs.version;
hash = "sha256-17ebdiLMuDJuuw8TBYWamyyDM4aZgtWRWEQhWGb/2mw=";
outputs = [
"out"
"dev"
"devdoc"
];
setupHook = ./path-hook.sh;
src = fetchurl {
url = "mirror://gnome/sources/glycin/${lib.versions.majorMinor finalAttrs.version}/glycin-${finalAttrs.version}.tar.xz";
hash = "sha256-xBasKbbT7NxnuQwVU3uhKTzrevlvoQHK5nt9HTflCrA=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-UVVVjMt4vWkLob0H/MxIaW6rkBSFImu+5dezaCnc3Q8=";
};
nativeBuildInputs = [
@@ -45,6 +61,7 @@ stdenv.mkDerivation (finalAttrs: {
cargo
python3
rustPlatform.cargoSetupHook
finalAttrs.passthru.patchVendorHook
]
++ lib.optionals withIntrospection [
vala
@@ -52,18 +69,16 @@ stdenv.mkDerivation (finalAttrs: {
gobject-introspection
];
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-7x4Ts0wRFoxZ2u3AHVEey8g6+XWDpxM/hFZeomkojKU=";
};
buildInputs = [
fontconfig
libseccomp
lcms2
gtk4
];
propagatedBuildInputs = [
glib
# TODO: these should not be required by .pc file
fontconfig
libseccomp
lcms2
];
@@ -72,18 +87,22 @@ stdenv.mkDerivation (finalAttrs: {
(lib.mesonBool "glycin-loaders" false)
(lib.mesonBool "glycin-thumbnailer" false)
(lib.mesonBool "libglycin" true)
(lib.mesonBool "libglycin-gtk4" false)
(lib.mesonBool "introspection" withIntrospection)
(lib.mesonBool "vapi" withIntrospection)
(lib.mesonBool "capi_docs" withIntrospection)
];
postPatch = ''
patch -p2 < ${finalAttrs.passthru.glycin3PathsPatch}
patchShebangs \
build-aux/crates-version.py
'';
postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
moveToOutput "share/doc" "$devdoc"
'';
passthru = {
updateScript =
let
@@ -113,12 +132,24 @@ stdenv.mkDerivation (finalAttrs: {
updateLockfile
];
glycinPathsPatch = replaceVars ./fix-glycin-paths.patch {
bwrap = "${bubblewrap}/bin/bwrap";
};
patchVendorHook =
makeSetupHook
{
name = "glycinPatchVendorHook";
}
(
replaceVars ./patch-vendor-hook.sh {
bwrap = "${bubblewrap}/bin/bwrap";
jq = "${jq}/bin/jq";
sponge = "${moreutils}/bin/sponge";
}
);
glycin3PathsPatch = replaceVars ./fix-glycin-3-paths.patch {
bwrap = "${bubblewrap}/bin/bwrap";
tests = {
inherit
glycin-loaders
libglycin-gtk4
;
};
};
@@ -135,7 +166,6 @@ stdenv.mkDerivation (finalAttrs: {
platforms = lib.platforms.linux;
pkgConfigModules = [
"glycin-1"
"glycin-gtk4-1"
];
};
})
@@ -0,0 +1,43 @@
libglycinPatchVendorHook() {
echo "executing libglycinPatchVendorHook"
local glycinPath
if [[ -z ${glycinCargoDepsPath:-} ]]; then
# When cargoSetupHook is used, `cargoDepsCopy` would be set and preferred.
# Otherwise, fallback to vendor/
local cargoDepsPath=${cargoDepsCopy:-vendor}
fi
while read -r path; do
# Ensure the paths we're patching exist (and that this crate probably isn't something like glycin-utils)
if [[ -f $path/src/sandbox.rs ]]; then
glycinPath="$path"
break
fi
done < <(find "$cargoDepsPath" -type d -name 'glycin*')
if [[ -z ${glycinPath:-} ]]; then
echo >&2 "error: glycin was not found within the cargo dependencies at '$cargoDepsPath'."
echo >&2 "are you sure libglycin.patchVendorHook is still required?"
exit 1
fi
echo "patching glycin crate at '$glycinPath'"
# Allow use in non-FHS environments like tests in Nix build sandbox.
substituteInPlace "$glycinPath/src/sandbox.rs" \
--replace-fail '"--ro-bind",
"/usr",' '"--ro-bind-try", "/usr",'
substituteInPlace "$glycinPath/src/sandbox.rs" \
--replace-fail '"bwrap"' '"@bwrap@"'
# Replace hash of file we patch in vendored glycin.
@jq@ \
--arg hash "$(sha256sum "$glycinPath/src/sandbox.rs" | cut -d' ' -f 1)" \
'.files."src/sandbox.rs" = $hash' \
"$glycinPath/.cargo-checksum.json" |
@sponge@ "$glycinPath/.cargo-checksum.json"
}
prePatchHooks+=(libglycinPatchVendorHook)
+18
View File
@@ -0,0 +1,18 @@
find_glycin_loader_paths() {
if [ -d "$1/share/glycin-loaders" ]; then
addToSearchPath NIX_GLYCIN_LOADER_PATHS $1/share
fi
}
addEnvHooks "$hostOffset" find_glycin_loader_paths
glycinLoadersWrapperArgsHook() {
echo "executing glycinLoadersWrapperArgsHook"
if [[ -n "$NIX_GLYCIN_LOADER_PATHS" ]]; then
gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$NIX_GLYCIN_LOADER_PATHS")
fi
}
if [[ -z ${dontWrapGlycinLoaders:-} ]]; then
preFixupPhases+=(glycinLoadersWrapperArgsHook)
fi
+3 -16
View File
@@ -48,6 +48,7 @@ stdenv.mkDerivation (finalAttrs: {
cargo
desktop-file-utils
itstool
libglycin.patchVendorHook
meson
ninja
pkg-config
@@ -57,6 +58,8 @@ stdenv.mkDerivation (finalAttrs: {
];
buildInputs = [
libglycin.setupHook
glycin-loaders
gtk4
lcms2
libadwaita
@@ -64,22 +67,6 @@ stdenv.mkDerivation (finalAttrs: {
libseccomp
];
preConfigure = ''
# Dirty approach to add patches after cargoSetupPostUnpackHook
# We should eventually use a cargo vendor patch hook instead
pushd ../$(stripHash $cargoDeps)/glycin-3.*
patch -p3 < ${libglycin.passthru.glycin3PathsPatch}
popd
'';
preFixup = ''
# Needed for the glycin crate to find loaders.
# https://gitlab.gnome.org/sophie-h/glycin/-/blob/0.1.beta.2/glycin/src/config.rs#L44
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
# For https://gitlab.gnome.org/GNOME/loupe/-/blob/0e6ddb0227ac4f1c55907f8b43eaef4bb1d3ce70/src/meson.build#L34-35
env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.rustcTargetSpec;
+9 -2
View File
@@ -3,12 +3,12 @@
stdenv,
appstream-glib,
blueprint-compiler,
bubblewrap,
cargo,
dbus,
desktop-file-utils,
fetchFromCodeberg,
glib,
libglycin,
glycin-loaders,
gst_all_1,
gtk4,
@@ -21,12 +21,19 @@
ninja,
nix-update-script,
pkg-config,
replaceVars,
rustPlatform,
rustc,
sqlite,
wrapGAppsHook4,
}:
let
glycinPathsPatch = replaceVars ./fix-glycin-paths.patch {
bwrap = "${bubblewrap}/bin/bwrap";
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "recordbox";
version = "0.10.4";
@@ -90,7 +97,7 @@ stdenv.mkDerivation (finalAttrs: {
# Dirty approach to add patches after cargoSetupPostUnpackHook
# We should eventually use a cargo vendor patch hook instead
pushd ../$(stripHash $cargoDeps)/glycin-2.*
patch -p3 < ${libglycin.passthru.glycinPathsPatch}
patch -p3 < ${glycinPathsPatch}
popd
'';
preFixup = ''
+3 -18
View File
@@ -6,9 +6,7 @@
glycin-loaders,
cargo,
desktop-file-utils,
jq,
meson,
moreutils,
ninja,
pkg-config,
rustc,
@@ -34,19 +32,13 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-NVj2+ODTiylQtrrZue7COCSb7f7c5w+1iijK1pRebOk=";
};
patches = [
# Fix paths in glycin library
libglycin.passthru.glycin3PathsPatch
];
cargoVendorDir = "vendor";
nativeBuildInputs = [
cargo
desktop-file-utils
jq
libglycin.patchVendorHook
meson
moreutils # sponge is used in postPatch
ninja
pkg-config
rustc
@@ -56,6 +48,8 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
glib
libglycin.setupHook
glycin-loaders
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
@@ -70,13 +64,6 @@ stdenv.mkDerivation (finalAttrs: {
];
postPatch = ''
# Replace hash of file we patch in vendored glycin.
jq \
--arg hash "$(sha256sum vendor/glycin/src/sandbox.rs | cut -d' ' -f 1)" \
'.files."src/sandbox.rs" = $hash' \
vendor/glycin/.cargo-checksum.json \
| sponge vendor/glycin/.cargo-checksum.json
substituteInPlace src/meson.build --replace-fail \
"'src' / rust_target / meson.project_name()" \
"'src' / '${stdenv.hostPlatform.rust.cargoShortTarget}' / rust_target / meson.project_name()"
@@ -86,8 +73,6 @@ stdenv.mkDerivation (finalAttrs: {
gappsWrapperArgs+=(
# vp8enc preset
--prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets"
# See https://gitlab.gnome.org/sophie-h/glycin/-/blob/0.1.beta.2/glycin/src/config.rs#L44
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
+3 -6
View File
@@ -13,6 +13,7 @@
json-glib,
libsecret,
libglycin,
libglycin-gtk4,
glib-networking,
glycin-loaders,
@@ -47,6 +48,8 @@ stdenv.mkDerivation (finalAttrs: {
json-glib
libsecret
libglycin
libglycin-gtk4
glycin-loaders
glib-networking
];
@@ -57,12 +60,6 @@ stdenv.mkDerivation (finalAttrs: {
strictDeps = true;
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
meta = {
description = "Scrobbles your music to multiple services with playback controls for MPRIS players";
longDescription = ''
+1 -6
View File
@@ -61,6 +61,7 @@ stdenv.mkDerivation (finalAttrs: {
json-glib
libadwaita
libglycin
glycin-loaders
libpeas2
libphonenumber
libportal-gtk4
@@ -69,12 +70,6 @@ stdenv.mkDerivation (finalAttrs: {
tinysparql
];
preFixup = ''
gappsWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
passthru.updateScript = nix-update-script { };
meta = {