diff --git a/README.md b/README.md index f2fbaf8c88..3cc19e2af4 100644 --- a/README.md +++ b/README.md @@ -8,31 +8,15 @@ Automate reproducible packaging for various language ecosystems
Documentation | - Contributing | - Overriding Packages | - Examples + Examples

!!! Warning: dream2nix is unstable software. While simple UX is one of our main focus points, the APIs are still under development. Do expect changes that will break your setup. -### Ecosystem stats: -

- - -
- - -
- - -

- ### Funding This project was funded through the [NGI Assure](https://nlnet.nl/assure) Fund, a fund established by [NLnet](https://nlnet.nl/) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu/) programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 957073. **Applications are still open, you can [apply today](https://nlnet.nl/propose)**. -Besides that, the project also receives private funding and support from [ Platonic.Systems](https://platonic.systems). - If your organization wants to support the project with extra funding in order to add support for more languages or new features, please contact one of the maintainers. ## Goals @@ -42,11 +26,8 @@ dream2nix focuses on the following aspects: - Modularity - Customizability - Maintainability -- Nixpkgs Compatibility, by not enforcing IFD (import from derivation) -- Code de-duplication across 2nix converters -- Code de-duplication in nixpkgs -- Risk-free opt-in aggregated fetching (larger [FODs](https://nixos.wiki/wiki/Glossary), less checksums) -- Common UI across 2nix converters +- Code de-duplication across 2nix solutions +- Common UI across 2nix solutions - Reduce effort to develop new 2nix solutions - Exploration and adoption of new nix features - Simplified updating of packages @@ -55,129 +36,16 @@ The goal of this project is to create a standardized, generic, modular framework 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 - -(Currently only nodejs and rust packaging is supported) - -1. Make sure you use a nix version >= 2.4 and have `experimental-features = "nix-command flakes"` set. -1. Navigate to to the project intended to be packaged and initialize a dream2nix flake: - ```command - cd ./my-project - nix flake init -t github:nix-community/dream2nix#simple - ``` -1. List the packages that can be built - ```command - nix flake show - ``` - - -Minimal Example `flake.nix`: -```nix -{ - inputs.dream2nix.url = "github:nix-community/dream2nix"; - outputs = { self, dream2nix }: - dream2nix.lib.makeFlakeOutputs { - systems = ["x86_64-linux"]; - config.projectRoot = ./.; - source = ./.; - projects = ./projects.toml; - }; -} -``` - -Extensive Example `flake.nix`: -```nix -{ - inputs.dream2nix.url = "github:nix-community/dream2nix"; - outputs = { self, dream2nix }: - dream2nix.lib.makeFlakeOutputs { - systems = ["x86_64-linux"]; - config.projectRoot = ./.; - - source = ./.; - - # `projects` can alternatively be an attrset. - # `projects` can be omitted if `autoProjects = true` is defined. - projects = ./projects.toml; - - # Configure the behavior of dream2nix when translating projects. - # A setting applies to all discovered projects if `filter` is unset, - # or just to a subset or projects if `filter` is used. - settings = [ - # prefer aggregated source fetching (large FODs) - { - aggregate = true; - } - # for all impure nodejs projects with just a `package.json`, - # add arguments for the `package-json` translator - { - filter = project: project.translator == "package-json"; - subsystemInfo.npmArgs = "--legacy-peer-deps"; - subsystemInfo.nodejs = 18; - } - ]; - - # configure package builds via overrides - # (see docs for override system below) - packageOverrides = { - # name of the package - package-name = { - # name the override - add-pre-build-steps = { - # override attributes - preBuild = "..."; - # update attributes - buildInputs = old: old ++ [pkgs.hello]; - }; - }; - }; - - # Inject missing dependencies - inject = { - # Make foo depend on bar and baz - # from - foo."6.4.1" = [ - # to - ["bar" "13.2.0"] - ["baz" "1.0.0"] - ]; - # dependencies with @ and slash require quoting - # the format is the one that is in the lockfile - "@tiptap/extension-code"."2.0.0-beta.26" = [ - ["@tiptap/core" "2.0.0-beta.174"] - ]; - }; - - # add sources for `bar` and `baz` - sourceOverrides = oldSources: { - bar."13.2.0" = builtins.fetchTarball {url = ""; sha256 = "";}; - baz."1.0.0" = builtins.fetchTarball {url = ""; sha256 = "";}; - }; - }; -} -``` - -An example for instancing dream2nix per pkgs and using it to create outputs can be found at [`examples_d2n-init-pkgs`](./examples/_d2n-init-pkgs/flake.nix). - ### Documentation -Documentation for `main` branch is deployed to https://nix-community.github.io/dream2nix. - -A CLI app is available if you want to read documentation in your terminal. -The app is available as `d2n-docs` if you enter the development shell, otherwise you can access it with `nix run .#docs`. -`d2n-docs` can be used to access all available documentation. -To access a specific document you can use `d2n-docs doc-name` where `doc-name` is the name of the document. -For example, to access Rust subsystem documentation, you can use `d2n-docs rust`. - -You can also build documentation by running `nix build .#docs`. -Or by entering the development shell (`nix develop`) and running `mdbook build docs`. +[👉 To the docs](https://nix-community.github.io/dream2nix) -### Watch the presentation +### Presentations -(The code examples of the presentation are outdated) -[![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) +- [👉 2021: Original dream2nix presentation](https://www.youtube.com/watch?v=jqCfHMvCsfQ) - Examples are outdated: +- [👉 2023: dream2nix based on drv-parts](hhttps://www.youtube.com/watch?v=AsCvRZukX0E) - Examples are outdated: ### Community -matrix: https://matrix.to/#/#dream2nix:nixos.org +[👉 matrix chat room](https://matrix.to/#/#dream2nix:nixos.org)