Quick Start
Get a USB management NIC configured without letting it take over normal Wi-Fi or tailnet connectivity.
Installation
Use PyPI for the normal CLI, FlakeHub for stable Nix use, and source checkout only when developing or validating local changes.
Interactive Setup
The guided setup wizard walks through USB NIC detection, IP configuration, Wi-Fi preservation, and a connectivity check.
sequenceDiagram
participant U as User
participant D as darwin-nic
participant N as Network
U->>D: darwin-nic setup
D->>N: Scan for USB NICs
N-->>D: Found en7 (USB Ethernet)
D->>U: Confirm interface?
U->>D: Yes
D->>N: Configure IP
D->>N: Preserve Wi-Fi priority
D->>N: Test target reachability
D-->>U: Complete
Configuration File
Save network settings to avoid typing IPs every time:
# Initialize config file
darwin-nic init-config
# View current settings
darwin-nic config
# List profiles
darwin-nic profiles
Edit ~/.config/darwin-nic/config.toml:
default_profile = "homelab"
[defaults]
preserve_wifi = true
[profiles.homelab]
device_ip = "192.168.88.1"
laptop_ip = "192.168.88.100"
mgmt_network = "192.168.88.0/24"
device_name = "Lab Management Device"
device_type = "network"
Then run:
CLI Configuration
For scripting or one-off setup:
darwin-nic configure \
--device-ip 192.168.88.1 \
--laptop-ip 192.168.88.100 \
--mgmt-network 192.168.88.0/24 \
--preserve-wifi
Options
| Option | Description | Default |
|---|---|---|
--profile |
Use named profile | - |
--device-ip |
Management device IP | From config |
--laptop-ip |
USB NIC IP to assign locally | From config |
--netmask |
Network mask | 255.255.255.0 |
--mgmt-network |
Management network CIDR | From config |
--preserve-wifi |
Keep Wi-Fi as primary | Off |
--dry-run |
Preview without changes | Off |
Verify Configuration
# Check status, routes, and bastion/OOB diagnostics
darwin-nic status
# Test connectivity
darwin-nic test
# Real-time monitoring
darwin-nic dashboard
If status shows the USB interface missing from scutil --nwi while the
Tailscale system extension is active, ordinary sockets may be blocked by macOS
NECP even though link-layer tools and ARP still work.
Integration Surfaces
| Surface | Use |
|---|---|
~/.config/darwin-nic/config.toml |
User profile and defaults file |
nix/modules/home-manager.nix |
Home Manager module for profile-driven installs |
nix/modules/system-manager.nix |
Linux System Manager module |
docs/llms.txt |
Compact agent-facing repo summary |
AGENTS.md |
Repo boundaries and validation rules |
Troubleshooting
USB Interface Not Detected
Permission Denied
# Pre-authenticate sudo, then rerun configure
sudo -v
darwin-nic configure \
--device-ip 192.168.88.1 \
--laptop-ip 192.168.88.100 \
--mgmt-network 192.168.88.0/24