nix-community/mavenix

Deterministic Maven builds using Nix [maintainer=@icetan]

Nix

50

99 commits

updated Feb 2, 2022

See the code

README

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/nix-community/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 'fetchTarball "http://github.com/traccar/traccar/tarball/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

Contributors

icetan

84 commits

FRidh

3 commits

asymmetric

3 commits

ttuegel

2 commits

nix-community/mavenix

Deterministic Maven builds using Nix [maintainer=@icetan]

Nix

50

99 commits

updated Feb 2, 2022

See the code

README

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/nix-community/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 'fetchTarball "http://github.com/traccar/traccar/tarball/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

Contributors

icetan

84 commits

FRidh

3 commits

asymmetric

3 commits

ttuegel

2 commits

Languages

Nix

60.7%

Shell

39.3%