about summary refs log tree commit diff
path: root/pkgs/data/themes/tokyonight-gtk-theme/default.nix
blob: b56b0aadd3ed46dc8022520f102b2a30aa3e464b (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
38
{ lib
, callPackage
, runCommand
, gtk-engine-murrine
, gnome-themes-extra
}:

let
  prefix = "tokyonight-gtk-theme";

  packages = lib.mapAttrs' (type: content: {
    name = type;

    value = lib.mapAttrs' (variantName: variant: {
      name = variantName;
      value = callPackage ./generic.nix { inherit prefix type variantName variant; };
    }) content;
  }) (lib.importJSON ./variants.json);
in packages // {
  # Not using `symlinkJoin` because it's massively inefficient in this case
  full = runCommand "${prefix}_full" {
    preferLocalBuild = true;

    propagatedUserEnvPkgs = [
      gtk-engine-murrine
      gnome-themes-extra
    ];
  } ''
    mkdir -p $out/share/{icons,themes,${prefix}}

    ${lib.concatStrings (lib.forEach (lib.attrValues (lib.attrsets.mergeAttrsList (lib.attrValues packages))) (variant:
      ''
        ln -s ${variant}/share/${variant.ptype}/Tokyonight-${variant.pvariant} $out/share/${variant.ptype}/Tokyonight-${variant.pvariant}
        ln -s ${variant}/share/${prefix}/LICENSE $out/share/${prefix}/LICENSE 2>/dev/null || true
      ''
    ))}
  '';
}