fix(nix): fix ALSA mismatch, add GStreamer plugins, and repair UI environment (#787)
- Update `flake.lock` to synchronize `alsa-lib` and `glibc` versions, resolving a runtime `dlopen` crash when loading the PipeWire plugin. - Add `gstreamer`, `gst-plugins-base`, `good`, `bad`, and `ugly` to both `buildInputs` (package) and `devShell` to support WebKitGTK audio/video playback (resolving missing `appsink`/`autoaudiosink`). - Set `GST_PLUGIN_SYSTEM_PATH_1_0` in both environments so GStreamer can locate the plugins at runtime. - Manually set `XDG_DATA_DIRS` in `devShell` to include `gsettings-desktop-schemas` and `gtk3` schemas, fixing UI scaling, theming, and missing asset issues during development. Co-authored-by: Thinh Vu <phuocthinhvu@gmail.com>
This commit is contained in:
parent
43bc2373ef
commit
336ccffcc7
2 changed files with 51 additions and 12 deletions
|
|
@ -2,11 +2,11 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767892417,
|
"lastModified": 1770562336,
|
||||||
"narHash": "sha256-dhhvQY67aboBk8b0/u0XB6vwHdgbROZT3fJAjyNh5Ww=",
|
"narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
|
"rev": "d6c71932130818840fc8fe9509cf50be8c64634f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
57
flake.nix
57
flake.nix
|
|
@ -11,7 +11,10 @@
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
supportedSystems = [ "x86_64-linux" "aarch64-linux" ];
|
supportedSystems = [
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-linux"
|
||||||
|
];
|
||||||
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
|
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
|
||||||
# Read version from Cargo.toml
|
# Read version from Cargo.toml
|
||||||
cargoToml = builtins.fromTOML (builtins.readFile ./src-tauri/Cargo.toml);
|
cargoToml = builtins.fromTOML (builtins.readFile ./src-tauri/Cargo.toml);
|
||||||
|
|
@ -132,13 +135,20 @@
|
||||||
onnxruntime
|
onnxruntime
|
||||||
libayatana-appindicator
|
libayatana-appindicator
|
||||||
libevdev
|
libevdev
|
||||||
xorg.libX11
|
libx11
|
||||||
xorg.libXtst
|
libxtst
|
||||||
gtk-layer-shell
|
gtk-layer-shell
|
||||||
openssl
|
openssl
|
||||||
vulkan-loader
|
vulkan-loader
|
||||||
vulkan-headers
|
vulkan-headers
|
||||||
shaderc
|
shaderc
|
||||||
|
|
||||||
|
# Required for WebKitGTK audio/video
|
||||||
|
gst_all_1.gstreamer
|
||||||
|
gst_all_1.gst-plugins-base
|
||||||
|
gst_all_1.gst-plugins-good
|
||||||
|
gst_all_1.gst-plugins-bad
|
||||||
|
gst_all_1.gst-plugins-ugly
|
||||||
];
|
];
|
||||||
|
|
||||||
env = {
|
env = {
|
||||||
|
|
@ -146,15 +156,29 @@
|
||||||
BINDGEN_EXTRA_CLANG_ARGS = "-isystem ${pkgs.llvmPackages.libclang.lib}/lib/clang/${lib.getVersion pkgs.llvmPackages.libclang}/include -isystem ${pkgs.glibc.dev}/include";
|
BINDGEN_EXTRA_CLANG_ARGS = "-isystem ${pkgs.llvmPackages.libclang.lib}/lib/clang/${lib.getVersion pkgs.llvmPackages.libclang}/include -isystem ${pkgs.glibc.dev}/include";
|
||||||
ORT_LIB_LOCATION = "${pkgs.onnxruntime}/lib";
|
ORT_LIB_LOCATION = "${pkgs.onnxruntime}/lib";
|
||||||
OPENSSL_NO_VENDOR = "1";
|
OPENSSL_NO_VENDOR = "1";
|
||||||
|
|
||||||
|
# Tell Gstreamer where to find plugins
|
||||||
|
GST_PLUGIN_SYSTEM_PATH_1_0 = "${pkgs.lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" (
|
||||||
|
with pkgs.gst_all_1;
|
||||||
|
[
|
||||||
|
gstreamer
|
||||||
|
gst-plugins-base
|
||||||
|
gst-plugins-good
|
||||||
|
gst-plugins-bad
|
||||||
|
gst-plugins-ugly
|
||||||
|
]
|
||||||
|
)}";
|
||||||
};
|
};
|
||||||
|
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
gappsWrapperArgs+=(
|
gappsWrapperArgs+=(
|
||||||
--set WEBKIT_DISABLE_DMABUF_RENDERER 1
|
--set WEBKIT_DISABLE_DMABUF_RENDERER 1
|
||||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [
|
--prefix LD_LIBRARY_PATH : "${
|
||||||
pkgs.vulkan-loader
|
lib.makeLibraryPath [
|
||||||
pkgs.onnxruntime
|
pkgs.vulkan-loader
|
||||||
]}"
|
pkgs.onnxruntime
|
||||||
|
]
|
||||||
|
}"
|
||||||
)
|
)
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
@ -163,7 +187,7 @@
|
||||||
homepage = "https://github.com/cjpais/Handy";
|
homepage = "https://github.com/cjpais/Handy";
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
mainProgram = "handy";
|
mainProgram = "handy";
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = supportedSystems;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -175,7 +199,9 @@
|
||||||
devShells = forAllSystems (
|
devShells = forAllSystems (
|
||||||
system:
|
system:
|
||||||
let
|
let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
default = pkgs.mkShell {
|
default = pkgs.mkShell {
|
||||||
|
|
@ -211,6 +237,19 @@
|
||||||
|
|
||||||
LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib";
|
LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib";
|
||||||
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [ pkgs.libappindicator ]}";
|
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath [ pkgs.libappindicator ]}";
|
||||||
|
GST_PLUGIN_SYSTEM_PATH_1_0 = "${pkgs.lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" (
|
||||||
|
with pkgs.gst_all_1;
|
||||||
|
[
|
||||||
|
gstreamer
|
||||||
|
gst-plugins-base
|
||||||
|
gst-plugins-good
|
||||||
|
gst-plugins-bad
|
||||||
|
gst-plugins-ugly
|
||||||
|
]
|
||||||
|
)}";
|
||||||
|
|
||||||
|
# Same as wrapGAppsHook4
|
||||||
|
XDG_DATA_DIRS = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}:${pkgs.hicolor-icon-theme}/share";
|
||||||
|
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
echo "Handy development environment"
|
echo "Handy development environment"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue