153 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
/*
 | 
						|
 | 
						|
# New packages
 | 
						|
 | 
						|
READ THIS FIRST
 | 
						|
 | 
						|
This module is for official packages in KDE Plasma 5. All available packages are
 | 
						|
listed in `./srcs.nix`, although a few are not yet packaged in Nixpkgs (see
 | 
						|
below).
 | 
						|
 | 
						|
IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE.
 | 
						|
 | 
						|
Many of the packages released upstream are not yet built in Nixpkgs due to lack
 | 
						|
of demand. To add a Nixpkgs build for an upstream package, copy one of the
 | 
						|
existing packages here and modify it as necessary.
 | 
						|
 | 
						|
# Updates
 | 
						|
 | 
						|
1. Update the URL in `./fetch.sh`.
 | 
						|
2. Run `./maintainers/scripts/fetch-kde-qt.sh pkgs/desktops/plasma-5`
 | 
						|
   from the top of the Nixpkgs tree.
 | 
						|
3. Use `nox-review wip` to check that everything builds.
 | 
						|
4. Commit the changes and open a pull request.
 | 
						|
 | 
						|
*/
 | 
						|
 | 
						|
{
 | 
						|
  libsForQt5, lib, fetchurl,
 | 
						|
  gconf, gsettings-desktop-schemas
 | 
						|
}:
 | 
						|
 | 
						|
