streamlink: 7.1.1 -> 7.1.2 (#373269)
[NixPkgs.git] / pkgs / by-name / sw / sway / package.nix
blob39d0728c0848feef504319e33ebe14d639c82d0d
2   lib,
3   sway-unwrapped,
4   makeWrapper,
5   symlinkJoin,
6   writeShellScriptBin,
7   withBaseWrapper ? true,
8   extraSessionCommands ? "",
9   dbus,
10   withGtkWrapper ? false,
11   wrapGAppsHook3,
12   gdk-pixbuf,
13   glib,
14   gtk3,
15   extraOptions ? [ ], # E.g.: [ "--verbose" ]
16   # Used by the NixOS module:
17   isNixOS ? false,
19   enableXWayland ? true,
20   dbusSupport ? true,
23 assert extraSessionCommands != "" -> withBaseWrapper;
25 let
26   inherit (builtins) replaceStrings;
27   inherit (lib.lists) optional optionals;
28   inherit (lib.meta) getExe;
29   inherit (lib.strings) concatMapStrings optionalString;
31   sway = sway-unwrapped.overrideAttrs (oa: {
32     inherit isNixOS enableXWayland;
33   });
34   baseWrapper = writeShellScriptBin sway.meta.mainProgram ''
35     set -o errexit
36     if [ ! "$_SWAY_WRAPPER_ALREADY_EXECUTED" ]; then
37       export XDG_CURRENT_DESKTOP=${sway.meta.mainProgram}
38       ${extraSessionCommands}
39       export _SWAY_WRAPPER_ALREADY_EXECUTED=1
40     fi
41     if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then
42       export DBUS_SESSION_BUS_ADDRESS
43       exec ${getExe sway} "$@"
44     else
45       exec ${optionalString dbusSupport "${dbus}/bin/dbus-run-session"} ${getExe sway} "$@"
46     fi
47   '';
49 symlinkJoin rec {
50   pname = replaceStrings [ "-unwrapped" ] [ "" ] sway.pname;
51   inherit (sway) version;
52   name = "${pname}-${version}";
54   paths = (optional withBaseWrapper baseWrapper) ++ [ sway ];
56   strictDeps = false;
57   nativeBuildInputs = [ makeWrapper ] ++ (optional withGtkWrapper wrapGAppsHook3);
59   buildInputs = optionals withGtkWrapper [
60     gdk-pixbuf
61     glib
62     gtk3
63   ];
65   # We want to run wrapProgram manually
66   dontWrapGApps = true;
68   postBuild = ''
69     ${optionalString withGtkWrapper "gappsWrapperArgsHook"}
71     wrapProgram $out/bin/${sway.meta.mainProgram} \
72       ${optionalString withGtkWrapper ''"''${gappsWrapperArgs[@]}"''} \
73       ${optionalString (extraOptions != [ ])
74         "${concatMapStrings (x: " --add-flags " + x) extraOptions}"
75       }
76   '';
78   passthru = {
79     inherit (sway.passthru) tests;
80     providedSessions = [ sway.meta.mainProgram ];
81   };
83   inherit (sway) meta;