init
This commit is contained in:
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
# Devenv
|
||||
.devenv*
|
||||
devenv.local.nix
|
||||
devenv.local.yaml
|
||||
|
||||
# direnv
|
||||
.direnv
|
||||
|
||||
# pre-commit
|
||||
.pre-commit-config.yaml
|
||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "WordPress"]
|
||||
path = WordPress
|
||||
url = https://github.com/WordPress/WordPress.git
|
||||
1
WordPress
Submodule
1
WordPress
Submodule
Submodule WordPress added at 8a7bc99d93
65
devenv.lock
Normal file
65
devenv.lock
Normal file
@@ -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
|
||||
}
|
||||
91
devenv.nix
Normal file
91
devenv.nix
Normal file
@@ -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";
|
||||
}
|
||||
];
|
||||
}
|
||||
18
devenv.yaml
Normal file
18
devenv.yaml
Normal file
@@ -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
|
||||
23
plugins/theme-directory.php
Normal file
23
plugins/theme-directory.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: Theme Directory
|
||||
* Description: Registers the repo-root themes/ directory as an additional theme root.
|
||||
*/
|
||||
|
||||
$repo_theme_root = dirname( ABSPATH ) . '/themes';
|
||||
|
||||
register_theme_directory( $repo_theme_root );
|
||||
|
||||
add_filter(
|
||||
'theme_root_uri',
|
||||
function ( $theme_root_uri, $siteurl ) use ( $repo_theme_root ) {
|
||||
// Core falls back to the raw filesystem path for registered roots it
|
||||
// cannot map to a URL; rewrite that to where nginx serves themes/.
|
||||
if ( $theme_root_uri === $repo_theme_root ) {
|
||||
return $siteurl . '/themes';
|
||||
}
|
||||
return $theme_root_uri;
|
||||
},
|
||||
10,
|
||||
2
|
||||
);
|
||||
0
themes/.gitkeep
Normal file
0
themes/.gitkeep
Normal file
46
wp-config.php
Normal file
46
wp-config.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
* WordPress configuration for the local devenv setup.
|
||||
*
|
||||
* Tracked in git on purpose: this is a local learning environment,
|
||||
* all credentials here are throwaway dev values.
|
||||
*/
|
||||
|
||||
// ** Plugins live in the repo root, outside the WordPress core submodule ** //
|
||||
define( 'WP_PLUGIN_DIR', __DIR__ . '/plugins' );
|
||||
define( 'WP_PLUGIN_URL', 'http://localhost:8080/plugins' );
|
||||
|
||||
// ** Database settings (matches services.mysql in devenv.nix) ** //
|
||||
define( 'DB_NAME', 'wp' );
|
||||
define( 'DB_USER', 'wp' );
|
||||
define( 'DB_PASSWORD', 'wp' );
|
||||
define( 'DB_HOST', '127.0.0.1' );
|
||||
define( 'DB_CHARSET', 'utf8mb4' );
|
||||
define( 'DB_COLLATE', '' );
|
||||
|
||||
/**#@+
|
||||
* Authentication unique keys and salts.
|
||||
*/
|
||||
define( 'AUTH_KEY', '86wUWH4GaRKEb3um2OCG1+IYzgMcYtCsgZIxlDtRsPW0pviesMF5AoIfWSj7+YnZ' );
|
||||
define( 'SECURE_AUTH_KEY', '/z7gh8GFhsdnKMSt2tmGmgggiGtsy/IvYXinmE4PIatukxPR/M+5T90oeOdNXW+r' );
|
||||
define( 'LOGGED_IN_KEY', 'cjHgRpkOjVwci1f0pKT8uCrnwRq+xwP7X1giPUyoixrqpZ/RJIfGnyTav+6Px5W4' );
|
||||
define( 'NONCE_KEY', '9d9koxfp5eyY4UP8Bis3uyjD4ZJ5CZXhnk1Reo90grpq4fvdpu6C5PZiTQY04Zcg' );
|
||||
define( 'AUTH_SALT', 'T7FWdS8KrqLKtQ5CzuYy3q4uDyz3qQDvY6XVHT5Te8VCiK0N7eqNDfXPGm73OF0E' );
|
||||
define( 'SECURE_AUTH_SALT', 'vKhXxI+TrE/8DxiogbdVO4ZC/Po2f8ijLOgGuQi4TWy8I3AizL1L4H3VABY8aGg5' );
|
||||
define( 'LOGGED_IN_SALT', '9ZRBx99oicNodcM9ayUzcr4zuV2w7W/q5EY+Fpa8zrcq8di1LTG1/pwXYnEsHLyZ' );
|
||||
define( 'NONCE_SALT', '7U/impFiyFsTQe3WKgiqLjEH33V/i4+kDJKMf5HlTHGnf2TQvBwlnqCg+0KZRXSd' );
|
||||
/**#@-*/
|
||||
|
||||
$table_prefix = 'wp_';
|
||||
|
||||
define( 'WP_DEBUG', true );
|
||||
|
||||
/* That's all, stop editing! Happy publishing. */
|
||||
|
||||
/** Absolute path to the WordPress directory. */
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
define( 'ABSPATH', __DIR__ . '/WordPress/' );
|
||||
}
|
||||
|
||||
/** Sets up WordPress vars and included files. */
|
||||
require_once ABSPATH . 'wp-settings.php';
|
||||
Reference in New Issue
Block a user