diff options
Diffstat (limited to 'nixpkgs/pkgs/kde/lib/mk-kde-derivation.nix')
-rw-r--r-- | nixpkgs/pkgs/kde/lib/mk-kde-derivation.nix | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/kde/lib/mk-kde-derivation.nix b/nixpkgs/pkgs/kde/lib/mk-kde-derivation.nix new file mode 100644 index 000000000000..ddada8fb77f0 --- /dev/null +++ b/nixpkgs/pkgs/kde/lib/mk-kde-derivation.nix @@ -0,0 +1,126 @@ +self: { + lib, + stdenv, + makeSetupHook, + fetchurl, + cmake, + qt6, +}: let + dependencies = (lib.importJSON ../generated/dependencies.json).dependencies; + projectInfo = lib.importJSON ../generated/projects.json; + + licenseInfo = lib.importJSON ../generated/licenses.json; + licensesBySpdxId = + (lib.mapAttrs' (_: v: { + name = v.spdxId or "unknown"; + value = v; + }) + lib.licenses) + // { + # https://community.kde.org/Policies/Licensing_Policy + "LicenseRef-KDE-Accepted-GPL" = lib.licenses.gpl3Plus; + "LicenseRef-KFQF-Accepted-GPL" = lib.licenses.gpl3Plus; + "LicenseRef-KDE-Accepted-LGPL" = lib.licenses.lgpl3Plus; + + # https://sjfonts.sourceforge.net/ + "LicenseRef-SJFonts" = lib.licenses.gpl2Plus; + + # https://invent.kde.org/education/kiten/-/blob/master/LICENSES/LicenseRef-EDRDG.txt + "LicenseRef-EDRDG" = lib.licenses.cc-by-sa-30; + + # https://invent.kde.org/kdevelop/kdevelop/-/blob/master/LICENSES/LicenseRef-MIT-KDevelop-Ideal.txt + "LicenseRef-MIT-KDevelop-Ideal" = lib.licenses.mit; + + "FSFAP" = { + spdxId = "FSFAP"; + fullName = "FSF All Permissive License"; + }; + + "FSFULLR" = { + spdxId = "FSFULLR"; + fullName = "FSF Unlimited License (with License Retention)"; + }; + + "W3C-20150513" = { + spdxId = "W3C-20150513"; + fullName = "W3C Software Notice and Document License (2015-05-13)"; + }; + + # Technically not exact + "bzip2-1.0.6" = lib.licenses.bsdOriginal; + + # FIXME: typo lol + "ICS" = lib.licenses.isc; + + # These are only relevant to Qt commercial users + "Qt-Commercial-exception-1.0" = null; + "LicenseRef-Qt-Commercial" = null; + "LicenseRef-Qt-Commercial-exception-1.0" = null; + + # FIXME: ??? + "Qt-GPL-exception-1.0" = null; + "LicenseRef-Qt-LGPL-exception-1.0" = null; + "Qt-LGPL-exception-1.1" = null; + "LicenseRef-Qt-exception" = null; + "GCC-exception-3.1" = null; + "Bison-exception-2.2" = null; + "Font-exception-2.0" = null; + None = null; + }; + + moveDevHook = makeSetupHook {name = "kf6-move-dev-hook";} ./move-dev-hook.sh; +in + { + pname, + version ? self.sources.${pname}.version, + src ? self.sources.${pname}, + extraBuildInputs ? [], + extraNativeBuildInputs ? [], + extraPropagatedBuildInputs ? [], + extraCmakeFlags ? [], + meta ? {}, + ... + } @ args: let + # FIXME(later): this is wrong for cross, some of these things really need to go into nativeBuildInputs, + # but cross is currently very broken anyway, so we can figure this out later. + deps = map (dep: self.${dep}) (dependencies.${pname} or []); + + defaultArgs = { + inherit version src; + + outputs = ["out" "dev"]; + + nativeBuildInputs = [cmake qt6.wrapQtAppsHook moveDevHook] ++ extraNativeBuildInputs; + buildInputs = [qt6.qtbase] ++ extraBuildInputs; + + # FIXME: figure out what to propagate here + propagatedBuildInputs = deps ++ extraPropagatedBuildInputs; + strictDeps = true; + + dontFixCmake = true; + cmakeFlags = ["-DQT_MAJOR_VERSION=6"] ++ extraCmakeFlags; + + separateDebugInfo = true; + + meta = + { + description = projectInfo.${pname}.description; + homepage = "https://invent.kde.org/${projectInfo.${pname}.repo_path}"; + license = lib.filter (l: l != null) (map (l: licensesBySpdxId.${l}) licenseInfo.${pname}); + maintainers = lib.teams.qt-kde.members; + # Platforms are currently limited to what upstream tests in CI, but can be extended if + # there's interest. + platforms = lib.platforms.linux ++ lib.platforms.freebsd; + } + // meta; + }; + + cleanArgs = builtins.removeAttrs args [ + "extraBuildInputs" + "extraNativeBuildInputs" + "extraPropagatedBuildInputs" + "extraCmakeFlags" + "meta" + ]; + in + stdenv.mkDerivation (defaultArgs // cleanArgs) |