1{
2 stdenv,
3 lib,
4 buildEnv,
5 gnome-panel,
6 gnome-flashback,
7 xorg,
8 glib,
9 wrapGAppsHook3,
10 panelModulePackages ? [ ],
11}:
12
13let
14 # We always want to find the built-in panel applets.
15 selectedPanelModulePackages = [
16 gnome-panel
17 gnome-flashback
18 ]
19 ++ panelModulePackages;
20
21 panelModulesEnv = buildEnv {
22 name = "gnome-panel-modules-env";
23 paths = selectedPanelModulePackages;
24 pathsToLink = [ "/lib/gnome-panel/modules" ];
25 };
26in
27stdenv.mkDerivation {
28 pname = "${gnome-panel.pname}-with-modules";
29 inherit (gnome-panel) version;
30
31 nativeBuildInputs = [
32 glib
33 wrapGAppsHook3
34 ];
35
36 buildInputs =
37 selectedPanelModulePackages ++ lib.forEach selectedPanelModulePackages (x: x.buildInputs or [ ]);
38
39 dontUnpack = true;
40 dontConfigure = true;
41 dontBuild = true;
42
43 preferLocalBuild = true;
44 allowSubstitutes = false;
45
46 installPhase = ''
47 runHook preInstall
48
49 mkdir -p $out
50 ${xorg.lndir}/bin/lndir -silent ${gnome-panel} $out
51
52 rm -r $out/lib/gnome-panel/modules
53 ${xorg.lndir}/bin/lndir -silent ${panelModulesEnv} $out
54
55 rm $out/share/applications/gnome-panel.desktop
56
57 ln -s ${gnome-panel}/share/applications/gnome-panel.desktop \
58 $out/share/applications/gnome-panel.desktop
59
60 runHook postInstall
61 '';
62
63 preFixup = ''
64 gappsWrapperArgs+=(
65 --set NIX_GNOME_PANEL_MODULESDIR "$out/lib/gnome-panel/modules"
66 )
67 '';
68
69 meta = gnome-panel.meta // {
70 outputsToInstall = [ "out" ];
71 };
72}