From 8d0cca3b19a2d8083e5bae5ce1241b94b3da4be9 Mon Sep 17 00:00:00 2001 From: Ivan Folgueira Bande Date: Thu, 12 Feb 2026 01:03:54 +0100 Subject: [PATCH] start using pinnedNim and pinnedNimble --- nix/default.nix | 13 ++++++++++-- nix/deps.nix | 13 ++++++++---- nix/nimble.nix | 56 ++++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 66 insertions(+), 16 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index 7dfbd804a..fa5d22960 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -21,8 +21,12 @@ let version = tools.findKeyValue "^version = \"([a-f0-9.-]+)\"$" ../waku.nimble; revision = lib.substring 0 8 (src.rev or src.dirtyRev or "00000000"); + nimPinned = pkgs.callPackage ./nim.nix {}; + nimblePinned = pkgs.callPackage ./nimble.nix { inherit nimPinned; }; + nimbleDeps = callPackage ./deps.nix { inherit src version revision; + mynimble = nimblePinned; }; in stdenv.mkDerivation { @@ -34,7 +38,6 @@ in stdenv.mkDerivation { ANDROID_SDK_ROOT="${pkgs.androidPkgs.sdk}"; ANDROID_NDK_HOME="${pkgs.androidPkgs.ndk}"; NIMFLAGS = "-d:disableMarchNative -d:git_revision_override=${revision}"; - XDG_CACHE_HOME = "/tmp"; }; buildInputs = with pkgs; [ @@ -60,7 +63,13 @@ in stdenv.mkDerivation { ]; configurePhase = '' - export NIMBLE_DIR=$NIX_BUILD_TOP/nimbledeps + export HOME=$TMPDIR + export XDG_CACHE_HOME=$TMPDIR + export NIMBLE_DIR=$TMPDIR/nimbledir + + mkdir -p $NIMBLE_DIR/pkgs2/nim-2.2.6/bin + cp -r ${nimPinned}/bin/* $NIMBLE_DIR/pkgs2/nim-2.2.6/bin/ + cp -r ${nimbleDeps}/nimbledeps $NIMBLE_DIR cp ${nimbleDeps}/nimble.paths ./ chmod 775 -R $NIMBLE_DIR diff --git a/nix/deps.nix b/nix/deps.nix index 5b7330dc3..f3a864a3f 100644 --- a/nix/deps.nix +++ b/nix/deps.nix @@ -1,4 +1,9 @@ -{ pkgs, stdenv, src, version, revision }: +{ pkgs +, stdenv +, src +, version +, revision +, mynimble }: stdenv.mkDerivation { pname = "logos-delivery-nimble-deps"; @@ -7,8 +12,8 @@ stdenv.mkDerivation { inherit src; nativeBuildInputs = with pkgs; [ - jq rsync git nimble cacert moreutils - ]; + jq rsync git cacert moreutils + ] ++ [ mynimble ]; configurePhase = '' export XDG_CACHE_HOME=$TMPDIR @@ -49,7 +54,7 @@ stdenv.mkDerivation { ''; # Make this a fixed-output derivation to allow internet access for Nimble. - outputHash = "sha256-faWNLiyNfeyp4ynpO+F3HRj8J/3sJBgClryCrZFKfzs="; + outputHash = "sha256-hW01MZL8cb4Iby6HTomYWCP+LkY6PK1o+qaOeWYsWuE="; outputHashAlgo = "sha256"; outputHashMode = "recursive"; } diff --git a/nix/nimble.nix b/nix/nimble.nix index 337ecd672..06952cc94 100644 --- a/nix/nimble.nix +++ b/nix/nimble.nix @@ -1,12 +1,48 @@ -{ pkgs ? import { } }: +{ lib +, stdenv +, fetchgit +, pkg-config +, pkgs +, nimPinned +}: -let - tools = pkgs.callPackage ./tools.nix {}; - sourceFile = ../vendor/nimbus-build-system/vendor/Nim/koch.nim; -in pkgs.fetchFromGitHub { - owner = "nim-lang"; - repo = "nimble"; - rev = tools.findKeyValue "^ +NimbleStableCommit = \"([a-f0-9]+)\".*$" sourceFile; - # WARNING: Requires manual updates when Nim compiler version changes. - hash = "sha256-8iutVgNzDtttZ7V+7S11KfLEuwhKA9TsgS51mlUI08k="; +stdenv.mkDerivation rec { + pname = "my-nimble"; + version = "0.99.0-9e488db"; # your own human version + + src = fetchgit { + url = "https://github.com/nim-lang/nimble.git"; + rev = "9e488db1233004d6fb42923739f8b8cb12485f30"; + # computed hash of the Git snapshot: + sha256 = "sha256-MhLkXgnwsCtbPbxo3J3e+//6BMsTEgvDZlbPY/ONEeE="; + }; + + nativeBuildInputs = [ pkg-config nim pkgs.openssl ]; + + configurePhase = '' + export HOME=$TMPDIR + + mkdir -p $NIMBLE_DIR/pkgs2/nim-2.2.6/bin + cp -r ${nimPinned}/bin/* $NIMBLE_DIR/pkgs2/nim-2.2.6/bin/ + ''; + + buildPhase = '' + echo "Copying source to build directory..." + cp -r $src/* . # Copy into $PWD + + echo "Compiling nimble..." + nim c -d:release src/nimble.nim + ''; + + installPhase = '' + mkdir -p $out/bin + cp src/nimble $out/bin/ + ''; + + meta = with lib; { + description = "Nim package manager from specific commit"; + homepage = "https://github.com/nim-lang/nimble"; + license = licenses.mit; + maintainers = []; + }; }