Merge pull request #205765 from NixOS/fix-dolibarr-for-non-nginx

nixos/services/dolibarr: decouple nginx and let other web servers be used

Changed files
+11 -8
nixos
modules
services
web-apps
+11 -8
nixos/modules/services/web-apps/dolibarr.nix
···
{ config, pkgs, lib, ... }:
let
-
inherit (lib) any boolToString concatStringsSep isBool isString literalExpression mapAttrsToList mkDefault mkEnableOption mkIf mkOption optionalAttrs types;
package = pkgs.dolibarr.override { inherit (cfg) stateDir; };
cfg = config.services.dolibarr;
-
vhostCfg = config.services.nginx.virtualHosts."${cfg.domain}";
mkConfigFile = filename: settings:
let
···
force_install_database = cfg.database.name;
force_install_databaselogin = cfg.database.user;
-
force_install_mainforcehttps = vhostCfg.forceSSL;
force_install_createuser = false;
force_install_dolibarrlogin = null;
} // optionalAttrs (cfg.database.passwordFile != null) {
···
};
# implementation
-
config = mkIf cfg.enable {
assertions = [
{ assertion = cfg.database.createLocally -> cfg.database.user == cfg.user;
···
# Security settings
dolibarr_main_prod = true;
-
dolibarr_main_force_https = vhostCfg.forceSSL;
dolibarr_main_restrict_os_commands = "${pkgs.mariadb}/bin/mysqldump, ${pkgs.mariadb}/bin/mysql";
dolibarr_nocsrfcheck = false;
dolibarr_main_instance_unique_id = ''
···
users.groups = optionalAttrs (cfg.group == "dolibarr") {
dolibarr = { };
};
-
-
users.users."${config.services.nginx.group}".extraGroups = [ cfg.group ];
-
};
}
···
{ config, pkgs, lib, ... }:
let
+
inherit (lib) any boolToString concatStringsSep isBool isString mapAttrsToList mkDefault mkEnableOption mkIf mkMerge mkOption optionalAttrs types;
package = pkgs.dolibarr.override { inherit (cfg) stateDir; };
cfg = config.services.dolibarr;
+
vhostCfg = lib.optionalAttr (cfg.nginx != null) config.services.nginx.virtualHosts."${cfg.domain}";
mkConfigFile = filename: settings:
let
···
force_install_database = cfg.database.name;
force_install_databaselogin = cfg.database.user;
+
force_install_mainforcehttps = vhostCfg.forceSSL or false;
force_install_createuser = false;
force_install_dolibarrlogin = null;
} // optionalAttrs (cfg.database.passwordFile != null) {
···
};
# implementation
+
config = mkIf cfg.enable (mkMerge [
+
{
assertions = [
{ assertion = cfg.database.createLocally -> cfg.database.user == cfg.user;
···
# Security settings
dolibarr_main_prod = true;
+
dolibarr_main_force_https = vhostCfg.forceSSL or false;
dolibarr_main_restrict_os_commands = "${pkgs.mariadb}/bin/mysqldump, ${pkgs.mariadb}/bin/mysql";
dolibarr_nocsrfcheck = false;
dolibarr_main_instance_unique_id = ''
···
users.groups = optionalAttrs (cfg.group == "dolibarr") {
dolibarr = { };
};
+
}
+
(mkIf (cfg.nginx != null) {
+
users.users."${config.services.nginx.group}".extraGroups = mkIf (cfg.nginx != null) [ cfg.group ];
+
})
+
]);
}