2023-04-24 05:53:14 +00:00
|
|
|
{ lib, stdenv, fetchFromGitHub, fetchpatch, substituteAll, swaybg
|
2022-01-24 01:18:06 +00:00
|
|
|
, meson, ninja, pkg-config, wayland-scanner, scdoc
|
2022-11-27 10:19:20 +00:00
|
|
|
, wayland, libxkbcommon, pcre2, json_c, libevdev
|
2020-05-08 09:45:27 +00:00
|
|
|
, pango, cairo, libinput, libcap, pam, gdk-pixbuf, librsvg
|
2022-11-27 10:19:20 +00:00
|
|
|
, wlroots_0_16, wayland-protocols, libdrm
|
nixos/tests/sway: init
This adds a basic test for Sway. Because Sway is an important part of
the Wayland ecosystem, is stable, and has few dependencies this test
should also be suitable for testing core packages it depends on (e.g.
wayland, wayland-protocols, wlroots, xwayland, mesa, libglvnd, libdrm,
and soon libseat).
The test is modeled after the suggested way of using Sway, i.e. logging
in via a virtual console (tty1) and copying the configuration from
/etc/sway/config (we replace Mod4 (the GNU/Tux key - you've replaced
that evil logo, right? :D) with Mod1 (Alt key) because QEMU monitor's
sendkey command doesn't support the former).
The shell aliases are used to make the sendkey log output shorter.
Co-authored-by: Patrick Hilhorst <git@hilhorst.be>
2021-05-01 20:24:28 +00:00
|
|
|
, nixosTests
|
2021-05-11 16:51:43 +00:00
|
|
|
# Used by the NixOS module:
|
|
|
|
, isNixOS ? false
|
2022-11-27 10:19:20 +00:00
|
|
|
, enableXWayland ? true, xorg
|
2022-09-21 07:04:52 +00:00
|
|
|
, systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd, systemd
|
sway: respect systemdSupport and dbusSupport (#160972)
Sway can be compiled with or without systemd(-logind) and dbus. This
commit exposes that support via the global systemdSupport and
dbusSupport arguments, which are understood by many other nixpkgs
expressions and can be set globally in ~/.config/nixpkgs/config.nix.
This commit also adds a third argument, trayEnabled, which allows to
disable sway's tray. The tray requires dbusSupport and
systemdSupport.
Reviewers of this commit asked for potential use cases. There are
many of them; a very non-exhaustive list includes:
* Use of nixpkgs on operating systems which systemd does not support,
such as MacOS/Darwin, FreeBSD, OpenBSD, or Alpine Linux.
* Use of nixpkgs on *-musl platforms, which systemd does not
officially support (out-of-tree patches to support musl exist for a
few systemd versions).
* Use of sway in situations where dbus is inappropriate, such as
sway's "kiosk mode".
* High-security environments, where the additional attack surface
exposed by dbus outweighs any features it may offer.
This is a very non-exhaustive list.
2022-03-06 12:39:31 +00:00
|
|
|
, dbusSupport ? true
|
|
|
|
, dbus
|
2022-03-09 02:42:01 +00:00
|
|
|
, trayEnabled ? systemdSupport && dbusSupport
|
2015-10-23 23:32:20 +00:00
|
|
|
}:
|
|
|
|
|
sway: respect systemdSupport and dbusSupport (#160972)
Sway can be compiled with or without systemd(-logind) and dbus. This
commit exposes that support via the global systemdSupport and
dbusSupport arguments, which are understood by many other nixpkgs
expressions and can be set globally in ~/.config/nixpkgs/config.nix.
This commit also adds a third argument, trayEnabled, which allows to
disable sway's tray. The tray requires dbusSupport and
systemdSupport.
Reviewers of this commit asked for potential use cases. There are
many of them; a very non-exhaustive list includes:
* Use of nixpkgs on operating systems which systemd does not support,
such as MacOS/Darwin, FreeBSD, OpenBSD, or Alpine Linux.
* Use of nixpkgs on *-musl platforms, which systemd does not
officially support (out-of-tree patches to support musl exist for a
few systemd versions).
* Use of sway in situations where dbus is inappropriate, such as
sway's "kiosk mode".
* High-security environments, where the additional attack surface
exposed by dbus outweighs any features it may offer.
This is a very non-exhaustive list.
2022-03-06 12:39:31 +00:00
|
|
|
# The "sd-bus-provider" meson option does not include a "none" option,
|
|
|
|
# but it is silently ignored iff "-Dtray=disabled". We use "basu"
|
|
|
|
# (which is not in nixpkgs) instead of "none" to alert us if this
|
|
|
|
# changes: https://github.com/swaywm/sway/issues/6843#issuecomment-1047288761
|
|
|
|
assert trayEnabled -> systemdSupport && dbusSupport;
|
|
|
|
let sd-bus-provider = if systemdSupport then "libsystemd" else "basu"; in
|
|
|
|
|
2017-10-17 01:47:59 +00:00
|
|
|
stdenv.mkDerivation rec {
|
2019-12-08 12:56:56 +00:00
|
|
|
pname = "sway-unwrapped";
|
2023-02-12 19:46:23 +00:00
|
|
|
version = "1.8.1";
|
2016-07-17 07:31:41 +00:00
|
|
|
|
2017-09-26 15:24:13 +00:00
|
|
|
src = fetchFromGitHub {
|
2017-11-07 21:16:50 +00:00
|
|
|
owner = "swaywm";
|
2017-09-26 15:24:13 +00:00
|
|
|
repo = "sway";
|
2017-11-07 21:16:50 +00:00
|
|
|
rev = version;
|
2023-02-12 19:46:23 +00:00
|
|
|
hash = "sha256-WxnT+le9vneQLFPz2KoBduOI+zfZPhn1fKlaqbPL6/g=";
|
2017-09-26 15:24:13 +00:00
|
|
|
};
|
2016-07-17 07:31:41 +00:00
|
|
|
|
2019-03-11 16:18:19 +00:00
|
|
|
patches = [
|
2019-04-27 20:38:18 +00:00
|
|
|
./load-configuration-from-etc.patch
|
2020-08-31 16:51:05 +00:00
|
|
|
|
|
|
|
(substituteAll {
|
|
|
|
src = ./fix-paths.patch;
|
|
|
|
inherit swaybg;
|
|
|
|
})
|
2023-04-24 05:53:14 +00:00
|
|
|
|
|
|
|
(fetchpatch {
|
|
|
|
name = "LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM.patch";
|
|
|
|
url = "https://github.com/swaywm/sway/commit/dee032d0a0ecd958c902b88302dc59703d703c7f.diff";
|
|
|
|
hash = "sha256-dx+7MpEiAkxTBnJcsT3/1BO8rYRfNLecXmpAvhqGMD0=";
|
|
|
|
})
|
2021-05-14 14:34:18 +00:00
|
|
|
] ++ lib.optionals (!isNixOS) [
|
|
|
|
# References to /nix/store/... will get GC'ed which causes problems when
|
|
|
|
# copying the default configuration:
|
|
|
|
./sway-config-no-nix-store-references.patch
|
|
|
|
] ++ lib.optionals isNixOS [
|
|
|
|
# Use /run/current-system/sw/share and /etc instead of /nix/store
|
|
|
|
# references:
|
|
|
|
./sway-config-nixos-paths.patch
|
2019-03-11 16:18:19 +00:00
|
|
|
];
|
|
|
|
|
2022-05-08 20:56:15 +00:00
|
|
|
strictDeps = true;
|
2021-12-22 19:01:44 +00:00
|
|
|
depsBuildBuild = [
|
|
|
|
pkg-config
|
|
|
|
];
|
|
|
|
|
2019-12-08 12:56:56 +00:00
|
|
|
nativeBuildInputs = [
|
2022-01-24 01:18:06 +00:00
|
|
|
meson ninja pkg-config wayland-scanner scdoc
|
2019-12-08 12:56:56 +00:00
|
|
|
];
|
2019-03-11 16:18:19 +00:00
|
|
|
|
2017-09-26 15:24:13 +00:00
|
|
|
buildInputs = [
|
2022-11-27 10:19:20 +00:00
|
|
|
wayland libxkbcommon pcre2 json_c libevdev
|
2020-05-08 09:45:27 +00:00
|
|
|
pango cairo libinput libcap pam gdk-pixbuf librsvg
|
2021-10-11 19:41:06 +00:00
|
|
|
wayland-protocols libdrm
|
2022-11-27 10:19:20 +00:00
|
|
|
(wlroots_0_16.override { inherit enableXWayland; })
|
sway: respect systemdSupport and dbusSupport (#160972)
Sway can be compiled with or without systemd(-logind) and dbus. This
commit exposes that support via the global systemdSupport and
dbusSupport arguments, which are understood by many other nixpkgs
expressions and can be set globally in ~/.config/nixpkgs/config.nix.
This commit also adds a third argument, trayEnabled, which allows to
disable sway's tray. The tray requires dbusSupport and
systemdSupport.
Reviewers of this commit asked for potential use cases. There are
many of them; a very non-exhaustive list includes:
* Use of nixpkgs on operating systems which systemd does not support,
such as MacOS/Darwin, FreeBSD, OpenBSD, or Alpine Linux.
* Use of nixpkgs on *-musl platforms, which systemd does not
officially support (out-of-tree patches to support musl exist for a
few systemd versions).
* Use of sway in situations where dbus is inappropriate, such as
sway's "kiosk mode".
* High-security environments, where the additional attack surface
exposed by dbus outweighs any features it may offer.
This is a very non-exhaustive list.
2022-03-06 12:39:31 +00:00
|
|
|
] ++ lib.optionals dbusSupport [
|
|
|
|
dbus
|
2022-11-27 10:19:20 +00:00
|
|
|
] ++ lib.optionals enableXWayland [
|
|
|
|
xorg.xcbutilwm
|
2017-09-26 15:24:13 +00:00
|
|
|
];
|
2016-07-17 07:31:41 +00:00
|
|
|
|
sway: respect systemdSupport and dbusSupport (#160972)
Sway can be compiled with or without systemd(-logind) and dbus. This
commit exposes that support via the global systemdSupport and
dbusSupport arguments, which are understood by many other nixpkgs
expressions and can be set globally in ~/.config/nixpkgs/config.nix.
This commit also adds a third argument, trayEnabled, which allows to
disable sway's tray. The tray requires dbusSupport and
systemdSupport.
Reviewers of this commit asked for potential use cases. There are
many of them; a very non-exhaustive list includes:
* Use of nixpkgs on operating systems which systemd does not support,
such as MacOS/Darwin, FreeBSD, OpenBSD, or Alpine Linux.
* Use of nixpkgs on *-musl platforms, which systemd does not
officially support (out-of-tree patches to support musl exist for a
few systemd versions).
* Use of sway in situations where dbus is inappropriate, such as
sway's "kiosk mode".
* High-security environments, where the additional attack surface
exposed by dbus outweighs any features it may offer.
This is a very non-exhaustive list.
2022-03-06 12:39:31 +00:00
|
|
|
mesonFlags =
|
|
|
|
[ "-Dsd-bus-provider=${sd-bus-provider}" ]
|
2021-10-11 19:41:06 +00:00
|
|
|
++ lib.optional (!enableXWayland) "-Dxwayland=disabled"
|
sway: respect systemdSupport and dbusSupport (#160972)
Sway can be compiled with or without systemd(-logind) and dbus. This
commit exposes that support via the global systemdSupport and
dbusSupport arguments, which are understood by many other nixpkgs
expressions and can be set globally in ~/.config/nixpkgs/config.nix.
This commit also adds a third argument, trayEnabled, which allows to
disable sway's tray. The tray requires dbusSupport and
systemdSupport.
Reviewers of this commit asked for potential use cases. There are
many of them; a very non-exhaustive list includes:
* Use of nixpkgs on operating systems which systemd does not support,
such as MacOS/Darwin, FreeBSD, OpenBSD, or Alpine Linux.
* Use of nixpkgs on *-musl platforms, which systemd does not
officially support (out-of-tree patches to support musl exist for a
few systemd versions).
* Use of sway in situations where dbus is inappropriate, such as
sway's "kiosk mode".
* High-security environments, where the additional attack surface
exposed by dbus outweighs any features it may offer.
This is a very non-exhaustive list.
2022-03-06 12:39:31 +00:00
|
|
|
++ lib.optional (!trayEnabled) "-Dtray=disabled"
|
2021-10-11 19:41:06 +00:00
|
|
|
;
|
2016-07-17 07:31:41 +00:00
|
|
|
|
nixos/tests/sway: init
This adds a basic test for Sway. Because Sway is an important part of
the Wayland ecosystem, is stable, and has few dependencies this test
should also be suitable for testing core packages it depends on (e.g.
wayland, wayland-protocols, wlroots, xwayland, mesa, libglvnd, libdrm,
and soon libseat).
The test is modeled after the suggested way of using Sway, i.e. logging
in via a virtual console (tty1) and copying the configuration from
/etc/sway/config (we replace Mod4 (the GNU/Tux key - you've replaced
that evil logo, right? :D) with Mod1 (Alt key) because QEMU monitor's
sendkey command doesn't support the former).
The shell aliases are used to make the sendkey log output shorter.
Co-authored-by: Patrick Hilhorst <git@hilhorst.be>
2021-05-01 20:24:28 +00:00
|
|
|
passthru.tests.basic = nixosTests.sway;
|
|
|
|
|
2021-01-11 07:54:33 +00:00
|
|
|
meta = with lib; {
|
2020-06-24 18:50:43 +00:00
|
|
|
description = "An i3-compatible tiling Wayland compositor";
|
|
|
|
longDescription = ''
|
|
|
|
Sway is a tiling Wayland compositor and a drop-in replacement for the i3
|
|
|
|
window manager for X11. It works with your existing i3 configuration and
|
|
|
|
supports most of i3's features, plus a few extras.
|
|
|
|
Sway allows you to arrange your application windows logically, rather
|
|
|
|
than spatially. Windows are arranged into a grid by default which
|
|
|
|
maximizes the efficiency of your screen and can be quickly manipulated
|
|
|
|
using only the keyboard.
|
|
|
|
'';
|
2020-04-01 01:11:51 +00:00
|
|
|
homepage = "https://swaywm.org";
|
2020-06-24 18:50:43 +00:00
|
|
|
changelog = "https://github.com/swaywm/sway/releases/tag/${version}";
|
2017-09-26 15:24:13 +00:00
|
|
|
license = licenses.mit;
|
|
|
|
platforms = platforms.linux;
|
2022-06-19 10:07:43 +00:00
|
|
|
maintainers = with maintainers; [ primeos synthetica ];
|
2017-09-26 15:24:13 +00:00
|
|
|
};
|
|
|
|
}
|