make webserver more configurable

actually iam not sure if the way i approach this makes sense or if i
should leave handling of the webserver completly to the user
This commit is contained in:
2023-03-23 17:12:16 +01:00
parent 4c793de993
commit ce02c3d636

View File

@@ -118,10 +118,33 @@ in
group = mkOption { group = mkOption {
type = types.str; type = types.str;
default = "ep3-bs"; default = "${config.services.httpd.group}";
description = lib.mdDoc "Group for ep3-bs."; description = lib.mdDoc "Group for ep3-bs.";
}; };
webserver = {
enable = mkOption {
type = types.bool;
default = true;
description = ''
Enable Apache HTTP Server running virtualHost on given Port
'';
};
domain = mkOption {
type = types.str;
default = "localhost";
description = ''
Domain that webserver should listen for, like www.example.com.
'';
};
port = mkOption {
type = types.port;
default = 80;
};
};
extraConfig = mkOption { extraConfig = mkOption {
type = with types; nullOr str; type = with types; nullOr str;
default = null; default = null;
@@ -274,14 +297,13 @@ in
services.httpd = { services.httpd = {
enable = mkDefault true; enable = mkDefault true;
user = mkDefault "${cfg.user}";
enablePHP = true; enablePHP = true;
phpPackage = mkDefault pkgs.php81; phpPackage = mkDefault pkgs.php81;
adminAddr = mkDefault "alice@example.org"; adminAddr = mkDefault "alice@example.org";
extraModules = [ extraModules = [
"rewrite" "rewrite"
]; ];
virtualHosts.localhost = { virtualHosts."${cfg.webserver.domain}" = {
documentRoot = mkDefault "${cfg.stateDir}/public/"; documentRoot = mkDefault "${cfg.stateDir}/public/";
extraConfig = '' extraConfig = ''
<Directory ${cfg.stateDir}/public/> <Directory ${cfg.stateDir}/public/>
@@ -297,7 +319,7 @@ in
}; };
}; };
services.mysql = { services.mysql = mkIf (cfg.database.createDatabase == true) {
enable = mkDefault true; enable = mkDefault true;
package = mkDefault pkgs.mariadb; package = mkDefault pkgs.mariadb;
@@ -308,17 +330,17 @@ in
FLUSH PRIVILEGES; FLUSH PRIVILEGES;
''; '';
#ensureDatabases = [ cfg.database.name ]; ensureDatabases = [ cfg.database.name ];
#ensureUsers = [ ensureUsers = [
# { name = cfg.database.user; { name = cfg.database.user;
# ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; }; ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; };
# } }
#]; ];
}; };
systemd.services.ep3-bs-init = { systemd.services.ep3-bs-init = {
description = "Initialize ep3-bs Data Directory"; description = "Initialize ep3-bs Data Directory";
after = [ "network.target" ]; after = [ "network.target" "httpd.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
preStart = '' preStart = ''
@@ -350,13 +372,11 @@ in
ep3-bs = { ep3-bs = {
description = "ep3-bs Service User"; description = "ep3-bs Service User";
home = cfg.stateDir; home = cfg.stateDir;
group = "ep3-bs"; group = "${cfg.group}";
isNormalUser = true; isNormalUser = true;
}; };
}; };
users.groups.ep3-bs = {};
}; };
} }