From 63bb636255e996c63adc4e36ffdc8d74e2be9e16 Mon Sep 17 00:00:00 2001 From: Gregor Lohaus Date: Sun, 19 Jul 2026 22:09:52 +0200 Subject: [PATCH] init --- .gitignore | 10 ++++ .gitmodules | 3 ++ WordPress | 1 + devenv.lock | 65 ++++++++++++++++++++++++++ devenv.nix | 91 +++++++++++++++++++++++++++++++++++++ devenv.yaml | 18 ++++++++ plugins/theme-directory.php | 23 ++++++++++ themes/.gitkeep | 0 wp-config.php | 46 +++++++++++++++++++ 9 files changed, 257 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 160000 WordPress create mode 100644 devenv.lock create mode 100644 devenv.nix create mode 100644 devenv.yaml create mode 100644 plugins/theme-directory.php create mode 100644 themes/.gitkeep create mode 100644 wp-config.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae49879 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Devenv +.devenv* +devenv.local.nix +devenv.local.yaml + +# direnv +.direnv + +# pre-commit +.pre-commit-config.yaml diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1ade23c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "WordPress"] + path = WordPress + url = https://github.com/WordPress/WordPress.git diff --git a/WordPress b/WordPress new file mode 160000 index 0000000..8a7bc99 --- /dev/null +++ b/WordPress @@ -0,0 +1 @@ +Subproject commit 8a7bc99d9392f3d9ed16749a31f6de706626d7fd diff --git a/devenv.lock b/devenv.lock new file mode 100644 index 0000000..6d0c9cf --- /dev/null +++ b/devenv.lock @@ -0,0 +1,65 @@ +{ + "nodes": { + "devenv": { + "locked": { + "dir": "src/modules", + "lastModified": 1784325378, + "narHash": "sha256-Gof6j4d43yX2qSLLp78JILke346IggDFIxTgl3ecVQE=", + "owner": "cachix", + "repo": "devenv", + "rev": "5f1cf17be0fc48689bd0ecb810de6d2e06d259a1", + "type": "github" + }, + "original": { + "dir": "src/modules", + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "nixpkgs": { + "inputs": { + "nixpkgs-src": "nixpkgs-src" + }, + "locked": { + "lastModified": 1783345554, + "narHash": "sha256-LZhOm4kqjHUnwP4CNHpaqqEVcumGNd1PvOEOad8LkS0=", + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "6004ea8c229fe9d41b21c6f4c76bf6c2e10771dd", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "nixpkgs-src": { + "flake": false, + "locked": { + "lastModified": 1783279667, + "narHash": "sha256-/NAkDSsve+GNM0Bt6tleJdCGfsTlK89nPjkVOzZMo0s=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f205b5574fd0cb7da5b702a2da51507b7f4fdd1b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} \ No newline at end of file diff --git a/devenv.nix b/devenv.nix new file mode 100644 index 0000000..5576630 --- /dev/null +++ b/devenv.nix @@ -0,0 +1,91 @@ +{ pkgs, lib, config, inputs, ... }: + +{ + packages = [pkgs.wp-cli pkgs.bun]; + languages.typescript.enable = true; + languages.php.enable = true; + languages.php.lsp.package = pkgs.intelephense; + languages.php.fpm.pools.wordpress = { + settings = { + "pm" = "dynamic"; + "pm.max_children" = 5; + "pm.start_servers" = 2; + "pm.min_spare_servers" = 1; + "pm.max_spare_servers" = 3; + }; + }; + + services.nginx.enable = true; + services.nginx.httpConfig = '' + include ${pkgs.nginx}/conf/mime.types; + default_type application/octet-stream; + + server { + listen 8080; + server_name localhost; + + root ${config.env.DEVENV_ROOT}/WordPress; + index index.php; + + location / { + try_files $uri $uri/ /index.php?$args; + } + + location /plugins/ { + alias ${config.env.DEVENV_ROOT}/plugins/; + } + + location /themes/ { + alias ${config.env.DEVENV_ROOT}/themes/; + } + + location ~ \.php$ { + try_files $uri =404; + include ${pkgs.nginx}/conf/fastcgi.conf; + fastcgi_index index.php; + fastcgi_pass unix:${config.languages.php.fpm.pools.wordpress.socket}; + } + } + ''; + + processes.wp-install = { + exec = '' + set -e + flag="$DEVENV_STATE/.wpinstalled" + if [ -e "$flag" ]; then + echo "WordPress already installed, skipping ($flag exists)" + exit 0 + fi + wp core install \ + --path="$DEVENV_ROOT/WordPress" \ + --url="http://localhost:8080" \ + --title="Dev Site" \ + --admin_user=admin \ + --admin_password=admin \ + --admin_email=admin@example.com \ + --skip-email + wp plugin activate theme-directory --path="$DEVENV_ROOT/WordPress" + touch "$flag" + ''; + after = [ + "devenv:processes:mysql" + "devenv:mysql:configure" + ]; + }; + + services.mysql.enable = true; + services.mysql.ensureUsers = [ + { + name = "wp"; + password = "wp"; + ensurePermissions = { + "wp.*" = "ALL PRIVILEGES"; + }; + } + ]; + services.mysql.initialDatabases = [ + { + name = "wp"; + } + ]; +} diff --git a/devenv.yaml b/devenv.yaml new file mode 100644 index 0000000..d5096d3 --- /dev/null +++ b/devenv.yaml @@ -0,0 +1,18 @@ +# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json +inputs: + nixpkgs: + url: github:cachix/devenv-nixpkgs/rolling + +# If you're using non-OSS software, you can set allow_unfree to true. +allow_unfree: true + +# If you're not willing to allow unsupported packages: +# allow_unsupported_system: false + +# If you're willing to use a package that's vulnerable +# permitted_insecure_packages: +# - "openssl-1.1.1w" + +# If you have more than one devenv you can merge them +#imports: +# - ./backend diff --git a/plugins/theme-directory.php b/plugins/theme-directory.php new file mode 100644 index 0000000..c200801 --- /dev/null +++ b/plugins/theme-directory.php @@ -0,0 +1,23 @@ +