1{
2 wrapGAppsHook4,
3 glib,
4 lib,
5 stdenv,
6 xorg,
7 switchboard,
8 switchboardPlugs,
9 plugs,
10 # Only useful to disable for development testing.
11 useDefaultPlugs ? true,
12 testName ? null,
13}:
14
15let
16 selectedPlugs =
17 if plugs == null then
18 switchboardPlugs
19 else
20 plugs ++ (lib.optionals useDefaultPlugs switchboardPlugs);
21
22 testingName = lib.optionalString (testName != null) "${testName}-";
23in
24stdenv.mkDerivation {
25 pname = "${testingName}${switchboard.pname}-with-plugs";
26 inherit (switchboard) version;
27
28 src = null;
29
30 paths = [
31 switchboard
32 ]
33 ++ selectedPlugs;
34
35 passAsFile = [ "paths" ];
36
37 nativeBuildInputs = [
38 glib
39 wrapGAppsHook4
40 ];
41
42 buildInputs = lib.forEach selectedPlugs (x: x.buildInputs) ++ selectedPlugs;
43
44 dontUnpack = true;
45 dontConfigure = true;
46 dontBuild = true;
47
48 preferLocalBuild = true;
49 allowSubstitutes = false;
50
51 installPhase = ''
52 mkdir -p $out
53 for i in $(cat $pathsPath); do
54 ${xorg.lndir}/bin/lndir -silent $i $out
55 done
56
57 dbus_file="share/dbus-1/services/io.elementary.settings.service"
58 rm -f "$out/$dbus_file"
59 substitute "${switchboard}/$dbus_file" "$out/$dbus_file" \
60 --replace-fail "${switchboard}" "$out"
61 '';
62
63 preFixup = ''
64 gappsWrapperArgs+=(
65 --set SWITCHBOARD_PLUGS_PATH "$out/lib/switchboard-3"
66 )
67 '';
68
69 inherit (switchboard) meta;
70}