diff options
author | Elyhaka <57923898+Elyhaka@users.noreply.github.com> | 2019-12-08 13:56:56 +0100 |
---|---|---|
committer | Michael Weiss <dev.primeos@gmail.com> | 2019-12-21 21:17:21 +0100 |
commit | d467c59825b94185eef55765ee78d9350cec3472 (patch) | |
tree | 12ff1a244c0c9079374df7dd9e0befef974e1280 /pkgs/applications/window-managers | |
parent | 83bfedb38bbc270854d957fa2f6d3cfd95f4b9d0 (diff) | |
download | nixpkgs-d467c59825b94185eef55765ee78d9350cec3472.tar nixpkgs-d467c59825b94185eef55765ee78d9350cec3472.tar.gz nixpkgs-d467c59825b94185eef55765ee78d9350cec3472.tar.bz2 nixpkgs-d467c59825b94185eef55765ee78d9350cec3472.tar.lz nixpkgs-d467c59825b94185eef55765ee78d9350cec3472.tar.xz nixpkgs-d467c59825b94185eef55765ee78d9350cec3472.tar.zst nixpkgs-d467c59825b94185eef55765ee78d9350cec3472.zip |
sway: refactor with a wrapper
Diffstat (limited to 'pkgs/applications/window-managers')
-rw-r--r-- | pkgs/applications/window-managers/sway/default.nix | 12 | ||||
-rw-r--r-- | pkgs/applications/window-managers/sway/wrapper.nix | 50 |
2 files changed, 55 insertions, 7 deletions
diff --git a/pkgs/applications/window-managers/sway/default.nix b/pkgs/applications/window-managers/sway/default.nix index 215a576a578..6b4c33dc077 100644 --- a/pkgs/applications/window-managers/sway/default.nix +++ b/pkgs/applications/window-managers/sway/default.nix @@ -3,11 +3,11 @@ , pkgconfig, scdoc , wayland, libxkbcommon, pcre, json_c, dbus, libevdev , pango, cairo, libinput, libcap, pam, gdk-pixbuf -, wlroots, wayland-protocols, swaybg +, wlroots, wayland-protocols }: stdenv.mkDerivation rec { - pname = "sway"; + pname = "sway-unwrapped"; version = "1.2"; src = fetchFromGitHub { @@ -22,7 +22,9 @@ stdenv.mkDerivation rec { ./load-configuration-from-etc.patch ]; - nativeBuildInputs = [ pkgconfig meson ninja scdoc makeWrapper ]; + nativeBuildInputs = [ + pkgconfig meson ninja scdoc + ]; buildInputs = [ wayland libxkbcommon pcre json_c dbus libevdev @@ -37,10 +39,6 @@ stdenv.mkDerivation rec { "-Dtray=enabled" "-Dman-pages=enabled" ]; - postInstall = '' - wrapProgram $out/bin/sway --prefix PATH : "${swaybg}/bin" - ''; - meta = with stdenv.lib; { description = "i3-compatible tiling Wayland compositor"; homepage = https://swaywm.org; diff --git a/pkgs/applications/window-managers/sway/wrapper.nix b/pkgs/applications/window-managers/sway/wrapper.nix new file mode 100644 index 00000000000..bd59ac5fa45 --- /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; +} |