about summary refs log tree commit diff
path: root/pkgs/desktops/gnome/gdk-pixbuf-cache-builder.nix
blob: 22359e9a5827e380dfaa8ecf19ce3e34b950972a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{
  runCommand,
  pkg-config,
  gdk-pixbuf,
  lib,
  stdenv,
  buildPackages,
}:

{
  extraLoaders,
}:

let
  # Get packages to generate the cache for. We always include gdk-pixbuf.
  loaderPackages = [
    gdk-pixbuf
  ] ++ extraLoaders;
in

# Generate the cache file by running gdk-pixbuf-query-loaders for each
# package and concatenating the results.
runCommand "gdk-pixbuf-loaders.cache" {
  preferLocalBuild = true;
} ''
  (
    for package in ${lib.escapeShellArgs loaderPackages}; do
      module_dir="$package/${gdk-pixbuf.moduleDir}"
      if [[ ! -d "$module_dir" ]]; then
        echo "Error: gdkPixbufCacheBuilder: Passed package “''${package}” does not contain GdkPixbuf loaders in “${gdk-pixbuf.moduleDir}”." 1>&2
        exit 1
      fi
      GDK_PIXBUF_MODULEDIR="$module_dir" \
        ${stdenv.hostPlatform.emulator buildPackages} ${gdk-pixbuf.dev}/bin/gdk-pixbuf-query-loaders
    done
  ) > "$out"
''