diff options
author | Maciej Krüger <mkg20001@gmail.com> | 2021-12-04 12:58:36 +0100 |
---|---|---|
committer | Maciej Krüger <mkg20001@gmail.com> | 2021-12-04 12:58:36 +0100 |
commit | ca82a582d9ee3ba9f28d55e283dbf85d1148a0a8 (patch) | |
tree | d3e12003a0cde521add7a1ac28dfafbe41bb7968 /nixos/modules/services/video/rtsp-simple-server.nix | |
parent | b4642eee27b9e0803d420a709cb1b9b5e2ff32eb (diff) | |
download | nixpkgs-ca82a582d9ee3ba9f28d55e283dbf85d1148a0a8.tar nixpkgs-ca82a582d9ee3ba9f28d55e283dbf85d1148a0a8.tar.gz nixpkgs-ca82a582d9ee3ba9f28d55e283dbf85d1148a0a8.tar.bz2 nixpkgs-ca82a582d9ee3ba9f28d55e283dbf85d1148a0a8.tar.lz nixpkgs-ca82a582d9ee3ba9f28d55e283dbf85d1148a0a8.tar.xz nixpkgs-ca82a582d9ee3ba9f28d55e283dbf85d1148a0a8.tar.zst nixpkgs-ca82a582d9ee3ba9f28d55e283dbf85d1148a0a8.zip |
nixos/rtsp-simple-server: init
Diffstat (limited to 'nixos/modules/services/video/rtsp-simple-server.nix')
-rw-r--r-- | nixos/modules/services/video/rtsp-simple-server.nix | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/nixos/modules/services/video/rtsp-simple-server.nix b/nixos/modules/services/video/rtsp-simple-server.nix new file mode 100644 index 00000000000..644b1945a1e --- /dev/null +++ b/nixos/modules/services/video/rtsp-simple-server.nix @@ -0,0 +1,80 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.rtsp-simple-server; + package = pkgs.rtsp-simple-server; + format = pkgs.formats.yaml {}; +in +{ + options = { + services.rtsp-simple-server = { + enable = mkEnableOption "RTSP Simple Server"; + + settings = mkOption { + description = '' + Settings for rtsp-simple-server. + Read more at <link xlink:href="https://github.com/aler9/rtsp-simple-server/blob/main/rtsp-simple-server.yml"/> + ''; + type = format.type; + + default = { + logLevel = "info"; + logDestinations = [ + "stdout" + ]; + # we set this so when the user uses it, it just works (see LogsDirectory below). but it's not used by default. + logFile = "/var/log/rtsp-simple-server/rtsp-simple-server.log"; + }; + + example = { + paths = { + cam = { + runOnInit = "ffmpeg -f v4l2 -i /dev/video0 -f rtsp rtsp://localhost:$RTSP_PORT/$RTSP_PATH"; + runOnInitRestart = true; + }; + }; + }; + }; + + env = mkOption { + type = with types; attrsOf anything; + description = "Extra environment variables for RTSP Simple Server"; + default = {}; + example = { + RTSP_CONFKEY = "mykey"; + }; + }; + }; + }; + + config = mkIf (cfg.enable) { + # NOTE: rtsp-simple-server watches this file and automatically reloads if it changes + environment.etc."rtsp-simple-server.yaml".source = format.generate "rtsp-simple-server.yaml" cfg.settings; + + systemd.services.rtsp-simple-server = { + environment = cfg.env; + + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + path = with pkgs; [ + ffmpeg + ]; + + serviceConfig = { + DynamicUser = true; + User = "rtsp-simple-server"; + Group = "rtsp-simple-server"; + + LogsDirectory = "rtsp-simple-server"; + + # user likely may want to stream cameras, can't hurt to add video group + SupplementaryGroups = "video"; + + ExecStart = "${package}/bin/rtsp-simple-server /etc/rtsp-simple-server.yaml"; + }; + }; + }; +} |