Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

idris2Packages.buildIdris: add retroactive support for building a whole dependency tree with source #351520

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

mattpolzin
Copy link
Contributor

@mattpolzin mattpolzin commented Oct 26, 2024

Another refactor that looks like more changes than it is if you glance at the GitHub line-changes.

This PR does two things primarily:

  1. Support a passthru withSource attribute that can be used to take a derivation that would build without source and instead build it with source. This allows a project to depend on any number of packages built without source but then also have a developer shell that exposes all dependency sources to IDE integrations with a line as simple as inputsFrom = [ myPkg.withSource ];
  2. Add a library' attribute to the output of buildIdris alongside the existing library attribute to make it less awkward to do the default thing of building without source (which I think is even more appealing now than ever before given the withSource attribute.

For example, one might have the following default.nix and shell.nix (note the use of library' in default.nix and withSource in shell.nix):

# default.nix
let
  inherit (pkgs) idris2Packages;

  someIdrisLibrary =
    idris2Packages.buildIdris {
      ipkgName = "some-library";
      src  = ./some-lib;
      idrisLibraries  = [ ];
    };

  myPkg =
    idris2Packages.buildIdris {
      ipkgName = "my-pkg";
      src  = ./.;
      idrisLibraries  = [ someIdrisLibrary ];
    };
in
myPkg.library'
# shell.nix
let
  myPkg = import ./.;
in
mkShell {
  inputsFrom = [ myPkg.withSource ];
}

This would conveniently mean no source code is packaged with the library by default but when used in a developer shell source code could be requested (even for all dependencies).

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

@mattpolzin
Copy link
Contributor Author

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 351520


x86_64-linux

✅ 2 packages built:
  • idris2Packages.idris2Lsp
  • idris2Packages.pack

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant