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