forked from mirrors/nixpkgs
nixos/go2rtc: init
This commit is contained in:
parent
5ad9a631d6
commit
eae2018b54
|
@ -64,6 +64,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
|||
|
||||
- [gmediarender](https://github.com/hzeller/gmrender-resurrect), a simple, headless UPnP/DLNA renderer. Available as [services.gmediarender](options.html#opt-services.gmediarender.enable).
|
||||
|
||||
- [go2rtc](https://github.com/AlexxIT/go2rtc), a camera streaming appliation with support for RTSP, WebRTC, HomeKit, FFMPEG, RTMP and other protocols. Available as [services.go2rtc](options.html#opt-services.go2rtc.enable).
|
||||
|
||||
- [harmonia](https://github.com/nix-community/harmonia/), Nix binary cache implemented in rust using libnix-store. Available as [services.harmonia](options.html#opt-services.harmonia.enable).
|
||||
|
||||
- [hyprland](https://github.com/hyprwm/hyprland), a dynamic tiling Wayland compositor that doesn't sacrifice on its looks. Available as [programs.hyprland](#opt-programs.hyprland.enable).
|
||||
|
|
|
@ -1150,6 +1150,7 @@
|
|||
./services/ttys/gpm.nix
|
||||
./services/ttys/kmscon.nix
|
||||
./services/video/epgstation/default.nix
|
||||
./services/video/go2rtc/default.nix
|
||||
./services/video/mirakurun.nix
|
||||
./services/video/replay-sorcery.nix
|
||||
./services/video/mediamtx.nix
|
||||
|
|
111
nixos/modules/services/video/go2rtc/default.nix
Normal file
111
nixos/modules/services/video/go2rtc/default.nix
Normal file
|
@ -0,0 +1,111 @@
|
|||
{ lib
|
||||
, config
|
||||
, options
|
||||
, pkgs
|
||||
, ...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
literalExpression
|
||||
mdDoc
|
||||
mkEnableOption
|
||||
mkOption
|
||||
mkPackageOptionMD
|
||||
types
|
||||
;
|
||||
|
||||
cfg = config.services.go2rtc;
|
||||
opt = options.services.go2rtc;
|
||||
|
||||
format = pkgs.formats.yaml {};
|
||||
configFile = format.generate "go2rtc.yaml" cfg.settings;
|
||||
in
|
||||
|
||||
{
|
||||
meta.buildDocsInSandbox = false;
|
||||
|
||||
options.services.go2rtc = with types; {
|
||||
enable = mkEnableOption (mdDoc "go2rtc streaming server");
|
||||
|
||||
package = mkPackageOptionMD pkgs "go2rtc" { };
|
||||
|
||||
settings = mkOption {
|
||||
default = {};
|
||||
description = mdDoc ''
|
||||
go2rtc configuration as a Nix attribute set.
|
||||
|
||||
See the [wiki](https://github.com/AlexxIT/go2rtc/wiki/Configuration) for possible configuration options.
|
||||
'';
|
||||
type = submodule {
|
||||
freeformType = format.type;
|
||||
options = {
|
||||
# https://github.com/AlexxIT/go2rtc/blob/v1.5.0/README.md#module-api
|
||||
api = {
|
||||
listen = mkOption {
|
||||
type = str;
|
||||
default = ":1984";
|
||||
example = "127.0.0.1:1984";
|
||||
description = mdDoc ''
|
||||
API listen address, conforming to a Go address string.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
# https://github.com/AlexxIT/go2rtc/blob/v1.5.0/README.md#source-ffmpeg
|
||||
ffmpeg = {
|
||||
bin = mkOption {
|
||||
type = path;
|
||||
default = "${lib.getBin pkgs.ffmpeg_6-headless}/bin/ffmpeg";
|
||||
defaultText = literalExpression "\${lib.getBin pkgs.ffmpeg_6-headless}/bin/ffmpeg";
|
||||
description = mdDoc ''
|
||||
The ffmpeg package to use for transcoding.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
# TODO: https://github.com/AlexxIT/go2rtc/blob/v1.5.0/README.md#module-rtsp
|
||||
rtsp = {
|
||||
};
|
||||
|
||||
streams = mkOption {
|
||||
type = attrsOf (either str (listOf str));
|
||||
default = {};
|
||||
example = literalExpression ''
|
||||
{
|
||||
cam1 = "onvif://admin:password@192.168.1.123:2020";
|
||||
cam2 = "tcp://192.168.1.123:12345";
|
||||
}
|
||||
'';
|
||||
description = mdDoc ''
|
||||
Stream source configuration. Multiple source types are supported.
|
||||
|
||||
Check the [configuration reference](https://github.com/AlexxIT/go2rtc/blob/v${cfg.package.version}/README.md#module-streams) for possible options.
|
||||
'';
|
||||
};
|
||||
|
||||
# TODO: https://github.com/AlexxIT/go2rtc/blob/v1.5.0/README.md#module-webrtc
|
||||
webrtc = {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.go2rtc = {
|
||||
after = [
|
||||
"network-online.target"
|
||||
];
|
||||
wantedBy = [
|
||||
"multi-user.target"
|
||||
];
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
User = "go2rtc";
|
||||
StateDirectory = "go2rtc";
|
||||
ExecStart = "${cfg.package}/bin/go2rtc -config ${configFile}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue