Merge pull request #42562 from ambrop72/gdk-pixbuf-fix
Use a NixOS module for generating the gdk-pixbuf loaders cache.
This commit is contained in:
commit
a112f16a75
@ -742,6 +742,7 @@
|
|||||||
./services/x11/hardware/multitouch.nix
|
./services/x11/hardware/multitouch.nix
|
||||||
./services/x11/hardware/synaptics.nix
|
./services/x11/hardware/synaptics.nix
|
||||||
./services/x11/hardware/wacom.nix
|
./services/x11/hardware/wacom.nix
|
||||||
|
./services/x11/gdk-pixbuf.nix
|
||||||
./services/x11/redshift.nix
|
./services/x11/redshift.nix
|
||||||
./services/x11/urxvtd.nix
|
./services/x11/urxvtd.nix
|
||||||
./services/x11/window-managers/awesome.nix
|
./services/x11/window-managers/awesome.nix
|
||||||
|
@ -185,10 +185,8 @@ in
|
|||||||
target = "X11/xkb";
|
target = "X11/xkb";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.variables = {
|
# Enable GTK applications to load SVG icons
|
||||||
# Enable GTK applications to load SVG icons
|
services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
|
||||||
GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache";
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts.fonts = with pkgs; [ noto-fonts hack-font ];
|
fonts.fonts = with pkgs; [ noto-fonts hack-font ];
|
||||||
fonts.fontconfig.defaultFonts = {
|
fonts.fontconfig.defaultFonts = {
|
||||||
|
@ -101,10 +101,11 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache";
|
|
||||||
GIO_EXTRA_MODULES = [ "${pkgs.xfce.gvfs}/lib/gio/modules" ];
|
GIO_EXTRA_MODULES = [ "${pkgs.xfce.gvfs}/lib/gio/modules" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
|
||||||
|
|
||||||
services.xserver.desktopManager.session = [{
|
services.xserver.desktopManager.session = [{
|
||||||
name = "xfce";
|
name = "xfce";
|
||||||
bgSupport = true;
|
bgSupport = true;
|
||||||
|
45
nixos/modules/services/x11/gdk-pixbuf.nix
Normal file
45
nixos/modules/services/x11/gdk-pixbuf.nix
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.xserver.gdk-pixbuf;
|
||||||
|
|
||||||
|
# Get packages to generate the cache for. We always include gdk_pixbuf.
|
||||||
|
effectivePackages = unique ([pkgs.gdk_pixbuf] ++ cfg.modulePackages);
|
||||||
|
|
||||||
|
# Generate the cache file by running gdk-pixbuf-query-loaders for each
|
||||||
|
# package and concatenating the results.
|
||||||
|
loadersCache = pkgs.runCommand "gdk-pixbuf-loaders.cache" {} ''
|
||||||
|
(
|
||||||
|
for package in ${concatStringsSep " " effectivePackages}; do
|
||||||
|
module_dir="$package/${pkgs.gdk_pixbuf.moduleDir}"
|
||||||
|
if [[ ! -d $module_dir ]]; then
|
||||||
|
echo "Warning (services.xserver.gdk-pixbuf): missing module directory $module_dir" 1>&2
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
GDK_PIXBUF_MODULEDIR="$module_dir" \
|
||||||
|
${pkgs.gdk_pixbuf.dev}/bin/gdk-pixbuf-query-loaders
|
||||||
|
done
|
||||||
|
) > "$out"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
services.xserver.gdk-pixbuf.modulePackages = mkOption {
|
||||||
|
type = types.listOf types.package;
|
||||||
|
default = [ ];
|
||||||
|
description = "Packages providing GDK-Pixbuf modules, for cache generation.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# If there is any package configured in modulePackages, we generate the
|
||||||
|
# loaders.cache based on that and set the environment variable
|
||||||
|
# GDK_PIXBUF_MODULE_FILE to point to it.
|
||||||
|
config = mkIf (cfg.modulePackages != []) {
|
||||||
|
environment.variables = {
|
||||||
|
GDK_PIXBUF_MODULE_FILE = "${loadersCache}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user