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:
48
ep3-bs.nix
48
ep3-bs.nix
@@ -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 = {};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user