1
1
mirror of https://github.com/nmattia/niv.git synced 2024-09-18 19:07:19 +03:00
niv/README.md

91 lines
1.9 KiB
Markdown
Raw Normal View History

2019-01-17 23:59:01 +03:00
# niv
A tool for dealing with third-party packages in [Nix].
2019-01-18 01:00:48 +03:00
## Building
Inside the provided nix shell:
``` bash
$ # GHCi:
$ snack ghci -p package.yaml
$ # actual build:
$ snack build -p package.yaml
```
2019-01-17 23:59:01 +03:00
## Usage
### Global options
* `--versions`: path to the `vesions.json`
**NOTES**
* no support for non-json, to enforce convention
### Commands
#### init
[--fetch]
Creates (if the file doesn't exist)
* `nix/versions.json`:
``` json
{"nixpkgs": { ... }}
```
*`nix/fetch.nix`:
``` nix
...
```
*`default.nix`:
``` nix
with { fetch = import <fetch>; };
let pkgs = import fetch.nixpkgs;
in pkgs.hello
```
#### show
2019-01-18 01:00:48 +03:00
`[--branch] [--rev] [--owner] [--repo] [--attribute <attribute>] <p1> <p2>`...
if no attribute (br, rev, ...) is given, all attributes are shown for
`<packages>`. Otherwise the specified attributes are shown. If no package is
specified: `<packages> = <all packages>`, otherwise `<packages>` is set to
the specified packages.
2019-01-17 23:59:01 +03:00
#### update
* `[p [--commit] [--branch]]`
- `[]`: all packages are updated
- `[p1 p2 ...]`: the specified packages are updated
* `--commit <rev>`: `rev` is set to `<rev>` and the package is prefetched
* `--branch <branch>`: `branch` is set to `<branch>`, `rev` is set to the
latest revision on that branch and the package is prefetched
#### add
* `<package>`: adds the following to the versions file where `let <username/repo> = <package>`
``` json
{ "<repo>":
{ "owner": "<username>",
"repo": "<repo>",
"rev": "<latest commit on <branch>>",
"sha256": "<sha256>",
"branch": "<branch>"
}
}
```
2019-01-18 01:00:48 +03:00
* `--branch`: specifies `<branch>` (default: master)
2019-01-17 23:59:01 +03:00
* `--username <username>`: then `let <repo> = <package>`
* `--gitlab`: use gitlab instead of GitHub
2019-01-18 01:00:48 +03:00
* `--attribute <attribute> <value>`: sets `<attribute>` to `<value>`
2019-01-17 23:59:01 +03:00
**NOTE**: should the URLs be used instead? or more simply, how do we differentiate between Gitlab/GitHub?
2019-01-18 00:01:09 +03:00
[Nix]: https://nixos.org/nix/