1/*
2 # New packages
3
4 READ THIS FIRST
5
6 This module is for official packages in KDE Plasma 5. All available packages are
7 listed in `./srcs.nix`, although a few are not yet packaged in Nixpkgs (see
8 below).
9
10 IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE.
11
12 Many of the packages released upstream are not yet built in Nixpkgs due to lack
13 of demand. To add a Nixpkgs build for an upstream package, copy one of the
14 existing packages here and modify it as necessary.
15
16 # Updates
17
18 1. Update the URL in `./fetch.sh`.
19 2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/desktops/plasma-5`
20 from the top of the Nixpkgs tree.
21 3. Use `nox-review wip` to check that everything builds.
22 4. Commit the changes and open a pull request.
23*/
24
25{
26 libsForQt5,
27 lib,
28 config,
29 fetchurl,
30 gsettings-desktop-schemas,
31}:
32
33let
34 maintainers = with lib.maintainers; [
35 ttuegel
36 nyanloutre
37 ];
38 license = with lib.licenses; [
39 lgpl21Plus
40 lgpl3Plus
41 bsd2
42 mit
43 gpl2Plus
44 gpl3Plus
45 fdl12Plus
46 ];
47
48 srcs = import ./srcs.nix {
49 inherit fetchurl;
50 mirror = "mirror://kde";
51 };
52
53 qtStdenv = libsForQt5.callPackage ({ stdenv }: stdenv) { };
54
55 packages =
56 self:
57 let
58
59 propagate =
60 out:
61 let
62 setupHook =
63 { writeScript }:
64 writeScript "setup-hook" ''
65 if [[ "''${hookName-}" != postHook ]]; then
66 postHooks+=("source @dev@/nix-support/setup-hook")
67 else
68 # Propagate $${out} output
69 appendToVar propagatedUserEnvPkgs "@${out}@"
70
71 if [ -z "$outputDev" ]; then
72 echo "error: \$outputDev is unset!" >&2
73 exit 1
74 fi
75
76 # Propagate $dev so that this setup hook is propagated
77 # But only if there is a separate $dev output
78 if [ "$outputDev" != out ]; then
79 appendToVar propagatedBuildInputs "@dev@"
80 fi
81 fi
82 '';
83 in
84 callPackage setupHook { };
85
86 propagateBin = propagate "bin";
87
88 callPackage = self.newScope {
89 inherit propagate propagateBin;
90
91 mkDerivation =
92 args:
93 let
94 inherit (args) pname;
95 sname = args.sname or pname;
96 inherit (srcs.${sname}) src version;
97
98 outputs = args.outputs or [ "out" ];
99 hasBin = lib.elem "bin" outputs;
100 hasDev = lib.elem "dev" outputs;
101
102 defaultSetupHook = if hasBin && hasDev then propagateBin else null;
103 setupHook = args.setupHook or defaultSetupHook;
104 nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ libsForQt5.wrapQtAppsHook ];
105
106 meta =
107 let
108 meta = args.meta or { };
109 in
110 meta
111 // {
112 homepage = meta.homepage or "http://www.kde.org";
113 license = meta.license or license;
114 maintainers = (meta.maintainers or [ ]) ++ maintainers;
115 platforms = meta.platforms or lib.platforms.linux;
116 };
117 in
118 qtStdenv.mkDerivation (
119 args
120 // {
121 inherit
122 pname
123 version
124 meta
125 outputs
126 setupHook
127 src
128 nativeBuildInputs
129 ;
130 }
131 );
132 };
133
134 in
135 {
136 aura-browser = callPackage ./aura-browser.nix { };
137 bluedevil = callPackage ./bluedevil.nix { };
138 breeze-gtk = callPackage ./breeze-gtk.nix { };
139 breeze-qt5 = callPackage ./breeze-qt5.nix { };
140 breeze-grub = callPackage ./breeze-grub.nix { };
141 breeze-plymouth = callPackage ./breeze-plymouth { };
142 discover = callPackage ./discover.nix { };
143 flatpak-kcm = callPackage ./flatpak-kcm.nix { };
144 kactivitymanagerd = callPackage ./kactivitymanagerd.nix { };
145 kde-cli-tools = callPackage ./kde-cli-tools.nix { };
146 kde-gtk-config = callPackage ./kde-gtk-config { inherit gsettings-desktop-schemas; };
147 kdecoration = callPackage ./kdecoration.nix { };
148 kdeplasma-addons = callPackage ./kdeplasma-addons.nix { };
149 kgamma5 = callPackage ./kgamma5.nix { };
150 khotkeys = callPackage ./khotkeys.nix { };
151 kinfocenter = callPackage ./kinfocenter { };
152 kmenuedit = callPackage ./kmenuedit.nix { };
153 kpipewire = callPackage ./kpipewire.nix { };
154 kscreen = callPackage ./kscreen.nix { };
155 kscreenlocker = callPackage ./kscreenlocker.nix { };
156 ksshaskpass = callPackage ./ksshaskpass.nix { };
157 ksystemstats = callPackage ./ksystemstats.nix { };
158 kwallet-pam = callPackage ./kwallet-pam.nix { };
159 kwayland-integration = callPackage ./kwayland-integration.nix { };
160 kwin = callPackage ./kwin { };
161 kwrited = callPackage ./kwrited.nix { };
162 layer-shell-qt = callPackage ./layer-shell-qt.nix { };
163 libkscreen = callPackage ./libkscreen { };
164 libksysguard = callPackage ./libksysguard { };
165 milou = callPackage ./milou.nix { };
166 oxygen = callPackage ./oxygen.nix { };
167 oxygen-sounds = callPackage ./oxygen-sounds.nix { };
168 plank-player = callPackage ./plank-player.nix { };
169 plasma-bigscreen = callPackage ./plasma-bigscreen.nix { };
170 plasma-browser-integration = callPackage ./plasma-browser-integration.nix { };
171 plasma-desktop = callPackage ./plasma-desktop { };
172 plasma-disks = callPackage ./plasma-disks.nix { };
173 plasma-firewall = callPackage ./plasma-firewall.nix { };
174 plasma-integration = callPackage ./plasma-integration { };
175 plasma-mobile = callPackage ./plasma-mobile { };
176 plasma-nano = callPackage ./plasma-nano { };
177 plasma-nm = callPackage ./plasma-nm { };
178 plasma-pa = callPackage ./plasma-pa.nix { };
179 plasma-remotecontrollers = callPackage ./plasma-remotecontrollers.nix { };
180 plasma-sdk = callPackage ./plasma-sdk.nix { };
181 plasma-systemmonitor = callPackage ./plasma-systemmonitor.nix { };
182 plasma-thunderbolt = callPackage ./plasma-thunderbolt.nix { };
183 plasma-vault = callPackage ./plasma-vault { };
184 plasma-welcome = callPackage ./plasma-welcome.nix { };
185 plasma-workspace = callPackage ./plasma-workspace { };
186 plasma-workspace-wallpapers = callPackage ./plasma-workspace-wallpapers.nix { };
187 polkit-kde-agent = callPackage ./polkit-kde-agent.nix { };
188 powerdevil = callPackage ./powerdevil.nix { };
189 qqc2-breeze-style = callPackage ./qqc2-breeze-style.nix { };
190 sddm-kcm = callPackage ./sddm-kcm.nix { };
191 systemsettings = callPackage ./systemsettings.nix { };
192 xdg-desktop-portal-kde = callPackage ./xdg-desktop-portal-kde.nix { };
193
194 thirdParty =
195 let
196 inherit (libsForQt5) callPackage;
197 in
198 {
199 plasma-applet-caffeine-plus = callPackage ./3rdparty/addons/caffeine-plus.nix { };
200 plasma-applet-virtual-desktop-bar = callPackage ./3rdparty/addons/virtual-desktop-bar.nix { };
201 bismuth = callPackage ./3rdparty/addons/bismuth { };
202 kwin-dynamic-workspaces = callPackage ./3rdparty/kwin/scripts/dynamic-workspaces.nix { };
203 kwin-tiling = callPackage ./3rdparty/kwin/scripts/tiling.nix { };
204 krohnkite = callPackage ./3rdparty/kwin/scripts/krohnkite.nix { };
205 krunner-ssh = callPackage ./3rdparty/addons/krunner-ssh.nix { };
206 krunner-symbols = callPackage ./3rdparty/addons/krunner-symbols.nix { };
207 kzones = callPackage ./3rdparty/kwin/scripts/kzones.nix { };
208 lightly = callPackage ./3rdparty/lightly { };
209 parachute = callPackage ./3rdparty/kwin/scripts/parachute.nix { };
210 };
211
212 }
213 // lib.optionalAttrs config.allowAliases {
214 ksysguard = throw "ksysguard has been replaced with plasma-systemmonitor";
215 plasma-phone-components = throw "'plasma-phone-components' has been renamed to/replaced by 'plasma-mobile'";
216 };
217in
218lib.makeScope libsForQt5.newScope packages