feat(server): add mkWebApp module and glance web app
This commit is contained in:
parent
29c652e615
commit
2292baecf6
3 changed files with 78 additions and 0 deletions
59
lib/modules/default.nix
Normal file
59
lib/modules/default.nix
Normal file
|
@ -0,0 +1,59 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (builtins) toString;
|
||||
inherit (lib)
|
||||
mkMerge
|
||||
mkEnableOption
|
||||
singleton
|
||||
mkIf
|
||||
;
|
||||
inherit (lib.pantheon) mkRootDomain mkPortOption mkStrOption;
|
||||
networkingConfig =
|
||||
{
|
||||
config,
|
||||
cfg,
|
||||
name,
|
||||
}:
|
||||
mkIf (cfg.domain != "") {
|
||||
assertions = singleton {
|
||||
assertion = config.server.web-servers.nginx.enable;
|
||||
message = "You must enable a web server if you want to set server.web-apps.${name}.domain.";
|
||||
};
|
||||
server.networking.ddns.domains = singleton (mkRootDomain cfg.domain);
|
||||
server.web-servers.nginx.proxies = singleton {
|
||||
source = cfg.domain;
|
||||
target = "http://${config.system.hostname}:${toString cfg.port}";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
modules.mkWebApp =
|
||||
{
|
||||
config,
|
||||
name,
|
||||
defaultPort,
|
||||
persistDirs ? [ ],
|
||||
extraOptions ? { },
|
||||
extraConfig ? { },
|
||||
}:
|
||||
let
|
||||
cfg = config.server.web-apps.${name};
|
||||
in
|
||||
{
|
||||
options.server.web-apps.${name} = {
|
||||
enable = mkEnableOption "";
|
||||
port = mkPortOption defaultPort;
|
||||
domain = mkStrOption;
|
||||
openFirewall = mkEnableOption "";
|
||||
} // extraOptions;
|
||||
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
{
|
||||
inherit persistDirs;
|
||||
networking.firewall = mkIf cfg.openFirewall { allowedTCPPorts = singleton cfg.port; };
|
||||
}
|
||||
(networkingConfig { inherit config cfg name; })
|
||||
extraConfig
|
||||
]);
|
||||
};
|
||||
}
|
17
modules/nixos/server/web-apps/glance/default.nix
Normal file
17
modules/nixos/server/web-apps/glance/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
inherit (lib.pantheon.modules) mkWebApp;
|
||||
cfg = config.server.web-apps.glance;
|
||||
in
|
||||
mkWebApp {
|
||||
inherit config;
|
||||
name = "glance";
|
||||
defaultPort = 8080;
|
||||
extraConfig = {
|
||||
services.glance = {
|
||||
enable = true;
|
||||
settings.server.host = "0.0.0.0";
|
||||
settings.server.port = cfg.port;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -39,6 +39,8 @@
|
|||
mattermost.url = "mm.bwfiq.com";
|
||||
forgejo.enable = true;
|
||||
forgejo.url = "git.rrv.sh";
|
||||
glance.enable = true;
|
||||
glance.domain = "glance.bwfiq.com";
|
||||
};
|
||||
web-servers = {
|
||||
enableSSL = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue