1{
2 config,
3 pkgs,
4 lib,
5 ...
6}:
7
8let
9 cfg = config.programs.alvr;
10in
11{
12 options = {
13 programs.alvr = {
14 enable = lib.mkEnableOption "ALVR, the VR desktop streamer";
15
16 package = lib.mkPackageOption pkgs "alvr" { };
17
18 openFirewall = lib.mkOption {
19 type = lib.types.bool;
20 default = false;
21 description = ''
22 Whether to open the default ports in the firewall for the ALVR server.
23 '';
24 };
25 };
26 };
27
28 config = lib.mkIf cfg.enable {
29 environment.systemPackages = [ cfg.package ];
30
31 networking.firewall = lib.mkIf cfg.openFirewall {
32 allowedTCPPorts = [
33 9943
34 9944
35 ];
36 allowedUDPPorts = [
37 9943
38 9944
39 ];
40 };
41 };
42
43 meta.maintainers = with lib.maintainers; [ passivelemon ];
44}