From 9866a1ab7d2116358addea65ff3cb56d43353912 Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Tue, 14 Jul 2026 23:26:11 -0700 Subject: [PATCH 01/12] add extraPlugins to extend wordpressPackages --- wordpress/docker-compose.yml | 2 +- wordpress/flake.nix | 33 +++++++++++++++++---- wordpress/pkgs/extraPlugins.json | 50 ++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 6 deletions(-) create mode 100644 wordpress/pkgs/extraPlugins.json diff --git a/wordpress/docker-compose.yml b/wordpress/docker-compose.yml index 0695fa9..daf3344 100644 --- a/wordpress/docker-compose.yml +++ b/wordpress/docker-compose.yml @@ -9,7 +9,7 @@ services: DB_HOST: mariadb PRIMARY_URL: http://localhost:8080 ports: - - 8080:8080 + - 8080:443 volumes: - wp-uploads:/share/wordpress/wp-content/uploads tmpfs: diff --git a/wordpress/flake.nix b/wordpress/flake.nix index 88d3b01..8698497 100644 --- a/wordpress/flake.nix +++ b/wordpress/flake.nix @@ -4,9 +4,9 @@ inputs = { nixpkgs = { type = "github"; - owner = "nixos"; + owner = "sophiebsw"; repo = "nixpkgs"; - ref = "nixos-25.11"; + ref = "fix-wordpress-overriding-26.05"; }; systems = { @@ -25,18 +25,33 @@ ... }: let - pkgsFor = system: import nixpkgs { inherit system; }; + extraPlugins = builtins.fromJSON (builtins.readFile ./pkgs/extraPlugins.json); + extraPluginLicenses = nixpkgs.lib.genAttrs (nixpkgs.lib.attrNames extraPlugins) (name: "free"); + + overlays = nixpkgs.lib.singleton ( + final: prev: { + wordpressPackages = prev.wordpressPackages.override (prev: { + plugins = prev.plugins // extraPlugins; + pluginLicenses = prev.pluginLicenses // extraPluginLicenses; + }); + } + ); + + pkgsFor = system: import nixpkgs { inherit system overlays; }; forAllSystems = fn: nixpkgs.lib.genAttrs (import systems) (system: fn (pkgsFor system)); + in { + inherit extraPluginLicenses; formatter = forAllSystems (pkgs: pkgs.nixfmt-tree); + wordpress = forAllSystems (pkgs: pkgs.wordpressPackages); packages = forAllSystems ( pkgs: let timestamp = builtins.readFile ( pkgs.runCommand "timestamp" { } '' - date --date='@${builtins.toString self.lastModified}' --iso-8601=minutes > $out + date --date='@${toString self.lastModified}' --iso-8601=minutes > $out '' ); mkShAppInputs = @@ -91,7 +106,15 @@ plugins = mkWpContent "plugins" ( with pkgs.wordpressPackages.plugins; [ - hello-dolly + duplicate-page + elementor + gtranslate + themeisle-companion + updraftplus + wordpress-importer + wpforms-lite + wp-migrate-db + wpvivid-backuprestore ] ); in diff --git a/wordpress/pkgs/extraPlugins.json b/wordpress/pkgs/extraPlugins.json new file mode 100644 index 0000000..f0d8781 --- /dev/null +++ b/wordpress/pkgs/extraPlugins.json @@ -0,0 +1,50 @@ +{ + "duplicate-page": { + "path": "duplicate-page/trunk", + "rev": "3526446", + "sha256": "1nan631k8qbps5fkxlcr933zkccpn8brb6x0w77w0fzw75way60f", + "version": "4.5.9" + }, + "elementor": { + "path": "elementor/tags/4.1.5", + "rev": "3607642", + "sha256": "068lhbjaj0qglv0jrmsyv4f52nl89wn3d6hjipgbbjy2i27pd4v5", + "version": "4.1.5" + }, + "gtranslate": { + "path": "gtranslate/tags/3.1.1", + "rev": "3562536", + "sha256": "1nzw8971g50qkg88jl908i3mbp3ql4ia6fchv8l6aqjl43hqiff0", + "version": "3.1.1" + }, + "themeisle-companion": { + "path": "themeisle-companion/tags/3.0.7", + "rev": "3574306", + "sha256": "1ygpy6xn21fkb85pmya5qpbkcjyh0kp44dplj9iyg1cksa1nwb72", + "version": "3.0.7" + }, + "updraftplus": { + "path": "updraftplus/tags/1.26.5", + "rev": "3561938", + "sha256": "04pggb1fy41js01b8fwfx7d15jbb1gj14grx16rx6bq2h24wixd4", + "version": "1.26.5" + }, + "wordpress-importer": { + "path": "wordpress-importer/tags/0.9.5", + "rev": "3390741", + "sha256": "05j6jbjs0yhg4im5z65r6960waxydgcd1vxpaq17sr2l6zlc3y2z", + "version": "0.9.5" + }, + "wp-migrate-db": { + "path": "wp-migrate-db/tags/2.7.10", + "rev": "3591679", + "sha256": "19fxfqxx91fmscvakvvpjg2x8jf8fjcp884c9yygdra0224rsdky", + "version": "2.7.10" + }, + "wpvivid-backuprestore": { + "path": "wpvivid-backuprestore/tags/0.9.130", + "rev": "3600930", + "sha256": "1p7qm1wqy6zdh7rnkrbzwk03ylj1mv96dg0286ligy0rf9pmr0k6", + "version": "0.9.130" + } +} From 200aea39582077bf9387d05bc5cfb416d22b264e Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Tue, 14 Jul 2026 23:26:16 -0700 Subject: [PATCH 02/12] nix flake update --- wordpress/flake.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wordpress/flake.lock b/wordpress/flake.lock index 8016fe9..0da001f 100644 --- a/wordpress/flake.lock +++ b/wordpress/flake.lock @@ -10,8 +10,8 @@ "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-25.11", + "owner": "sophiebsw", + "ref": "fix-wordpress-overriding-26.05", "repo": "nixpkgs", "type": "github" } From c5c5c263ea6d94a69d8fdaf28ce8ad0ff43021d6 Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Wed, 15 Jul 2026 01:31:47 -0700 Subject: [PATCH 03/12] increase client_max_body_size --- wordpress/config/nginx.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wordpress/config/nginx.conf b/wordpress/config/nginx.conf index 139bc0a..64770a6 100644 --- a/wordpress/config/nginx.conf +++ b/wordpress/config/nginx.conf @@ -12,6 +12,8 @@ http { index index.php index.html index.htm; + client_max_body_size 100M; + upstream php { server 127.0.0.1:9000; } From d8c4fb2241a7e66e61311c60a15f4bb533bb20c0 Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Wed, 15 Jul 2026 01:57:29 -0700 Subject: [PATCH 04/12] enable outbound http --- wordpress/config/wp-config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wordpress/config/wp-config.php b/wordpress/config/wp-config.php index b973f5b..7ead387 100644 --- a/wordpress/config/wp-config.php +++ b/wordpress/config/wp-config.php @@ -36,7 +36,7 @@ define( 'DISALLOW_FILE_MODS', true ); # Requests to wordpress.org will fail and cause slowdowns otherwise -define( 'WP_HTTP_BLOCK_EXTERNAL', true ); +#define( 'WP_HTTP_BLOCK_EXTERNAL', true ); /** Absolute path to the WordPress directory. */ if ( ! defined( 'ABSPATH' ) ) { From b08259df5197ff7d9a243a166f336b22b3ed2c10 Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Wed, 15 Jul 2026 02:17:43 -0700 Subject: [PATCH 05/12] wordpress directory restructuring --- wordpress/bin/startup-wp | 2 ++ wordpress/config/wp-config.php | 3 ++- wordpress/flake.nix | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/wordpress/bin/startup-wp b/wordpress/bin/startup-wp index 6c643ba..ba4a2ec 100755 --- a/wordpress/bin/startup-wp +++ b/wordpress/bin/startup-wp @@ -1,5 +1,7 @@ #!/bin/sh set -e +cp -rnT /share/wordpress/themes /content/themes +ln -sf /uploads /content/uploads if ! wp core is-installed 2>/dev/null; then wp core install --url="$PRIMARY_URL" --title="OCF WordPress Template" --admin_user=admin --admin_password="$(tr -dc '[:alnum:]' < /dev/urandom | head -c256)" --admin_email="wp-admin@ocf.berkeley.edu" --allow-root fi diff --git a/wordpress/config/wp-config.php b/wordpress/config/wp-config.php index 7ead387..96471e2 100644 --- a/wordpress/config/wp-config.php +++ b/wordpress/config/wp-config.php @@ -28,7 +28,8 @@ define( 'WP_DEBUG_DISPLAY', false ); # Must be set, otherwise Wordpress tries to find it in the nix store -define( 'WP_CONTENT_DIR', '/share/wordpress/wp-content' ); +define( 'WP_CONTENT_DIR', '/content' ); +define( 'WP_PLUGIN_DIR', '/share/wordpress/plugins' ); # The install/themes/plugins are constant and cannot be updated by the user define( 'AUTOMATIC_UPDATER_DISABLED', true ); diff --git a/wordpress/flake.nix b/wordpress/flake.nix index 8698497..35d3ad6 100644 --- a/wordpress/flake.nix +++ b/wordpress/flake.nix @@ -71,7 +71,7 @@ mkWpContent = name: pkgsToLink: let - path = "share/wordpress/wp-content/${name}"; + path = "share/wordpress/${name}"; in pkgs.runCommand name { } '' mkdir -p $out/${path} From 403233ae6640cf60599d75d381b96e5c75dfff57 Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Tue, 21 Jul 2026 00:02:49 -0700 Subject: [PATCH 06/12] define fs_method as direct --- wordpress/config/wp-config.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wordpress/config/wp-config.php b/wordpress/config/wp-config.php index 96471e2..850e611 100644 --- a/wordpress/config/wp-config.php +++ b/wordpress/config/wp-config.php @@ -36,6 +36,8 @@ define( 'WP_AUTO_UPDATE_CORE', false ); define( 'DISALLOW_FILE_MODS', true ); +define( 'FS_METHOD', 'direct' ); + # Requests to wordpress.org will fail and cause slowdowns otherwise #define( 'WP_HTTP_BLOCK_EXTERNAL', true ); From 5811fe1ed5007d799bc4a7b0b13bcd7b0a5f9a28 Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Tue, 21 Jul 2026 00:12:37 -0700 Subject: [PATCH 07/12] add symlinks to coerce directory shape should allow /content and /uploads to exist while still allowing sites expecting wp-content/... --- wordpress/bin/startup-wp | 7 +++++-- wordpress/flake.nix | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/wordpress/bin/startup-wp b/wordpress/bin/startup-wp index ba4a2ec..aec7595 100755 --- a/wordpress/bin/startup-wp +++ b/wordpress/bin/startup-wp @@ -1,7 +1,10 @@ #!/bin/sh set -e -cp -rnT /share/wordpress/themes /content/themes -ln -sf /uploads /content/uploads +#cp -rnT /share/wordpress/themes /content/themes +ln -snf /share/wordpress/themes /content/themes +ln -snf /share/wordpress/plugins /content/plugins +ln -snf /uploads /content/uploads +ln -snf /content /share/wordpress/wp-content if ! wp core is-installed 2>/dev/null; then wp core install --url="$PRIMARY_URL" --title="OCF WordPress Template" --admin_user=admin --admin_password="$(tr -dc '[:alnum:]' < /dev/urandom | head -c256)" --admin_email="wp-admin@ocf.berkeley.edu" --allow-root fi diff --git a/wordpress/flake.nix b/wordpress/flake.nix index 35d3ad6..5355f80 100644 --- a/wordpress/flake.nix +++ b/wordpress/flake.nix @@ -89,6 +89,7 @@ wpWithConfig = pkgs.wordpress.overrideAttrs (old: { postInstall = '' cp ${wpConfig}/share/wordpress/wp-config.php $out/share/wordpress/wp-config.php + rm -r $out/share/wordpress/wp-content ''; }); From e06e5b2aa19cbf211758617601be0b3c1417b96a Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Tue, 21 Jul 2026 00:57:53 -0700 Subject: [PATCH 08/12] add hestia theme --- wordpress/flake.nix | 5 +++++ wordpress/pkgs/extraThemes.json | 8 ++++++++ 2 files changed, 13 insertions(+) create mode 100644 wordpress/pkgs/extraThemes.json diff --git a/wordpress/flake.nix b/wordpress/flake.nix index 5355f80..9539dcc 100644 --- a/wordpress/flake.nix +++ b/wordpress/flake.nix @@ -27,12 +27,16 @@ let extraPlugins = builtins.fromJSON (builtins.readFile ./pkgs/extraPlugins.json); extraPluginLicenses = nixpkgs.lib.genAttrs (nixpkgs.lib.attrNames extraPlugins) (name: "free"); + extraThemes = builtins.fromJSON (builtins.readFile ./pkgs/extraThemes.json); + extraThemeLicenses = nixpkgs.lib.genAttrs (nixpkgs.lib.attrNames extraThemes) (name: "free"); overlays = nixpkgs.lib.singleton ( final: prev: { wordpressPackages = prev.wordpressPackages.override (prev: { plugins = prev.plugins // extraPlugins; pluginLicenses = prev.pluginLicenses // extraPluginLicenses; + themes = prev.themes // extraThemes; + themeLicenses = prev.themeLicenses // extraThemeLicenses; }); } ); @@ -102,6 +106,7 @@ [ twentytwentyfive twentytwentyfour + hestia ] ); plugins = mkWpContent "plugins" ( diff --git a/wordpress/pkgs/extraThemes.json b/wordpress/pkgs/extraThemes.json new file mode 100644 index 0000000..eb6259a --- /dev/null +++ b/wordpress/pkgs/extraThemes.json @@ -0,0 +1,8 @@ +{ + "hestia": { + "path": "hestia/3.3.4", + "rev": "329715", + "sha256": "1cfcghavqaxl5b2dl5i5mn7ibfg1k91hddpkar1abchjscaq43qj", + "version": "3.3.4" + } +} From c08730d63992284160c4627a35dc54d0c0316a3c Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Mon, 14 Sep 2026 15:20:07 -0700 Subject: [PATCH 09/12] temp fixes for advocate --- wordpress/flake.lock | 2 +- wordpress/flake.nix | 12 ++------ wordpress/pkgs/extraPlugins.json | 52 +++++--------------------------- wordpress/pkgs/extraThemes.json | 9 +----- 4 files changed, 12 insertions(+), 63 deletions(-) diff --git a/wordpress/flake.lock b/wordpress/flake.lock index 0da001f..3f45391 100644 --- a/wordpress/flake.lock +++ b/wordpress/flake.lock @@ -11,7 +11,7 @@ }, "original": { "owner": "sophiebsw", - "ref": "fix-wordpress-overriding-26.05", + "ref": "wordpress-fix-overriding-26.05", "repo": "nixpkgs", "type": "github" } diff --git a/wordpress/flake.nix b/wordpress/flake.nix index 9539dcc..c23e411 100644 --- a/wordpress/flake.nix +++ b/wordpress/flake.nix @@ -6,7 +6,7 @@ type = "github"; owner = "sophiebsw"; repo = "nixpkgs"; - ref = "fix-wordpress-overriding-26.05"; + ref = "wordpress-fix-overriding-26.05"; }; systems = { @@ -90,7 +90,7 @@ # WordPress determines its install location via the ABSPATH php constant, which is set based # on the location of the .php scripts. Overriding the WordPress package to add our config # to it is the simplest and most consistent solution. - wpWithConfig = pkgs.wordpress.overrideAttrs (old: { + wpWithConfig = pkgs.wordpress_7_0.overrideAttrs (old: { postInstall = '' cp ${wpConfig}/share/wordpress/wp-config.php $out/share/wordpress/wp-config.php rm -r $out/share/wordpress/wp-content @@ -106,21 +106,13 @@ [ twentytwentyfive twentytwentyfour - hestia ] ); plugins = mkWpContent "plugins" ( with pkgs.wordpressPackages.plugins; [ - duplicate-page elementor gtranslate - themeisle-companion - updraftplus - wordpress-importer - wpforms-lite - wp-migrate-db - wpvivid-backuprestore ] ); in diff --git a/wordpress/pkgs/extraPlugins.json b/wordpress/pkgs/extraPlugins.json index f0d8781..a006d0e 100644 --- a/wordpress/pkgs/extraPlugins.json +++ b/wordpress/pkgs/extraPlugins.json @@ -1,50 +1,14 @@ { - "duplicate-page": { - "path": "duplicate-page/trunk", - "rev": "3526446", - "sha256": "1nan631k8qbps5fkxlcr933zkccpn8brb6x0w77w0fzw75way60f", - "version": "4.5.9" - }, "elementor": { - "path": "elementor/tags/4.1.5", - "rev": "3607642", - "sha256": "068lhbjaj0qglv0jrmsyv4f52nl89wn3d6hjipgbbjy2i27pd4v5", - "version": "4.1.5" + "path": "elementor/tags/4.2.4", + "rev": "3674525", + "sha256": "1hzwqsa1p2lddy034hhrfs1gkw3q20np90lvpxrm331hzz2f1jik", + "version": "4.2.4" }, "gtranslate": { - "path": "gtranslate/tags/3.1.1", - "rev": "3562536", - "sha256": "1nzw8971g50qkg88jl908i3mbp3ql4ia6fchv8l6aqjl43hqiff0", - "version": "3.1.1" - }, - "themeisle-companion": { - "path": "themeisle-companion/tags/3.0.7", - "rev": "3574306", - "sha256": "1ygpy6xn21fkb85pmya5qpbkcjyh0kp44dplj9iyg1cksa1nwb72", - "version": "3.0.7" - }, - "updraftplus": { - "path": "updraftplus/tags/1.26.5", - "rev": "3561938", - "sha256": "04pggb1fy41js01b8fwfx7d15jbb1gj14grx16rx6bq2h24wixd4", - "version": "1.26.5" - }, - "wordpress-importer": { - "path": "wordpress-importer/tags/0.9.5", - "rev": "3390741", - "sha256": "05j6jbjs0yhg4im5z65r6960waxydgcd1vxpaq17sr2l6zlc3y2z", - "version": "0.9.5" - }, - "wp-migrate-db": { - "path": "wp-migrate-db/tags/2.7.10", - "rev": "3591679", - "sha256": "19fxfqxx91fmscvakvvpjg2x8jf8fjcp884c9yygdra0224rsdky", - "version": "2.7.10" - }, - "wpvivid-backuprestore": { - "path": "wpvivid-backuprestore/tags/0.9.130", - "rev": "3600930", - "sha256": "1p7qm1wqy6zdh7rnkrbzwk03ylj1mv96dg0286ligy0rf9pmr0k6", - "version": "0.9.130" + "path": "gtranslate/tags/3.1.2", + "rev": "3674542", + "sha256": "1fp21g0kanq2sl6zcyhs46ah4y8y7p9sswn903m0y6cmi5i6g9sb", + "version": "3.1.2" } } diff --git a/wordpress/pkgs/extraThemes.json b/wordpress/pkgs/extraThemes.json index eb6259a..0967ef4 100644 --- a/wordpress/pkgs/extraThemes.json +++ b/wordpress/pkgs/extraThemes.json @@ -1,8 +1 @@ -{ - "hestia": { - "path": "hestia/3.3.4", - "rev": "329715", - "sha256": "1cfcghavqaxl5b2dl5i5mn7ibfg1k91hddpkar1abchjscaq43qj", - "version": "3.3.4" - } -} +{} From 4603cd41d8004c705ed7e5c26ffbd3842c29a3fb Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Mon, 14 Sep 2026 15:38:47 -0700 Subject: [PATCH 10/12] github actions --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4d7c089..51e64e4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,13 +13,13 @@ defaults: jobs: check-flake: - runs-on: ci-ocf-wordpress + runs-on: ci-ocf-imprint steps: - uses: actions/checkout@v5 - uses: DeterminateSystems/flake-checker-action@v9 build: - runs-on: ci-ocf-wordpress + runs-on: ci-ocf-imprint needs: check-flake steps: - uses: actions/checkout@v5 From 2b0c1e7a15825320c53e845a1bf3cfb7d5f4461c Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Mon, 14 Sep 2026 15:47:16 -0700 Subject: [PATCH 11/12] nix flake update --- wordpress/flake.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wordpress/flake.lock b/wordpress/flake.lock index 3f45391..d8a6a75 100644 --- a/wordpress/flake.lock +++ b/wordpress/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1782847189, - "narHash": "sha256-twXPFqFsrrY5r28Zh7Homgcp2gUMBgQ6WDS98Q/3xFI=", - "owner": "nixos", + "lastModified": 1789424161, + "narHash": "sha256-U5jFE9Zy1CeOpLqpAkb0m+2wFU0ZpUwP5151eRQa6Wc=", + "owner": "sophiebsw", "repo": "nixpkgs", - "rev": "b6018f87da91d19d0ab4cf979885689b469cdd41", + "rev": "65c6dc5c31a9d28dd6d1160a062e600dc36ddbea", "type": "github" }, "original": { From 79d70f03750983aafc67fac64c7fe391985be3a7 Mon Sep 17 00:00:00 2001 From: sophiebsw Date: Sun, 20 Sep 2026 06:39:53 -0700 Subject: [PATCH 12/12] add hestia theme --- wordpress/flake.nix | 1 + wordpress/pkgs/extraThemes.json | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/wordpress/flake.nix b/wordpress/flake.nix index c23e411..f6c8d9f 100644 --- a/wordpress/flake.nix +++ b/wordpress/flake.nix @@ -106,6 +106,7 @@ [ twentytwentyfive twentytwentyfour + hestia ] ); plugins = mkWpContent "plugins" ( diff --git a/wordpress/pkgs/extraThemes.json b/wordpress/pkgs/extraThemes.json index 0967ef4..b2fed12 100644 --- a/wordpress/pkgs/extraThemes.json +++ b/wordpress/pkgs/extraThemes.json @@ -1 +1,8 @@ -{} +{ + "hestia": { + "path": "hestia/3.3.6", + "rev": "348036", + "sha256": "0ymv2r1kbv8c4lkka46jypacc8fj4snf5hwqxfznrl0a15rp5qd2", + "version": "3.3.6" + } +}