A few more optional field suggestions for the [dot-nimble 
format](https://github.com/nim-lang/nimble#nimble-reference):

**Author Info:**

  * `author_url` \- one or more URLs about the author (since not everybody uses 
github).
  * `author_forum` \- the author's verified handle on this forum. This can be 
the first step to adding features where authors can manage their nimble 
packages via this site.
  * `author_donate` \- info on sending the module author a cryptocurrency tip. 😃



**Fetching The Source:**

  * `dl_urls` \- Where the source code for this version can be downloaded in 
[txz](https://en.wikipedia.org/wiki/Tar_%28computing%29#Suffixes_for_compressed_files)
 format (faster and lighter than git). Can be a list of mirrors.
  * `dl_ipfs` \- the 
[IPFS](https://en.wikipedia.org/wiki/InterPlanetary_File_System) address / 
[multihash](https://github.com/multiformats/multihash) checksum of the txz 
archive. If `dl_urls` is omitted then it can be deducted from this via the IPFS 
gateways. If ipfs binary is installed, then it can be used to fetch the package 
(possibly from local cache).
  * `dl_bytes` \- expected txz archive size in bytes.



**Pre-Installation Requirements:**

  * `req_os` [(recently mentioned 
here)](https://www.reddit.com/r/nim/comments/czx51g/xors3d_game_engine_for_nim_wrapper/ezaek28/)
 \- case-insensitive comma separated list of supported 
[Distribution](https://nim-lang.org/docs/distros.html#Distribution) strings. It 
would also be useful to write like "!windows, !haiku" when you just know where 
it _doesn 't_ work. Bonus points if you can specify >= version number for 
[Windows](https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions), 
[MacOS](https://en.wikipedia.org/wiki/MacOS_version_history) 
[Android](https://en.wikipedia.org/wiki/Android_version_history), Linux kernel, 
etc.
  * `req_cpu` \- comma-sep list of supported 
[hostCPU](https://github.com/nim-lang/Nim/blob/master/lib/system.nim#L1440) 
architectures.
  * `req_pkg` \- comma-sep list of packages that need to be installed. This can 
be normalized between distros via something like 
[pkgs.org](https://pkgs.org/download/libpq).
  * `req_bin` \- external tools that must be available and executable on the 
system for the package installation to succeed.
  * `req_compiler` \- to show this only works (or is known not to work) with 
specific backends (`gcc`, `clang`, `icc`, `pcc`, `emcc`, `node`, etc). Again, 
bonus points for >= version number.



**Other:**

  * `license` \- as [previously 
suggested](https://forum.nim-lang.org/t/4703#29372), I think the license string 
should be checked to be a valid [SPDX](https://spdx.org/licenses/) identifier, 
or a string of several identifiers joined with either `||` or `&&`.



See also: [Rust's cargo manifest 
format](https://doc.rust-lang.org/cargo/reference/manifest.html).

Reply via email to