A Nix flake providing packages and services related to the XRLinuxDriver project and Breezy Desktop integrations.
The original projects can be found here:
- Implement Nix packages for XRLinuxDriver
- Implement Nix services for XRLinuxDriver
- Implement Breezy Desktop integration for GNOME and KDE
- Add test infrastructure with pre-commit hooks
- Validation testing on NixOS
- Upstream to Nixpkgs
You can run the driver directly without installing it permanently:
nix run github:tcarrio/xr-linux-flakeAdd the flake to your Home Manager configuration:
{
inputs = {
# ... your other inputs
xr-linux-flake.url = "github:tcarrio/xr-linux-flake";
};
outputs = { self, nixpkgs, home-manager, xr-linux-flake, ... }:
{
homeConfigurations.your-username = home-manager.lib.homeManagerConfiguration {
# ... your other configuration
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = { inherit xr-linux-flake; };
modules = [
({ pkgs, xr-linux-flake, ... }: {
home.packages = [
xr-linux-flake.packages.x86_64-linux.xrlinuxdriver
# For GNOME integration:
xr-linux-flake.packages.x86_64-linux.breezy-desktop-gnome
# For KDE integration:
# xr-linux-flake.packages.x86_64-linux.breezy-desktop-kwin
];
})
];
};
};
}To enable the driver system-wide, add the flake to your NixOS configuration:
{
inputs = {
# ... your other inputs
xr-linux-flake.url = "github:tcarrio/xr-linux-flake";
};
outputs = { self, nixpkgs, xr-linux-flake, ... }:
{
nixosConfigurations.your-hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
xr-linux-flake.nixosModules.default
{
services.xrlinuxdriver = {
enable = true;
autoStart = true; # Optional, defaults to true
};
}
];
};
};
}To enable the Breezy Desktop GNOME integration:
{
services.xrlinuxdriver.enable = true;
services.breezy-desktop-gnome.enable = true;
}To enable the Breezy Desktop KDE/KWin integration:
{
services.xrlinuxdriver.enable = true;
services.breezy-desktop-kwin.enable = true;
}This flake provides:
-
The
xrlinuxdriverpackage containing:- The main
xrDriverbinary - Helper scripts for configuration
- Required libraries
- udev rules for device detection
- The main
-
Breezy Desktop integration packages:
breezy-desktop-gnome: GNOME Shell integrationbreezy-desktop-kwin: KDE Plasma 6 integrationbreezy-desktop-common: Shared resources
-
NixOS modules for system integration:
- XRLinuxDriver base configuration
- GNOME desktop integration
- KDE/KWin desktop integration
Check the upstream project for the list of supported XR glasses.
The Breezy Desktop integrations provide:
- Virtual display functionality for XR glasses
- Window management and positioning
- Curved displays (on GNOME 46+)
- Multiple virtual monitors
- Keyboard shortcuts for common actions
Note that some features may be part of the paid "Productivity Tier" - see the Breezy Desktop pricing for details.
This repository includes pre-commit hooks that run tests and builds before each commit. To install them:
./install-hooks.shAlternatively, use the Nix development shell which automatically installs the hooks:
nix developThe hooks ensure that:
- All tests pass with
./tests/run-tests.sh - All packages build correctly
- The development shell works as expected
To run all tests manually:
./tests/run-tests.shnix build .#xrlinuxdriver
nix build .#breezy-desktop-common
nix build .#breezy-desktop-gnome
nix build .#breezy-desktop-kwin