diff --git a/pkgs/servers/web-apps/wordpress/packages/default.nix b/pkgs/servers/web-apps/wordpress/packages/default.nix index 715e9556bc7f..cce6897cb919 100644 --- a/pkgs/servers/web-apps/wordpress/packages/default.nix +++ b/pkgs/servers/web-apps/wordpress/packages/default.nix @@ -9,12 +9,17 @@ let packages = self: generatedJson = { inherit plugins themes languages; }; + sourceJson = { + plugins = builtins.fromJSON (builtins.readFile ./wordpress-plugins.json); + themes = builtins.fromJSON (builtins.readFile ./wordpress-themes.json); + languages = builtins.fromJSON (builtins.readFile ./wordpress-languages.json); + }; in { # Create a generic WordPress package. Most arguments are just passed # to `mkDerivation`. The version is automatically filtered for weird characters. mkWordpressDerivation = self.callPackage ({ stdenvNoCC, lib, filterWPString, gettext, wp-cli }: - { type, pname, version, ... }@args: + { type, pname, version, license, ... }@args: assert lib.any (x: x == type) [ "plugin" "theme" "language" ]; stdenvNoCC.mkDerivation ({ pname = "wordpress-${type}-${pname}"; @@ -31,6 +36,10 @@ let packages = self: passthru = { wpName = pname; + }; + + meta = { + license = lib.licenses.${license}; } // (args.passthru or {}); } // lib.optionalAttrs (type == "language") { nativeBuildInputs = [ gettext wp-cli ]; @@ -51,9 +60,9 @@ let packages = self: # Create a derivation from the official wordpress.org packages. # This takes the type, the pname and the data generated from the go tool. mkOfficialWordpressDerivation = self.callPackage ({ mkWordpressDerivation, fetchWordpress }: - { type, pname, data }: + { type, pname, data, license }: mkWordpressDerivation { - inherit type pname; + inherit type pname license; version = data.version; src = fetchWordpress type data; @@ -79,7 +88,8 @@ let packages = self: throw "fetchWordpress: invalid package type ${type}"; }) {}; - } // lib.mapAttrs (type: pkgs: lib.makeExtensible (_: lib.mapAttrs (pname: data: self.mkOfficialWordpressDerivation { type = lib.removeSuffix "s" type; inherit pname data; }) pkgs)) generatedJson; + } // lib.mapAttrs ( + type: pkgs: lib.makeExtensible (_: lib.mapAttrs (pname: data: self.mkOfficialWordpressDerivation {type = lib.removeSuffix "s" type; inherit pname data; license = sourceJson.${type}.${pname}; }) pkgs)) generatedJson; # This creates an extensible scope. in lib.recursiveUpdate ((lib.makeExtensible (_: (lib.makeScope newScope packages))).extend (selfWP: superWP: {})) (callPackage ./thirdparty.nix {}) diff --git a/pkgs/servers/web-apps/wordpress/packages/generate.sh b/pkgs/servers/web-apps/wordpress/packages/generate.sh index 1619850e8a2a..0abf3e341a41 100755 --- a/pkgs/servers/web-apps/wordpress/packages/generate.sh +++ b/pkgs/servers/web-apps/wordpress/packages/generate.sh @@ -12,9 +12,9 @@ nixFlags="--option experimental-features nix-command eval --raw --impure --expr" export NIX_PATH=nixpkgs=../../../../.. export WP_VERSION=$(nix $nixFlags '(import {}).wordpress.version') -PLUGINS=`cat wordpress-plugins.json | jq -r '.[]' | sed -z 's/\n/,/g;s/,$/\n/'` -THEMES=`cat wordpress-themes.json | jq -r '.[]' | sed -z 's/\n/,/g;s/,$/\n/'` -LANGUAGES=`cat wordpress-languages.json | jq -r '.[]' | sed -z 's/\n/,/g;s/,$/\n/'` +PLUGINS=`cat wordpress-plugins.json | jq -r 'keys|.[]' | sed -z 's/\n/,/g;s/,$/\n/'` +THEMES=`cat wordpress-themes.json | jq -r 'keys|.[]' | sed -z 's/\n/,/g;s/,$/\n/'` +LANGUAGES=`cat wordpress-languages.json | jq -r 'keys|.[]' | sed -z 's/\n/,/g;s/,$/\n/'` wp4nix -p $PLUGINS -pl en wp4nix -t $THEMES -tl en diff --git a/pkgs/servers/web-apps/wordpress/packages/thirdparty.nix b/pkgs/servers/web-apps/wordpress/packages/thirdparty.nix index a60c06854183..24836f3ac42c 100644 --- a/pkgs/servers/web-apps/wordpress/packages/thirdparty.nix +++ b/pkgs/servers/web-apps/wordpress/packages/thirdparty.nix @@ -1,14 +1,25 @@ -{fetchzip}: { - plugins.civicrm = fetchzip rec { - name = "civicrm"; +{fetchzip, stdenv, lib}: { + plugins.civicrm = stdenv.mkDerivation rec { + pname = "civicrm"; version = "5.56.0"; - url = "https://storage.googleapis.com/${name}/${name}-stable/${version}/${name}-${version}-wordpress.zip"; - hash = "sha256-XsNFxVL0LF+OHlsqjjTV41x9ERLwMDq9BnKKP3Px2aI="; + src = fetchzip { + inherit version; + name = pname; + url = "https://storage.googleapis.com/${pname}/${pname}-stable/${version}/${pname}-${version}-wordpress.zip"; + hash = "sha256-XsNFxVL0LF+OHlsqjjTV41x9ERLwMDq9BnKKP3Px2aI="; + }; + meta.license = lib.licenses.agpl3Only; }; - themes.geist = fetchzip rec { - name = "geist"; + themes.geist = stdenv.mkDerivation rec { + pname = "geist"; version = "2.0.3"; - url = "https://github.com/christophery/geist/archive/refs/tags/${version}.zip"; - hash = "sha256-c85oRhqu5E5IJlpgqKJRQITur1W7x40obOvHZbPevzU="; + src = fetchzip { + inherit version; + name = pname; + url = "https://github.com/christophery/geist/archive/refs/tags/${version}.zip"; + hash = "sha256-c85oRhqu5E5IJlpgqKJRQITur1W7x40obOvHZbPevzU="; + }; + meta.license = lib.licenses.gpl2Only; }; } + diff --git a/pkgs/servers/web-apps/wordpress/packages/wordpress-languages.json b/pkgs/servers/web-apps/wordpress/packages/wordpress-languages.json index e1fa4e2b3aba..2c6fa9785c8b 100644 --- a/pkgs/servers/web-apps/wordpress/packages/wordpress-languages.json +++ b/pkgs/servers/web-apps/wordpress/packages/wordpress-languages.json @@ -1,5 +1,5 @@ -[ - "de_DE" -, "fr_FR" -, "ro_RO" -] +{ + "de_DE": "gpl2Plus" +, "fr_FR": "gpl2Plus" +, "ro_RO": "gpl2Plus" +} diff --git a/pkgs/servers/web-apps/wordpress/packages/wordpress-plugins.json b/pkgs/servers/web-apps/wordpress/packages/wordpress-plugins.json index 185017124343..f8e8074ab82c 100644 --- a/pkgs/servers/web-apps/wordpress/packages/wordpress-plugins.json +++ b/pkgs/servers/web-apps/wordpress/packages/wordpress-plugins.json @@ -1,38 +1,38 @@ -[ - "add-widget-after-content" -, "akismet" -, "antispam-bee" -, "async-javascript" -, "breeze" -, "code-syntax-block" -, "cookie-notice" -, "co-authors-plus" -, "disable-xml-rpc" -, "embed-extended" -, "gutenberg" -, "hello-dolly" -, "hkdev-maintenance-mode" -, "jetpack" -, "jetpack-lite" -, "lightbox-photoswipe" -, "login-lockdown" -, "mailpoet" -, "merge-minify-refresh" -, "opengraph" -, "simple-login-captcha" -, "simple-mastodon-verification" -, "static-mail-sender-configurator" -, "tc-custom-javascript" -, "webp-converter-for-media" -, "webp-express" -, "wordpress-seo" -, "worker" -, "wp-change-email-sender" -, "wp-fastest-cache" -, "wp-gdpr-compliance" -, "wp-mail-smtp" -, "wp-statistics" -, "wp-swiper" -, "wp-user-avatars" -, "wpforms-lite" -] +{ + "add-widget-after-content": "gpl3Plus" +, "akismet": "gpl2Plus" +, "antispam-bee": "gpl2Plus" +, "async-javascript": "gpl2Plus" +, "breeze": "gpl2Plus" +, "code-syntax-block": "gpl2Plus" +, "cookie-notice": "mit" +, "co-authors-plus": "gpl2Plus" +, "disable-xml-rpc": "gpl2Plus" +, "embed-extended": "gpl2Plus" +, "gutenberg": "gpl2Plus" +, "hello-dolly": "gpl2Plus" +, "hkdev-maintenance-mode": "gpl2Plus" +, "jetpack": "gpl2Plus" +, "jetpack-lite": "gpl2Only" +, "lightbox-photoswipe": "gpl2Only" +, "login-lockdown": "gpl2Plus" +, "mailpoet": "gpl3Only" +, "merge-minify-refresh": "gpl2Plus" +, "opengraph": "asl20" +, "simple-login-captcha": "gpl2Plus" +, "simple-mastodon-verification": "gpl2Plus" +, "static-mail-sender-configurator": "mit" +, "tc-custom-javascript": "gpl2Plus" +, "webp-converter-for-media": "gpl2Plus" +, "webp-express": "gpl3Only" +, "wordpress-seo": "gpl3Only" +, "worker": "gpl3Plus" +, "wp-change-email-sender": "gpl2Plus" +, "wp-fastest-cache": "gpl2Plus" +, "wp-gdpr-compliance": "gpl2Plus" +, "wp-mail-smtp": "gpl3Plus" +, "wp-statistics": "gpl3Only" +, "wp-swiper": "gpl2Plus" +, "wp-user-avatars": "gpl2Plus" +, "wpforms-lite": "gpl2Plus" +} diff --git a/pkgs/servers/web-apps/wordpress/packages/wordpress-themes.json b/pkgs/servers/web-apps/wordpress/packages/wordpress-themes.json index 028ee47614a2..b41c2f18f816 100644 --- a/pkgs/servers/web-apps/wordpress/packages/wordpress-themes.json +++ b/pkgs/servers/web-apps/wordpress/packages/wordpress-themes.json @@ -1,7 +1,7 @@ -[ - "twentynineteen" -, "twentytwenty" -, "twentytwentytwo" -, "twentytwentyone" -, "twentytwentythree" -] +{ + "twentynineteen": "gpl2Plus" +, "twentytwenty": "gpl2Plus" +, "twentytwentytwo": "gpl2Plus" +, "twentytwentyone": "gpl2Plus" +, "twentytwentythree": "gpl2Plus" +}