A complete Nushell automation suite providing GPU mode control, autostart supervision, Gentoo USE management, pywal integration, Bluetooth quick connect, and cross-platform package handling — all from one command:
nudo.
The purpose of this toolkit is very simple:
- One command —
nudo - Everything system management
No more remembering which package manager you’re on, how to edit USE flags, what WM to start, or what GPU power level to switch to. Just manage everything consistently using Nushell functions.
- Unified control tool:
nudo <command> - Gentoo USE flag helper (no file editing required)
- Nvidia GPU performance profile manager
- Autostart process scheduler (with lock safety)
- fzf-powered file, directory, and history navigation
- Safe atomic file editing with privileged fallback
- Bluetooth device selection + connection
- Pywal startup automation
- Window manager startup without
.xinitrc - Cross-distro package installer abstraction
Clone or copy into your Nushell config directory:
~/.config/nushell/
config.nu
config.vscode.nu
functions/
Make sure functions/mod.nu gets included in your config.nu:
const functions_path = ($nu.config-path | path dirname | path join "functions")
use $functions_path *Restart Nushell.
nudo should now be available.
config.nu
config.vscode.nu
functions/
├─ utils.nu
├─ nudo_file.nu
├─ pkg_manager.nu
├─ genuse.nu
├─ gpu-mode.nu
├─ autostart.nu
├─ fzf.nu
├─ bluecon.nu
├─ editsu.nu
├─ settings.nu
├─ start_wm.nu
└─ mod.nu
| Module | Purpose |
|---|---|
nudo_file.nu |
Command dispatch system |
pkg_manager.nu |
Pacman/paru/yay/emerge/winget abstraction |
genuse.nu |
Gentoo USE, keyword, env control |
gpu-mode.nu |
Manage nvidia-smi performance levels |
autostart.nu |
Persistent autostart registry |
fzf.nu |
Keyboard shortcuts for fzf actions |
bluecon.nu |
Interactive bluetooth device selection |
editsu.nu |
Safe file editor with locking |
settings.nu |
Toggle + environment variable persistence |
All commands start with:
nudo <command> [...]
nudo install neovim
Auto-detects:
paruyaypacmanemergewinget
nudo update
nudo search firefox
Store persistent state values:
nudo set toggle colors true
nudo set toggle wallpath ~/Wallpapers/current.jpg
nudo get toggle
nudo remove toggle colors
Stored in:
$nu.data-dir/toggles
Add autostart commands:
nudo set autostart "fastfetch --config examples/10"
nudo get autostart
nudo remove autostart 0
On every start:
- Commands are checked
- Commands run once using lock files in
/tmp/nudo/astart
nudo set use dev-libs/openssl asm ssl
nudo remove use dev-libs/openssl
nudo get use
Files written to:
/etc/portage/package.use/etc/portage/package.accept_keywords(wip)/etc/portage/package.env(wip)
Switch Nvidia GPU performance profile:
nudo set mode powersave
nudo set mode balanced
nudo set mode gaming
Modes read from toggles:
powersave
balanced
gaming
Example toggle:
nudo set toggle gaming "1500,4500"
Three keybindings (Ctrl-h, Ctrl-t, Ctrl-e):
- History search
- Directory telescope
- Quick edit
Direct usage:
fzf-history(Ctrl-h)
fzf-directory(Ctrl-t)
fzf-edit(Ctrl-e)
Connect to device via interactive fuzzy match:
nudo connect
Or search term:
nudo connect speaker
Set default WM:
nudo set toggle wm startx
nudo set toggle wm hyprland
Launch:
wm
- Nushell
- Linux (most modules)
sudoordoasorrun0
fzffdbatparu/yay/pacmanbluetoothctlnotify-send(Pre-installed in most distros, except maybe lfs)pywalstarship
Enable verbose logging:
nudo set toggle DEBUG 1
Disable:
nudo set toggle DEBUG 0
All debug messages print with:
[DEBUG]:
MIT License — see LICENSE.