Browse Source

update Nix configuration

The MMGen Project 2 months ago
parent
commit
84b0843be3

+ 1 - 1
mmgen/data/version

@@ -1 +1 @@
-15.1.dev54
+15.1.dev55

+ 6 - 0
nix/README

@@ -39,6 +39,12 @@ will make executables from your native environment inaccessible within the
 shell, so you may need to add some additional tools to your environment such as
 shell, so you may need to add some additional tools to your environment such as
 a text editor.  For examples, refer to ‘user-packages.nix’
 a text editor.  For examples, refer to ‘user-packages.nix’
 
 
+Speedup tip: Look for the commented-out ‘url =’ lines in the *.nix files in
+this directory, and make local shallow clones of the corresponding remote git
+repositories using ‘git clone --depth=1’ plus ‘--revision=<commit>’ or
+‘--branch=<tag>’.  Then uncomment the local paths, adjusting them to suit.
+This will also allow you to use your installation in an offline environment.
+
 NixOS:
 NixOS:
 
 
   To install the MMGen Wallet environment under NixOS, copy the contents of the ‘nix’
   To install the MMGen Wallet environment under NixOS, copy the contents of the ‘nix’

+ 3 - 1
nix/bitcoin-cash-node.nix

@@ -5,13 +5,15 @@ pkgs.stdenv.mkDerivation rec {
     version = "v28.0.1";
     version = "v28.0.1";
     src = fetchGit {
     src = fetchGit {
         url = "https://gitlab.com/bitcoin-cash-node/bitcoin-cash-node";
         url = "https://gitlab.com/bitcoin-cash-node/bitcoin-cash-node";
+        # url = /path/to/repo/bitcoin-cash-node-28.0.1;
         ref = "refs/tags/${version}";
         ref = "refs/tags/${version}";
+        shallow = true;
     };
     };
     nativeBuildInputs = [
     nativeBuildInputs = [
         pkgs.cmake
         pkgs.cmake
         pkgs.ninja
         pkgs.ninja
         pkgs.help2man
         pkgs.help2man
-        pkgs.python3
+        pkgs.python313
     ];
     ];
     buildInputs = [
     buildInputs = [
         pkgs.boost
         pkgs.boost

+ 1 - 0
nix/go-ethereum.nix

@@ -1,4 +1,5 @@
 # adapted from go-ethereum.nix in nixpkgs repository
 # adapted from go-ethereum.nix in nixpkgs repository
+# not currently used, as nixpkgs 25.05 go-ethereum (v1.15.11) is OK
 
 
 {
 {
     pkgs,
     pkgs,

+ 4 - 2
nix/litecoin.nix

@@ -5,7 +5,9 @@ pkgs.stdenv.mkDerivation rec {
     version = "v0.21.4";
     version = "v0.21.4";
     src = fetchGit {
     src = fetchGit {
         url = "https://github.com/litecoin-project/litecoin.git";
         url = "https://github.com/litecoin-project/litecoin.git";
+        # url = /path/to/repo/litecoin-0.21.4.git;
         ref = "refs/tags/${version}";
         ref = "refs/tags/${version}";
+        shallow = true;
     };
     };
     nativeBuildInputs = [
     nativeBuildInputs = [
         pkgs.autoconf
         pkgs.autoconf
@@ -15,7 +17,7 @@ pkgs.stdenv.mkDerivation rec {
         # pkgs.hexdump # for tests
         # pkgs.hexdump # for tests
     ];
     ];
     buildInputs = [
     buildInputs = [
-        pkgs.boost
+        pkgs.boost183 # 'fs::copy_option' was removed in Boost 1.84
         pkgs.libevent
         pkgs.libevent
         pkgs.fmt
         pkgs.fmt
         pkgs.db4
         pkgs.db4
@@ -30,7 +32,7 @@ pkgs.stdenv.mkDerivation rec {
         "--with-sqlite"
         "--with-sqlite"
         "--disable-bench"
         "--disable-bench"
         "--disable-tests"
         "--disable-tests"
-        "--with-boost-libdir=${pkgs.boost.out}/lib"
+        "--with-boost-libdir=${pkgs.boost183.out}/lib"
     ];
     ];
     buildFlags = [
     buildFlags = [
         "src/litecoind"
         "src/litecoind"

+ 2 - 2
nix/merged-packages.nix

@@ -1,8 +1,8 @@
 { add_pkgs_path }:
 { add_pkgs_path }:
 
 
 let
 let
-    dfl_nixpkgs = import ./nixpkgs-24.11.nix {};
-    dfl_python = pkgs.python312;
+    dfl_nixpkgs = import ./nixpkgs-25.05.nix {};
+    dfl_python = pkgs.python313;
     null_pkgs = {
     null_pkgs = {
         system-packages = {};
         system-packages = {};
         python-packages = {};
         python-packages = {};

+ 0 - 7
nix/nixpkgs-24.05.nix

@@ -1,7 +0,0 @@
-import (
-    fetchGit {
-        url = "https://github.com/NixOS/nixpkgs.git";
-        rev = "63dacb46bf939521bdc93981b4cbb7ecb58427a0"; # refs/tags/24.05
-        shallow = true;
-    }
-)

+ 0 - 8
nix/nixpkgs-24.11.nix

@@ -1,8 +0,0 @@
-import (
-    fetchGit {
-        url = "https://github.com/NixOS/nixpkgs.git";
-        ref = "release-24.11";
-        rev = "8b27c1239e5c421a2bbc2c65d52e4a6fbf2ff296"; # refs/tags/24.11
-        shallow = true;
-    }
-)

+ 9 - 0
nix/nixpkgs-25.05.nix

@@ -0,0 +1,9 @@
+import (
+    fetchGit {
+        url = "https://github.com/NixOS/nixpkgs.git";
+        # url = /path/to/repo/nixpkgs-25.05.git;
+        ref = "release-25.05";
+        rev = "11cb3517b3af6af300dd6c055aeda73c9bf52c48"; # refs/tags/25.05
+        shallow = true;
+    }
+)

+ 1 - 8
nix/packages.nix

@@ -10,17 +10,10 @@
         libtool      = libtool;
         libtool      = libtool;
         autoconf     = autoconf;
         autoconf     = autoconf;
         gmp          = gmp;
         gmp          = gmp;
-        gmp4         = gmp4;
         openssl      = openssl;
         openssl      = openssl;
         pcre         = pcre;
         pcre         = pcre;
         mpfr         = mpfr;
         mpfr         = mpfr;
-        secp256k1    = secp256k1.overrideAttrs {
-            pname = "secp256k1-v0.6.0";
-            src = fetchGit {
-                url = "https://github.com/bitcoin-core/secp256k1.git";
-                ref = "refs/tags/v0.6.0";
-            };
-        };
+        secp256k1    = secp256k1;
         less         = less;   # test suite (cmdtest.py regtest)
         less         = less;   # test suite (cmdtest.py regtest)
         procps       = procps; # test suite (pgrep)
         procps       = procps; # test suite (pgrep)
         ruff         = ruff;
         ruff         = ruff;

+ 48 - 0
nix/reth.nix

@@ -0,0 +1,48 @@
+{
+    lib,
+    pkgs,
+    rustPlatform,
+}:
+
+let
+    # cargo and rustc packages from 25.05 are out of date,
+    # so fetch them from a more recent commit:
+    pinnedPkgs = fetchGit {
+        url = "https://github.com/NixOS/nixpkgs.git";
+        # url = /path/to/repo/nixpkgs-fe8997.git;
+        rev = "fe89979ad5e8fd233ae0aac0e7e56f465945ae70";
+        shallow = true;
+    };
+    pkgs2 = import pinnedPkgs {};
+
+in
+
+rustPlatform.buildRustPackage rec {
+    pname = "reth";
+    version = "1.7.0";
+
+    src = fetchGit {
+        url = "https://github.com/paradigmxyz/reth";
+        # url = /path/to/repo/reth;
+        ref = "refs/tags/v${version}";
+        shallow = true;
+    };
+
+    cargoHash = "sha256-2zdilVIHCW0N2yZNfLNoVpTASjXU1ABcZzQLzpAGEsY=";
+
+    nativeBuildInputs = [
+        pkgs.clang
+        pkgs.libclang
+        pkgs2.rustc
+        pkgs2.cargo
+    ];
+
+    env.LIBCLANG_PATH = pkgs.libclang.lib  + "/lib/";
+
+    meta = with lib; {
+        description = "Rust Ethereum daemon";
+        homepage = "https://github.com/paradigmxyz/reth";
+        license = licenses.mit;
+        mainProgram = "reth";
+    };
+}

+ 17 - 8
nix/user-packages.nix

@@ -8,31 +8,40 @@
 rec {
 rec {
     ### Set nixpkgs globally for the MMGen environment.
     ### Set nixpkgs globally for the MMGen environment.
     ### If you set it, make sure to uncomment the python variable assignment below.
     ### If you set it, make sure to uncomment the python variable assignment below.
-    # pkgs = import (bdir + /nixpkgs-24.11.nix) {};
+    # pkgs = import (bdir + /nixpkgs-25.05.nix) {};
 
 
     ### Set python version globally for the MMGen environment.
     ### Set python version globally for the MMGen environment.
     ### Must be set if pkgs is set.
     ### Must be set if pkgs is set.
-    # python = pkgs.python312;
+    # python = pkgs.python313;
 
 
     system-packages = with pkgs; {
     system-packages = with pkgs; {
         # monero-cli   = monero-cli;                                      # Monero daemon
         # monero-cli   = monero-cli;                                      # Monero daemon
-        # # go-ethereum = go-ethereum;                     # Geth - latest version for transacting on mainnet
-        # go-ethereum = callPackage (bdir + /go-ethereum.nix) { # Geth - old version for test suite (ethdev)
-        #     buildGoModule = buildGo122Module;
-        #     tag_version = "v1.13.15";
-        #     vendor_hash = "sha256-LWNFuF66KudxrpWBBXjMbrWP5CwEuPE2h3kGfILIII0";
-        # };
+        # go-ethereum  = go-ethereum;                                     # Geth
+        # reth         = callPackage (bdir + /reth.nix) {};               # Rust Ethereum daemon
         # solc         = callPackage (bdir + /solc.nix) {};               # Solidity compiler
         # solc         = callPackage (bdir + /solc.nix) {};               # Solidity compiler
         # litecoin     = callPackage (bdir + /litecoin.nix) {};           # Litecoin daemon
         # litecoin     = callPackage (bdir + /litecoin.nix) {};           # Litecoin daemon
         # bitcoin-cash = callPackage (bdir + /bitcoin-cash-node.nix) {};  # Bitcoin Cash Node daemon
         # bitcoin-cash = callPackage (bdir + /bitcoin-cash-node.nix) {};  # Bitcoin Cash Node daemon
         # zcash-mini   = callPackage (bdir + /zcash-mini.nix) {};         # ZEC (test suite)
         # zcash-mini   = callPackage (bdir + /zcash-mini.nix) {};         # ZEC (test suite)
 
 
         ### For development with --pure (add/remove packages for your setup):
         ### For development with --pure (add/remove packages for your setup):
+        # neovim       = neovim;
         # neovim-qt    = neovim-qt;
         # neovim-qt    = neovim-qt;
         # rxvt-unicode = rxvt-unicode;
         # rxvt-unicode = rxvt-unicode;
         # which        = which;
         # which        = which;
         # ctags        = ctags;
         # ctags        = ctags;
         # xclip        = xclip;
         # xclip        = xclip;
+        # ruff         = ruff;
+        # perl         = perl;
+        # netcat       = netcat-openbsd;
+        # jq           = jq;
+        # ed           = ed;
+        # rsync        = rsync;
+        # pandoc       = pandoc;
+        # gnupg        = gnupg;
+        # iproute2     = iproute2;
+        # tinyxxd      = tinyxxd;
+        # ranger       = ranger;
+        # hostname     = hostname;
 
 
         ### For test suite with --pure:
         ### For test suite with --pure:
         # openssh      = openssh;
         # openssh      = openssh;

+ 2 - 0
nix/vanitygen-plusplus.nix

@@ -5,7 +5,9 @@ pkgs.stdenv.mkDerivation {
     version = "e7858035";
     version = "e7858035";
     src = fetchGit {
     src = fetchGit {
         url = "https://github.com/10gic/vanitygen-plusplus";
         url = "https://github.com/10gic/vanitygen-plusplus";
+        # url = /path/to/repo/vanitygen-plusplus-e78580;
         rev = "e7858035d092f9b9d6468e2b812475faaf7c69c6";
         rev = "e7858035d092f9b9d6468e2b812475faaf7c69c6";
+        shallow = true;
     };
     };
     buildInputs = [ pkgs.openssl pkgs.pcre ];
     buildInputs = [ pkgs.openssl pkgs.pcre ];
     installPhase = ''
     installPhase = ''

+ 2 - 0
nix/zcash-mini.nix

@@ -5,7 +5,9 @@ pkgs.stdenvNoCC.mkDerivation {
     version = "a2b35042";
     version = "a2b35042";
     src = fetchGit {
     src = fetchGit {
         url = "https://github.com/FiloSottile/zcash-mini";
         url = "https://github.com/FiloSottile/zcash-mini";
+        # url = /path/to/repo/zcash-mini-a2b350;
         rev = "a2b35042ad3a3bc22b925ecfc45e768a376bd29a";
         rev = "a2b35042ad3a3bc22b925ecfc45e768a376bd29a";
+        shallow = true;
     };
     };
     buildInputs = [ pkgs.go pkgs.binutils ];
     buildInputs = [ pkgs.go pkgs.binutils ];
     patchPhase = ''
     patchPhase = ''