Add websockify service
This commit is contained in:
parent
3ad424632b
commit
59a4df3159
@ -153,6 +153,7 @@
|
|||||||
./services/networking/unbound.nix
|
./services/networking/unbound.nix
|
||||||
./services/networking/vsftpd.nix
|
./services/networking/vsftpd.nix
|
||||||
./services/networking/wakeonlan.nix
|
./services/networking/wakeonlan.nix
|
||||||
|
./services/networking/websockify.nix
|
||||||
./services/networking/wicd.nix
|
./services/networking/wicd.nix
|
||||||
./services/networking/wpa_supplicant.nix
|
./services/networking/wpa_supplicant.nix
|
||||||
./services/networking/xinetd.nix
|
./services/networking/xinetd.nix
|
||||||
|
50
modules/services/networking/websockify.nix
Normal file
50
modules/services/networking/websockify.nix
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
with pkgs.lib;
|
||||||
|
|
||||||
|
let cfg = config.services.networking.websockify; in {
|
||||||
|
options = {
|
||||||
|
services.networking.websockify = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Whether to enable websockify to forward websocket connections to TCP connections";
|
||||||
|
|
||||||
|
default = false;
|
||||||
|
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
sslCert = mkOption {
|
||||||
|
description = "Path to the SSL certificate";
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
sslKey = mkOption {
|
||||||
|
description = "Path to the SSL key";
|
||||||
|
default = cfg.sslCert;
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
portMap = mkOption {
|
||||||
|
description = "Ports to map by default";
|
||||||
|
default = {};
|
||||||
|
type = types.attrsOf types.int;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
systemd.services."websockify@" = {
|
||||||
|
script = ''
|
||||||
|
IFS=':' read -a array <<< "$1"
|
||||||
|
${pkgs.pythonPackages.websockify}/bin/websockify --ssl-only \
|
||||||
|
--cert=${cfg.sslCert} --key=${cfg.sslKey} 0.0.0.0:''${array[0]} 0.0.0.0:''${array[1]}
|
||||||
|
'';
|
||||||
|
scriptArgs = "%i";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.targets."default-websockify" = {
|
||||||
|
wants = mapAttrsToList (name: value: "websockify@${name}:${toString value}.service") cfg.portMap;
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -147,6 +147,12 @@ rec {
|
|||||||
description = "Shell commands executed as the service's main process.";
|
description = "Shell commands executed as the service's main process.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
scriptArgs = mkOption {
|
||||||
|
type = types.uniq types.string;
|
||||||
|
default = "";
|
||||||
|
description = "Arguments passed to the main process script.";
|
||||||
|
};
|
||||||
|
|
||||||
preStart = mkOption {
|
preStart = mkOption {
|
||||||
type = types.string;
|
type = types.string;
|
||||||
default = "";
|
default = "";
|
||||||
@ -262,4 +268,4 @@ rec {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -241,7 +241,7 @@ let
|
|||||||
ExecStart=${makeJobScript "${name}-start" ''
|
ExecStart=${makeJobScript "${name}-start" ''
|
||||||
#! ${pkgs.stdenv.shell} -e
|
#! ${pkgs.stdenv.shell} -e
|
||||||
${def.script}
|
${def.script}
|
||||||
''}
|
''} ${def.scriptArgs}
|
||||||
''}
|
''}
|
||||||
|
|
||||||
${optionalString (def.postStart != "") ''
|
${optionalString (def.postStart != "") ''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user