oxipng: re-enable tests (#375349)
[NixPkgs.git] / nixos / modules / services / networking / mjpg-streamer.nix
blob4f0747d8a262f1777754122e41147b35dea7d30d
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
8 with lib;
10 let
12   cfg = config.services.mjpg-streamer;
17   options = {
19     services.mjpg-streamer = {
21       enable = mkEnableOption "mjpg-streamer webcam streamer";
23       inputPlugin = mkOption {
24         type = types.str;
25         default = "input_uvc.so";
26         description = ''
27           Input plugin. See plugins documentation for more information.
28         '';
29       };
31       outputPlugin = mkOption {
32         type = types.str;
33         default = "output_http.so -w @www@ -n -p 5050";
34         description = ''
35           Output plugin. `@www@` is substituted for default mjpg-streamer www directory.
36           See plugins documentation for more information.
37         '';
38       };
40       user = mkOption {
41         type = types.str;
42         default = "mjpg-streamer";
43         description = "mjpg-streamer user name.";
44       };
46       group = mkOption {
47         type = types.str;
48         default = "video";
49         description = "mjpg-streamer group name.";
50       };
52     };
54   };
56   config = mkIf cfg.enable {
58     users.users = optionalAttrs (cfg.user == "mjpg-streamer") {
59       mjpg-streamer = {
60         uid = config.ids.uids.mjpg-streamer;
61         group = cfg.group;
62       };
63     };
65     systemd.services.mjpg-streamer = {
66       description = "mjpg-streamer webcam streamer";
67       wantedBy = [ "multi-user.target" ];
69       serviceConfig = {
70         User = cfg.user;
71         Group = cfg.group;
72         Restart = "on-failure";
73         RestartSec = 1;
74       };
76       script = ''
77         IPLUGIN="${cfg.inputPlugin}"
78         OPLUGIN="${cfg.outputPlugin}"
79         OPLUGIN="''${OPLUGIN//@www@/${pkgs.mjpg-streamer}/share/mjpg-streamer/www}"
80         exec ${pkgs.mjpg-streamer}/bin/mjpg_streamer -i "$IPLUGIN" -o "$OPLUGIN"
81       '';
82     };
84   };