From 207f23bf08f0c30c0f30ae9054c2a6014b08d2aa Mon Sep 17 00:00:00 2001 From: Zhaith Izaliel Date: Wed, 22 Oct 2025 22:33:42 +0200 Subject: [PATCH] nixos/iio-niri: init module --- .../manual/release-notes/rl-2111.section.md | 2 + nixos/modules/module-list.nix | 1 + nixos/modules/programs/iio-niri.nix | 59 +++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 nixos/modules/programs/iio-niri.nix diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index bf39afd98627..40a1a37483d7 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -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. +- [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} - 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. diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 2b98c1cc23e1..0fb8a9220d75 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -240,6 +240,7 @@ ./programs/iay.nix ./programs/iftop.nix ./programs/iio-hyprland.nix + ./programs/iio-niri.nix ./programs/immersed.nix ./programs/iotop.nix ./programs/java.nix diff --git a/nixos/modules/programs/iio-niri.nix b/nixos/modules/programs/iio-niri.nix new file mode 100644 index 000000000000..2c2810b0ee0f --- /dev/null +++ b/nixos/modules/programs/iio-niri.nix @@ -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 ]; +}