Awesome
Nami
A clean and tidy decentralized package manager.
❤️ A project by txthinking.com
Install
bash <(curl https://bash.ooo/nami.sh)
Example
nami install brook
nami list
nami remove brook
You can also upgrade nami by nami
nami install nami
<details>
<summary>Keep PATH with sudo</summary>
sudo visudo
Defaults !env_reset
# Defaults secure_path=...
</details>
All officially maintained packages
Package | Description | Website |
---|---|---|
7z | 7-Zip is a file archiver with a high compression ratio. | Website |
agg | asciinema gif generator | Website |
brook-store | A brook user system | Website |
brook | A cross-platform network tool designed for developers. | Website |
bun | Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one. | Website |
caddy | Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS | Website |
cidr-merger | A simple command line tool to merge ip/ip cidr/ip range, supports IPv4/IPv6 | Website |
cloudflare | cloudflare cli | Website |
cloudupload | Upload files to multiple Cloud Storage in parallel. Automatically apply for ssl certificate with your domain. | Website |
cmake | CMake, the cross-platform, open-source build system. | Website |
cowsay | cowsay is reborn. Neo Cowsay has written in Go. | Website |
curl | curl with http3 support | Website |
d2 | D2 is a modern diagram scripting language that turns text to diagrams. | Website |
deno | A modern runtime for JavaScript and TypeScript. | Website |
denobundle | Bundle assets into the binary with deno compile | Website |
etcd | Distributed reliable key-value store for the most critical data of a distributed system | Website |
fd | A simple, fast and user-friendly alternative to 'find' | Website |
ffmpeg | A complete, cross-platform solution to record, convert and stream audio and video. | Website |
fzf | A command-line fuzzy finder | Website |
go | An open-source programming language supported by Google | Website |
hancock | Manage multiple remote servers and execute commands remotely | Website |
hey | HTTP load generator, ApacheBench (ab) replacement | Website |
httpserver | This is a very simple http static server, sometimes we need it for testing | Website |
icnsify | Easily create .icns files (Mac Icons) | Website |
ipatool | Command-line tool that allows searching and downloading app packages (known as ipa files) from the iOS App Store | Website |
ix | command line pastebin. | Website |
joker | Joker can turn process into daemon. Zero-Configuration | Website |
jq | Command-line JSON processor | Website |
mad | Generate root CA and derivative certificate for any domains and any IPs | Website |
markdown | markdown converter | Website |
marp | A CLI interface for Marp and Marpit based converters | Website |
minify | Go minifiers for web formats | Website |
nami | The easy way to download anything from anywhere | Website |
nico | A HTTP3 web server for reverse proxy and single page application, automatically apply for ssl certificate, Zero-Configuration. | Website |
ninja | a small build system with a focus on speed | Website |
nsq | A realtime distributed messaging platform | Website |
node | Node.js is an open-source, cross-platform JavaScript runtime environment. | Website |
protoc | Protocol Buffers - Google's data interchange format | Website |
protoc-gen-js | protoc-gen-js executable | Website |
rsrc | Tool for embedding .ico & manifest resources in Go programs for Windows. | Website |
shadowsocks | A Rust port of shadowsocks | Website |
sshexec | A command-line tool to execute remote command through ssh | Website |
stuntman | NAT type detection | Website |
tengo | A fast script language for Go | Website |
ipio | Proxy all traffic just one line command. | Website |
yt-dlp | Command-line program to download videos from YouTube.com and other video sites | Website |
z | a process manager | Website |
zig | Zig is a general-purpose programming language and toolchain for maintaining robust, optimal and reusable software. | Website |
zigup | Download and manage zig compilers. | Website |
zoro | zoro can help you expose local server to external network. Support both TCP/UDP, of course support HTTP. Zero-Configuration | Website |
Directory
$HOME/.nami
: All files of nami$HOME/.nami/bin
: When installing nami, this path is already added to your $PATH$HOME/.nami/cache
: This directory will be emptied before installing package- If the package can be standalone executable files:
- The script should save only executable files to here. Such as shadowsocks.tengo
After the installation process is finished, nami will copy these files to the
$HOME/.nami/bin
directory - If the package is a directory:
- The script should save the directory into here. Such as go.tengo
- And write the relative paths of executable files to
links
file, one path per line. Such as go.tengo
After the installation process is finished, nami will copy the directory to the
$HOME/.nami/dir/
directory and will create symbolic links to the$HOME/.nami/bin
based onlinks
- Write version to
version
file
- If the package can be standalone executable files:
$HOME/.nami/copied
: This is usually used if the command to be installed is running, such as brook.tengo, you may:- get the processes
- stop the processes
- copy(not move) the commands from
$HOME/.nami/cache
to$HOME/.nami/bin
- copy the commands from
$HOME/.nami/cache
to$HOME/.nami/copied
, this prompts nami not to perform duplicate operations - run the previously stopped processes again
Script
<details> <summary>tengo</summary>Nami supports tengo script, there is a built-in module import("nami")
for convenience:
nami.os
: linux/darwin/windows/...nami.arch
: amd64/arm64/...nami.home_dir
: $HOMEnami.bin_dir
: $HOME/.nami/binnami.cache_dir
: $HOME/.nami/cachenami.copied_dir
: $HOME/.nami/copiedappend_file(file string, text string) => error
write_file(file string, text string) => error
sh(name string, args...) => error
: run commandsh1(name string, args...) => bytes/error
: run command and return stdoutcp(url string, dst string) => bytes/error
: download file to dstcp(url string, { from: dst, from1: dst1 }) => bytes/error
: download compressed file, and copy one or more filescp_dir(url string, { from: dst, from1: dst1 }, [link, link1]) => bytes/error
: download compressed file, and copy one or more directories, and create symbolic links
Run local script
nami install ./exmaple.tengo
PR
Fork nami project, put exmaple.tengo
to package directory, create PR, then you can
nami install example
Run remote script
nami install https://yourserver.com/exmaple.tengo
License
Licensed under The GPLv3 License