start using pinnedNim and pinnedNimble

This commit is contained in:
Ivan Folgueira Bande 2026-02-12 01:03:54 +01:00
parent 61e075f9ab
commit 8d0cca3b19
No known key found for this signature in database
GPG Key ID: 3C117481F89E24A7
3 changed files with 66 additions and 16 deletions

View File

@ -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

View File

@ -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";
}

View File

@ -1,12 +1,48 @@
{ pkgs ? import <nixpkgs> { } }:
{ 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 = [];
};
}