···
+
name = "settings.nixos-${hostName}.php";
+
// NixOS automatically generated settings
+
$settings['file_private_path'] = '${cfg.privateFilesDir}';
+
$settings['config_sync_directory'] = '${cfg.configSyncDir}';
+
checkPhase = "${pkgs.php}/bin/php --syntax-check $target";
+
name = "append-drupal-settings-${hostName}";
+
// NixOS settings file import.
+
require dirname(__FILE__) . '/settings.nixos-${hostName}.php';
···
default = "/var/lib/drupal/${name}/private";
defaultText = "/var/lib/drupal/<name>/private";
description = "The location of the Drupal private files directory.";
+
configSyncDir = mkOption {
+
default = "/var/lib/drupal/${name}/config/sync";
+
defaultText = "/var/lib/drupal/<name>/config/sync";
+
description = "The location of the Drupal config sync directory.";
+
extraConfig = mkOption {
+
Extra configuration values that you want to insert into settings.php.
+
All configuration must be written as PHP script.
+
$config['user.settings']['anonymous'] = 'Visitor';
+
$settings['entity_update_backup'] = TRUE;
···
"d '${cfg.themesDir}' 0750 ${user} ${webserver.group} - -"
"Z '${cfg.themesDir}' 0750 ${user} ${webserver.group} - -"
"d '${cfg.privateFilesDir}' 0750 ${user} ${webserver.group} - -"
+
"d '${cfg.configSyncDir}' 0750 ${user} ${webserver.group} - -"
···
+
RemainAfterExit = true;
ExecStart = writeShellScript "drupal-state-init-${hostName}" ''
···
settings_file="${cfg.stateDir}/sites/default/settings.php"
+
default_settings="${cfg.package}/share/php/drupal/sites/default/default.settings.php"
+
if [ ! -f "$settings_file" ]; then
echo "Preparing settings.php for ${hostName}..."
+
cp "$default_settings" "$settings_file"
+
cat < ${appendSettings hostName} >> "$settings_file"
chmod 644 "$settings_file"
+
# Link the NixOS-managed settings file to the state directory.
+
ln -sf ${drupalSettings hostName cfg} ${cfg.stateDir}/sites/default/settings.nixos-${hostName}.php
# Set or reset file permissions so that the web user and webserver owns them.
chown -R ${user}:${webserver.group} ${cfg.stateDir}
+
# Rerun this service if certain settings were updated