diff --git a/nixos/doc/manual/release-notes/rl-2511.section.md b/nixos/doc/manual/release-notes/rl-2511.section.md index 3042ef3d89ba..620b98f2f089 100644 --- a/nixos/doc/manual/release-notes/rl-2511.section.md +++ b/nixos/doc/manual/release-notes/rl-2511.section.md @@ -198,6 +198,8 @@ - [yubikey-manager](https://github.com/Yubico/yubikey-manager), a tool for configuring YubiKey devices. Available as [programs.yubikey-manager](#opt-programs.yubikey-manager.enable). +- [rumno](https://gitlab.com/ivanmalison/rumno), a visual pop-up notification manager. Available as [services.rumno](#opt-services.rumno.enable). + ## Backward Incompatibilities {#sec-release-25.11-incompatibilities} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 65d1fbbeb859..d10f2a026d5b 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -931,6 +931,7 @@ ./services/misc/rmfakecloud.nix ./services/misc/rshim.nix ./services/misc/rsync.nix + ./services/misc/rumno.nix ./services/misc/safeeyes.nix ./services/misc/sdrplay.nix ./services/misc/servarr/lidarr.nix diff --git a/nixos/modules/services/misc/rumno.nix b/nixos/modules/services/misc/rumno.nix new file mode 100644 index 000000000000..d0c07e460f67 --- /dev/null +++ b/nixos/modules/services/misc/rumno.nix @@ -0,0 +1,64 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + cfg = config.services.rumno; +in +{ + meta.maintainers = with lib.maintainers; [ imalison ]; + + options.services.rumno = { + enable = lib.mkEnableOption "rumno visual pop-up notification manager"; + + package = lib.mkPackageOption pkgs "rumno" { }; + + extraArgs = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + example = [ + "--verbose" + "--config" + "/etc/rumno/config.toml" + ]; + description = '' + Extra command-line arguments to pass to the rumno daemon. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.user.services.rumno = { + description = "Rumno visual pop-up notification manager"; + wantedBy = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + after = [ "graphical-session-pre.target" ]; + + serviceConfig = { + Type = "dbus"; + BusName = "de.rumno.v1"; + ExecStart = "${cfg.package}/bin/rumno daemon --foreground ${lib.escapeShellArgs cfg.extraArgs}"; + Restart = "on-failure"; + RestartSec = 1; + + # Environment for GTK/GUI applications + PassEnvironment = [ + "DISPLAY" + "WAYLAND_DISPLAY" + "XDG_RUNTIME_DIR" + ]; + }; + + environment = { + # Set GTK theme environment variables if needed + GTK_THEME = lib.mkDefault ""; + }; + }; + + # Ensure dbus service file is installed + environment.systemPackages = [ cfg.package ]; + }; +} diff --git a/pkgs/by-name/ru/rumno/package.nix b/pkgs/by-name/ru/rumno/package.nix new file mode 100644 index 000000000000..561627b2bdb8 --- /dev/null +++ b/pkgs/by-name/ru/rumno/package.nix @@ -0,0 +1,55 @@ +{ + lib, + rustPlatform, + fetchFromGitLab, + pkg-config, + dbus, + gdk-pixbuf, + glib, + gtk3, + cairo, + atk, + pango, + harfbuzz, + nix-update-script, +}: + +rustPlatform.buildRustPackage { + pname = "rumno"; + version = "0-unstable-2025-08-13"; + + src = fetchFromGitLab { + owner = "ivanmalison"; + repo = "rumno"; + rev = "a70bf6f05976b07ae5fdced2ab80d2b9e684fb92"; + hash = "sha256-reJIYlTR6fI42EcYGwb5BmEPVtls+s1+mFd7/34oXBw="; + }; + + cargoHash = "sha256-z9nGePcVc+RPSMPb7CAPOfUMoVlP1MKo57aVFkd1DmE="; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + dbus + gdk-pixbuf + glib + gtk3 + cairo + atk + pango + harfbuzz + ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Visual pop-up notification manager"; + homepage = "https://gitlab.com/ivanmalison/rumno"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ imalison ]; + mainProgram = "rumno"; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index f6b308d6ebc1..cff20ea5df3f 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1652,6 +1652,7 @@ mapAliases { vkBasalt = throw "'vkBasalt' has been renamed to/replaced by 'vkbasalt'"; # Converted to throw 2025-10-27 vkdt-wayland = throw "'vkdt-wayland' has been renamed to/replaced by 'vkdt'"; # Converted to throw 2025-10-27 volk_2 = throw "'volk_2' has been removed after not being used by any package for a long time"; # Added 2025-10-25 + volnoti = throw "'volnoti' has been removed due to lack of maintenance upstream. Consider using 'rumno' instead."; # Added 2024-12-04 voxelands = throw "'voxelands' has been removed due to lack of upstream maintenance"; # Added 2025-08-30 vtk_9 = warnAlias "'vtk_9' has been renamed to 'vtk_9_5'" vtk_9_5; # Added 2025-07-18 vtk_9_egl = warnAlias "'vtk_9_5' now build with egl support by default, so `vtk_9_egl` is deprecated, consider using 'vtk_9_5' instead." vtk_9_5; # Added 2025-07-18