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.1.tar.gz (44.7 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.1-py3-none-any.whl (56.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nyah-0.1.1.tar.gz
  • Upload date:
  • Size: 44.7 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.1.tar.gz
Algorithm Hash digest
SHA256 af74a42cb73e3aa249901640be0b52bb82f3c6f6b31b1e02ae0c17820438b10c
MD5 714cf467b2ced2c064a5c9fb7422ec45
BLAKE2b-256 98ab5a13ccfb26c3bc8afc635063b1744ca7148eeb16c2d2e7f07f93f39564e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nyah-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 56.5 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fe63a34fa99be2891dd7be0c895d6894304a29cc8b1808e54de255d757c7f494
MD5 459c1acef66de0ffa99521bde340d8a0
BLAKE2b-256 995f0fc51847a8619f30753505d82ba18413809e4eb5ca7a6b0157f70eae40f6

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