## [WIP] dream2nix - A framework for 2nix tools For an example of dream2nix being used in practice, see [dreampkgs](https://github.com/DavHau/dreampkgs). --- dream2nix is a 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 UX 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: ```nix { inputs.dream2nix.url = "github:nix-community/dream2nix"; outputs = { self, dream2nix }@inputs: let dream2nix = inputs.dream2nix.lib.init { # modify according to your supported systems systems = [ "x86_64-linux" ]; config.projectRoot = ./. ; }; in dream2nix.makeFlakeOutputs { source = ./.; }; } ``` After adding the flake.nix, execute the following commands to list the packages which can be built: ```shell git add ./flake.nix nix flake show ``` ### Watch the recent presentation [![dream2nix - A generic framework for 2nix tools](https://gist.githubusercontent.com/DavHau/755fed3774e89c0b9b8953a0a25309fa/raw/3c8b2c56f5fca3bf5c343ffc179136eef39d4d6a/dream2nix-youtube-talk.png)](https://www.youtube.com/watch?v=jqCfHMvCsfQ) ### Further Reading - [Summary of the core concepts and benefits](/docs/concepts-and-benefits.md) - [How would this improve the packaging situation in nixpkgs](/docs/nixpkgs-improvements.md) - [Override System](/docs/override-system.md) - [Contributors Guide](/docs/contributors-guide.md)