nixos/iio-niri: init module

This commit is contained in:
Zhaith Izaliel
2025-10-22 22:33:42 +02:00
parent 3fbc67c715
commit 207f23bf08
3 changed files with 62 additions and 0 deletions

View File

@@ -166,6 +166,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [twingate](https://docs.twingate.com/docs/linux), a high performance, easy to use zero trust solution that enables access to private resources from any device with better security than a VPN. - [twingate](https://docs.twingate.com/docs/linux), a high performance, easy to use zero trust solution that enables access to private resources from any device with better security than a VPN.
- [iio-niri](https://github.com/Zhaith-Izaliel/iio-niri), a utils that listens to `iio-sensor-proxy` and updates Niri output orientation depending on the accelerometer orientation.
## Backward Incompatibilities {#sec-release-21.11-incompatibilities} ## Backward Incompatibilities {#sec-release-21.11-incompatibilities}
- The NixOS VM test framework, `pkgs.nixosTest`/`make-test-python.nix` (`pkgs.testers.nixosTest` since 22.05), now requires detaching commands such as `succeed("foo &")` and `succeed("foo | xclip -i")` to close stdout. - The NixOS VM test framework, `pkgs.nixosTest`/`make-test-python.nix` (`pkgs.testers.nixosTest` since 22.05), now requires detaching commands such as `succeed("foo &")` and `succeed("foo | xclip -i")` to close stdout.

View File

@@ -240,6 +240,7 @@
./programs/iay.nix ./programs/iay.nix
./programs/iftop.nix ./programs/iftop.nix
./programs/iio-hyprland.nix ./programs/iio-hyprland.nix
./programs/iio-niri.nix
./programs/immersed.nix ./programs/immersed.nix
./programs/iotop.nix ./programs/iotop.nix
./programs/java.nix ./programs/java.nix

View File

@@ -0,0 +1,59 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib)
mkEnableOption
mkPackageOption
mkOption
types
mkIf
getExe
escapeShellArgs
mkDefault
;
cfg = config.services.iio-niri;
in
{
options.services.iio-niri = {
enable = mkEnableOption "IIO-Niri";
package = mkPackageOption pkgs "iio-niri" { };
niriUnit = mkOption {
type = types.nonEmptyStr;
default = "niri.service";
description = "The Niri **user** service unit to bind IIO-Niri's **user** service unit to.";
};
extraArgs = mkOption {
type = types.listOf types.str;
default = [ ];
description = "Extra arguments to pass to IIO-Niri.";
};
};
config = mkIf cfg.enable {
hardware.sensor.iio.enable = mkDefault true;
environment.systemPackages = [ cfg.package ];
systemd.user.services.iio-niri = {
description = "IIO-Niri";
wantedBy = [ cfg.niriUnit ];
bindsTo = [ cfg.niriUnit ];
partOf = [ cfg.niriUnit ];
after = [ cfg.niriUnit ];
serviceConfig = {
Type = "simple";
ExecStart = "${getExe cfg.package} ${escapeShellArgs cfg.extraArgs}";
Restart = "on-failure";
};
};
};
meta.maintainers = with lib.maintainers; [ zhaithizaliel ];
}