Nyah 🐈
A polished, cross-platform package manager wrapper.
Nyah unifieswinget,chocolatey,scoop,apt,dnf,pacman,apk,flatpak,pkg,npm, andpipbehind a single consistent CLI.
Philosophy
- Wrapper only. Nyah never hosts packages or resolves dependencies itself.
- Zero cloud. No telemetry, no package registry, no server.
- Lightweight. Installs as a Python package; no binaries required.
Quick Start
pip install nyah # install
nyah doctor # check system health
nyah install git # install a package
nyah search neovim # find a package
Installation
pip install nyah
# or from source:
git clone https://github.com/yourname/nyah && cd nyah
pip install -e .
Commands
Package Management
| Command | Description |
|---|---|
nyah install <pkg> [<pkg2>...] |
Install one or more packages |
nyah install <pkg> with <backend> |
Force a specific backend |
nyah remove <pkg> |
Remove a package |
nyah reinstall <pkg> |
Remove then re-install |
nyah purge <pkg> |
Remove + delete leftover config/cache dirs |
nyah repair <pkg> |
Attempt to repair a broken install |
nyah upgrade [<pkg>...] |
Upgrade packages |
nyah update |
Refresh package database |
nyah list |
List installed packages |
nyah search <query> |
Search for packages |
Information
| Command | Description |
|---|---|
nyah info <pkg> |
Detailed package info (version, homepage, license, location) |
nyah which <pkg> |
Locate executable, backend, and version |
nyah homepage <pkg> |
Open package homepage in browser |
Developer Setups
Quickly bootstrap an entire developer environment:
nyah setup python # git + python + vscode + pipx
nyah setup rust # git + rust + llvm + vscode
nyah setup cpp # git + cmake + llvm + vscode
nyah setup web # git + node + vscode
nyah setup node # git + node + yarn + vscode
nyah setup gamedev # git + cmake + python + vscode
nyah setup ai # git + python + vscode + pipx + cuda
Workspace Manifests
Create a nyah.toml in your project directory:
[packages]
git = true
python = true
vscode = true
rust = true
Then just run:
nyah install # reads nyah.toml automatically
Export / Import / Sync
nyah export # save package list to packages.json
nyah export -o mylist.json # custom filename
nyah import mylist.json # install missing packages
nyah sync mylist.json # sync: install missing, skip installed
Backup & Restore
nyah backup # creates nyah_backup.json
nyah backup -o my_backup.json # custom filename
nyah restore nyah_backup.json # restore packages + config
Backup includes: installed packages, preferred backend, all config, and command history.
Backend Management
nyah backend # show current, installed, available backends
nyah use winget # switch preferred backend
nyah enable scoop # install a new backend (Windows)
History
nyah history # all history
nyah history --filter install # only installs
nyah history --filter remove # only removals
nyah history --last 10 # last 10 entries
Health & Doctor
nyah health # check installed dev tools (Git, Python, Node, Java, Rust, Go, CMake, VS...)
nyah doctor # full system diagnostic (OS, arch, PATH, admin status, backends)
nyah doctor --fix # auto-repair common issues
Cache
nyah cache size # show cache disk usage
nyah cache clean # remove stale entries (keeps config + history)
nyah cache clear # delete entire cache
Config
nyah config # list all config keys
nyah config get preferred_backend
nyah config set colors false
nyah config set preferred_backend chocolatey
Misc
nyah version # Nyah and backend versions
nyah --help # full help
nyah --debug # verbose error output
Supported Backends
| Backend | Platform | Auto-install |
|---|---|---|
winget |
Windows | ✔ |
chocolatey |
Windows | ✔ |
scoop |
Windows | ✔ |
apt |
Linux (Debian/Ubuntu) | – |
dnf |
Linux (Fedora/RHEL) | – |
pacman |
Linux (Arch) | – |
apk |
Linux (Alpine) | – |
flatpak |
Linux | ✔ (via apt/dnf) |
pkg |
FreeBSD | – |
npm |
Any (Node.js) | – |
pip |
Any (Python) | – |
git |
Any | – |
Architecture
nyah/
├── cli.py ← Argument parsing + output formatting
├── dispatcher.py ← All business logic
├── config.py ← ~/.nyah/config.json
├── detector.py ← Discovers installed package managers
├── logger.py ← Colored console output
├── backend/
│ ├── base.py ← Abstract backend interface
│ ├── winget.py
│ ├── chocolatey.py
│ ├── scoop.py
│ ├── apt.py
│ ├── dnf.py
│ ├── pacman.py
│ ├── apk.py
│ ├── flatpak.py
│ ├── pkg.py
│ ├── npm.py
│ ├── pip.py
│ └── git.py
└── test_nyah.py ← Full test suite (50+ tests)
Contributing
- Fork the repo
- Add your feature in the right backend or dispatcher method
- Write a test in
test_nyah.py - Run
pytest nyah/test_nyah.py -q— all must pass - Open a PR
License
MIT
Metadata
Release files for nyah 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nyah-0.1.1.tar.gz | 44.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nyah-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 101.2 kB
Release files / nyah-0.1.1.tar.gz
| Download URL | nyah-0.1.1.tar.gz |
|---|---|
| Size | 44.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
af74a42cb73e3aa249901640be0b52bb82f3c6f6b31b1e02ae0c17820438b10c
|
|
BLAKE2b-256 checksum How to use checksums |
98ab5a13ccfb26c3bc8afc635063b1744ca7148eeb16c2d2e7f07f93f39564e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|
Release files / nyah-0.1.1-py3-none-any.whl
| Download URL | nyah-0.1.1-py3-none-any.whl |
|---|---|
| Size | 56.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fe63a34fa99be2891dd7be0c895d6894304a29cc8b1808e54de255d757c7f494
|
|
BLAKE2b-256 checksum How to use checksums |
995f0fc51847a8619f30753505d82ba18413809e4eb5ca7a6b0157f70eae40f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|