# README
NOMAD, a portable app installer
Install
Run this command in a cmd and in a nomad
folder (or whatever else folder)
powershell -Command Invoke-WebRequest -Uri https://github.com/jonathanMelly/nomad/raw/main/install.bat -OutFile %TEMP%\downloaded.bat && %TEMP%\downloaded.bat
Credits
This initial structure of this app was based on goappmation. It has then a lot evolved...
Why ?
I needed a fast, reliable and simple way to manage portable apps (mainly on windows).
Just use Scoop ?
If you like scoop, save yourself some time and stop reading this ;-) Otherwise, go ahead :-)
Other solutions ?
- portableapps was too slow or buggy (do some fs stuff before/after run)
- scoop status was uncertain (it seems back on track now)
3.3.2023 brief comparison with scoop
feature | scoop | nomad | comments |
---|---|---|---|
checksums | yes | no | PR welcome |
lots of apps | yes | no | Copy/paste a conf and adapt it for your needs |
version pattern shortcut | no | yes | I love it |
shortcuts | yes | yes | Scoop uses shims... Nomad can use custom image index for shortcut |
push for 100% portability | no | yes | Example: putty conf not saved with scoop standard bucket |
uses github api (when possible) | no | yes | Consequence: Use less bandwidth but needs a PAT |
single go binary | no | yes | Scoop is a list of ps scripts |
Status
It is working (I’m using it at my work). Basic UI is the next big step.
How
- Download latest release
- To install / update / get status an app (Filezilla for instance), start a terminal and run
nomad i[nstall] filezilla
nomad up[grade] filezilla
nomad st[atus] filezilla
- To list available apps
nomad l[ist]
- To check status of all installed apps
nomad st[atus]
- To check status of one app (installed or not)
nomad status filezilla
- To check status of multiple apps (installed or not)
nomad status filezilla rclone putty
- To view app version
nomad v[ersion]
- To update nomad (and get new apps)
nomad self
Available apps are listed here, and you can add yours by adding any valid json file in a folder named app-definitions OR in a config file that must be placed in the same folder as the executable). Please have a look at Configuration for more info
Essential options
Flag | Description |
---|---|
-force | force reinstall (removes existing folder) |
-skip=false | do not reuse already downloaded archive |
-latest=false | do not check for latest version (if url provided in config) |
-version=1.2.0 | install/upgrade/downgrade to custom version |
-verbose | verbose output useful for debug |
Other options
Please run
nomad --help
Configuration
Zero Config by default
The single binary is self-sufficient (no need for any config)
Opened for config
You may add a nomad.toml in the same directory as the binary to configure any custom app definition and github token.
Custom app definition
You can add any custom definition either in the nomad.toml config file or in a app-definitions directory in which you can put a json/toml definition following this structure (AppDefinition) or imitating real examples
Github
To reduce network traffic, when possible, GitHub API is used to retrieve lastest app versions info. As GitHub API limits traffic to guest requests, a PAT (GitHub token) is very useful, thus a generic token is included and if you have a PAT (or it seems fairly easy for you to get one), please add it in your env (GITHUB_PAT) or put the following file in the same directory as the binary to reduce pressure on the generic token.
Create a PAT
Please follow this link to create a basic PAT.
Next steps
UI and lots of new apps
Contribute
Please open an issue if you see a bug or think of a nice improvement. PR are also welcome.
Build
Windows
go generate .\cmd\nomad go build -o build .\cmd\nomad\
Linux
view action