nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 replaceVars,
6 cairo,
7 cinnamon-desktop,
8 dbus,
9 desktop-file-utils,
10 egl-wayland,
11 glib,
12 gobject-introspection,
13 graphene,
14 gtk3,
15 json-glib,
16 libcanberra,
17 libdrm,
18 libgbm,
19 libgnomekbd,
20 libgudev,
21 libinput,
22 libstartup_notification,
23 libwacom,
24 libxcvt,
25 libXdamage,
26 libxkbcommon,
27 libXtst,
28 mesa-gl-headers,
29 meson,
30 ninja,
31 pipewire,
32 pkg-config,
33 python3,
34 udev,
35 wayland,
36 wayland-protocols,
37 wayland-scanner,
38 wrapGAppsHook3,
39 xorgserver,
40 xwayland,
41 zenity,
42}:
43
44stdenv.mkDerivation rec {
45 pname = "muffin";
46 version = "6.4.1";
47
48 outputs = [
49 "out"
50 "dev"
51 "man"
52 ];
53
54 src = fetchFromGitHub {
55 owner = "linuxmint";
56 repo = "muffin";
57 rev = version;
58 hash = "sha256-cGC1yGft3uEqefm2DvZrMaROoZKYd6LNY0IJ+58f6vs=";
59 };
60
61 patches = [
62 (replaceVars ./fix-paths.patch {
63 inherit zenity;
64 })
65 ];
66
67 nativeBuildInputs = [
68 desktop-file-utils
69 meson
70 ninja
71 pkg-config
72 python3
73 wrapGAppsHook3
74 xorgserver # for cvt command
75 gobject-introspection
76 wayland-scanner
77 ];
78
79 buildInputs = [
80 cairo
81 cinnamon-desktop
82 dbus
83 egl-wayland
84 glib
85 gtk3
86 libcanberra
87 libdrm
88 libgbm
89 libgnomekbd
90 libgudev
91 libinput
92 libstartup_notification
93 libwacom
94 libxcvt
95 libXdamage
96 libxkbcommon
97 pipewire
98 udev
99 wayland
100 wayland-protocols
101 xwayland
102 ];
103
104 propagatedBuildInputs = [
105 # required for pkg-config to detect muffin-clutter
106 json-glib
107 libXtst
108 graphene
109 mesa-gl-headers
110 ];
111
112 mesonFlags = [
113 # Based on Mint's debian/rules.
114 "-Degl_device=true"
115 "-Dwayland_eglstream=true"
116 "-Dxwayland_path=${lib.getExe xwayland}"
117 ];
118
119 postPatch = ''
120 patchShebangs src/backends/native/gen-default-modes.py
121 '';
122
123 meta = with lib; {
124 homepage = "https://github.com/linuxmint/muffin";
125 description = "Window management library for the Cinnamon desktop (libmuffin) and its sample WM binary (muffin)";
126 mainProgram = "muffin";
127 license = licenses.gpl2Plus;
128 platforms = platforms.linux;
129 teams = [ teams.cinnamon ];
130 };
131}