Major nmrs release - 3.0.0 - OpenVPN, WireGuard, Wi-Fi scoping, saved profiles, and D-Bus-first APIs

āš“ Rust    šŸ“… 2026-04-25    šŸ‘¤ surdeus    šŸ‘ļø 1      

surdeus

I'm very excited to announce I've finished 3.0.0 for nmrs - my set of Rust bindings for NetworkManager over D-Bus.

This massive update includes support for OpenVPN, WireGuard, generic VPN enumeration, per-interface Wi-Fi scoping, saved connection management, per-BSSID access point discovery, airplane mode/rfkill state, connectivity/captive portal reporting, and a NetworkManager secret agent API for credential prompts.

The big goal with this release was to move nmrs toward a broader typed NetworkManager API that apps, applets, and network utilities can build on without dropping down into raw D-Bus calls for common workflows.

I'm happy to say I've also encountered my first set of users who are running my software in production at their company! What an honor it is to be responsible for someone else's code in such a fashion. I do not take that lightly.

Some highlights:

  • OpenVPN support, including .ovpn import (hand rolled recursive descent parser), config builders, cert handling, routing options, TLS hardening, compression, proxy options, and richer VPN details.
  • Generic VPN listing for NetworkManager VPN plugins like OpenConnect, strongSwan, PPTP, and L2TP.
  • UUID/name-based activation for saved VPN profiles.
  • Per-device Wi-Fi APIs for multi-radio systems.
  • Saved profile enumeration, update, delete, and decoded summaries.
  • Per-BSSID access point listing and targeted connect.
  • Connectivity state reporting, including captive portal detection.
  • Secret agent support for credential prompts.
  • Cleaner builder/error behavior and updated docs.

This has been a few months of work and a pretty large API release. I’d love feedback from anyone who uses NetworkManager from Rust, works on Linux networking tools, or has opinions about what a good high-level D-Bus wrapper like this should expose. One thing I am already thinking about is restricting users to use async, I will definitely see about re-working that...

At any rate, I am happy to see what decisions are down right stupid for the domain. My inbox is open.

Thanks so much and looking forward to hearing everyone's feedback!

Repo: https://github.com/cachebag/nmrs
Crate: https://crates.io/crates/nmrs
Docs: https://docs.rs/nmrs

Migrating from 2.x to 3.0

Please see the release notes

1 post - 1 participant

Read full topic

šŸ·ļø Rust_feed