Change:
The [monado] package doesn't install the udev rules generated by the [xr-hardware util] from the Monado project. Install the package and check the lack of udev rules in It was expected for the udev rules to be installted with the package. The udev rules are needed as some hmd's have some strange and specific permissions. Maybe instead of adding this to the package, monado could turn into an option like . <!-- Please @ people who are in the list of the offending package or module. If in doubt, check for whoever last touched something. --Please run and paste the result. Add a :+1: [reaction] to [issues you find important]. [reaction]: [issues you find important]: [monado]: [xr-hardware util]:
Trying packaging the udev rules similar to how . [brscan4]:
I was working on a Monado NixOS module. Perhaps I can deal with udev rules there. See

Discussion:
- [go-camo](https://github.com/cactus/go-camo), a secure image proxy server. Available as [services.go-camo](#opt-services.go-camo.enable). <ins> - [Monado](https://monado.freedesktop.org/), an open source XR runtime. Available as [services.monado](#opt-services.monado.enable). </ins> - [Clevis](https://github.com/latchset/clevis), a pluggable framework for automated decryption, used to unlock encrypted devices in initrd. Available as [boot.initrd.clevis.enable](#opt-boot.initrd.clevis.enable). - [TuxClocker](https://github.com/Lurkki14/tuxclocker), a hardware control and monitoring program. Available as [programs.tuxclocker](#opt-programs.tuxclocker.enable).

./services/hardware/lcd.nix ./services/hardware/lirc.nix ./services/hardware/nvidia-container-toolkit-cdi-generator <ins> ./services/hardware/monado.nix </ins> ./services/hardware/nvidia-optimus.nix ./services/hardware/openrgb.nix ./services/hardware/pcscd.nix

<ins> { config , lib , pkgs , ... }: let inherit (lib) mkDefault mkEnableOption mkIf mkOption mkPackageOption types; cfg = config.services.monado; in { options.services.monado = { enable = mkEnableOption "Monado user service"; package = mkPackageOption pkgs "monado" { }; defaultRuntime = mkOption { type = types.bool; description = '' Whether to enable Monado as the default OpenXR runtime on the system. Note that applications can bypass this option by setting an active runtime in a writable XDG_CONFIG_DIRS location like `~/.config`. ''; default = false; example = true; }; highPriority = mkEnableOption "high priority capability for monado-service" // mkOption { default = true; }; }; config = mkIf cfg.enable { security.wrappers."monado-service" = mkIf cfg.highPriority { setuid = false; owner = "root"; group = "root"; # cap_sys_nice needed for asynchronous reprojection capabilities = "cap_sys_nice+eip"; source = lib.getExe' cfg.package "monado-service"; }; services.udev.packages = with pkgs; [ xr-hardware ]; systemd.user = { services.monado = { description = "Monado XR runtime service module"; requires = [ "monado.socket" ]; conflicts = [ "monado-dev.service" ]; unitConfig.ConditionUser = "!root"; environment = { # Default options # https://gitlab.freedesktop.org/monado/monado/-/blob/4548e1738591d0904f8db4df8ede652ece889a76/src/xrt/targets/service/monado.in.service#L12 XRT_COMPOSITOR_LOG = mkDefault "debug"; XRT_PRINT_OPTIONS = mkDefault "on"; IPC_EXIT_ON_DISCONNECT = mkDefault "off"; }; serviceConfig = { ExecStart = if cfg.highPriority then "${config.security.wrapperDir}/monado-service" else lib.getExe' cfg.package "monado-service"; Restart = "no"; }; restartTriggers = [ cfg.package ]; }; sockets.monado = { description = "Monado XR service module connection socket"; conflicts = [ "monado-dev.service" ]; unitConfig.ConditionUser = "!root"; socketConfig = { ListenStream = "%t/monado_comp_ipc"; RemoveOnStop = true; # If Monado crashes while starting up, we want to close incoming OpenXR connections FlushPending = true; }; restartTriggers = [ cfg.package ]; wantedBy = [ "sockets.target" ]; }; }; environment.systemPackages = [ cfg.package ]; environment.pathsToLink = [ "/share/openxr" ]; environment.etc."xdg/openxr/1/active_runtime.json" = mkIf cfg.defaultRuntime { source = "${cfg.package}/share/openxr/1/openxr_monado.json"; }; }; meta.maintainers = with lib.maintainers; [ Scrumplex ]; } </ins>

mobilizon = handleTest ./mobilizon.nix {}; mod_perl = handleTest ./mod_perl.nix {}; molly-brown = handleTest ./molly-brown.nix {}; <ins> monado = handleTest ./monado.nix {}; </ins> monica = handleTest ./web-apps/monica.nix {}; mongodb = handleTest ./mongodb.nix {}; moodle = handleTest ./moodle.nix {};

<ins> import ./make-test-python.nix ({ pkgs, ... }: { name = "monado"; nodes.machine = { pkgs, ... }: { hardware.opengl.enable = true; users.users.alice = { isNormalUser = true; uid = 1000; }; services.monado = { enable = true; defaultRuntime = true; }; # Stop Monado from probing for any hardware systemd.user.services.monado.environment.SIMULATED_ENABLE = "1"; environment.systemPackages = with pkgs; [ openxr-loader ]; }; testScript = { nodes, ... }: let userId = toString nodes.machine.users.users.alice.uid; runtimePath = "/run/user/${userId}"; in '' machine.succeed("loginctl enable-linger alice") machine.wait_for_unit("user@${userId}.service") machine.wait_for_unit("monado.socket", "alice") machine.systemctl("start monado.service", "alice") machine.wait_for_unit("monado.service", "alice") machine.succeed("su -- alice -c env XDG_RUNTIME_DIR=${runtimePath} openxr_runtime_list") ''; }) </ins>

, wayland-scanner , libdrm , zlib <ins> , nixosTests </ins> # Set as 'false' to build monado without service support, i.e. allow VR # applications linking against libopenxr_monado.so to use OpenXR standalone # instead of via the monado-service program. For more information see:

./force-enable-steamvr_lh.patch ]; <ins> passthru.tests = { basic-service = nixosTests.monado; }; </ins> meta = with lib; { description = "Open source XR runtime"; homepage = "https://monado.freedesktop.org/";

<ins> { lib, stdenvNoCC, fetchFromGitLab }: stdenvNoCC.mkDerivation { pname = "xr-hardware"; version = "unstable-2023-11-08"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "monado/utilities"; repo = "xr-hardware"; rev = "9204de323210d2a5ab8635c2ee52127100de67b1"; hash = "sha256-ZS15WODms/WKsPu+WbfILO2BOwnxrhCY/SoF8jzOX5Q="; }; installTargets = "install_package"; installFlagsArray = "DESTDIR=${placeholder "out"}"; meta = with lib; { description = "Hardware description for XR devices"; homepage = "https://gitlab.freedesktop.org/monado/utilities/xr-hardware"; license = licenses.boost; maintainers = with maintainers; [ Scrumplex ]; platforms = platforms.linux; }; } </ins>