diff options
Diffstat (limited to 'src/build_depends/dub2nix/README.md')
-rw-r--r-- | src/build_depends/dub2nix/README.md | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/build_depends/dub2nix/README.md b/src/build_depends/dub2nix/README.md new file mode 100644 index 0000000..bfb8e3a --- /dev/null +++ b/src/build_depends/dub2nix/README.md @@ -0,0 +1,82 @@ +# dub2nix +CLI tool to create Nix expressions for D-lang Dub projects. + +![CI](https://github.com/lionello/dub2nix/workflows/CI/badge.svg) + +## Installation +Install with `nix-env`: +```sh +nix-env -if https://github.com/lionello/dub2nix/archive/master.tar.gz +``` +or add to your `shell.nix` and run `nix-shell`: +```nix +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 rdmd ldc etc.. + ]; +} +``` + +## Development +Do `git clone` and `nix-shell` to build with `dub`: +```sh +nix-shell +dub +``` +Alternatively, use `direnv`: +```sh +echo use nix >> .envrc +direnv allow +dub +``` + +## Usage +``` +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: +```nix +{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: +```nix +{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. |