Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / desktops / plasma-5 / default.nix
blob46b9e0c3a65e0198319f5d868e8af5738b74c9b5
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 , gconf
32 , gsettings-desktop-schemas
35 let
36   maintainers = with lib.maintainers; [ ttuegel nyanloutre ];
37   license = with lib.licenses; [
38     lgpl21Plus
39     lgpl3Plus
40     bsd2
41     mit
42     gpl2Plus
43     gpl3Plus
44     fdl12Plus
45   ];
47   srcs = import ./srcs.nix {
48     inherit fetchurl;
49     mirror = "mirror://kde";
50   };
52   qtStdenv = libsForQt5.callPackage ({ stdenv }: stdenv) { };
54   packages = self:
55     let
57       propagate = out:
58         let
59           setupHook = { writeScript }:
60             writeScript "setup-hook" ''
61               if [[ "''${hookName-}" != postHook ]]; then
62                   postHooks+=("source @dev@/nix-support/setup-hook")
63               else
64                   # Propagate $${out} output
65                   propagatedUserEnvPkgs+=" @${out}@"
67                   if [ -z "$outputDev" ]; then
68                       echo "error: \$outputDev is unset!" >&2
69                       exit 1
70                   fi
72                   # Propagate $dev so that this setup hook is propagated
73                   # But only if there is a separate $dev output
74                   if [ "$outputDev" != out ]; then
75                       propagatedBuildInputs+=" @dev@"
76                   fi
77               fi
78             '';
79         in
80         callPackage setupHook { };
82       propagateBin = propagate "bin";
84       callPackage = self.newScope {
85         inherit propagate propagateBin;
87         mkDerivation = args:
88           let
89             inherit (args) pname;
90             sname = args.sname or pname;
91             inherit (srcs.${sname}) src version;
93             outputs = args.outputs or [ "out" ];
94             hasBin = lib.elem "bin" outputs;
95             hasDev = lib.elem "dev" outputs;
97             defaultSetupHook = if hasBin && hasDev then propagateBin else null;
98             setupHook = args.setupHook or defaultSetupHook;
99             nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [ libsForQt5.wrapQtAppsHook ];
101             meta =
102               let meta = args.meta or { }; in
103               meta // {
104                 homepage = meta.homepage or "http://www.kde.org";
105                 license = meta.license or license;
106                 maintainers = (meta.maintainers or [ ]) ++ maintainers;
107                 platforms = meta.platforms or lib.platforms.linux;
108               };
109           in
110           qtStdenv.mkDerivation (args // {
111             inherit pname version meta outputs setupHook src nativeBuildInputs;
112           });
113       };
115     in
116     {
117       aura-browser = callPackage ./aura-browser.nix { };
118       bluedevil = callPackage ./bluedevil.nix { };
119       breeze-gtk = callPackage ./breeze-gtk.nix { };
120       breeze-qt5 = callPackage ./breeze-qt5.nix { };
121       breeze-grub = callPackage ./breeze-grub.nix { };
122       breeze-plymouth = callPackage ./breeze-plymouth { };
123       discover = callPackage ./discover.nix { };
124       flatpak-kcm = callPackage ./flatpak-kcm.nix { };
125       kactivitymanagerd = callPackage ./kactivitymanagerd.nix { };
126       kde-cli-tools = callPackage ./kde-cli-tools.nix { };
127       kde-gtk-config = callPackage ./kde-gtk-config { inherit gsettings-desktop-schemas; };
128       kdecoration = callPackage ./kdecoration.nix { };
129       kdeplasma-addons = callPackage ./kdeplasma-addons.nix { };
130       kgamma5 = callPackage ./kgamma5.nix { };
131       khotkeys = callPackage ./khotkeys.nix { };
132       kinfocenter = callPackage ./kinfocenter { };
133       kmenuedit = callPackage ./kmenuedit.nix { };
134       kpipewire = callPackage ./kpipewire.nix { };
135       kscreen = callPackage ./kscreen.nix { };
136       kscreenlocker = callPackage ./kscreenlocker.nix { };
137       ksshaskpass = callPackage ./ksshaskpass.nix { };
138       ksystemstats = callPackage ./ksystemstats.nix { };
139       kwallet-pam = callPackage ./kwallet-pam.nix { };
140       kwayland-integration = callPackage ./kwayland-integration.nix { };
141       kwin = callPackage ./kwin { };
142       kwrited = callPackage ./kwrited.nix { };
143       layer-shell-qt = callPackage ./layer-shell-qt.nix { };
144       libkscreen = callPackage ./libkscreen { };
145       libksysguard = callPackage ./libksysguard { };
146       milou = callPackage ./milou.nix { };
147       oxygen = callPackage ./oxygen.nix { };
148       oxygen-sounds = callPackage ./oxygen-sounds.nix { };
149       plank-player = callPackage ./plank-player.nix { };
150       plasma-bigscreen = callPackage ./plasma-bigscreen.nix { };
151       plasma-browser-integration = callPackage ./plasma-browser-integration.nix { };
152       plasma-desktop = callPackage ./plasma-desktop { };
153       plasma-disks = callPackage ./plasma-disks.nix { };
154       plasma-firewall = callPackage ./plasma-firewall.nix { };
155       plasma-integration = callPackage ./plasma-integration { };
156       plasma-mobile = callPackage ./plasma-mobile { };
157       plasma-nano = callPackage ./plasma-nano { };
158       plasma-nm = callPackage ./plasma-nm { };
159       plasma-pa = callPackage ./plasma-pa.nix { inherit gconf; };
160       plasma-remotecontrollers = callPackage ./plasma-remotecontrollers.nix { };
161       plasma-sdk = callPackage ./plasma-sdk.nix { };
162       plasma-systemmonitor = callPackage ./plasma-systemmonitor.nix { };
163       plasma-thunderbolt = callPackage ./plasma-thunderbolt.nix { };
164       plasma-vault = callPackage ./plasma-vault { };
165       plasma-welcome = callPackage ./plasma-welcome.nix { };
166       plasma-workspace = callPackage ./plasma-workspace { };
167       plasma-workspace-wallpapers = callPackage ./plasma-workspace-wallpapers.nix { };
168       polkit-kde-agent = callPackage ./polkit-kde-agent.nix { };
169       powerdevil = callPackage ./powerdevil.nix { };
170       qqc2-breeze-style = callPackage ./qqc2-breeze-style.nix { };
171       sddm-kcm = callPackage ./sddm-kcm.nix { };
172       systemsettings = callPackage ./systemsettings.nix { };
173       xdg-desktop-portal-kde = callPackage ./xdg-desktop-portal-kde.nix { };
175       thirdParty = let inherit (libsForQt5) callPackage; in {
176         plasma-applet-caffeine-plus = callPackage ./3rdparty/addons/caffeine-plus.nix { };
177         plasma-applet-virtual-desktop-bar = callPackage ./3rdparty/addons/virtual-desktop-bar.nix { };
178         bismuth = callPackage ./3rdparty/addons/bismuth { };
179         kwin-dynamic-workspaces = callPackage ./3rdparty/kwin/scripts/dynamic-workspaces.nix { };
180         kwin-tiling = callPackage ./3rdparty/kwin/scripts/tiling.nix { };
181         krohnkite = callPackage ./3rdparty/kwin/scripts/krohnkite.nix { };
182         krunner-ssh = callPackage ./3rdparty/addons/krunner-ssh.nix { };
183         krunner-symbols = callPackage ./3rdparty/addons/krunner-symbols.nix { };
184         kzones = callPackage ./3rdparty/kwin/scripts/kzones.nix { };
185         lightly = callPackage ./3rdparty/lightly { };
186         parachute = callPackage ./3rdparty/kwin/scripts/parachute.nix { };
187         polonium = callPackage ./3rdparty/addons/polonium.nix { };
188       };
190     } // lib.optionalAttrs config.allowAliases {
191       ksysguard = throw "ksysguard has been replaced with plasma-systemmonitor";
192       plasma-phone-components = throw "'plasma-phone-components' has been renamed to/replaced by 'plasma-mobile'";
193     };
195 lib.makeScope libsForQt5.newScope packages