Skip to main content

A cross-platform package manager wrapper

Project description

Nyah ๐Ÿˆ

A polished, cross-platform package manager wrapper.
Nyah unifies winget, chocolatey, scoop, apt, dnf, pacman, apk, flatpak, pkg, npm, and pip behind 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

  1. Fork the repo
  2. Add your feature in the right backend or dispatcher method
  3. Write a test in test_nyah.py
  4. Run pytest nyah/test_nyah.py -q โ€” all must pass
  5. Open a PR

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nyah-0.1.0.tar.gz (44.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nyah-0.1.0-py3-none-any.whl (56.4 kB view details)

Uploaded Python 3

File details

Details for the file nyah-0.1.0.tar.gz.

File metadata

  • Download URL: nyah-0.1.0.tar.gz
  • Upload date:
  • Size: 44.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for nyah-0.1.0.tar.gz
Algorithm Hash digest
SHA256 96951b5feefd419a29c36394f19ce1d0eec013c9d8378d3cfd82ceb00f3fb59f
MD5 0f10e428c167085b2b182a4732758819
BLAKE2b-256 4572a9cb6343c2ea5fafdc336181b42b761c72e5bd9e314cd9f5ca4af030d6a6

See more details on using hashes here.

File details

Details for the file nyah-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: nyah-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 56.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for nyah-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f99a000167430da660eb2f1cf22e4356289fae9bb7652bad0018b09335d45bd7
MD5 bd05a6134df940361486a58cdf71caae
BLAKE2b-256 23b1f56a1fbee657bf995e8d7d4e21b2dcbcfbae29386c8b9817a012fa2b8464

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page