diff options
Diffstat (limited to 'pkgs/applications/window-managers/sway/wrapper.nix')
-rw-r--r-- | pkgs/applications/window-managers/sway/wrapper.nix | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/pkgs/applications/window-managers/sway/wrapper.nix b/pkgs/applications/window-managers/sway/wrapper.nix new file mode 100644 index 000000000000..bd59ac5fa459 --- /dev/null +++ b/pkgs/applications/window-managers/sway/wrapper.nix @@ -0,0 +1,50 @@ +{ lib, stdenv +, sway-unwrapped, swaybg +, makeWrapper, symlinkJoin, writeShellScriptBin +, withBaseWrapper ? true, extraSessionCommands ? "", dbus +, withGtkWrapper ? false, wrapGAppsHook, gdk-pixbuf +}: + +assert extraSessionCommands != "" -> withBaseWrapper; + +with lib; + +let + baseWrapper = writeShellScriptBin "sway" '' + set -o errexit + if [ ! "$_SWAY_WRAPPER_ALREADY_EXECUTED" ]; then + export _SWAY_WRAPPER_ALREADY_EXECUTED=1 + ${extraSessionCommands} + fi + if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then + export DBUS_SESSION_BUS_ADDRESS + exec ${sway-unwrapped}/bin/sway "$@" + else + exec ${dbus}/bin/dbus-run-session ${sway-unwrapped}/bin/sway "$@" + fi + ''; +in symlinkJoin { + name = "sway-${sway-unwrapped.version}"; + + paths = (optional withBaseWrapper baseWrapper) + ++ [ sway-unwrapped ]; + + nativeBuildInputs = [ makeWrapper ] + ++ (optional withGtkWrapper wrapGAppsHook); + + buildInputs = optional withGtkWrapper gdk-pixbuf; + + postBuild = '' + # We want to run wrapProgram manually to only wrap sway and add swaybg: + export dontWrapGApps=true + ${optionalString withGtkWrapper "wrapGAppsHook"} + wrapProgram $out/bin/sway \ + --prefix PATH : "${swaybg}/bin" ${optionalString withGtkWrapper ''\ + "''${gappsWrapperArgs[@]}" + ''} + ''; + + passthru.providedSessions = [ "sway" ]; + + inherit (sway-unwrapped) meta; +} |