Skip to content
Deterministic Maven builds using Nix?
Branch: master
Clone or download
Latest commit 258c7f2 Apr 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md
UNLICENSE
default.nix
mavenix.nix
mvnix-init
mvnix-update
overlay.nix
release.nix

README.md

Mavenix

Deterministic Maven builds using Nix?

Install

First you need to install the Nix package manager, if you already haven't.

nix-env -i -f https://github.com/icetan/mavenix/archive/master.tar.gz

Usage

Create stub files

First we need to create some stub Nix expression files. cd into your maven project directory and run:

mvnix-init

Follow the instructions displayed.

Generate lock file

The mvnix-update script generates a mavenix.lock file:

mvnix-update

Note the mvnix-update script expects a default.nix that evaluates to the derivation, just as is generated by mvnix-init. It is possible however to pass in a custom expression in order to update the derivation. E.g., if the derivation is the attribute pkgset.pkg:

mvnix-update -E "(import ./. {}).pkgset.pkg"

Packaging third-party projects

If you are packaging a third-party Maven project you can specify a Nix expression that returns the source of that project.

This makes it possible to generate a lock file without having to first manually clone the target project repository.

E.g. generate and build a Nix package for Traccar v4.2:

mvnix-init -S 'fetchGit { url = git://github.com/traccar/traccar.git; ref = "v4.2"; }'
mvnix-update
nix-build
You can’t perform that action at this time.