Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nix-community/mavenix

Deterministic Maven builds using Nix [maintainer=@icetan]
https://github.com/nix-community/mavenix

Last synced: 3 months ago
JSON representation

Deterministic Maven builds using Nix [maintainer=@icetan]

Awesome Lists containing this project

README

        

# Mavenix

Deterministic Maven builds using Nix?

## Install

First you need to install the [Nix package manager](https://nixos.org/nix/), if
you already haven't.

```sh
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:

```sh
mvnix-init
```

Follow the instructions displayed.

### Generate lock file

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

```sh
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`:

```sh
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:

```sh
mvnix-init -S 'fetchTarball "http://github.com/traccar/traccar/tarball/v4.2"'
mvnix-update
nix-build
```

Or a Spring Boot application:

```sh
mvnix-init -S 'fetchTarball https://github.com/Gerschtli/spring-rest-api/tarball/master'
mvnix-update
nix-build
```