Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lionello/dub2nix
CLI tool to create Nix expressions for D-lang Dub projects
https://github.com/lionello/dub2nix
dlang dlang-utilities dlanguage dub nix nixos nixpkgs
Last synced: about 2 months ago
JSON representation
CLI tool to create Nix expressions for D-lang Dub projects
- Host: GitHub
- URL: https://github.com/lionello/dub2nix
- Owner: lionello
- License: mit
- Created: 2019-04-21T03:32:58.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-09-11T16:28:29.000Z (over 1 year ago)
- Last Synced: 2024-11-02T13:51:51.722Z (2 months ago)
- Topics: dlang, dlang-utilities, dlanguage, dub, nix, nixos, nixpkgs
- Language: D
- Size: 55.7 KB
- Stars: 15
- Watchers: 4
- Forks: 6
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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 {};
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..
];
}
```## Development
Do `git clone` and `nix-shell` to build with `dub`:
```sh
nix-shell
dub
```
Alternatively, use [`direnv`](https://direnv.net):
```sh
echo use nix >> .envrc
direnv allow
dub
```### Test
To run the tests, do:
```
nix-instantiate --eval "test"
```This should evaluate to `true`.
## Usage
```
Usage: dub2nix [OPTIONS] COMMANDCreate Nix derivations for Dub package dependencies.
Commands:
save Write Nix files for Dub projectOptions:
-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.