Skip to content
Deterministic Maven builds using Nix?
Nix Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md Add Spring Boot app to 3rd party examples May 18, 2019
UNLICENSE Add unlicense Feb 1, 2019
default.nix
mavenix.nix
mvnix-init
mvnix-update
overlay.nix Add overlay expression Feb 3, 2019
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/tarball/master

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

Or a Spring Boot application:

mvnix-init -S 'fetchTarball https://github.com/Gerschtli/spring-rest-api/tarball/master'
mvnix-update
nix-build
You can’t perform that action at this time.