nixos darkhttpd: module to enable darkhttpd
This commit is contained in:
parent
09cc90827a
commit
c876affce0
|
@ -802,6 +802,7 @@
|
||||||
./services/web-apps/zabbix.nix
|
./services/web-apps/zabbix.nix
|
||||||
./services/web-servers/apache-httpd/default.nix
|
./services/web-servers/apache-httpd/default.nix
|
||||||
./services/web-servers/caddy.nix
|
./services/web-servers/caddy.nix
|
||||||
|
./services/web-servers/darkhttpd.nix
|
||||||
./services/web-servers/fcgiwrap.nix
|
./services/web-servers/fcgiwrap.nix
|
||||||
./services/web-servers/hitch/default.nix
|
./services/web-servers/hitch/default.nix
|
||||||
./services/web-servers/hydron.nix
|
./services/web-servers/hydron.nix
|
||||||
|
|
77
nixos/modules/services/web-servers/darkhttpd.nix
Normal file
77
nixos/modules/services/web-servers/darkhttpd.nix
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.darkhttpd;
|
||||||
|
|
||||||
|
args = concatStringsSep " " ([
|
||||||
|
cfg.rootDir
|
||||||
|
"--port ${toString cfg.port}"
|
||||||
|
"--addr ${cfg.address}"
|
||||||
|
] ++ cfg.extraArgs
|
||||||
|
++ optional cfg.hideServerId "--no-server-id"
|
||||||
|
++ optional config.networking.enableIPv6 "--ipv6");
|
||||||
|
|
||||||
|
in {
|
||||||
|
options.services.darkhttpd = with types; {
|
||||||
|
enable = mkEnableOption "DarkHTTPd web server";
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
default = 80;
|
||||||
|
type = ints.u16;
|
||||||
|
description = ''
|
||||||
|
Port to listen on.
|
||||||
|
Pass 0 to let the system choose any free port for you.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
address = mkOption {
|
||||||
|
default = "127.0.0.1";
|
||||||
|
type = str;
|
||||||
|
description = ''
|
||||||
|
Address to listen on.
|
||||||
|
Pass `all` to listen on all interfaces.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
rootDir = mkOption {
|
||||||
|
type = path;
|
||||||
|
description = ''
|
||||||
|
Path from which to serve files.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
hideServerId = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Don't identify the server type in headers or directory listings.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraArgs = mkOption {
|
||||||
|
type = listOf str;
|
||||||
|
default = [];
|
||||||
|
description = ''
|
||||||
|
Additional configuration passed to the executable.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
systemd.services.darkhttpd = {
|
||||||
|
description = "Dark HTTPd";
|
||||||
|
wants = [ "network.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
DynamicUser = true;
|
||||||
|
ExecStart = "${cfg.package}/bin/darkhttpd ${args}";
|
||||||
|
AmbientCapabilities = lib.mkIf (cfg.port < 1024) [ "CAP_NET_BIND_SERVICE" ];
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "2s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue