nixpkgs/pkgs/by-name/gn/gnome-panel/wrapper.nix
2024-09-18 01:00:07 +02:00

74 lines
1.5 KiB
Nix

{
stdenv,
lib,
buildEnv,
gnome-panel,
gnome-flashback,
xorg,
glib,
wrapGAppsHook3,
panelModulePackages ? [ ],
}:
let
# We always want to find the built-in panel applets.
selectedPanelModulePackages = [
gnome-panel
gnome-flashback
] ++ panelModulePackages;
panelModulesEnv = buildEnv {
name = "gnome-panel-modules-env";
paths = selectedPanelModulePackages;
pathsToLink = [ "/lib/gnome-panel/modules" ];
};
in
stdenv.mkDerivation {
pname = "${gnome-panel.pname}-with-modules";
inherit (gnome-panel) version;
nativeBuildInputs = [
glib
wrapGAppsHook3
];
buildInputs =
selectedPanelModulePackages
++ lib.forEach selectedPanelModulePackages (x: x.buildInputs or [ ]);
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
preferLocalBuild = true;
allowSubstitutes = false;
installPhase = ''
runHook preInstall
mkdir -p $out
${xorg.lndir}/bin/lndir -silent ${gnome-panel} $out
rm -r $out/lib/gnome-panel/modules
${xorg.lndir}/bin/lndir -silent ${panelModulesEnv} $out
rm $out/share/applications/gnome-panel.desktop
substitute ${gnome-panel}/share/applications/gnome-panel.desktop \
$out/share/applications/gnome-panel.desktop --replace \
"Exec=${gnome-panel}/bin/gnome-panel" "Exec=$out/bin/gnome-panel"
runHook postInstall
'';
preFixup = ''
gappsWrapperArgs+=(
--set NIX_GNOME_PANEL_MODULESDIR "$out/lib/gnome-panel/modules"
)
'';
meta = gnome-panel.meta // {
outputsToInstall = [ "out" ];
};
}