diff options
Diffstat (limited to 'nixpkgs/pkgs/by-name/sw/sway-unwrapped/package.nix')
-rw-r--r-- | nixpkgs/pkgs/by-name/sw/sway-unwrapped/package.nix | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/sw/sway-unwrapped/package.nix b/nixpkgs/pkgs/by-name/sw/sway-unwrapped/package.nix new file mode 100644 index 000000000000..452925beeabb --- /dev/null +++ b/nixpkgs/pkgs/by-name/sw/sway-unwrapped/package.nix @@ -0,0 +1,104 @@ +{ lib, stdenv, fetchFromGitHub, fetchpatch, substituteAll, swaybg +, meson, ninja, pkg-config, wayland-scanner, scdoc +, libGL, wayland, libxkbcommon, pcre2, json_c, libevdev +, pango, cairo, libinput, gdk-pixbuf, librsvg +, wlroots_0_16, wayland-protocols, libdrm +, nixosTests +# Used by the NixOS module: +, isNixOS ? false +, enableXWayland ? true, xorg +, systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd, systemd +, trayEnabled ? systemdSupport +}: + +let + wlroots = wlroots_0_16; +in +stdenv.mkDerivation (finalAttrs: { + pname = "sway-unwrapped"; + version = "1.8.1"; + + inherit enableXWayland isNixOS systemdSupport trayEnabled; + src = fetchFromGitHub { + owner = "swaywm"; + repo = "sway"; + rev = finalAttrs.version; + hash = "sha256-WxnT+le9vneQLFPz2KoBduOI+zfZPhn1fKlaqbPL6/g="; + }; + + patches = [ + ./load-configuration-from-etc.patch + + (substituteAll { + src = ./fix-paths.patch; + inherit swaybg; + }) + + (fetchpatch { + name = "LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM.patch"; + url = "https://github.com/swaywm/sway/commit/dee032d0a0ecd958c902b88302dc59703d703c7f.diff"; + hash = "sha256-dx+7MpEiAkxTBnJcsT3/1BO8rYRfNLecXmpAvhqGMD0="; + }) + ] ++ lib.optionals (!finalAttrs.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 finalAttrs.isNixOS [ + # Use /run/current-system/sw/share and /etc instead of /nix/store + # references: + ./sway-config-nixos-paths.patch + ]; + + strictDeps = true; + depsBuildBuild = [ + pkg-config + ]; + + nativeBuildInputs = [ + meson ninja pkg-config wayland-scanner scdoc + ]; + + buildInputs = [ + libGL wayland libxkbcommon pcre2 json_c libevdev + pango cairo libinput gdk-pixbuf librsvg + wayland-protocols libdrm + (wlroots.override { inherit (finalAttrs) enableXWayland; }) + ] ++ lib.optionals finalAttrs.enableXWayland [ + xorg.xcbutilwm + ]; + + mesonFlags = let + # 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; + + sd-bus-provider = if systemdSupport then "libsystemd" else "basu"; + in + [ "-Dsd-bus-provider=${sd-bus-provider}" ] + ++ lib.optional (!finalAttrs.enableXWayland) "-Dxwayland=disabled" + ++ lib.optional (!finalAttrs.trayEnabled) "-Dtray=disabled" + ; + + passthru.tests.basic = nixosTests.sway; + + meta = with lib; { + 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. + ''; + homepage = "https://swaywm.org"; + changelog = "https://github.com/swaywm/sway/releases/tag/${version}"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos synthetica ]; + mainProgram = "sway"; + }; +}) |