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

package pa'i as a flake #137

Draft
wants to merge 10 commits into
base: main
Choose a base branch
from
Draft

Conversation

oldaccountdeadname
Copy link

@oldaccountdeadname oldaccountdeadname commented Oct 19, 2021

Hi - this fork replaces the current Nix/Niv build system with Nix Flakes. Some questions that are unresolved:

  • Should the current Niv setup be kept alongside the Flakes solution? If so, can the current expressions be reused to any extent?
  • Should the 'internal' dependencies --- docs/, olin-spec/, etc --- have their default.nix's either renamed or redone for consistency?
  • How should I go about supporting non-linux-x86_64 platforms? The flake.nix build expression only has an ouptut for that, which is intentional: I've tested Pa'i with nothing else. I've not got machines running anything else on bare metal, nor do I have any experience with virtualization, so I'm a bit lost here.
  • And, of course, is it valuable to have this available as a Flake? I found this to be convenient for some of my experimentation, but I know nothing :))

Pa'i and everything associated can now be compiled with:

	nix build --impure

...assuming that installed Nix version supports flakes. The `impure`
is necessary as not everything down the dependency list is built with
flakes, and there are some calls to `builtins.currentSystem`.

Note that this currently only builds on x86_64-linux hosts.
A dev-shell can be started with `nix shell --impure`. Note that
`--impure` is necessary for the same reasons as the build ---
see 2c95572.
This wraps the existing script into a derivation which writes the
image to $out/docker, and can be built with

	nix build .#docker
Pa'i and everything associated can be compiled with:

	nix build --impure

shell.nix has been replace with Nix's inferences from the default
package output. It can be accessed with:

	nix shell --impure

docker.nix has been replaced with a *derivation* that wraps
buildLayeredImage. It installs the image to $out/docker/, and can
be built with:

	nix build .#docker --impure

All of the above commands assume that the installed Nix version
supports flakes. The `impure` option is necessary as not everything
down the dependency list is built with flakes, and there are some
impure/non-hermetic calls to `builtins.currentSystem`.

Note that this currently only builds on x86_64-linux hosts. I don't
have any other kernels or architectures to test with on-hand, so I
can't verify build correctness for anything else --- this is
*technically* the proper behavior for Flakes.
This involves:
+ name tests properly in the docker output
+ add dhall binaries to the docker output
+ use unstable nix in CI (to access Flakes)
+ build .#docker --impure instead of docker.nix
A comment was replaced with a pure evaluation causing a CI fail.
This fixes that.
This slpits rustChannelOfTargets into exlpicit rustChannelOf's and
passes in the sha256 required for pure evaluation.
This consists of two changes:
1. Use rustChannelOf instead of rustChannelOfTargets to supply a sha256
   (required for pure eval)
2. Inherit pkgs in olin. Olin is *almost* pure, pending Xe/olin#135.
@oldaccountdeadname
Copy link
Author

Pure evaluation is almost there. The branch pure of my fork overrides Olin with my fork which does support pure evals, and the PR for that is mentioned in that last commit message. Other than that, the flake is kind of a mess and I will get to cleaning it up ✨ soon! ✨

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

Successfully merging this pull request may close these issues.

1 participant