···
63
+
pkgs.writeTextFile {
64
+
name = "settings.nixos-${hostName}.php";
68
+
// NixOS automatically generated settings
69
+
$settings['file_private_path'] = '${cfg.privateFilesDir}';
70
+
$settings['config_sync_directory'] = '${cfg.configSyncDir}';
75
+
checkPhase = "${pkgs.php}/bin/php --syntax-check $target";
80
+
pkgs.writeTextFile {
81
+
name = "append-drupal-settings-${hostName}";
84
+
// NixOS settings file import.
85
+
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.";
119
+
configSyncDir = mkOption {
121
+
default = "/var/lib/drupal/${name}/config/sync";
122
+
defaultText = "/var/lib/drupal/<name>/config/sync";
123
+
description = "The location of the Drupal config sync directory.";
126
+
extraConfig = mkOption {
127
+
type = types.lines;
130
+
Extra configuration values that you want to insert into settings.php.
131
+
All configuration must be written as PHP script.
134
+
$config['user.settings']['anonymous'] = 'Visitor';
135
+
$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} - -"
360
+
"d '${cfg.configSyncDir}' 0750 ${user} ${webserver.group} - -"
···
383
+
RemainAfterExit = true;
ExecStart = writeShellScript "drupal-state-init-${hostName}" ''
···
settings_file="${cfg.stateDir}/sites/default/settings.php"
348
-
defaultSettings="${cfg.package}/share/php/drupal/sites/default/default.settings.php"
400
+
default_settings="${cfg.package}/share/php/drupal/sites/default/default.settings.php"
350
-
if [ ! -f "$settings" ]; then
402
+
if [ ! -f "$settings_file" ]; then
echo "Preparing settings.php for ${hostName}..."
352
-
cp "$defaultSettings" "$settings_file"
404
+
cp "$default_settings" "$settings_file"
405
+
cat < ${appendSettings hostName} >> "$settings_file"
chmod 644 "$settings_file"
355
-
# Append settings to settings file
356
-
printf "\n\n// NixOS Automatically Generated Settings\n" >> $settings_file
357
-
printf "\$settings['file_private_path'] = '${cfg.privateFilesDir}';" >> $settings_file
409
+
# Link the NixOS-managed settings file to the state directory.
410
+
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}
417
+
# Rerun this service if certain settings were updated
420
+
cfg.privateFilesDir