Add a Docker build, as another way of testing out hnix

This commit is contained in:
John Wiegley 2018-05-07 12:45:37 -07:00
parent 080f5ead1d
commit 5176cffd2d
No known key found for this signature in database
GPG key ID: C144D8F4F19FE630
3 changed files with 38 additions and 1 deletions

7
.dockerignore Normal file
View file

@ -0,0 +1,7 @@
.git
Dockerfile
Makefile
README.md
cabal.sandbox.config
.cabal-sandbox/
hnix.cabal

16
Dockerfile Normal file
View file

@ -0,0 +1,16 @@
FROM lnl7/nix:2.0
WORKDIR /tmp/build
COPY default.nix /tmp/build
COPY package.yaml /tmp/build
# Install tools needed by builtins.fetchTarball, and then install all
# dependencies into its own layer, which doesn't change.
RUN nix-env -f '<nixpkgs>' -i gnutar gzip && \
nix-shell -Q -j2 --run true
COPY . /tmp/build
RUN nix-env -f . -i hnix
CMD ["/root/.nix-profile/bin/hnix"]

View file

@ -24,6 +24,20 @@ $ cabal test
$ LANGUAGE_TESTS=yes NIXPKGS_TESTS=yes cabal test
$ ./dist/build/hnix/hnix --help
```
## Building a Docker container
If you don't have Nix installed, or you'd just like to play around with `hnix`
completely separately from your main system, you can build a Docker container:
```bash
$ docker build -t hnix .
$ docker run hnix hnix --eval --expr '1 + 2'
# In order to refer to files under the current directory:
$ docker run -v $PWD/:/tmp/build run hnix hnix default.nix
```
## Building with full debug info
To build `hnix` for debugging, and with full tracing output and stack traces,
@ -33,7 +47,7 @@ use:
$ nix-shell --arg doProfiling true
$ cabal configure --enable-tests --enable-profiling --flags=tracing
$ cabal build
$ ./dist/build/hnix/hnix -v5 <args> +RTS -xc
$ ./dist/build/hnix/hnix -v5 --trace <args> +RTS -xc
```
Note that this will run quite slowly, but will give the most information as to