Merge pull request #329823 from ExpidusOS/fix/pkgsllvm/elfutils
[NixPkgs.git] / pkgs / by-name / sw / swayfx-unwrapped / package.nix
blobb90220a7c1ff4016b1ba9a706ae54f9cdd1f59f8
2   lib,
3   fetchFromGitHub,
4   stdenv,
5   systemd,
6   meson,
7   substituteAll,
8   swaybg,
9   ninja,
10   pkg-config,
11   gdk-pixbuf,
12   librsvg,
13   wayland-protocols,
14   libdrm,
15   libinput,
16   cairo,
17   pango,
18   wayland,
19   libGL,
20   libxkbcommon,
21   pcre2,
22   json_c,
23   libevdev,
24   scdoc,
25   scenefx,
26   wayland-scanner,
27   xcbutilwm,
28   wlroots,
29   testers,
30   nixosTests,
31   # Used by the NixOS module:
32   isNixOS ? false,
33   enableXWayland ? true,
34   systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd,
35   trayEnabled ? systemdSupport,
38 stdenv.mkDerivation (finalAttrs: {
39   inherit
40     enableXWayland
41     isNixOS
42     systemdSupport
43     trayEnabled
44     ;
46   pname = "swayfx-unwrapped";
47   version = "0.4";
49   src = fetchFromGitHub {
50     owner = "WillPower3309";
51     repo = "swayfx";
52     rev = "refs/tags/${finalAttrs.version}";
53     hash = "sha256-VT+JjQPqCIdtaLeSnRiZ3rES0KgDJR7j5Byxr+d6oRg=";
54   };
56   patches =
57     [
58       ./load-configuration-from-etc.patch
60       (substituteAll {
61         src = ./fix-paths.patch;
62         inherit swaybg;
63       })
64     ]
65     ++ lib.optionals (!finalAttrs.isNixOS) [
66       # References to /nix/store/... will get GC'ed which causes problems when
67       # copying the default configuration:
68       ./sway-config-no-nix-store-references.patch
69     ]
70     ++ lib.optionals finalAttrs.isNixOS [
71       # Use /run/current-system/sw/share and /etc instead of /nix/store
72       # references:
73       ./sway-config-nixos-paths.patch
74     ];
76   strictDeps = true;
77   depsBuildBuild = [ pkg-config ];
79   nativeBuildInputs = [
80     meson
81     ninja
82     pkg-config
83     scdoc
84     wayland-scanner
85   ];
87   buildInputs = [
88     cairo
89     gdk-pixbuf
90     json_c
91     libdrm
92     libevdev
93     libGL
94     libinput
95     librsvg
96     libxkbcommon
97     pango
98     pcre2
99     scenefx
100     wayland
101     wayland-protocols
102     (wlroots.override { inherit (finalAttrs) enableXWayland; })
103   ] ++ lib.optionals finalAttrs.enableXWayland [ xcbutilwm ];
105   mesonFlags =
106     let
107       inherit (lib.strings) mesonEnable mesonOption;
109       # The "sd-bus-provider" meson option does not include a "none" option,
110       # but it is silently ignored iff "-Dtray=disabled".  We use "basu"
111       # (which is not in nixpkgs) instead of "none" to alert us if this
112       # changes: https://github.com/swaywm/sway/issues/6843#issuecomment-1047288761
113       # assert trayEnabled -> systemdSupport && dbusSupport;
115       sd-bus-provider = if systemdSupport then "libsystemd" else "basu";
116     in
117     [
118       (mesonOption "sd-bus-provider" sd-bus-provider)
119       (mesonEnable "xwayland" finalAttrs.enableXWayland)
120       (mesonEnable "tray" finalAttrs.trayEnabled)
121     ];
123   passthru = {
124     tests = {
125       basic = nixosTests.swayfx;
126       version = testers.testVersion {
127         package = finalAttrs.finalPackage;
128         command = "sway --version";
129         version = "swayfx version ${finalAttrs.version}";
130       };
131     };
132   };
134   meta = {
135     description = "Sway, but with eye candy!";
136     homepage = "https://github.com/WillPower3309/swayfx";
137     changelog = "https://github.com/WillPower3309/swayfx/releases/tag/${finalAttrs.version}";
138     license = lib.licenses.mit;
139     maintainers = with lib.maintainers; [
140       eclairevoyant
141       ricarch97
142     ];
143     platforms = lib.platforms.linux;
144     mainProgram = "sway";
146     longDescription = ''
147       Fork of Sway, an incredible and one of the most well established Wayland
148       compositors, and a drop-in replacement for the i3 window manager for X11.
149       SwayFX adds extra options and effects to the original Sway, such as rounded corners,
150       shadows and inactive window dimming to bring back some of the Picom X11
151       compositor functionality, which was commonly used with the i3 window manager.
152     '';
153   };