Nixify software with less effort [maintainer=@DavHau]
Go to file
DavHau 8e13d69b4a
Merge pull request #80 from nix-community/dream-lock-packages
dream-lock: support multiple top-level packages
2022-02-10 12:04:54 +07:00
.github/workflows test nix funcs with pytest via nix_ffi.py 2021-11-20 11:34:04 +07:00
docs Merge pull request #79 from raboof/patch-2 2022-02-04 22:43:55 +07:00
notes fix node2nix builder 2021-09-22 00:30:56 +01:00
overrides/nodejs Merge pull request #70 from Lassulus/strapi-override 2022-01-06 00:05:43 +01:00
src update dream-lock.example for rust subsystem 2022-02-10 11:44:50 +07:00
tests fix translator test for package-json 2022-02-08 17:54:10 +07:00
.gitignore add github actions 2021-11-17 12:13:54 +07:00
ci.nix disable hercules-ci 2021-11-17 12:31:19 +07:00
flake.lock add go support using gomod2nix 2021-11-16 23:28:05 +05:30
flake.nix Add darwin to architecture list 2022-01-29 16:45:36 -05:00
LICENSE Initial commit 2021-09-03 17:30:52 +02:00
README.md simplify example flake.nix 2022-02-09 15:13:49 +07:00

[WIP] dream2nix - A generic framework for 2nix tools

For an example of dream2nix being used in practice, see dreampkgs.


dream2nix is a generic framework for 2nix converters (converting from other build systems to nix). It focuses on the following aspects:

  • Modularity
  • Customizability
  • Maintainability
  • Nixpkgs Compatibility (not enforcing IFD)
  • Code de-duplication across 2nix converters
  • Code de-duplication in nixpkgs
  • Risk free opt-in FOD fetching (no reproducibility issues)
  • Common UI across 2nix converters
  • Reduce effort to develop new 2nix solutions
  • Exploration and adoption of new nix features
  • Simplified updating of packages

The goal of this project is to create a standardized, generic, modular framework for 2nix solutions, aiming for better flexibility, maintainability and usability.

The intention is to integrate many existing 2nix converters into this framework, thereby improving many of the previously named aspects and providing a unified UI for all 2nix solutions.

Test the experimental version of dream2nix

There are different ways how dream2nix can be invoked (CLI, flake, In-tree, IFD). A simple way to try out dream2nix is to check out the repository of the software to package and drop this flake.nix inside it:

{
  inputs.dream2nix.url = "github:nix-community/dream2nix";
  outputs = { self, dream2nix }@inputs:
    let
      dream2nix = inputs.dream2nix.lib.init {
        # either just specify systems
        systems = [ "x86_64-linux" ];
        # ...or alternatively specify your own nixpkgs
        # pkgs = ...;
      };
    in dream2nix.riseAndShine {
      source = ./.;
    };
}

After adding the flake.nix, execute the following commands to list the packages which can be built:

git add ./flake.nix
nix flake show

Watch the recent presentation

dream2nix - A generic framework for 2nix tools

Further Reading