boxcli,flakegen: add generate flake-wrapper subcommand (#2717)#2822
Open
tm-michael wants to merge 1 commit intojetify-com:mainfrom
Open
boxcli,flakegen: add generate flake-wrapper subcommand (#2717)#2822tm-michael wants to merge 1 commit intojetify-com:mainfrom
generate flake-wrapper subcommand (#2717)#2822tm-michael wants to merge 1 commit intojetify-com:mainfrom
Conversation
…2717) Devbox's package syntax expects a flake, which makes it awkward to consume a locally-authored .nix expression (e.g. a `default.nix` written with `pkgs.callPackage`). Today users have to hand-write a boilerplate wrapper flake before they can reference the directory as `"./my-pkg": ""` or `"path:./mypackage"` in devbox.json. This adds a new `devbox generate flake-wrapper [path]` command that scaffolds that wrapper for them: - New `internal/devbox/flakegen` package renders a small embedded template (`flake-wrapper.nix.tmpl`) that imports a target .nix file via `pkgs.callPackage` and exposes it under `packages.${system}.<attr>`. - `boxcli` wires it up as a subcommand of `generate` with flags for `--force`, `--nixpkgs`, `--attr`, and `--print`. When run inside a devbox project the command defaults `--nixpkgs` to the project's stdenv so the wrapper stays in sync; otherwise it falls back to `nixpkgs-unstable`. The subcommand skips the parent `generate` command's ensureNixInstalled hook since it is pure text templating. - Adds unit tests for `flakegen` (template rendering, path resolution, `--force`, `--print`) and a CLI-level test for the new subcommand. - Adds an `examples/nix/hello` example showing the end-to-end flow. Closes jetify-com#2717
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Devbox's package syntax expects a flake, which makes it awkward to consume a locally-authored .nix expression (e.g. a
default.nixwritten withpkgs.callPackage). As a non-flake user myself, the world of flakes is very foreign and lacking in documentation. Having to learn flakes to be able to inject my packages in to devbox is thus a big hindrance. Today users have to hand-write a boilerplate wrapper flake before they can reference the directory as"./my-pkg": ""or"path:./mypackage"in devbox.json.This adds a new
devbox generate flake-wrapper [path]command that scaffolds that wrapper for them:internal/devbox/flakegenpackage renders a small embedded template (flake-wrapper.nix.tmpl) that imports a target.nixfile viapkgs.callPackageand exposes it underpackages.${system}.<attr>.boxcliwires it up as a subcommand ofgeneratewith flags for--force,--nixpkgs,--attr, and--print. When run inside a devbox project the command defaults--nixpkgsto the project's stdenv so the wrapper stays in sync; otherwise it falls back tonixpkgs-unstable. The subcommand skips the parentgeneratecommand's ensureNixInstalled hook since it is pure text templating.flakegen(template rendering, path resolution,--force,--print) and a CLI-level test for the new subcommand.examples/nix/helloexample showing the end-to-end flow.Closes #2717
How was it tested?
devbox shellopened to execute command thereinCommunity Contribution License
All community contributions in this pull request are licensed to the project
maintainers under the terms of the
Apache 2 License.
By creating this pull request, I represent that I have the right to license the
contributions to the project maintainers under the Apache 2 License as stated in
the
Community Contribution License.