From 94e7ec4f6280a80e2e929db9aa3c00fe8e066684 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Wed, 10 Apr 2024 20:31:27 -0400 Subject: Explicitly pass Bild.nix to nix builds & expose references to stable This change was motivated by my testing of tabbyAPI. I kept doing like `nix-build -A pkgs.tabbyAPI` and I thought, can't bild just do this? So I wrote a file called TabbyAPI.nix with the following contents:: { bild }: bild.pkgs.tabbyAPI and it worked, I just needed this change to Bild.hs to supply the `bild` argument. The benefit of using bild here is that I can get the logging, concurrency settings, and linking to _/nix etc all by default. Plus, using a standalone nix file like TabbyAPI.nix might be a good way to pin some package in the build system and make sure it continues to build, test, and so on. Also, thie means I don't sprinkle relative paths to the Bild.nix library throughout the repo, which is bad practice anyway. Re: explicitly exposing refernces to stable: This keeps things a bit more tidy and less confusing when working on the nix library. --- Biz/Bild/Builder.nix | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'Biz/Bild/Builder.nix') diff --git a/Biz/Bild/Builder.nix b/Biz/Bild/Builder.nix index d1fc48b..1a2460a 100644 --- a/Biz/Bild/Builder.nix +++ b/Biz/Bild/Builder.nix @@ -3,9 +3,9 @@ wouldn't you? - Try to reuse as much upstream Nix as possible. */ -{ analysisJSON, bild ? import ../Bild.nix { } }: +{ analysisJSON, bild }: +with bild; let - lib = bild.lib; analysis = builtins.fromJSON analysisJSON; build = _: target: let @@ -53,29 +53,28 @@ let sysdeps_ = if isEmpty target.sysdeps then [ ] else - lib.attrsets.attrVals target.sysdeps bild.pkgs; + lib.attrsets.attrVals target.sysdeps pkgs; rundeps_ = if isEmpty target.rundeps then [ ] else - lib.attrsets.attrVals target.rundeps bild.pkgs; + lib.attrsets.attrVals target.rundeps pkgs; CODEROOT = "."; builders = { - base = bild.stdenv.mkDerivation rec { + base = stdenv.mkDerivation rec { inherit name src CODEROOT preBuild; buildInputs = langdeps_ ++ sysdeps_; installPhase = "install -D ${name} $out/bin/${name}"; buildPhase = compileLine; }; - haskell = bild.stdenv.mkDerivation rec { + haskell = stdenv.mkDerivation rec { inherit name src CODEROOT preBuild; - nativeBuildInputs = [ bild.makeWrapper ]; + nativeBuildInputs = [ makeWrapper ]; buildInputs = sysdeps_ ++ [ - (bild.haskell.ghcWith - (p: (lib.attrsets.attrVals target.langdeps p))) + (haskell.ghcWith (p: (lib.attrsets.attrVals target.langdeps p))) ]; buildPhase = compileLine; installPhase = '' @@ -85,7 +84,7 @@ let ''; }; - c = bild.stdenv.mkDerivation rec { + c = stdenv.mkDerivation rec { inherit name src CODEROOT preBuild; buildInputs = langdeps_ ++ sysdeps_; installPhase = "install -D ${name} $out/bin/${name}"; @@ -106,11 +105,11 @@ let ]; }; - python = bild.python.buildPythonApplication rec { + python = python.buildPythonApplication rec { inherit name src CODEROOT; propagatedBuildInputs = langdeps_ ++ sysdeps_; buildInputs = sysdeps_; - nativeCheckInputs = lib.attrsets.attrVals [ "mypy" "ruff" ] bild.pkgs; + nativeCheckInputs = lib.attrsets.attrVals [ "mypy" "ruff" ] pkgs; checkPhase = '' check() { $@ || { echo "fail: $name: $3"; exit 1; } @@ -155,4 +154,4 @@ let # return a single drv, so just take the first one for now. ideally i would only # pass Target, one at a time, (perhaps parallelized in haskell land) and then i # wouldn't need all of this let nesting -in builtins.head (bild.lib.attrsets.mapAttrsToList build analysis) +in builtins.head (lib.attrsets.mapAttrsToList build analysis) -- cgit v1.2.3