1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.programs.envision;
10in
11{
12
13 options = {
14 programs.envision = {
15 enable = lib.mkEnableOption "envision";
16
17 package = lib.mkPackageOption pkgs "envision" { };
18
19 openFirewall = lib.mkEnableOption "the default ports in the firewall for the WiVRn server" // {
20 default = true;
21 };
22 };
23 };
24
25 config = lib.mkIf cfg.enable {
26 services.avahi = {
27 enable = true;
28 publish = {
29 enable = true;
30 userServices = true;
31 };
32 };
33
34 services.udev = {
35 enable = true;
36 packages = with pkgs; [
37 android-udev-rules
38 xr-hardware
39 ];
40 };
41
42 environment.systemPackages = [ cfg.package ];
43
44 networking.firewall = lib.mkIf cfg.openFirewall {
45 allowedTCPPorts = [ 9757 ];
46 allowedUDPPorts = [ 9757 ];
47 };
48 };
49
50 meta.maintainers = pkgs.envision.meta.maintainers;
51}