1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 meson,
6 ninja,
7 pkg-config,
8 wayland-scanner,
9 scdoc,
10 makeWrapper,
11 wlroots_0_18,
12 wayland,
13 wayland-protocols,
14 pixman,
15 libxkbcommon,
16 xcbutilwm,
17 systemd,
18 libGL,
19 libX11,
20 xwayland ? null,
21 nixosTests,
22}:
23
24stdenv.mkDerivation (finalAttrs: {
25 pname = "cage";
26 version = "0.2.0";
27
28 src = fetchFromGitHub {
29 owner = "cage-kiosk";
30 repo = "cage";
31 tag = "v${finalAttrs.version}";
32 hash = "sha256-2SFtz62z0EF8cpFTC6wGi125MD4a5mkXqP/C+7fH+3g=";
33 };
34
35 depsBuildBuild = [
36 pkg-config
37 ];
38
39 nativeBuildInputs = [
40 meson
41 ninja
42 pkg-config
43 wayland-scanner
44 scdoc
45 makeWrapper
46 ];
47
48 buildInputs = [
49 wlroots_0_18
50 wayland
51 wayland-protocols
52 pixman
53 libxkbcommon
54 xcbutilwm
55 systemd
56 libGL
57 libX11
58 ];
59
60 postFixup = lib.optionalString wlroots_0_18.enableXWayland ''
61 wrapProgram $out/bin/cage --prefix PATH : "${xwayland}/bin"
62 '';
63
64 # Tests Cage using the NixOS module by launching xterm:
65 passthru.tests.basic-nixos-module-functionality = nixosTests.cage;
66
67 meta = {
68 description = "Wayland kiosk that runs a single, maximized application";
69 homepage = "https://www.hjdskes.nl/projects/cage/";
70 license = lib.licenses.mit;
71 platforms = lib.platforms.linux;
72 maintainers = with lib.maintainers; [ ];
73 mainProgram = "cage";
74 };
75})