chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / mi / miracle-wm / package.nix
blob2a6ff5f5c53eff32692258c9cc7fe47629158de3
2   stdenv,
3   lib,
4   fetchFromGitHub,
5   fetchpatch,
6   gitUpdater,
7   nixosTests,
8   boost,
9   cmake,
10   glib,
11   glm,
12   gtest,
13   json_c,
14   libevdev,
15   libglvnd,
16   libnotify,
17   libuuid,
18   libxkbcommon,
19   mesa,
20   mir,
21   nlohmann_json,
22   pcre2,
23   pkg-config,
24   wayland,
25   yaml-cpp,
28 stdenv.mkDerivation (finalAttrs: {
29   pname = "miracle-wm";
30   version = "0.3.6";
32   src = fetchFromGitHub {
33     owner = "mattkae";
34     repo = "miracle-wm";
35     rev = "v${finalAttrs.version}";
36     hash = "sha256-fK/g6DhcxJMvxujZDZXs1yXRu2FGZQKmhxw7/czAQiY=";
37   };
39   patches = [
40     # Remove when https://github.com/mattkae/miracle-wm/pull/211 merged & in release
41     (fetchpatch {
42       name = "0001-miracle-wm-Dont-ignore-PKG_CONFIG_PATH.patch";
43       url = "https://github.com/mattkae/miracle-wm/commit/a9fe6ed1e7dc605f72e18cdc2d19afb3c187be3a.patch";
44       hash = "sha256-zzOwqUjyZGYIy/3BvOiedfCubrqaeglvsAzTXyq3wYU=";
45     })
46   ];
48   postPatch =
49     ''
50       substituteInPlace session/usr/local/share/wayland-sessions/miracle-wm.desktop.in \
51         --replace-fail '@CMAKE_INSTALL_FULL_BINDIR@/miracle-wm' 'miracle-wm'
52     ''
53     + lib.optionalString (!finalAttrs.finalPackage.doCheck) ''
54       substituteInPlace CMakeLists.txt \
55         --replace-fail 'add_subdirectory(tests/)' ""
56     '';
58   strictDeps = true;
60   # Source has a path "session/usr/local/...", don't break references to that
61   dontFixCmake = true;
63   nativeBuildInputs = [
64     cmake
65     pkg-config
66   ];
68   buildInputs = [
69     boost
70     glib
71     glm
72     json_c
73     libevdev
74     libglvnd
75     libnotify
76     libuuid
77     libxkbcommon
78     mesa # gbm.h
79     mir
80     nlohmann_json
81     pcre2
82     wayland
83     yaml-cpp
84   ];
86   checkInputs = [ gtest ];
88   doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
90   checkPhase = ''
91     runHook preCheck
93     ./bin/miracle-wm-tests
95     runHook postCheck
96   '';
98   passthru = {
99     updateScript = gitUpdater { rev-prefix = "v"; };
100     providedSessions = [ "miracle-wm" ];
101     tests.vm = nixosTests.miracle-wm;
102   };
104   meta = with lib; {
105     description = "Tiling Wayland compositor based on Mir";
106     longDescription = ''
107       miracle-wm is a Wayland compositor based on Mir. It features a tiling window manager at its core, very much in
108       the style of i3 and sway. The intention is to build a compositor that is flashier and more feature-rich than
109       either of those compositors, like swayfx.
111       See the user guide for info on how to use miracle-wm: https://github.com/mattkae/miracle-wm/blob/v${finalAttrs.version}/USERGUIDE.md
112     '';
113     homepage = "https://github.com/mattkae/miracle-wm";
114     license = licenses.gpl3Only;
115     mainProgram = "miracle-wm";
116     maintainers = with maintainers; [ OPNA2608 ];
117     platforms = platforms.linux;
118   };