ocamlPackages.hxd: 0.3.2 -> 0.3.3 (#364231)
[NixPkgs.git] / nixos / modules / services / video / photonvision.nix
blob70e527e2a51b4fe94a0288b78eda76f3c0ac292d
2   config,
3   pkgs,
4   lib,
5   ...
6 }:
8 let
9   cfg = config.services.photonvision;
12   options = {
13     services.photonvision = {
14       enable = lib.mkEnableOption "PhotonVision";
16       package = lib.mkPackageOption pkgs "photonvision" { };
18       openFirewall = lib.mkOption {
19         description = ''
20           Whether to open the required ports in the firewall.
21         '';
22         default = false;
23         type = lib.types.bool;
24       };
25     };
26   };
28   config = lib.mkIf cfg.enable {
29     systemd.services.photonvision = {
30       description = "PhotonVision, the free, fast, and easy-to-use computer vision solution for the FIRST Robotics Competition";
32       wantedBy = [ "multi-user.target" ];
33       after = [ "network.target" ];
35       serviceConfig = {
36         ExecStart = lib.getExe cfg.package;
38         # ephemeral root directory
39         RuntimeDirectory = "photonvision";
40         RootDirectory = "/run/photonvision";
42         # setup persistent state and logs directories
43         StateDirectory = "photonvision";
44         LogsDirectory = "photonvision";
46         BindReadOnlyPaths = [
47           # mount the nix store read-only
48           "/nix/store"
50           # the JRE reads the user.home property from /etc/passwd
51           "/etc/passwd"
52         ];
53         BindPaths = [
54           # mount the configuration and logs directories to the host
55           "/var/lib/photonvision:/photonvision_config"
56           "/var/log/photonvision:/photonvision_config/logs"
57         ];
59         # for PhotonVision's dynamic libraries, which it writes to /tmp
60         PrivateTmp = true;
61       };
62     };
64     networking.firewall = lib.mkIf cfg.openFirewall {
65       allowedTCPPorts = [ 5800 ];
66       allowedTCPPortRanges = [
67         {
68           from = 1180;
69           to = 1190;
70         }
71       ];
72     };
73   };