CLI tool to create Nix expressions for D-lang Dub projects.
Install with nix-env
:
nix-env -if https://github.com/lionello/dub2nix/archive/master.tar.gz
or add to your shell.nix
and run nix-shell
:
with import <nixpkgs> {};
let
dub2nix-src = fetchTarball {
url = "https://github.com/lionello/dub2nix/archive/master.tar.gz";
};
dub2nix = (import dub2nix-src) { inherit pkgs; };
in mkShell {
buildInputs = [
dub2nix # dub dmd dtools ldc etc..
];
}
Do git clone
and nix-shell
to build with dub
:
nix-shell
dub
Alternatively, use direnv
:
echo use nix >> .envrc
direnv allow
dub
To run the tests, do:
nix-instantiate --eval "test"
This should evaluate to true
.
Usage: dub2nix [OPTIONS] COMMAND
Create Nix derivations for Dub package dependencies.
Commands:
save Write Nix files for Dub project
Options:
-i --input Path of selections JSON; defaults to ./dub.selections.json
-o --output Output Nix file for Dub project
-r --registry URL to Dub package registry; default http://code.dlang.org/packages/
-d --deps-file Output Nix file with dependencies; defaults to ./dub.selections.nix
-h --help This help information.
First, use dub build
to generate the dub.selections.json
for your Dub project.
Then, run dub2nix save
to read the dub.selections.json
in the current folder and write a new file dub.selections.nix
.
This dub.selections.nix
is used in mkDubDerivation
(from mkDub.nix
) to create a new derivation for your Dub project:
{pkgs}:
with (import ./mkDub.nix {
inherit pkgs;
});
mkDubDerivation {
version = "0.1.0"; # optional
src = ./.;
}
When your project has no dependencies at all, this will fail because dub.selections.nix
is missing. Set deps
to override the dependencies:
{pkgs}:
with (import ./mkDub.nix {
inherit pkgs;
});
mkDubDerivation {
src = ./.;
deps = [];
}
Use the --output
option to write a .nix
file with a skeleton derivation for your dub project. This will also create the mkDub.nix
file for importing into the derivation.