From 3d04c5aaa818c6d32f9e7b09e14a93c70c4774f6 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 3 Oct 2025 22:57:06 +0200 Subject: [PATCH 1/8] nixos/dokuwiki: use php 8.4 PHP 8.1 needs to be removed since it'll be EOLed by the end of the year. --- nixos/modules/services/web-apps/dokuwiki.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/web-apps/dokuwiki.nix b/nixos/modules/services/web-apps/dokuwiki.nix index 68cbdc851f46..74c2b2a5a15c 100644 --- a/nixos/modules/services/web-apps/dokuwiki.nix +++ b/nixos/modules/services/web-apps/dokuwiki.nix @@ -56,7 +56,7 @@ let pkgs.writeTextFile { inherit name; text = " Date: Fri, 3 Oct 2025 23:00:27 +0200 Subject: [PATCH 2/8] n98-magerun: remove Newest version upstream tests against is PHP 8.1. --- pkgs/by-name/n9/n98-magerun/package.nix | 37 ------------------------- pkgs/top-level/aliases.nix | 1 + 2 files changed, 1 insertion(+), 37 deletions(-) delete mode 100644 pkgs/by-name/n9/n98-magerun/package.nix diff --git a/pkgs/by-name/n9/n98-magerun/package.nix b/pkgs/by-name/n9/n98-magerun/package.nix deleted file mode 100644 index bd1c9aaf8b91..000000000000 --- a/pkgs/by-name/n9/n98-magerun/package.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - lib, - fetchFromGitHub, - php81, - nix-update-script, -}: - -php81.buildComposerProject2 (finalAttrs: { - pname = "n98-magerun"; - version = "2.3.0"; - - src = fetchFromGitHub { - owner = "netz98"; - repo = "n98-magerun"; - tag = finalAttrs.version; - hash = "sha256-/RffdYgl2cs8mlq4vHtzUZ6j0viV8Ot/cB/cB1dstFM="; - }; - - vendorHash = "sha256-huYLbqJaxeSST2WGcSdk4gR3d3KWSkIK/6tzVpCw0oQ="; - - passthru.updateScript = nix-update-script { - # Excludes 1.x versions from the Github tags list - extraArgs = [ - "--version-regex" - "^(2\\.(.*))" - ]; - }; - - meta = { - changelog = "https://magerun.net/category/magerun/"; - description = "Swiss army knife for Magento1/OpenMage developers"; - homepage = "https://magerun.net/"; - license = lib.licenses.mit; - mainProgram = "n98-magerun"; - teams = [ lib.teams.php ]; - }; -}) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 5b26bca0c40d..39bbd351dbe5 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1756,6 +1756,7 @@ mapAliases { ### N ### + n98-magerun = throw "n98-magerun doesn't support new PHP newer than 8.1"; # Added 2025-10-03 namazu = throw "namazu has been removed, as it was broken"; # Added 2025-08-25 nanoblogger = throw "nanoblogger has been removed as upstream stopped developement in 2013"; # Added 2025-09-10 ncdu_2 = ncdu; # Added 2022-07-22 From f4b702bb1172154c3fb80d4cb0306b1b37701170 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 3 Oct 2025 23:14:00 +0200 Subject: [PATCH 3/8] invoiceplane: remove, doesn't support php >8.1 --- .../manual/release-notes/rl-2205.section.md | 2 +- nixos/modules/module-list.nix | 1 - nixos/modules/rename.nix | 4 + .../services/web-apps/invoiceplane.nix | 492 ------------- nixos/tests/all-tests.nix | 1 - nixos/tests/invoiceplane.nix | 116 ---- .../in/invoiceplane/fix-yarn-lock.patch | 651 ------------------ .../fix_composer_validation.patch | 34 - pkgs/by-name/in/invoiceplane/package.nix | 85 --- pkgs/top-level/aliases.nix | 1 + 10 files changed, 6 insertions(+), 1381 deletions(-) delete mode 100644 nixos/modules/services/web-apps/invoiceplane.nix delete mode 100644 nixos/tests/invoiceplane.nix delete mode 100644 pkgs/by-name/in/invoiceplane/fix-yarn-lock.patch delete mode 100644 pkgs/by-name/in/invoiceplane/fix_composer_validation.patch delete mode 100644 pkgs/by-name/in/invoiceplane/package.nix diff --git a/nixos/doc/manual/release-notes/rl-2205.section.md b/nixos/doc/manual/release-notes/rl-2205.section.md index ed583c2541e6..52f05ce45403 100644 --- a/nixos/doc/manual/release-notes/rl-2205.section.md +++ b/nixos/doc/manual/release-notes/rl-2205.section.md @@ -99,7 +99,7 @@ In addition to numerous new and upgraded packages, this release has the followin - [input-remapper](https://github.com/sezanzeb/input-remapper), an easy to use tool to change the mapping of your input device buttons. Available at [services.input-remapper](#opt-services.input-remapper.enable). -- [InvoicePlane](https://invoiceplane.com), web application for managing and creating invoices. Available at [services.invoiceplane](#opt-services.invoiceplane.sites._name_.enable). +- [InvoicePlane](https://invoiceplane.com), web application for managing and creating invoices. Available at `services.invoiceplane`. - [k3b](https://userbase.kde.org/K3b), the KDE disk burning application. Available as [programs.k3b](#opt-programs.k3b.enable). diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index c9ac96aa6706..2d714329c313 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1613,7 +1613,6 @@ ./services/web-apps/immich-public-proxy.nix ./services/web-apps/immich.nix ./services/web-apps/invidious.nix - ./services/web-apps/invoiceplane.nix ./services/web-apps/isso.nix ./services/web-apps/jirafeau.nix ./services/web-apps/jitsi-meet.nix diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index 3451c82297ce..5f6913975f5b 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -394,6 +394,10 @@ in Consider migrating or switching to Incus, or remove from your configuration. https://linuxcontainers.org/incus/docs/main/howto/server_migrate_lxd/ '') + (mkRemovedOptionModule [ "services" "invoiceplane" ] '' + services.invoiceplane has been removed since the service only supported PHP 8.1 which is EOL + and removed from nixpkgs. + '') # Do NOT add any option renames here, see top of the file ]; } diff --git a/nixos/modules/services/web-apps/invoiceplane.nix b/nixos/modules/services/web-apps/invoiceplane.nix deleted file mode 100644 index f4bbcb0f5f09..000000000000 --- a/nixos/modules/services/web-apps/invoiceplane.nix +++ /dev/null @@ -1,492 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -with lib; - -let - cfg = config.services.invoiceplane; - eachSite = cfg.sites; - user = "invoiceplane"; - webserver = config.services.${cfg.webserver}; - - invoiceplane-config = - hostName: cfg: - pkgs.writeText "ipconfig.php" '' - # - - IP_URL=http://${hostName} - ENABLE_DEBUG=false - DISABLE_SETUP=false - REMOVE_INDEXPHP=false - DB_HOSTNAME=${cfg.database.host} - DB_USERNAME=${cfg.database.user} - # NOTE: file_get_contents adds newline at the end of returned string - DB_PASSWORD=${ - optionalString ( - cfg.database.passwordFile != null - ) "trim(file_get_contents('${cfg.database.passwordFile}'), \"\\r\\n\")" - } - DB_DATABASE=${cfg.database.name} - DB_PORT=${toString cfg.database.port} - SESS_EXPIRATION=864000 - ENABLE_INVOICE_DELETION=false - DISABLE_READ_ONLY=false - ENCRYPTION_KEY= - ENCRYPTION_CIPHER=AES-256 - SETUP_COMPLETED=false - REMOVE_INDEXPHP=true - ''; - - mkPhpValue = - v: - if isString v then - escapeShellArg v - # NOTE: If any value contains a , (comma) this will not get escaped - else if isList v && strings.isConvertibleWithToString v then - escapeShellArg (concatMapStringsSep "," toString v) - else if isInt v then - toString v - else if isBool v then - boolToString v - else - abort "The Invoiceplane config value ${lib.generators.toPretty { } v} can not be encoded."; - - extraConfig = - hostName: cfg: - let - settings = mapAttrsToList (k: v: "${k}=${mkPhpValue v}") cfg.settings; - in - pkgs.writeText "extraConfig.php" (concatStringsSep "\n" settings); - - pkg = - hostName: cfg: - pkgs.stdenv.mkDerivation rec { - pname = "invoiceplane-${hostName}"; - version = src.version; - src = pkgs.invoiceplane; - - postPatch = '' - # Patch index.php file to load additional config file - substituteInPlace index.php \ - --replace-fail "require __DIR__ . '/vendor/autoload.php';" "require('vendor/autoload.php'); \$dotenv = Dotenv\Dotenv::createImmutable(__DIR__, 'extraConfig.php'); \$dotenv->load();"; - ''; - - installPhase = '' - mkdir -p $out - cp -r * $out/ - - # symlink uploads and log directories - rm -r $out/uploads $out/application/logs $out/vendor/mpdf/mpdf/tmp - ln -sf ${cfg.stateDir}/uploads $out/ - ln -sf ${cfg.stateDir}/logs $out/application/ - ln -sf ${cfg.stateDir}/tmp $out/vendor/mpdf/mpdf/ - - # symlink the InvoicePlane config - ln -s ${cfg.stateDir}/ipconfig.php $out/ipconfig.php - - # symlink the extraConfig file - ln -s ${extraConfig hostName cfg} $out/extraConfig.php - - # symlink additional templates - ${concatMapStringsSep "\n" ( - template: "cp -r ${template}/. $out/application/views/invoice_templates/pdf/" - ) cfg.invoiceTemplates} - ${concatMapStringsSep "\n" ( - template: "cp -r ${template}/. $out/application/views/quote_templates/pdf/" - ) cfg.quoteTemplates} - ''; - }; - - siteOpts = - { lib, name, ... }: - { - options = { - - enable = mkEnableOption "InvoicePlane web application"; - - stateDir = mkOption { - type = types.path; - default = "/var/lib/invoiceplane/${name}"; - description = '' - This directory is used for uploads of attachments and cache. - The directory passed here is automatically created and permissions - adjusted as required. - ''; - }; - - database = { - host = mkOption { - type = types.str; - default = "localhost"; - description = "Database host address."; - }; - - port = mkOption { - type = types.port; - default = 3306; - description = "Database host port."; - }; - - name = mkOption { - type = types.str; - default = "invoiceplane"; - description = "Database name."; - }; - - user = mkOption { - type = types.str; - default = "invoiceplane"; - description = "Database user."; - }; - - passwordFile = mkOption { - type = types.nullOr types.path; - default = null; - example = "/run/keys/invoiceplane-dbpassword"; - description = '' - A file containing the password corresponding to - {option}`database.user`. - ''; - }; - - createLocally = mkOption { - type = types.bool; - default = true; - description = "Create the database and database user locally."; - }; - }; - - invoiceTemplates = mkOption { - type = types.listOf types.path; - default = [ ]; - description = '' - List of path(s) to respective template(s) which are copied from the 'invoice_templates/pdf' directory. - - ::: {.note} - These templates need to be packaged before use, see example. - ::: - ''; - example = literalExpression '' - let - # Let's package an example template - template-vtdirektmarketing = pkgs.stdenv.mkDerivation { - name = "vtdirektmarketing"; - # Download the template from a public repository - src = pkgs.fetchgit { - url = "https://git.project-insanity.org/onny/invoiceplane-vtdirektmarketing.git"; - sha256 = "1hh0q7wzsh8v8x03i82p6qrgbxr4v5fb05xylyrpp975l8axyg2z"; - }; - sourceRoot = "."; - # Installing simply means copying template php file to the output directory - installPhase = "" - mkdir -p $out - cp invoiceplane-vtdirektmarketing/vtdirektmarketing.php $out/ - ""; - }; - # And then pass this package to the template list like this: - in [ template-vtdirektmarketing ] - ''; - }; - - quoteTemplates = mkOption { - type = types.listOf types.path; - default = [ ]; - description = '' - List of path(s) to respective template(s) which are copied from the 'quote_templates/pdf' directory. - - ::: {.note} - These templates need to be packaged before use, see example. - ::: - ''; - example = literalExpression '' - let - # Let's package an example template - template-vtdirektmarketing = pkgs.stdenv.mkDerivation { - name = "vtdirektmarketing"; - # Download the template from a public repository - src = pkgs.fetchgit { - url = "https://git.project-insanity.org/onny/invoiceplane-vtdirektmarketing.git"; - sha256 = "1hh0q7wzsh8v8x03i82p6qrgbxr4v5fb05xylyrpp975l8axyg2z"; - }; - sourceRoot = "."; - # Installing simply means copying template php file to the output directory - installPhase = "" - mkdir -p $out - cp invoiceplane-vtdirektmarketing/vtdirektmarketing.php $out/ - ""; - }; - # And then pass this package to the template list like this: - in [ template-vtdirektmarketing ] - ''; - }; - - poolConfig = mkOption { - type = - with types; - attrsOf (oneOf [ - str - int - bool - ]); - default = { - "pm" = "dynamic"; - "pm.max_children" = 32; - "pm.start_servers" = 2; - "pm.min_spare_servers" = 2; - "pm.max_spare_servers" = 4; - "pm.max_requests" = 500; - }; - description = '' - Options for the InvoicePlane PHP pool. See the documentation on `php-fpm.conf` - for details on configuration directives. - ''; - }; - - settings = mkOption { - type = types.attrsOf types.anything; - default = { }; - description = '' - Structural InvoicePlane configuration. Refer to - - for details and supported values. - ''; - example = literalExpression '' - { - SETUP_COMPLETED = true; - DISABLE_SETUP = true; - IP_URL = "https://invoice.example.com"; - } - ''; - }; - - cron = { - enable = mkOption { - type = types.bool; - default = false; - description = '' - Enable cron service which periodically runs Invoiceplane tasks. - Requires key taken from the administration page. Refer to - - on how to configure it. - ''; - }; - key = mkOption { - type = types.str; - description = "Cron key taken from the administration page."; - }; - }; - - }; - - }; -in -{ - # interface - options = { - services.invoiceplane = mkOption { - type = types.submodule { - - options.sites = mkOption { - type = types.attrsOf (types.submodule siteOpts); - default = { }; - description = "Specification of one or more InvoicePlane sites to serve"; - }; - - options.webserver = mkOption { - type = types.enum [ - "caddy" - "nginx" - ]; - default = "caddy"; - example = "nginx"; - description = '' - Which webserver to use for virtual host management. - ''; - }; - }; - default = { }; - description = "InvoicePlane configuration."; - }; - - }; - - # implementation - config = mkIf (eachSite != { }) (mkMerge [ - { - - assertions = flatten ( - mapAttrsToList (hostName: cfg: [ - { - assertion = cfg.database.createLocally -> cfg.database.user == user; - message = ''services.invoiceplane.sites."${hostName}".database.user must be ${user} if the database is to be automatically provisioned''; - } - { - assertion = cfg.database.createLocally -> cfg.database.passwordFile == null; - message = ''services.invoiceplane.sites."${hostName}".database.passwordFile cannot be specified if services.invoiceplane.sites."${hostName}".database.createLocally is set to true.''; - } - { - assertion = cfg.cron.enable -> cfg.cron.key != null; - message = ''services.invoiceplane.sites."${hostName}".cron.key must be set in order to use cron service.''; - } - ]) eachSite - ); - - services.mysql = mkIf (any (v: v.database.createLocally) (attrValues eachSite)) { - enable = true; - package = mkDefault pkgs.mariadb; - ensureDatabases = mapAttrsToList (hostName: cfg: cfg.database.name) eachSite; - ensureUsers = mapAttrsToList (hostName: cfg: { - name = cfg.database.user; - ensurePermissions = { - "${cfg.database.name}.*" = "ALL PRIVILEGES"; - }; - }) eachSite; - }; - - services.phpfpm = { - phpPackage = pkgs.php81; - pools = mapAttrs' ( - hostName: cfg: - (nameValuePair "invoiceplane-${hostName}" { - inherit user; - group = webserver.group; - settings = { - "listen.owner" = webserver.user; - "listen.group" = webserver.group; - } - // cfg.poolConfig; - }) - ) eachSite; - }; - - } - - { - - systemd.tmpfiles.rules = flatten ( - mapAttrsToList (hostName: cfg: [ - "d ${cfg.stateDir} 0750 ${user} ${webserver.group} - -" - "f ${cfg.stateDir}/ipconfig.php 0750 ${user} ${webserver.group} - -" - "d ${cfg.stateDir}/logs 0750 ${user} ${webserver.group} - -" - "d ${cfg.stateDir}/uploads 0750 ${user} ${webserver.group} - -" - "d ${cfg.stateDir}/uploads/archive 0750 ${user} ${webserver.group} - -" - "d ${cfg.stateDir}/uploads/customer_files 0750 ${user} ${webserver.group} - -" - "d ${cfg.stateDir}/uploads/temp 0750 ${user} ${webserver.group} - -" - "d ${cfg.stateDir}/uploads/temp/mpdf 0750 ${user} ${webserver.group} - -" - "d ${cfg.stateDir}/tmp 0750 ${user} ${webserver.group} - -" - ]) eachSite - ); - - systemd.services.invoiceplane-config = { - serviceConfig.Type = "oneshot"; - script = concatStrings ( - mapAttrsToList (hostName: cfg: '' - mkdir -p ${cfg.stateDir}/logs \ - ${cfg.stateDir}/uploads - if ! grep -q IP_URL "${cfg.stateDir}/ipconfig.php"; then - cp "${invoiceplane-config hostName cfg}" "${cfg.stateDir}/ipconfig.php" - fi - if ! grep -q 'php exit' "${cfg.stateDir}/ipconfig.php"; then - sed -i "1i # " "${cfg.stateDir}/ipconfig.php" - fi - '') eachSite - ); - wantedBy = [ "multi-user.target" ]; - }; - - users.users.${user} = { - group = webserver.group; - isSystemUser = true; - }; - - } - { - - # Cron service implementation - - systemd.timers = mapAttrs' ( - hostName: cfg: - (nameValuePair "invoiceplane-cron-${hostName}" ( - mkIf cfg.cron.enable { - wantedBy = [ "timers.target" ]; - timerConfig = { - OnBootSec = "5m"; - OnUnitActiveSec = "5m"; - Unit = "invoiceplane-cron-${hostName}.service"; - }; - } - )) - ) eachSite; - - systemd.services = mapAttrs' ( - hostName: cfg: - (nameValuePair "invoiceplane-cron-${hostName}" ( - mkIf cfg.cron.enable { - serviceConfig = { - Type = "oneshot"; - User = user; - ExecStart = "${pkgs.curl}/bin/curl --header 'Host: ${hostName}' http://localhost/invoices/cron/recur/${cfg.cron.key}"; - }; - } - )) - ) eachSite; - - } - - (mkIf (cfg.webserver == "caddy") { - services.caddy = { - enable = true; - virtualHosts = mapAttrs' ( - hostName: cfg: - (nameValuePair "http://${hostName}" { - extraConfig = '' - root * ${pkg hostName cfg} - file_server - php_fastcgi unix/${config.services.phpfpm.pools."invoiceplane-${hostName}".socket} - ''; - }) - ) eachSite; - }; - }) - - (mkIf (cfg.webserver == "nginx") { - services.nginx = { - enable = true; - virtualHosts = mapAttrs' ( - hostName: cfg: - (nameValuePair hostName { - root = pkg hostName cfg; - extraConfig = '' - index index.php index.html index.htm; - - if (!-e $request_filename){ - rewrite ^(.*)$ /index.php break; - } - ''; - - locations = { - "/setup".extraConfig = '' - rewrite ^(.*)$ http://${hostName}/ redirect; - ''; - - "~ .php$" = { - extraConfig = '' - fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_pass unix:${config.services.phpfpm.pools."invoiceplane-${hostName}".socket}; - include ${config.services.nginx.package}/conf/fastcgi_params; - include ${config.services.nginx.package}/conf/fastcgi.conf; - ''; - }; - }; - }) - ) eachSite; - }; - }) - - ]); -} diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 98cb57a02c3a..bad387db0808 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -745,7 +745,6 @@ in installer-systemd-stage-1 = handleTest ./installer-systemd-stage-1.nix { }; intune = runTest ./intune.nix; invidious = runTest ./invidious.nix; - invoiceplane = runTest ./invoiceplane.nix; iodine = runTest ./iodine.nix; iosched = runTest ./iosched.nix; ipget = runTest ./ipget.nix; diff --git a/nixos/tests/invoiceplane.nix b/nixos/tests/invoiceplane.nix deleted file mode 100644 index 4ead3ef94ee7..000000000000 --- a/nixos/tests/invoiceplane.nix +++ /dev/null @@ -1,116 +0,0 @@ -{ pkgs, ... }: - -{ - name = "invoiceplane"; - meta = with pkgs.lib.maintainers; { - maintainers = [ - onny - ]; - }; - - nodes = { - invoiceplane_caddy = - { ... }: - { - services.invoiceplane.webserver = "caddy"; - services.invoiceplane.sites = { - "site1.local" = { - database.name = "invoiceplane1"; - database.createLocally = true; - enable = true; - }; - "site2.local" = { - database.name = "invoiceplane2"; - database.createLocally = true; - enable = true; - }; - }; - - networking.firewall.allowedTCPPorts = [ 80 ]; - networking.hosts."127.0.0.1" = [ - "site1.local" - "site2.local" - ]; - }; - - invoiceplane_nginx = - { ... }: - { - services.invoiceplane.webserver = "nginx"; - services.invoiceplane.sites = { - "site1.local" = { - database.name = "invoiceplane1"; - database.createLocally = true; - enable = true; - }; - "site2.local" = { - database.name = "invoiceplane2"; - database.createLocally = true; - enable = true; - }; - }; - - networking.firewall.allowedTCPPorts = [ 80 ]; - networking.hosts."127.0.0.1" = [ - "site1.local" - "site2.local" - ]; - }; - }; - - testScript = '' - start_all() - - invoiceplane_caddy.wait_for_unit("caddy") - invoiceplane_nginx.wait_for_unit("nginx") - - site_names = ["site1.local", "site2.local"] - - machines = [invoiceplane_caddy, invoiceplane_nginx] - - for machine in machines: - machine.wait_for_open_port(80) - machine.wait_for_open_port(3306) - - for site_name in site_names: - machine.wait_for_unit(f"phpfpm-invoiceplane-{site_name}") - - with subtest("Website returns welcome screen"): - assert "Please install InvoicePlane" in machine.succeed(f"curl -L {site_name}") - - with subtest("Finish InvoicePlane setup"): - machine.succeed( - f"curl -sSfL --cookie-jar cjar {site_name}/setup/language" - ) - csrf_token = machine.succeed( - "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'" - ) - machine.succeed( - f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&ip_lang=english&btn_continue=Continue' {site_name}/setup/language" - ) - csrf_token = machine.succeed( - "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'" - ) - machine.succeed( - f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/prerequisites" - ) - csrf_token = machine.succeed( - "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'" - ) - machine.succeed( - f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/configure_database" - ) - csrf_token = machine.succeed( - "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'" - ) - machine.succeed( - f"curl -sSfl --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/install_tables" - ) - csrf_token = machine.succeed( - "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'" - ) - machine.succeed( - f"curl -sSfl --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/setup/upgrade_tables" - ) - ''; -} diff --git a/pkgs/by-name/in/invoiceplane/fix-yarn-lock.patch b/pkgs/by-name/in/invoiceplane/fix-yarn-lock.patch deleted file mode 100644 index 8398ad956450..000000000000 --- a/pkgs/by-name/in/invoiceplane/fix-yarn-lock.patch +++ /dev/null @@ -1,651 +0,0 @@ -diff --git a/yarn.lock b/yarn.lock -index 691942c1..6d3bd8ce 100644 ---- a/yarn.lock -+++ b/yarn.lock -@@ -2,11 +2,71 @@ - # yarn lockfile v1 - - -+"@parcel/watcher-android-arm64@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" -+ integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== -+ -+"@parcel/watcher-darwin-arm64@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67" -+ integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== -+ -+"@parcel/watcher-darwin-x64@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8" -+ integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== -+ -+"@parcel/watcher-freebsd-x64@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b" -+ integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== -+ -+"@parcel/watcher-linux-arm-glibc@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1" -+ integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== -+ -+"@parcel/watcher-linux-arm-musl@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e" -+ integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== -+ -+"@parcel/watcher-linux-arm64-glibc@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30" -+ integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== -+ -+"@parcel/watcher-linux-arm64-musl@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2" -+ integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== -+ - "@parcel/watcher-linux-x64-glibc@2.5.1": - version "2.5.1" - resolved "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz" - integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== - -+"@parcel/watcher-linux-x64-musl@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee" -+ integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== -+ -+"@parcel/watcher-win32-arm64@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243" -+ integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== -+ -+"@parcel/watcher-win32-ia32@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6" -+ integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== -+ -+"@parcel/watcher-win32-x64@2.5.1": -+ version "2.5.1" -+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947" -+ integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA== -+ - "@parcel/watcher@^2.4.1": - version "2.5.1" - resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz" -@@ -105,7 +165,9 @@ async@^2.6.0: - lodash "^4.17.14" - - async@^3.2.3, async@~3.2.0: -- version "3.2.5" -+ version "3.2.6" -+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" -+ integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== - - autoprefixer@9.8: - version "9.8.8" -@@ -155,33 +217,48 @@ brace-expansion@^1.1.7: - balanced-match "^1.0.0" - concat-map "0.0.1" - --braces@^3.0.2: -- version "3.0.2" -+braces@^3.0.3: -+ version "3.0.3" -+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" -+ integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: -- fill-range "^7.0.1" -+ fill-range "^7.1.1" - --browserslist@^4.12.0, "browserslist@>= 4.21.0": -- version "4.22.1" -+browserslist@^4.12.0: -+ version "4.25.1" -+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" -+ integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== - dependencies: -- caniuse-lite "^1.0.30001541" -- electron-to-chromium "^1.4.535" -- node-releases "^2.0.13" -- update-browserslist-db "^1.0.13" -+ caniuse-lite "^1.0.30001726" -+ electron-to-chromium "^1.5.173" -+ node-releases "^2.0.19" -+ update-browserslist-db "^1.1.3" - - bytes@1: - version "1.0.0" - resolved "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz" - integrity sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ== - --call-bind@^1.0.0: -- version "1.0.5" -+call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: -+ version "1.0.2" -+ resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" -+ integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: -+ es-errors "^1.3.0" - function-bind "^1.1.2" -- get-intrinsic "^1.2.1" -- set-function-length "^1.1.1" - --caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001541: -- version "1.0.30001561" -+call-bound@^1.0.2: -+ version "1.0.4" -+ resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" -+ integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== -+ dependencies: -+ call-bind-apply-helpers "^1.0.2" -+ get-intrinsic "^1.3.0" -+ -+caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001726: -+ version "1.0.30001731" -+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001731.tgz#277c07416ea4613ec564e5b0ffb47e7b60f32e2f" -+ integrity sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg== - - chalk@^1.1.1: - version "1.1.3" -@@ -241,16 +318,16 @@ color-convert@^2.0.1: - dependencies: - color-name "~1.1.4" - --color-name@~1.1.4: -- version "1.1.4" -- resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" -- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -- - color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -+color-name@~1.1.4: -+ version "1.1.4" -+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" -+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -+ - colors@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" -@@ -278,13 +355,6 @@ debug@^3.1.0: - dependencies: - ms "^2.1.1" - --define-data-property@^1.1.1: -- version "1.1.1" -- dependencies: -- get-intrinsic "^1.2.1" -- gopd "^1.0.1" -- has-property-descriptors "^1.0.0" -- - delegate@^3.1.2: - version "3.2.0" - resolved "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz" -@@ -310,13 +380,24 @@ dropzone@5.9: - resolved "https://registry.npmjs.org/dropzone/-/dropzone-5.9.3.tgz" - integrity sha512-Azk8kD/2/nJIuVPK+zQ9sjKMRIpRvNyqn9XwbBHNq+iNuSccbJS6hwm1Woy0pMST0erSo0u4j+KJaodndDk4vA== - -+dunder-proto@^1.0.1: -+ version "1.0.1" -+ resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" -+ integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== -+ dependencies: -+ call-bind-apply-helpers "^1.0.1" -+ es-errors "^1.3.0" -+ gopd "^1.2.0" -+ - duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - --electron-to-chromium@^1.4.535: -- version "1.4.576" -+electron-to-chromium@^1.5.173: -+ version "1.5.198" -+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.198.tgz#ac12b539ac1bb3dece1a4cd2d8882d0349c71c55" -+ integrity sha512-G5COfnp3w+ydVu80yprgWSfmfQaYRh9DOxfhAxstLyetKaLyl55QrNjx8C38Pc/C+RaDmb1M0Lk8wPEMQ+bGgQ== - - error@^7.0.0: - version "7.2.1" -@@ -325,8 +406,27 @@ error@^7.0.0: - dependencies: - string-template "~0.2.1" - --escalade@^3.1.1: -- version "3.1.1" -+es-define-property@^1.0.1: -+ version "1.0.1" -+ resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" -+ integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== -+ -+es-errors@^1.3.0: -+ version "1.3.0" -+ resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" -+ integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -+ -+es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: -+ version "1.1.1" -+ resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" -+ integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== -+ dependencies: -+ es-errors "^1.3.0" -+ -+escalade@^3.2.0: -+ version "3.2.0" -+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" -+ integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - - escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" -@@ -379,8 +479,10 @@ file-sync-cmp@^0.1.0: - resolved "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz" - integrity sha512-0k45oWBokCqh2MOexeYKpyqmGKG+8mQ2Wd8iawx+uWd/weWJQAZ6SoPybagdCI4xFisag8iAR77WPm4h3pTfxA== - --fill-range@^7.0.1: -- version "7.0.1" -+fill-range@^7.1.1: -+ version "7.1.1" -+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" -+ integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -@@ -461,13 +563,29 @@ gaze@^1.1.0: - dependencies: - globule "^1.0.0" - --get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: -- version "1.2.2" -+get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: -+ version "1.3.0" -+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" -+ integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: -+ call-bind-apply-helpers "^1.0.2" -+ es-define-property "^1.0.1" -+ es-errors "^1.3.0" -+ es-object-atoms "^1.1.1" - function-bind "^1.1.2" -- has-proto "^1.0.1" -- has-symbols "^1.0.3" -- hasown "^2.0.0" -+ get-proto "^1.0.1" -+ gopd "^1.2.0" -+ has-symbols "^1.1.0" -+ hasown "^2.0.2" -+ math-intrinsics "^1.1.0" -+ -+get-proto@^1.0.1: -+ version "1.0.1" -+ resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" -+ integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== -+ dependencies: -+ dunder-proto "^1.0.1" -+ es-object-atoms "^1.0.0" - - getobject@~1.0.0: - version "1.0.2" -@@ -486,19 +604,7 @@ glob@^7.1.3: - once "^1.3.0" - path-is-absolute "^1.0.0" - --glob@~7.1.1: -- version "7.1.7" -- resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" -- integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== -- dependencies: -- fs.realpath "^1.0.0" -- inflight "^1.0.4" -- inherits "2" -- minimatch "^3.0.4" -- once "^1.3.0" -- path-is-absolute "^1.0.0" -- --glob@~7.1.6: -+glob@~7.1.1, glob@~7.1.6: - version "7.1.7" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== -@@ -546,10 +652,10 @@ good-listener@^1.2.2: - dependencies: - delegate "^3.1.2" - --gopd@^1.0.1: -- version "1.0.1" -- dependencies: -- get-intrinsic "^1.1.3" -+gopd@^1.2.0: -+ version "1.2.0" -+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" -+ integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - - grunt-cli@~1.4.3: - version "1.4.3" -@@ -656,7 +762,7 @@ grunt-sass@3.1: - resolved "https://registry.npmjs.org/grunt-sass/-/grunt-sass-3.1.0.tgz" - integrity sha512-90s27H7FoCDcA8C8+R0GwC+ntYD3lG6S/jqcavWm3bn9RiJTmSfOvfbFa1PXx4NbBWuiGQMLfQTj/JvvqT5w6A== - --grunt@>=0.4.5, grunt@>=1, grunt@>=1.4.1, grunt@1.6: -+grunt@1.6: - version "1.6.1" - resolved "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz" - integrity sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA== -@@ -700,21 +806,15 @@ has-flag@^4.0.0: - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - --has-property-descriptors@^1.0.0: -- version "1.0.1" -- dependencies: -- get-intrinsic "^1.2.2" -- --has-proto@^1.0.1: -- version "1.0.1" -- --has-symbols@^1.0.3: -- version "1.0.3" -- resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" -- integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -+has-symbols@^1.1.0: -+ version "1.1.0" -+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" -+ integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - --hasown@^2.0.0: -- version "2.0.0" -+hasown@^2.0.2: -+ version "2.0.2" -+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" -+ integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -@@ -784,9 +884,11 @@ is-absolute@^1.0.0: - is-windows "^1.0.1" - - is-core-module@^2.13.0: -- version "2.13.1" -+ version "2.16.1" -+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" -+ integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: -- hasown "^2.0.0" -+ hasown "^2.0.2" - - is-extglob@^2.1.1: - version "2.1.1" -@@ -848,7 +950,7 @@ jquery-ui@1.14: - dependencies: - jquery ">=1.12.0 <5.0.0" - --"jquery@>=1.12.0 <5.0.0", "jquery@>=3.4.0 <4.0.0", jquery@3.7: -+jquery@3.7, "jquery@>=1.12.0 <5.0.0", "jquery@>=3.4.0 <4.0.0": - version "3.7.1" - resolved "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz" - integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== -@@ -925,6 +1027,11 @@ map-cache@^0.2.0: - resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -+math-intrinsics@^1.1.0: -+ version "1.1.0" -+ resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" -+ integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== -+ - maxmin@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/maxmin/-/maxmin-3.0.0.tgz" -@@ -936,9 +1043,11 @@ maxmin@^3.0.0: - pretty-bytes "^5.3.0" - - micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: -- version "4.0.5" -+ version "4.0.8" -+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" -+ integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: -- braces "^3.0.2" -+ braces "^3.0.3" - picomatch "^2.3.1" - - minimatch@^3.0.4, minimatch@^3.1.1: -@@ -948,14 +1057,7 @@ minimatch@^3.0.4, minimatch@^3.1.1: - dependencies: - brace-expansion "^1.1.7" - --minimatch@~3.0.2: -- version "3.0.8" -- resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz" -- integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== -- dependencies: -- brace-expansion "^1.1.7" -- --minimatch@~3.0.4: -+minimatch@~3.0.2, minimatch@~3.0.4: - version "3.0.8" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz" - integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== -@@ -979,15 +1081,19 @@ multimatch@^4.0.0: - minimatch "^3.0.4" - - nanoid@^3.3.7: -- version "3.3.7" -+ version "3.3.11" -+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" -+ integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== - - node-addon-api@^7.0.0: - version "7.1.1" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz" - integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== - --node-releases@^2.0.13: -- version "2.0.13" -+node-releases@^2.0.19: -+ version "2.0.19" -+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" -+ integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== - - nopt@~3.0.6: - version "3.0.6" -@@ -1019,8 +1125,10 @@ object-assign@^4.1.0: - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - --object-inspect@^1.9.0: -- version "1.13.1" -+object-inspect@^1.13.3: -+ version "1.13.4" -+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" -+ integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== - - object.defaults@^1.1.0: - version "1.1.0" -@@ -1137,12 +1245,9 @@ picocolors@^0.2.1: - resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - --picocolors@^1.0.0: -- version "1.0.0" -- --picocolors@^1.1.0: -+picocolors@^1.1.1: - version "1.1.1" -- resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" -+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - - picomatch@^2.3.1: -@@ -1167,6 +1272,15 @@ postcss-value-parser@^4.1.0: - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -+postcss@8.4: -+ version "8.4.49" -+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" -+ integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== -+ dependencies: -+ nanoid "^3.3.7" -+ picocolors "^1.1.1" -+ source-map-js "^1.2.1" -+ - postcss@^6.0.11: - version "6.0.23" - resolved "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz" -@@ -1184,22 +1298,17 @@ postcss@^7.0.32: - picocolors "^0.2.1" - source-map "^0.6.1" - --postcss@8.4: -- version "8.4.47" -- dependencies: -- nanoid "^3.3.7" -- picocolors "^1.1.0" -- source-map-js "^1.2.1" -- - pretty-bytes@^5.3.0: - version "5.6.0" - resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - - qs@^6.4.0: -- version "6.11.2" -+ version "6.14.0" -+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" -+ integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== - dependencies: -- side-channel "^1.0.4" -+ side-channel "^1.1.0" - - raw-body@~1.1.0: - version "1.1.7" -@@ -1283,32 +1392,57 @@ sass@^1.89.2: - optionalDependencies: - "@parcel/watcher" "^2.4.1" - -+select2@4.1.0-rc.0: -+ version "4.1.0-rc.0" -+ resolved "https://registry.npmjs.org/select2/-/select2-4.1.0-rc.0.tgz" -+ integrity sha512-Hr9TdhyHCZUtwznEH2CBf7967mEM0idtJ5nMtjvk3Up5tPukOLXbHUNmh10oRfeNIhj+3GD3niu+g6sVK+gK0A== -+ - select@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/select/-/select-1.1.2.tgz" - integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== - --select2@4.1.0-rc.0: -- version "4.1.0-rc.0" -- resolved "https://registry.npmjs.org/select2/-/select2-4.1.0-rc.0.tgz" -- integrity sha512-Hr9TdhyHCZUtwznEH2CBf7967mEM0idtJ5nMtjvk3Up5tPukOLXbHUNmh10oRfeNIhj+3GD3niu+g6sVK+gK0A== -+side-channel-list@^1.0.0: -+ version "1.0.0" -+ resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" -+ integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== -+ dependencies: -+ es-errors "^1.3.0" -+ object-inspect "^1.13.3" - --set-function-length@^1.1.1: -- version "1.1.1" -+side-channel-map@^1.0.1: -+ version "1.0.1" -+ resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" -+ integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== - dependencies: -- define-data-property "^1.1.1" -- get-intrinsic "^1.2.1" -- gopd "^1.0.1" -- has-property-descriptors "^1.0.0" -+ call-bound "^1.0.2" -+ es-errors "^1.3.0" -+ get-intrinsic "^1.2.5" -+ object-inspect "^1.13.3" - --side-channel@^1.0.4: -- version "1.0.4" -+side-channel-weakmap@^1.0.2: -+ version "1.0.2" -+ resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" -+ integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== -+ dependencies: -+ call-bound "^1.0.2" -+ es-errors "^1.3.0" -+ get-intrinsic "^1.2.5" -+ object-inspect "^1.13.3" -+ side-channel-map "^1.0.1" -+ -+side-channel@^1.1.0: -+ version "1.1.0" -+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" -+ integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== - dependencies: -- call-bind "^1.0.0" -- get-intrinsic "^1.0.2" -- object-inspect "^1.9.0" -+ es-errors "^1.3.0" -+ object-inspect "^1.13.3" -+ side-channel-list "^1.0.0" -+ side-channel-map "^1.0.1" -+ side-channel-weakmap "^1.0.2" - --source-map-js@^1.2.1, "source-map-js@>=0.6.2 <2.0.0": -+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== -@@ -1333,16 +1467,16 @@ sprintf-js@~1.0.2: - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - --string_decoder@0.10: -- version "0.10.31" -- resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" -- integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== -- - string-template@~0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz" - integrity sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw== - -+string_decoder@0.10: -+ version "0.10.31" -+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" -+ integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== -+ - strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" -@@ -1399,7 +1533,9 @@ to-regex-range@^5.0.1: - is-number "^7.0.0" - - uglify-js@^3.16.1: -- version "3.17.4" -+ version "3.19.3" -+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" -+ integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== - - unc-path-regex@^0.1.2: - version "0.1.2" -@@ -1414,11 +1550,13 @@ underscore.string@~3.3.5: - sprintf-js "^1.1.1" - util-deprecate "^1.0.2" - --update-browserslist-db@^1.0.13: -- version "1.0.13" -+update-browserslist-db@^1.1.3: -+ version "1.1.3" -+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" -+ integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== - dependencies: -- escalade "^3.1.1" -- picocolors "^1.0.0" -+ escalade "^3.2.0" -+ picocolors "^1.1.1" - - uri-path@^1.0.0: - version "1.0.0" diff --git a/pkgs/by-name/in/invoiceplane/fix_composer_validation.patch b/pkgs/by-name/in/invoiceplane/fix_composer_validation.patch deleted file mode 100644 index 0a610bead28d..000000000000 --- a/pkgs/by-name/in/invoiceplane/fix_composer_validation.patch +++ /dev/null @@ -1,34 +0,0 @@ -From e404c835ae6681287f0d0ba005e43732becf8e9e Mon Sep 17 00:00:00 2001 -From: Jonas Heinrich -Date: Sun, 17 Aug 2025 09:54:41 +0200 -Subject: [PATCH] composer.json omit version string - ---- - composer.json | 1 - - composer.lock | 2 +- - 2 files changed, 1 insertion(+), 2 deletions(-) - -diff --git a/composer.json b/composer.json -index 4ae0b32b7..241d59be9 100644 ---- a/composer.json -+++ b/composer.json -@@ -1,6 +1,5 @@ - { - "name": "invoiceplane/invoiceplane", -- "version": "1.6.3-rc1", - "description": "InvoicePlane is a self-hosted open source application for managing your invoices, clients and payments", - "homepage": "https://invoiceplane.com", - "license": "MIT", -diff --git a/composer.lock b/composer.lock -index 46fae450e..cf4aa24c1 100644 ---- a/composer.lock -+++ b/composer.lock -@@ -4,7 +4,7 @@ - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], -- "content-hash": "6920f42f5773c5e01f9f107ebcedb891", -+ "content-hash": "16ec29d674456761958ca1c78513c3c5", - "packages": [ - { - "name": "bacon/bacon-qr-code", diff --git a/pkgs/by-name/in/invoiceplane/package.nix b/pkgs/by-name/in/invoiceplane/package.nix deleted file mode 100644 index 35f54a6775bb..000000000000 --- a/pkgs/by-name/in/invoiceplane/package.nix +++ /dev/null @@ -1,85 +0,0 @@ -{ - lib, - fetchFromGitHub, - nixosTests, - fetchYarnDeps, - applyPatches, - php, - yarnConfigHook, - yarnBuildHook, - yarnInstallHook, - nodePackages, - fetchzip, -}: -let - version = "1.6.3"; - # Fetch release tarball which contains language files - # https://github.com/InvoicePlane/InvoicePlane/issues/1170 - languages = fetchzip { - url = "https://github.com/InvoicePlane/InvoicePlane/releases/download/v${version}/v${version}.zip"; - hash = "sha256-MuqxbkayW3GeiaorxfZSJtlwCWvnIF2ED/UUqahyoIQ="; - }; -in -php.buildComposerProject2 (finalAttrs: { - pname = "invoiceplane"; - inherit version; - - src = applyPatches { - src = fetchFromGitHub { - owner = "InvoicePlane"; - repo = "InvoicePlane"; - tag = "v${version}"; - hash = "sha256-XNjdFWP5AEulbPZcMDXYSdDhaLWlgu3nnCSFnjUjGpk="; - }; - patches = [ - # Fix composer.json validation - # See https://github.com/InvoicePlane/InvoicePlane/pull/1306 - ./fix_composer_validation.patch - ]; - }; - - patches = [ - # yarn.lock missing some resolved attributes and fails - ./fix-yarn-lock.patch - ]; - - vendorHash = "sha256-UCYAnECuIbIYg1T4I8I9maXVKXJc1zkyauBuIy5frTY="; - - nativeBuildInputs = [ - yarnConfigHook - yarnBuildHook - yarnInstallHook - # Needed for executing package.json scripts - nodePackages.grunt-cli - ]; - - offlineCache = fetchYarnDeps { - inherit (finalAttrs) src patches; - hash = "sha256-0fPdxOIeQBTulPUxHtaQylm4jevQTONSN1bChqbGbGs="; - }; - - postBuild = '' - grunt build - ''; - - # Cleanup and language files - postInstall = '' - chmod -R u+w $out/share - mv $out/share/php/invoiceplane/* $out/ - cp -r ${languages}/application/language $out/application/ - rm -r $out/{composer.json,composer.lock,CONTRIBUTING.md,docker-compose.yml,Gruntfile.js,package.json,node_modules,yarn.lock,share} - ''; - - passthru.tests = { - inherit (nixosTests) invoiceplane; - }; - - meta = { - description = "Self-hosted open source application for managing your invoices, clients and payments"; - changelog = "https://github.com/InvoicePlane/InvoicePlane/releases/tag/v${version}"; - homepage = "https://www.invoiceplane.com"; - license = lib.licenses.mit; - platforms = lib.platforms.all; - maintainers = with lib.maintainers; [ onny ]; - }; -}) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 39bbd351dbe5..78adbf0250be 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1201,6 +1201,7 @@ mapAliases { inotifyTools = inotify-tools; # Added 2015-09-01 insync-emblem-icons = throw "'insync-emblem-icons' has been removed, use 'insync-nautilus' instead"; # Added 2025-05-14 inter-ui = throw "'inter-ui' has been renamed to/replaced by 'inter'"; # Converted to throw 2024-10-17 + invoiceplane = throw "'invoiceplane' doesn't support non-EOL PHP versions"; # Added 2025-10-03 ioccheck = throw "ioccheck was dropped since it was unmaintained."; # Added 2025-07-06 ipfs = kubo; # Added 2022-09-27 ipfs-migrator-all-fs-repo-migrations = kubo-fs-repo-migrations; # Added 2022-09-27 From 2cb89c0aeffc13c550bbf023a5c5bed2f7570b7e Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 3 Oct 2025 23:24:47 +0200 Subject: [PATCH 4/8] postfixadmin: remove, doesn't support php >8.1 In newer versions it does, but there's zero effort to package it by the maintainer and it's not the job of the PHP team to pick that up. --- .../manual/release-notes/rl-2111.section.md | 2 +- nixos/modules/module-list.nix | 1 - nixos/modules/rename.nix | 4 + nixos/modules/services/mail/postfixadmin.nix | 215 ------------------ nixos/tests/all-tests.nix | 1 - nixos/tests/postfixadmin.nix | 34 --- pkgs/by-name/po/postfixadmin/package.nix | 40 ---- pkgs/top-level/aliases.nix | 1 + 8 files changed, 6 insertions(+), 292 deletions(-) delete mode 100644 nixos/modules/services/mail/postfixadmin.nix delete mode 100644 nixos/tests/postfixadmin.nix delete mode 100644 pkgs/by-name/po/postfixadmin/package.nix diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index aefc50cf9063..bf39afd98627 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -127,7 +127,7 @@ In addition to numerous new and upgraded packages, this release has the followin - [sx](https://github.com/earnestly/sx), a simple alternative to both xinit and startx for starting a Xorg server. Available as [services.xserver.displayManager.sx](#opt-services.xserver.displayManager.sx.enable) -- [postfixadmin](https://postfixadmin.sourceforge.io/), a web based virtual user administration interface for Postfix mail servers. Available as [postfixadmin](#opt-services.postfixadmin.enable). +- [postfixadmin](https://postfixadmin.sourceforge.io/), a web based virtual user administration interface for Postfix mail servers. - [prowlarr](https://wiki.servarr.com/prowlarr), an indexer manager/proxy built on the popular arr .net/reactjs base stack [services.prowlarr](#opt-services.prowlarr.enable). diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 2d714329c313..3fcad7ff745d 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -752,7 +752,6 @@ ./services/mail/pfix-srsd.nix ./services/mail/postfix-tlspol.nix ./services/mail/postfix.nix - ./services/mail/postfixadmin.nix ./services/mail/postgrey.nix ./services/mail/postsrsd.nix ./services/mail/protonmail-bridge.nix diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index 5f6913975f5b..e67c2a3726a7 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -398,6 +398,10 @@ in services.invoiceplane has been removed since the service only supported PHP 8.1 which is EOL and removed from nixpkgs. '') + (mkRemovedOptionModule [ "services" "postfixadmin" ] '' + services.postfixadmin has been removed since it was unmaintained in nixpkgs and the version + available only supported PHP 8.1 which is EOL. + '') # Do NOT add any option renames here, see top of the file ]; } diff --git a/nixos/modules/services/mail/postfixadmin.nix b/nixos/modules/services/mail/postfixadmin.nix deleted file mode 100644 index bb3a6c81658d..000000000000 --- a/nixos/modules/services/mail/postfixadmin.nix +++ /dev/null @@ -1,215 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: -let - cfg = config.services.postfixadmin; - fpm = config.services.phpfpm.pools.postfixadmin; - localDB = cfg.database.host == "localhost"; - pgsql = config.services.postgresql; - user = if localDB then cfg.database.username else "nginx"; -in -{ - options.services.postfixadmin = { - enable = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - Whether to enable postfixadmin. - - Also enables nginx virtual host management. - Further nginx configuration can be done by adapting `services.nginx.virtualHosts.`. - See [](#opt-services.nginx.virtualHosts) for further information. - ''; - }; - - hostName = lib.mkOption { - type = lib.types.str; - example = "postfixadmin.example.com"; - description = "Hostname to use for the nginx vhost"; - }; - - adminEmail = lib.mkOption { - type = lib.types.str; - example = "postmaster@example.com"; - description = '' - Defines the Site Admin's email address. - This will be used to send emails from to create mailboxes and - from Send Email / Broadcast message pages. - ''; - }; - - setupPasswordFile = lib.mkOption { - type = lib.types.path; - description = '' - Password file for the admin. - Generate with `php -r "echo password_hash('some password here', PASSWORD_DEFAULT);"` - ''; - }; - - database = { - username = lib.mkOption { - type = lib.types.str; - default = "postfixadmin"; - description = '' - Username for the postgresql connection. - If `database.host` is set to `localhost`, a unix user and group of the same name will be created as well. - ''; - }; - - host = lib.mkOption { - type = lib.types.str; - default = "localhost"; - description = '' - Host of the postgresql server. If this is not set to - `localhost`, you have to create the - postgresql user and database yourself, with appropriate - permissions. - ''; - }; - - passwordFile = lib.mkOption { - type = lib.types.path; - description = "Password file for the postgresql connection. Must be readable by user `nginx`."; - }; - - dbname = lib.mkOption { - type = lib.types.str; - default = "postfixadmin"; - description = "Name of the postgresql database"; - }; - }; - - extraConfig = lib.mkOption { - type = lib.types.lines; - default = ""; - description = "Extra configuration for the postfixadmin instance, see postfixadmin's config.inc.php for available options."; - }; - }; - - config = lib.mkIf cfg.enable { - environment.etc."postfixadmin/config.local.php".text = '' - 8.1"; # Added 2025-10-03 presage = throw "presage has been removed, as it has been unmaintained since 2018"; # Added 2024-03-24 preserves-nim = throw "'preserves-nim' has been removed due to a hostile upstream moving tags and breaking src FODs"; # Added 2025-09-01 projectm = throw "Since version 4, 'projectm' has been split into 'libprojectm' (the library) and 'projectm-sdl-cpp' (the SDL2 frontend). ProjectM 3 has been moved to 'projectm_3'"; # Added 2024-11-10 From b95a14f2ee812d128f0a66ebd2bb8caaa2d9a4b1 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 3 Oct 2025 23:29:49 +0200 Subject: [PATCH 5/8] nixos/limesurvey: use php83 This is what the version we currently have is packaged against[1]. No actual maintenance is done, this package will need a new person feeling responsible for this. [1] https://github.com/LimeSurvey/LimeSurvey/blob/6.10.2%2B250127/.github/workflows/main.yml#L20 --- nixos/modules/services/web-apps/limesurvey.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/web-apps/limesurvey.nix b/nixos/modules/services/web-apps/limesurvey.nix index 8d8dd2beac19..f33191419768 100644 --- a/nixos/modules/services/web-apps/limesurvey.nix +++ b/nixos/modules/services/web-apps/limesurvey.nix @@ -327,7 +327,7 @@ in services.phpfpm.pools.limesurvey = { inherit user group; - phpPackage = pkgs.php81; + phpPackage = pkgs.php83; phpEnv.DBENGINE = "${cfg.database.dbEngine}"; phpEnv.LIMESURVEY_CONFIG = "${limesurveyConfig}"; # App code cannot access credentials directly since the service starts @@ -419,8 +419,8 @@ in environment.LIMESURVEY_CONFIG = limesurveyConfig; script = '' # update or install the database as required - ${pkgs.php81}/bin/php ${cfg.package}/share/limesurvey/application/commands/console.php updatedb || \ - ${pkgs.php81}/bin/php ${cfg.package}/share/limesurvey/application/commands/console.php install admin password admin admin@example.com verbose + ${pkgs.php83}/bin/php ${cfg.package}/share/limesurvey/application/commands/console.php updatedb || \ + ${pkgs.php83}/bin/php ${cfg.package}/share/limesurvey/application/commands/console.php install admin password admin admin@example.com verbose ''; serviceConfig = { User = user; From 4085aba10a9b88a33e40da2040cc84e317929b9e Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 3 Oct 2025 23:34:25 +0200 Subject: [PATCH 6/8] nixos/tests/frp: use php84 --- nixos/tests/frp.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nixos/tests/frp.nix b/nixos/tests/frp.nix index 14db56308edc..11a1ce9a78b2 100644 --- a/nixos/tests/frp.nix +++ b/nixos/tests/frp.nix @@ -49,7 +49,7 @@ index = "index.php index.html"; }; }; - phpPackage = pkgs.php81; + phpPackage = pkgs.php84; enablePHP = true; }; @@ -78,8 +78,8 @@ frps.wait_for_open_port(80) frpc.wait_for_unit("frp.service") response = frpc.succeed("curl -fvvv -s http://127.0.0.1/") - assert "PHP Version ${pkgs.php81.version}" in response, "PHP version not detected" + assert "PHP Version ${pkgs.php84.version}" in response, "PHP version not detected" response = frpc.succeed("curl -fvvv -s http://10.0.0.1/") - assert "PHP Version ${pkgs.php81.version}" in response, "PHP version not detected" + assert "PHP Version ${pkgs.php84.version}" in response, "PHP version not detected" ''; } From 2241dbad8ac4ed38bb4420c5185d2629445da7a9 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 3 Oct 2025 23:46:46 +0200 Subject: [PATCH 7/8] unit: drop php81 support --- nixos/tests/web-servers/unit-php.nix | 10 +++++----- pkgs/by-name/un/unit/package.nix | 9 ++------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/nixos/tests/web-servers/unit-php.nix b/nixos/tests/web-servers/unit-php.nix index ae7503ad0ffa..b1e70c1faa80 100644 --- a/nixos/tests/web-servers/unit-php.nix +++ b/nixos/tests/web-servers/unit-php.nix @@ -18,15 +18,15 @@ in services.unit = { enable = true; config = pkgs.lib.strings.toJSON { - listeners."*:9081".application = "php_81"; - applications.php_81 = { - type = "php 8.1"; + listeners."*:9081".application = "php_82"; + applications.php_82 = { + type = "php 8.2"; processes = 1; user = "testuser"; group = "testgroup"; root = "${testdir}/www"; index = "info.php"; - options.file = "${pkgs.unit.usedPhp81}/lib/php.ini"; + options.file = "${pkgs.unit.usedPhp82}/lib/php.ini"; }; }; }; @@ -49,7 +49,7 @@ in # Check so we get an evaluated PHP back response = machine.succeed("curl -f -vvv -s http://127.0.0.1:9081/") - assert "PHP Version ${pkgs.unit.usedPhp81.version}" in response, "PHP version not detected" + assert "PHP Version ${pkgs.unit.usedPhp82.version}" in response, "PHP version not detected" # Check so we have database and some other extensions loaded for ext in ["json", "opcache", "pdo_mysql", "pdo_pgsql", "pdo_sqlite"]: diff --git a/pkgs/by-name/un/unit/package.nix b/pkgs/by-name/un/unit/package.nix index b759e9ec1898..5ac7dbc9ab7e 100644 --- a/pkgs/by-name/un/unit/package.nix +++ b/pkgs/by-name/un/unit/package.nix @@ -8,9 +8,7 @@ withPython3 ? true, python3, ncurses, - withPHP81 ? true, - php81, - withPHP82 ? false, + withPHP82 ? true, php82, withPerl ? true, perl, @@ -34,7 +32,6 @@ let fpmSupport = false; }; - php81-unit = php81.override phpConfig; php82-unit = php82.override phpConfig; inherit (lib) optional optionals optionalString; @@ -59,7 +56,6 @@ stdenv.mkDerivation rec { python3 ncurses ] - ++ optional withPHP81 php81-unit ++ optional withPHP82 php82-unit ++ optional withPerl perl ++ optional withRuby_3_1 ruby_3_1 @@ -77,11 +73,10 @@ stdenv.mkDerivation rec { ++ optional withDebug "--debug"; # Optionally add the PHP derivations used so they can be addressed in the configs - usedPhp81 = optionals withPHP81 php81-unit; + usedPhp82 = optionals withPHP82 php82-unit; postConfigure = '' ${optionalString withPython3 "./configure python --module=python3 --config=python3-config --lib-path=${python3}/lib"} - ${optionalString withPHP81 "./configure php --module=php81 --config=${php81-unit.unwrapped.dev}/bin/php-config --lib-path=${php81-unit}/lib"} ${optionalString withPHP82 "./configure php --module=php82 --config=${php82-unit.unwrapped.dev}/bin/php-config --lib-path=${php82-unit}/lib"} ${optionalString withPerl "./configure perl --module=perl --perl=${perl}/bin/perl"} ${optionalString withRuby_3_1 "./configure ruby --module=ruby31 --ruby=${ruby_3_1}/bin/ruby"} From 7cb99c1333d90c39ef8e1098dc010c3b700feb5a Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 3 Oct 2025 23:47:53 +0200 Subject: [PATCH 8/8] php81: remove https://www.php.net/supported-versions.php Security support will end by 12/2025. --- doc/languages-frameworks/php.section.md | 6 +- .../manual/release-notes/rl-2511.section.md | 2 + nixos/tests/all-tests.nix | 4 -- pkgs/development/interpreters/php/8.1.nix | 59 ------------------- pkgs/top-level/aliases.nix | 3 + pkgs/top-level/all-packages.nix | 10 ---- 6 files changed, 8 insertions(+), 76 deletions(-) delete mode 100644 pkgs/development/interpreters/php/8.1.nix diff --git a/doc/languages-frameworks/php.section.md b/doc/languages-frameworks/php.section.md index 83520ae8c5f6..9f221679ce22 100644 --- a/doc/languages-frameworks/php.section.md +++ b/doc/languages-frameworks/php.section.md @@ -9,7 +9,7 @@ wide variety of extensions and libraries available. The different versions of PHP that nixpkgs provides are located under attributes named based on major and minor version number; e.g., -`php81` is PHP 8.1. +`php84` is PHP 8.4. Only versions of PHP that are supported by upstream for the entirety of a given NixOS release will be included in that release of @@ -22,8 +22,8 @@ NixOS - not necessarily the latest major release from upstream. All available PHP attributes are wrappers around their respective binary PHP package and provide commonly used extensions this way. The -real PHP 8.1 package, i.e. the unwrapped one, is available as -`php81.unwrapped`; see the next section for more details. +real PHP 8.4 package, i.e. the unwrapped one, is available as +`php84.unwrapped`; see the next section for more details. Interactive tools built on PHP are put in `php.packages`; composer is for example available at `php.packages.composer`. diff --git a/nixos/doc/manual/release-notes/rl-2511.section.md b/nixos/doc/manual/release-notes/rl-2511.section.md index 7203addaa835..517beed6d0a4 100644 --- a/nixos/doc/manual/release-notes/rl-2511.section.md +++ b/nixos/doc/manual/release-notes/rl-2511.section.md @@ -328,6 +328,8 @@ Note that system activation will complete before all certificates may have been renewed or acquired. +- `php81` was removed. + - `libvirt` now supports using `nftables` backend. - The `virtualisation.libvirtd.firewallBackend` option can be used to configure the firewall backend used by libvirtd. diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index a4a8599a173c..6a98334eb836 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1171,10 +1171,6 @@ in inherit runTest; php = pkgs.php; }; - php81 = import ./php/default.nix { - inherit runTest; - php = pkgs.php81; - }; php82 = import ./php/default.nix { inherit runTest; php = pkgs.php82; diff --git a/pkgs/development/interpreters/php/8.1.nix b/pkgs/development/interpreters/php/8.1.nix deleted file mode 100644 index cc5fef956dcf..000000000000 --- a/pkgs/development/interpreters/php/8.1.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ callPackage, fetchpatch, ... }@_args: - -let - base = callPackage ./generic.nix ( - (removeAttrs _args [ "fetchpatch" ]) - // { - version = "8.1.33"; - hash = "sha256-tlU0UYQcGlaYZdf9yDAkYh7kQ0zY+/6woxWIrJxwaF8="; - } - ); -in -base.withExtensions ( - { all, ... }: - with all; - ([ - bcmath - calendar - curl - ctype - dom - exif - fileinfo - filter - ftp - gd - gettext - gmp - iconv - imap - intl - ldap - mbstring - mysqli - mysqlnd - opcache - openssl - pcntl - pdo - pdo_mysql - pdo_odbc - pdo_pgsql - pdo_sqlite - pgsql - posix - readline - session - simplexml - sockets - soap - sodium - sysvsem - sqlite3 - tokenizer - xmlreader - xmlwriter - zip - zlib - ]) -) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 4b326d227f8e..b9bd4de8e85d 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -2039,6 +2039,9 @@ mapAliases { pgadmin = pgadmin4; # Added 2022-01-14 pharo-spur64 = pharo; # Added 2022-08-03 phlare = throw "'phlare' has been removed as the upstream project was archived."; # Added 2025-03-27 + php81 = throw "php81 is EOL"; + php81Extensions = php81; + php81Packages = php81; picom-next = picom; # Added 2024-02-13 pict-rs_0_3 = throw "pict-rs_0_3 has been removed, as it was an outdated version and no longer compiled"; # Added 2024-08-20 pidgin-mra = throw "'pidgin-mra' has been removed since mail.ru agent service has stopped functioning in 2024."; # Added 2025-09-17 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8f8c5ebc24aa..5c2abeee554e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6019,16 +6019,6 @@ with pkgs; php82Extensions = recurseIntoAttrs php82.extensions; php82Packages = recurseIntoAttrs php82.packages; - # Import PHP81 interpreter, extensions and packages - php81 = callPackage ../development/interpreters/php/8.1.nix { - stdenv = if stdenv.cc.isClang then llvmPackages.stdenv else stdenv; - pcre2 = pcre2.override { - withJitSealloc = false; # See https://bugs.php.net/bug.php?id=78927 and https://bugs.php.net/bug.php?id=78630 - }; - }; - php81Extensions = recurseIntoAttrs php81.extensions; - php81Packages = recurseIntoAttrs php81.packages; - polyml = callPackage ../development/compilers/polyml { }; polyml56 = callPackage ../development/compilers/polyml/5.6.nix { }; polyml57 = callPackage ../development/compilers/polyml/5.7.nix { };