diff options
author | Peter Hoeg <peter@hoeg.com> | 2018-04-02 11:33:07 +0800 |
---|---|---|
committer | Peter Hoeg <peter@hoeg.com> | 2019-08-26 19:57:49 +0800 |
commit | c876affce0256f9ea725ad2760bfcba1b8b5bde5 (patch) | |
tree | 0cbda22a4d53e20fdb6485a127aea58850681863 /nixos/modules/services/web-servers/darkhttpd.nix | |
parent | 09cc90827a2001e531e6167bdeb268989d9e8ee0 (diff) | |
download | nixpkgs-c876affce0256f9ea725ad2760bfcba1b8b5bde5.tar nixpkgs-c876affce0256f9ea725ad2760bfcba1b8b5bde5.tar.gz nixpkgs-c876affce0256f9ea725ad2760bfcba1b8b5bde5.tar.bz2 nixpkgs-c876affce0256f9ea725ad2760bfcba1b8b5bde5.tar.lz nixpkgs-c876affce0256f9ea725ad2760bfcba1b8b5bde5.tar.xz nixpkgs-c876affce0256f9ea725ad2760bfcba1b8b5bde5.tar.zst nixpkgs-c876affce0256f9ea725ad2760bfcba1b8b5bde5.zip |
nixos darkhttpd: module to enable darkhttpd
Diffstat (limited to 'nixos/modules/services/web-servers/darkhttpd.nix')
-rw-r--r-- | nixos/modules/services/web-servers/darkhttpd.nix | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/nixos/modules/services/web-servers/darkhttpd.nix b/nixos/modules/services/web-servers/darkhttpd.nix new file mode 100644 index 00000000000..80870118c33 --- /dev/null +++ b/nixos/modules/services/web-servers/darkhttpd.nix @@ -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"; + }; + }; + }; +} |