let
 | 
						|
  srcs = import ./srcs.nix {
 | 
						|
    inherit fetchurl;
 | 
						|
    mirror = "mirror://kde";
 | 
						|
  };
 | 
						|
 | 
						|
  mkDerivation = libsForQt5.callPackage ({ mkDerivation }: mkDerivation) {};
 | 
						|
 | 
						|
  packages = self: with self;
 | 
						|
    let
 | 
						|
 | 
						|
      propagate = out:
 | 
						|
        let setupHook = { writeScript }:
 | 
						|
              writeScript "setup-hook" ''
 | 
						|
                if [[ "''${hookName-}" != postHook ]]; then
 | 
						|
                    postHooks+=("source @dev@/nix-support/setup-hook")
 | 
						|
                else
 | 
						|
                    # Propagate $${out} output
 | 
						|
                    propagatedUserEnvPkgs+=" @${out}@"
 | 
						|
 | 
						|
                    if [ -z "$outputDev" ]; then
 | 
						|
                        echo "error: \$outputDev is unset!" >&2
 | 
						|
                        exit 1
 | 
						|
                    fi
 | 
						|
 | 
						|
                    # Propagate $dev so that this setup hook is propagated
 | 
						|
                    # But only if there is a separate $dev output
 | 
						|
                    if [ "$outputDev" != out ]; then
 | 
						|
                        propagatedBuildInputs+=" @dev@"
 | 
						|
                    fi
 | 
						|
                fi
 | 
						|
              '';
 | 
						|
        in callPackage setupHook {};
 | 
						|
 | 
						|
      propagateBin = propagate "bin";
 | 
						|
 | 
						|
      callPackage = self.newScope {
 | 
						|
        inherit propagate propagateBin;
 | 
						|
 | 
						|
        mkDerivation = args:
 | 
						|
          let
 | 
						|
            inherit (args) name;
 | 
						|
            sname = args.sname or name;
 | 
						|
            inherit (srcs.${sname}) src version;
 | 
						|
 | 
						|
            outputs = args.outputs or [ "out" ];
 | 
						|
            hasBin = lib.elem "bin" outputs;
 | 
						|
            hasDev = lib.elem "dev" outputs;
 | 
						|
 | 
						|
            defaultSetupHook = if hasBin && hasDev then propagateBin else null;
 | 
						|
            setupHook = args.setupHook or defaultSetupHook;
 | 
						|
 | 
						|
            meta = {
 | 
						|
              license = with lib.licenses; [
 | 
						|
                lgpl21Plus lgpl3Plus bsd2 mit gpl2Plus gpl3Plus fdl12
 | 
						|
              ];
 | 
						|
              platforms = lib.platforms.linux;
 | 
						|
              maintainers = with lib.maintainers; [ ttuegel nyanloutre ];
 | 
						|
              homepage = "http://www.kde.org";
 | 
						|
            } // (args.meta or {});
 | 
						|
          in
 | 
						|
          mkDerivation (args // {
 | 
						|
            name = "${name}-${version}";
 | 
						|
            inherit meta outputs setupHook src;
 | 
						|
          });
 | 
						|
      };
 | 
						|
 | 
						|
    in {
 | 
						|
      bluedevil = callPackage ./bluedevil.nix {};
 | 
						|
      breeze-gtk = callPackage ./breeze-gtk.nix {};
 | 
						|
      breeze-qt5 = callPackage ./breeze-qt5.nix {};
 | 
						|
      breeze-grub = callPackage ./breeze-grub.nix {};
 | 
						|
      breeze-plymouth = callPackage ./breeze-plymouth {};
 | 
						|
      discover = callPackage ./discover.nix {};
 | 
						|
      kactivitymanagerd = callPackage ./kactivitymanagerd.nix {};
 | 
						|
      kde-cli-tools = callPackage ./kde-cli-tools.nix {};
 | 
						|
      kde-gtk-config = callPackage ./kde-gtk-config { inherit gsettings-desktop-schemas; };
 | 
						|
      kdecoration = callPackage ./kdecoration.nix {};
 | 
						|
      kdeplasma-addons = callPackage ./kdeplasma-addons.nix {};
 | 
						|
      kgamma5 = callPackage ./kgamma5.nix {};
 | 
						|
      khotkeys = callPackage ./khotkeys.nix {};
 | 
						|
      kinfocenter = callPackage ./kinfocenter.nix {};
 | 
						|
      kmenuedit = callPackage ./kmenuedit.nix {};
 | 
						|
      kscreen = callPackage ./kscreen.nix {};
 | 
						|
      kscreenlocker = callPackage ./kscreenlocker.nix {};
 | 
						|
      ksshaskpass = callPackage ./ksshaskpass.nix {};
 | 
						|
      ksysguard = callPackage ./ksysguard.nix {};
 | 
						|
      kwallet-pam = callPackage ./kwallet-pam.nix {};
 | 
						|
      kwayland-integration = callPackage ./kwayland-integration.nix {};
 | 
						|
      kwin = callPackage ./kwin {};
 | 
						|
      kwrited = callPackage ./kwrited.nix {};
 | 
						|
      libkscreen = callPackage ./libkscreen {};
 | 
						|
      libksysguard = callPackage ./libksysguard {};
 | 
						|
      milou = callPackage ./milou.nix {};
 | 
						|
      oxygen = callPackage ./oxygen.nix {};
 | 
						|
      plasma-browser-integration = callPackage ./plasma-browser-integration.nix {};
 | 
						|
      plasma-desktop = callPackage ./plasma-desktop {};
 | 
						|
      plasma-integration = callPackage ./plasma-integration {};
 | 
						|
      plasma-nm = callPackage ./plasma-nm {};
 | 
						|
      plasma-pa = callPackage ./plasma-pa.nix { inherit gconf; };
 | 
						|
      plasma-thunderbolt = callPackage ./plasma-thunderbolt.nix { };
 | 
						|
      plasma-vault = callPackage ./plasma-vault {};
 | 
						|
      plasma-workspace = callPackage ./plasma-workspace {};
 | 
						|
      plasma-workspace-wallpapers = callPackage ./plasma-workspace-wallpapers.nix {};
 | 
						|
      polkit-kde-agent = callPackage ./polkit-kde-agent.nix {};
 | 
						|
      powerdevil = callPackage ./powerdevil.nix {};
 | 
						|
      sddm-kcm = callPackage ./sddm-kcm.nix {};
 | 
						|
      systemsettings = callPackage ./systemsettings.nix {};
 | 
						|
      user-manager = callPackage ./user-manager.nix {};
 | 
						|
      xdg-desktop-portal-kde = callPackage ./xdg-desktop-portal-kde.nix {};
 | 
						|
 | 
						|
      thirdParty = let inherit (libsForQt5) callPackage; in {
 | 
						|
        plasma-applet-caffeine-plus = callPackage ./3rdparty/addons/caffeine-plus.nix { };
 | 
						|
        kwin-dynamic-workspaces = callPackage ./3rdparty/kwin/scripts/dynamic-workspaces.nix { };
 | 
						|
        kwin-tiling = callPackage ./3rdparty/kwin/scripts/tiling.nix { };
 | 
						|
        krohnkite = callPackage ./3rdparty/kwin/scripts/krohnkite.nix { };
 | 
						|
      };
 | 
						|
 | 
						|
    };
 | 
						|
in
 | 
						|
lib.makeScope libsForQt5.newScope packages
 |