From 0e592e18230d393af62dc54a946237ecaae582bf Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 15:58:38 +0200 Subject: [PATCH 01/17] libxc: add option to have multiple versions, introduce libxc_7 --- pkgs/by-name/li/libxc/package.nix | 12 ++++++++++-- pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/li/libxc/package.nix b/pkgs/by-name/li/libxc/package.nix index 29af5687a171..81e1224b31e2 100644 --- a/pkgs/by-name/li/libxc/package.nix +++ b/pkgs/by-name/li/libxc/package.nix @@ -5,17 +5,25 @@ cmake, gfortran, perl, + version ? "6.2.2", }: +let + versionHashes = { + "6.2.2" = "sha256-JYhuyW95I7Q0edLIe7H//+ej5vh6MdAGxXjmNxDMuhQ="; + "7.0.0" = "sha256-mGyGtKDurOrSS0AYrtwhF62pJGPBLbPPNBgFV7fyyug="; + }; + +in stdenv.mkDerivation rec { pname = "libxc"; - version = "6.2.2"; + inherit version; src = fetchFromGitLab { owner = "libxc"; repo = "libxc"; rev = version; - hash = "sha256-JYhuyW95I7Q0edLIe7H//+ej5vh6MdAGxXjmNxDMuhQ="; + hash = versionHashes."${version}"; }; # Timeout increase has already been included upstream in master. diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 04521e6c4eab..31feafa9b7b4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14524,6 +14524,8 @@ with pkgs; avogadro2 = libsForQt5.callPackage ../applications/science/chemistry/avogadro2 { }; + libxc_7 = pkgs.libxc.override { version = "7.0.0"; }; + molbar = with python3Packages; toPythonApplication molbar; nwchem = callPackage ../applications/science/chemistry/nwchem { From 802c93063f52e6e4e42b850889fe4a15c3fba423 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:00:15 +0200 Subject: [PATCH 02/17] test-drive: add option to build with cmake in addition to meson --- pkgs/by-name/te/test-drive/cmake.patch | 13 +++++++++++++ pkgs/by-name/te/test-drive/package.nix | 21 ++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 pkgs/by-name/te/test-drive/cmake.patch diff --git a/pkgs/by-name/te/test-drive/cmake.patch b/pkgs/by-name/te/test-drive/cmake.patch new file mode 100644 index 000000000000..00c7e907733b --- /dev/null +++ b/pkgs/by-name/te/test-drive/cmake.patch @@ -0,0 +1,13 @@ +diff --git a/config/template.pc b/config/template.pc +index 3d6efbb..e338a42 100644 +--- a/config/template.pc ++++ b/config/template.pc +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: @PROJECT_DESCRIPTION@ diff --git a/pkgs/by-name/te/test-drive/package.nix b/pkgs/by-name/te/test-drive/package.nix index 71c7634c8808..4d70c4ea0629 100644 --- a/pkgs/by-name/te/test-drive/package.nix +++ b/pkgs/by-name/te/test-drive/package.nix @@ -3,11 +3,20 @@ lib, fetchFromGitHub, gfortran, + buildType ? "meson", meson, ninja, + cmake, mesonEmulatorHook, }: +assert ( + builtins.elem buildType [ + "meson" + "cmake" + ] +); + stdenv.mkDerivation rec { pname = "test-drive"; version = "0.5.0"; @@ -19,14 +28,20 @@ stdenv.mkDerivation rec { hash = "sha256-xRx8ErIN9xjxZt/nEsdIQkIGFRltuELdlI8lXA+M030="; }; + patches = [ + # Fix wrong generation of package config include paths + ./cmake.patch + ]; + nativeBuildInputs = [ gfortran + ] + ++ lib.optionals (buildType == "meson") [ meson ninja ] - ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ - mesonEmulatorHook - ]; + ++ lib.optional (buildType == "cmake") cmake + ++ lib.optional (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) mesonEmulatorHook; mesonAutoFeatures = "auto"; From e4c3de5e927d4ef582eb9dad1ffb6ef52147e8e1 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:01:01 +0200 Subject: [PATCH 03/17] toml-f: add option to build with cmake in addition to meson --- pkgs/by-name/to/toml-f/cmake.patch | 13 +++++++++++++ pkgs/by-name/to/toml-f/package.nix | 25 +++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 pkgs/by-name/to/toml-f/cmake.patch diff --git a/pkgs/by-name/to/toml-f/cmake.patch b/pkgs/by-name/to/toml-f/cmake.patch new file mode 100644 index 000000000000..00c7e907733b --- /dev/null +++ b/pkgs/by-name/to/toml-f/cmake.patch @@ -0,0 +1,13 @@ +diff --git a/config/template.pc b/config/template.pc +index 3d6efbb..e338a42 100644 +--- a/config/template.pc ++++ b/config/template.pc +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: @PROJECT_DESCRIPTION@ diff --git a/pkgs/by-name/to/toml-f/package.nix b/pkgs/by-name/to/toml-f/package.nix index 28de929377f0..9b82c4ce6f57 100644 --- a/pkgs/by-name/to/toml-f/package.nix +++ b/pkgs/by-name/to/toml-f/package.nix @@ -3,12 +3,21 @@ lib, fetchFromGitHub, gfortran, + buildType ? "meson", meson, ninja, + cmake, pkg-config, test-drive, }: +assert ( + builtins.elem buildType [ + "meson" + "cmake" + ] +); + stdenv.mkDerivation rec { pname = "toml-f"; version = "0.4.2"; @@ -20,12 +29,20 @@ stdenv.mkDerivation rec { hash = "sha256-+cac4rUNpd2w3yBdH1XoCKdJ9IgOHZioZg8AhzGY0FE="; }; + patches = [ + # Fix wrong generation of package config include paths + ./cmake.patch + ]; + nativeBuildInputs = [ gfortran + pkg-config + ] + ++ lib.optionals (buildType == "meson") [ meson ninja - pkg-config - ]; + ] + ++ lib.optional (buildType == "cmake") cmake; buildInputs = [ test-drive ]; @@ -34,6 +51,10 @@ stdenv.mkDerivation rec { "dev" ]; + cmakeFlags = [ + "-Dtest-drive_DIR=${test-drive}" + ]; + # tftest-build fails on aarch64-linux doCheck = !stdenv.hostPlatform.isAarch64; From 13f7c95c42905f9edb8d66486363873035240ff3 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:01:22 +0200 Subject: [PATCH 04/17] jonquil: init at 0.3.0 --- pkgs/by-name/jo/jonquil/cmake.patch | 13 ++++++ pkgs/by-name/jo/jonquil/package.nix | 71 +++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 pkgs/by-name/jo/jonquil/cmake.patch create mode 100644 pkgs/by-name/jo/jonquil/package.nix diff --git a/pkgs/by-name/jo/jonquil/cmake.patch b/pkgs/by-name/jo/jonquil/cmake.patch new file mode 100644 index 000000000000..b622a171d479 --- /dev/null +++ b/pkgs/by-name/jo/jonquil/cmake.patch @@ -0,0 +1,13 @@ +diff --git a/config/template.pc b/config/template.pc +index b2d3c73..00eb732 100644 +--- a/config/template.pc ++++ b/config/template.pc +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=/@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: @PROJECT_DESCRIPTION@ diff --git a/pkgs/by-name/jo/jonquil/package.nix b/pkgs/by-name/jo/jonquil/package.nix new file mode 100644 index 000000000000..6a117cb74fba --- /dev/null +++ b/pkgs/by-name/jo/jonquil/package.nix @@ -0,0 +1,71 @@ +{ + stdenv, + lib, + fetchFromGitHub, + gfortran, + buildType ? "meson", + meson, + ninja, + cmake, + pkg-config, + test-drive, + toml-f, +}: + +assert ( + builtins.elem buildType [ + "meson" + "cmake" + ] +); + +stdenv.mkDerivation rec { + pname = "jonquil"; + version = "0.3.0"; + + src = fetchFromGitHub { + owner = "toml-f"; + repo = pname; + rev = "v${version}"; + hash = "sha256-2JCTHA0nyA7xE0IA+LNrEAulHU2eIbNRvFGQ7YSQMRE="; + }; + + patches = [ + # Fix wrong generation of package config include paths + ./cmake.patch + ]; + + nativeBuildInputs = [ + gfortran + pkg-config + ] + ++ lib.optionals (buildType == "meson") [ + meson + ninja + ] + ++ lib.optional (buildType == "cmake") cmake; + + buildInputs = [ + test-drive + ]; + + propagatedBuildInputs = [ + toml-f + ]; + + outputs = [ + "out" + "dev" + ]; + + meta = with lib; { + description = "JSON parser on top of TOML implementation"; + license = with licenses; [ + asl20 + mit + ]; + homepage = "https://github.com/toml-f/jonquil"; + platforms = platforms.linux; + maintainers = [ maintainers.sheepforce ]; + }; +} From 734dae1f8b77ab51841688fabe60e07324ccc7fb Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:06:49 +0200 Subject: [PATCH 05/17] mctc-lib: 0.4.1 -> 0.4.2 --- pkgs/by-name/mc/mctc-lib/cmake.patch | 29 ++++++++++++++++++++++ pkgs/by-name/mc/mctc-lib/meson.patch | 37 ++++++++++++++++++++++++++++ pkgs/by-name/mc/mctc-lib/package.nix | 22 ++++++++++++----- 3 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 pkgs/by-name/mc/mctc-lib/cmake.patch create mode 100644 pkgs/by-name/mc/mctc-lib/meson.patch diff --git a/pkgs/by-name/mc/mctc-lib/cmake.patch b/pkgs/by-name/mc/mctc-lib/cmake.patch new file mode 100644 index 000000000000..e4bd894f2369 --- /dev/null +++ b/pkgs/by-name/mc/mctc-lib/cmake.patch @@ -0,0 +1,29 @@ +diff --git a/config/template.cmake b/config/template.cmake +index 2b3abcbb..59fcd728 100644 +--- a/config/template.cmake ++++ b/config/template.cmake +@@ -8,9 +8,7 @@ if(NOT TARGET "@PROJECT_NAME@::@PROJECT_NAME@") + + include(CMakeFindDependencyMacro) + +- if(NOT TARGET "OpenMP::OpenMP_Fortran" AND "@PROJECT_NAME@_WITH_OpenMP") +- find_dependency("OpenMP") +- endif() ++ find_dependency("OpenMP") + + if(NOT TARGET "toml-f::toml-f" AND "@PROJECT_NAME@_WITH_JSON") + find_dependency("toml-f") +diff --git a/config/template.pc b/config/template.pc +index 84c3498c..2da50191 100644 +--- a/config/template.pc ++++ b/config/template.pc +@@ -1,6 +1,6 @@ +-prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: @PROJECT_DESCRIPTION@ diff --git a/pkgs/by-name/mc/mctc-lib/meson.patch b/pkgs/by-name/mc/mctc-lib/meson.patch new file mode 100644 index 000000000000..d6b38d9c2fe8 --- /dev/null +++ b/pkgs/by-name/mc/mctc-lib/meson.patch @@ -0,0 +1,37 @@ +diff --git a/config/meson.build b/config/meson.build +index f54857ee..aaafdb03 100644 +--- a/config/meson.build ++++ b/config/meson.build +@@ -56,9 +56,12 @@ jonquil_dep = dependency( + 'jonquil', + required: get_option('json'), + fallback: ['jonquil','jonquil_dep'], +- default_options: [ +- 'default_library=static', +- ], +- static: get_option('default_library') != 'dynamic', + ) + lib_deps += jonquil_dep ++ ++tomlf_dep = dependency( ++ 'toml-f', ++ required: get_option('json'), ++ fallback: ['toml-f','toml-f_dep'], ++) ++lib_deps += tomlf_dep +diff --git a/meson.build b/meson.build +index 16797c47..6e5290d9 100644 +--- a/meson.build ++++ b/meson.build +@@ -25,11 +25,6 @@ project( + ) + install = not (meson.is_subproject() and get_option('default_library') == 'static') + +-# Check for specific unsupported meson versions +-if meson.version().version_compare('==1.8.0') +- error('Meson version 1.8.0 has a known issue — please use any other version ≥ 0.55.0') +-endif +- + # General configuration information + lib_deps = [] + subdir('config') diff --git a/pkgs/by-name/mc/mctc-lib/package.nix b/pkgs/by-name/mc/mctc-lib/package.nix index 2f85e6912070..b9cd86658d22 100644 --- a/pkgs/by-name/mc/mctc-lib/package.nix +++ b/pkgs/by-name/mc/mctc-lib/package.nix @@ -7,29 +7,39 @@ ninja, pkg-config, python3, - json-fortran, + toml-f, + jonquil, }: stdenv.mkDerivation rec { pname = "mctc-lib"; - version = "0.4.1"; + version = "0.4.2"; src = fetchFromGitHub { owner = "grimme-lab"; repo = "mctc-lib"; rev = "v${version}"; - hash = "sha256-AMRHvzL6CUPItCs07LLOB6Al3yfs8WgrPKRhuNbXiGw="; + hash = "sha256-Qd7mpNE23Z+LuiUwhUzfVzVZEQ+sdnkxMm+W7Hlrss4="; }; + patches = [ + # Allow dynamically linked jonquil as dependency. That then additionally + # requires linking in toml-f + ./meson.patch + ]; + nativeBuildInputs = [ gfortran - meson - ninja pkg-config python3 + meson + ninja ]; - buildInputs = [ json-fortran ]; + buildInputs = [ + toml-f + jonquil + ]; outputs = [ "out" From 67f14b24ee0e4ab74aba0debba6d51c1be6ee3d9 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:07:38 +0200 Subject: [PATCH 06/17] mctc-lib: add option to build with cmake in addition to meson --- pkgs/by-name/mc/mctc-lib/package.nix | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mc/mctc-lib/package.nix b/pkgs/by-name/mc/mctc-lib/package.nix index b9cd86658d22..62d9814ecd10 100644 --- a/pkgs/by-name/mc/mctc-lib/package.nix +++ b/pkgs/by-name/mc/mctc-lib/package.nix @@ -3,14 +3,23 @@ lib, fetchFromGitHub, gfortran, + buildType ? "meson", meson, ninja, + cmake, pkg-config, python3, toml-f, jonquil, }: +assert ( + builtins.elem buildType [ + "meson" + "cmake" + ] +); + stdenv.mkDerivation rec { pname = "mctc-lib"; version = "0.4.2"; @@ -26,18 +35,23 @@ stdenv.mkDerivation rec { # Allow dynamically linked jonquil as dependency. That then additionally # requires linking in toml-f ./meson.patch + + # Fix wrong generation of package config include paths + ./cmake.patch ]; nativeBuildInputs = [ gfortran pkg-config python3 + ] + ++ lib.optionals (buildType == "meson") [ meson ninja - ]; + ] + ++ lib.optional (buildType == "cmake") cmake; buildInputs = [ - toml-f jonquil ]; From e2444c92c9d528a0663bda5dd7316398f46ef489 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:08:54 +0200 Subject: [PATCH 07/17] mstore: add option to build with cmake in addition to meson --- pkgs/by-name/ms/mstore/package.nix | 23 ++++++++++++++++++++--- pkgs/by-name/ms/mstore/pkgconfig.patch | 13 +++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 pkgs/by-name/ms/mstore/pkgconfig.patch diff --git a/pkgs/by-name/ms/mstore/package.nix b/pkgs/by-name/ms/mstore/package.nix index 725a0a5d3cac..0507fc6222b3 100644 --- a/pkgs/by-name/ms/mstore/package.nix +++ b/pkgs/by-name/ms/mstore/package.nix @@ -3,13 +3,22 @@ lib, fetchFromGitHub, gfortran, + buildType ? "meson", meson, ninja, + cmake, pkg-config, python3, mctc-lib, }: +assert ( + builtins.elem buildType [ + "meson" + "cmake" + ] +); + stdenv.mkDerivation rec { pname = "mstore"; version = "0.3.0"; @@ -21,13 +30,21 @@ stdenv.mkDerivation rec { hash = "sha256-zfrxdrZ1Um52qTRNGJoqZNQuHhK3xM/mKfk0aBLrcjw="; }; + patches = [ + # Fix wrong generation of package config include paths + ./pkgconfig.patch + ]; + nativeBuildInputs = [ gfortran - meson - ninja pkg-config python3 - ]; + ] + ++ lib.optionals (buildType == "meson") [ + meson + ninja + ] + ++ lib.optional (buildType == "cmake") cmake; buildInputs = [ mctc-lib ]; diff --git a/pkgs/by-name/ms/mstore/pkgconfig.patch b/pkgs/by-name/ms/mstore/pkgconfig.patch new file mode 100644 index 000000000000..54eb2c267670 --- /dev/null +++ b/pkgs/by-name/ms/mstore/pkgconfig.patch @@ -0,0 +1,13 @@ +diff --git a/config/template.pc b/config/template.pc +index 800947d..d388699 100644 +--- a/config/template.pc ++++ b/config/template.pc +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: @PROJECT_DESCRIPTION@ From 7834ece92e7c33c202006d73c0ef1e5037a584f2 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:09:51 +0200 Subject: [PATCH 08/17] multicharge: add option to build with cmake in addition to meson --- pkgs/by-name/mu/multicharge/package.nix | 25 ++++++++++++++++++--- pkgs/by-name/mu/multicharge/pkgconfig.patch | 13 +++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 pkgs/by-name/mu/multicharge/pkgconfig.patch diff --git a/pkgs/by-name/mu/multicharge/package.nix b/pkgs/by-name/mu/multicharge/package.nix index bd06e5bdc605..b5298015d4e1 100644 --- a/pkgs/by-name/mu/multicharge/package.nix +++ b/pkgs/by-name/mu/multicharge/package.nix @@ -3,8 +3,10 @@ lib, fetchFromGitHub, gfortran, + buildType ? "meson", meson, ninja, + cmake, pkg-config, python3, blas, @@ -14,6 +16,12 @@ }: assert !blas.isILP64 && !lapack.isILP64; +assert ( + builtins.elem buildType [ + "meson" + "cmake" + ] +); stdenv.mkDerivation rec { pname = "multicharge"; @@ -26,17 +34,28 @@ stdenv.mkDerivation rec { hash = "sha256-8qwM3dpvFoL2WrMWNf14zYtRap0ijdfZ95XaTlkHhqQ="; }; + patches = [ + # Fix wrong generation of package config include paths + ./pkgconfig.patch + ]; + nativeBuildInputs = [ gfortran - meson - ninja pkg-config python3 - ]; + ] + ++ lib.optionals (buildType == "meson") [ + meson + ninja + ] + ++ lib.optional (buildType == "cmake") cmake; buildInputs = [ blas lapack + ]; + + propagatedBuildInputs = [ mctc-lib mstore ]; diff --git a/pkgs/by-name/mu/multicharge/pkgconfig.patch b/pkgs/by-name/mu/multicharge/pkgconfig.patch new file mode 100644 index 000000000000..00c7e907733b --- /dev/null +++ b/pkgs/by-name/mu/multicharge/pkgconfig.patch @@ -0,0 +1,13 @@ +diff --git a/config/template.pc b/config/template.pc +index 3d6efbb..e338a42 100644 +--- a/config/template.pc ++++ b/config/template.pc +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: @PROJECT_DESCRIPTION@ From 9eeef143e26cc42e7b853ed51f82910508885857 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:10:34 +0200 Subject: [PATCH 09/17] simple-dftd3: add option to build with cmake in addition to meson --- .../chemistry/simple-dftd3/cmake.patch | 13 +++++++++++ .../chemistry/simple-dftd3/default.nix | 23 +++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/science/chemistry/simple-dftd3/cmake.patch diff --git a/pkgs/development/libraries/science/chemistry/simple-dftd3/cmake.patch b/pkgs/development/libraries/science/chemistry/simple-dftd3/cmake.patch new file mode 100644 index 000000000000..00c7e907733b --- /dev/null +++ b/pkgs/development/libraries/science/chemistry/simple-dftd3/cmake.patch @@ -0,0 +1,13 @@ +diff --git a/config/template.pc b/config/template.pc +index 3d6efbb..e338a42 100644 +--- a/config/template.pc ++++ b/config/template.pc +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: @PROJECT_DESCRIPTION@ diff --git a/pkgs/development/libraries/science/chemistry/simple-dftd3/default.nix b/pkgs/development/libraries/science/chemistry/simple-dftd3/default.nix index ac2d3b1b8b9e..739bf260cd37 100644 --- a/pkgs/development/libraries/science/chemistry/simple-dftd3/default.nix +++ b/pkgs/development/libraries/science/chemistry/simple-dftd3/default.nix @@ -5,14 +5,22 @@ gfortran, meson, ninja, + cmake, pkg-config, mctc-lib, mstore, toml-f, blas, + buildType ? "meson", }: assert !blas.isILP64; +assert ( + builtins.elem buildType [ + "meson" + "cmake" + ] +); stdenv.mkDerivation rec { pname = "simple-dftd3"; @@ -25,12 +33,19 @@ stdenv.mkDerivation rec { hash = "sha256-c4xctcMcPQ70ippqbwtinygmnZ5en6ZGF5/v0ZWtzys="; }; + patches = [ + ./cmake.patch + ]; + nativeBuildInputs = [ gfortran + pkg-config + ] + ++ lib.optionals (buildType == "meson") [ meson ninja - pkg-config - ]; + ] + ++ lib.optional (buildType == "cmake") cmake; buildInputs = [ mctc-lib @@ -44,6 +59,10 @@ stdenv.mkDerivation rec { "dev" ]; + cmakeFlags = [ + (lib.strings.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) + ]; + doCheck = true; preCheck = '' export OMP_NUM_THREADS=2 From 8baef2b0a492a23f47bd6f2dacec0109ea04395c Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:12:02 +0200 Subject: [PATCH 10/17] dftd4: add option to build with cmake in addition to meson --- pkgs/by-name/df/dftd4/cmake.patch | 13 +++++++++++++ pkgs/by-name/df/dftd4/package.nix | 28 +++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 pkgs/by-name/df/dftd4/cmake.patch diff --git a/pkgs/by-name/df/dftd4/cmake.patch b/pkgs/by-name/df/dftd4/cmake.patch new file mode 100644 index 000000000000..00c7e907733b --- /dev/null +++ b/pkgs/by-name/df/dftd4/cmake.patch @@ -0,0 +1,13 @@ +diff --git a/config/template.pc b/config/template.pc +index 3d6efbb..e338a42 100644 +--- a/config/template.pc ++++ b/config/template.pc +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: @PROJECT_DESCRIPTION@ diff --git a/pkgs/by-name/df/dftd4/package.nix b/pkgs/by-name/df/dftd4/package.nix index e3e54eba9c6b..e77583857422 100644 --- a/pkgs/by-name/df/dftd4/package.nix +++ b/pkgs/by-name/df/dftd4/package.nix @@ -2,7 +2,10 @@ stdenv, lib, fetchFromGitHub, + fetchpatch, gfortran, + buildType ? "meson", + cmake, meson, ninja, pkg-config, @@ -15,6 +18,12 @@ }: assert !blas.isILP64 && !lapack.isILP64; +assert ( + builtins.elem buildType [ + "meson" + "cmake" + ] +); stdenv.mkDerivation rec { pname = "dftd4"; @@ -30,24 +39,37 @@ stdenv.mkDerivation rec { patches = [ # Make sure fortran headers are installed directly in /include ./fortran-module-dir.patch + + # Fix wrong generation of package config include paths + ./cmake.patch ]; nativeBuildInputs = [ gfortran - meson - ninja pkg-config python3 - ]; + ] + ++ lib.optionals (buildType == "meson") [ + meson + ninja + ] + ++ lib.optional (buildType == "cmake") cmake; buildInputs = [ blas lapack + ]; + + propagatedBuildInputs = [ mctc-lib mstore multicharge ]; + cmakeFlags = [ + (lib.strings.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) + ]; + outputs = [ "out" "dev" From a997ac0dc22d4b06565f5cba8bc2fa488cac7375 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:14:43 +0200 Subject: [PATCH 11/17] sirius: 7.6.2 -> unstable-2025-07-23 --- pkgs/by-name/si/sirius/package.nix | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/si/sirius/package.nix b/pkgs/by-name/si/sirius/package.nix index 826e1638dfaa..a7636abc3483 100644 --- a/pkgs/by-name/si/sirius/package.nix +++ b/pkgs/by-name/si/sirius/package.nix @@ -22,6 +22,12 @@ boost, eigen, libvdwxc, + dftd4, + simple-dftd3, + mctc-lib, + jonquil, + toml-f, + multicharge, enablePython ? false, pythonPackages ? null, llvmPackages, @@ -47,13 +53,13 @@ assert enablePython -> pythonPackages != null; stdenv.mkDerivation rec { pname = "SIRIUS"; - version = "7.6.2"; + version = "7.8.0-unstable-2025-07-23"; src = fetchFromGitHub { owner = "electronic-structure"; repo = "SIRIUS"; - rev = "v${version}"; - hash = "sha256-A3WiEzo2ianxdF9HMZN9cT0lFosToGEHh0o6uBSAYqU="; + rev = "258c8c6543af0350ac002a52fbe18221ea275590"; + hash = "sha256-HHt3iw3muIGz86NmI9p6yuv7jrXoiz/83qTTueU7Lpk="; }; outputs = [ @@ -84,6 +90,12 @@ stdenv.mkDerivation rec { boost eigen libvdwxc + jonquil + simple-dftd3 + dftd4 + mctc-lib + toml-f + multicharge ] ++ lib.optionals (gpuBackend == "cuda") [ cudaPackages.cuda_cudart @@ -131,6 +143,8 @@ stdenv.mkDerivation rec { "-DSIRIUS_USE_VDWXC=ON" "-DSIRIUS_CREATE_FORTRAN_BINDINGS=ON" "-DSIRIUS_USE_OPENMP=ON" + "-DSIRIUS_USE_DFTD3=ON" + "-DSIRIUS_USE_DFTD4=ON" "-DBUILD_TESTING=ON" ] ++ lib.optionals (gpuBackend == "cuda") [ From a125985c79e7af80f6af755ea7d565930892f99d Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:15:55 +0200 Subject: [PATCH 12/17] tblite: add option to build with cmake in addition to meson --- .../science/chemistry/tblite/default.nix | 33 +++++++++++++++++-- .../science/chemistry/tblite/pkgconfig.patch | 13 ++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/science/chemistry/tblite/pkgconfig.patch diff --git a/pkgs/development/libraries/science/chemistry/tblite/default.nix b/pkgs/development/libraries/science/chemistry/tblite/default.nix index 860a9f55d42f..9058a36df8a8 100644 --- a/pkgs/development/libraries/science/chemistry/tblite/default.nix +++ b/pkgs/development/libraries/science/chemistry/tblite/default.nix @@ -3,8 +3,10 @@ lib, fetchFromGitHub, gfortran, + buildType ? "meson", meson, ninja, + cmake, pkg-config, blas, lapack, @@ -17,6 +19,12 @@ }: assert !blas.isILP64 && !lapack.isILP64; +assert ( + builtins.elem buildType [ + "meson" + "cmake" + ] +); stdenv.mkDerivation rec { pname = "tblite"; @@ -29,11 +37,23 @@ stdenv.mkDerivation rec { hash = "sha256-KV2fxB+SF4LilN/87YCvxUt4wsY4YyIV4tqnn+3/0oI="; }; + patches = [ + ./0001-fix-multicharge-dep-needed-for-static-compilation.patch + + # Fix wrong paths in pkg-config file + ./pkgconfig.patch + ]; + nativeBuildInputs = [ gfortran + pkg-config + ] + ++ lib.optionals (buildType == "meson") [ meson ninja - pkg-config + ] + ++ lib.optionals (buildType == "cmake") [ + cmake ]; buildInputs = [ @@ -52,7 +72,16 @@ stdenv.mkDerivation rec { "dev" ]; - doCheck = true; + checkInputs = [ + python3 + ]; + + checkFlags = [ + "-j1" # Tests hang when multiple are run in parallel + ]; + + doCheck = buildType == "meson"; + preCheck = '' export OMP_NUM_THREADS=2 ''; diff --git a/pkgs/development/libraries/science/chemistry/tblite/pkgconfig.patch b/pkgs/development/libraries/science/chemistry/tblite/pkgconfig.patch new file mode 100644 index 000000000000..00c7e907733b --- /dev/null +++ b/pkgs/development/libraries/science/chemistry/tblite/pkgconfig.patch @@ -0,0 +1,13 @@ +diff --git a/config/template.pc b/config/template.pc +index 3d6efbb..e338a42 100644 +--- a/config/template.pc ++++ b/config/template.pc +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ +-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: @PROJECT_DESCRIPTION@ From 883f0b4a82fb62468fe25299ac8cf15d5175a086 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Thu, 31 Jul 2025 13:43:07 +0200 Subject: [PATCH 13/17] tblite: 0.4.0 -> 0.5.0 --- .../libraries/science/chemistry/tblite/default.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/science/chemistry/tblite/default.nix b/pkgs/development/libraries/science/chemistry/tblite/default.nix index 9058a36df8a8..d15613089a6f 100644 --- a/pkgs/development/libraries/science/chemistry/tblite/default.nix +++ b/pkgs/development/libraries/science/chemistry/tblite/default.nix @@ -16,6 +16,7 @@ multicharge, dftd4, simple-dftd3, + python3, }: assert !blas.isILP64 && !lapack.isILP64; @@ -28,13 +29,13 @@ assert ( stdenv.mkDerivation rec { pname = "tblite"; - version = "0.4.0"; + version = "0.5.0"; src = fetchFromGitHub { owner = "tblite"; repo = pname; rev = "v${version}"; - hash = "sha256-KV2fxB+SF4LilN/87YCvxUt4wsY4YyIV4tqnn+3/0oI="; + hash = "sha256-hePy/slEeM2o1gtrAbq/nkEUILa6oQjkD2ddDstQ2Zc="; }; patches = [ @@ -44,6 +45,11 @@ stdenv.mkDerivation rec { ./pkgconfig.patch ]; + # Python scripts in test subdirectories to run the tests + postPatch = '' + patchShebangs ./ + ''; + nativeBuildInputs = [ gfortran pkg-config From d6426fb7ea83fd538dee3aed4b74eb6fc7fd2d60 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:16:40 +0200 Subject: [PATCH 14/17] greenx: initi at 2.2 --- pkgs/by-name/gr/greenx/package.nix | 48 ++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 pkgs/by-name/gr/greenx/package.nix diff --git a/pkgs/by-name/gr/greenx/package.nix b/pkgs/by-name/gr/greenx/package.nix new file mode 100644 index 000000000000..9123d6727590 --- /dev/null +++ b/pkgs/by-name/gr/greenx/package.nix @@ -0,0 +1,48 @@ +{ + stdenv, + lib, + fetchFromGitHub, + gfortran, + cmake, + pkg-config, + blas, + lapack, +}: + +stdenv.mkDerivation rec { + pname = "greenx"; + version = "2.2"; + + src = fetchFromGitHub { + owner = "nomad-coe"; + repo = "greenx"; + rev = "v${version}"; + hash = "sha256-otIs2Y79KoEL4ut8YQe7Y27LpmpId8h/X8B6GIg8l+E="; + }; + + nativeBuildInputs = [ + gfortran + pkg-config + cmake + ]; + + buildInputs = [ + blas + lapack + ]; + + # Uses a hacky python setup run by cmake, which is hard to get running + doCheck = false; + + preCheck = '' + export OMP_NUM_THREADS=2 + ''; + + meta = with lib; { + description = "Library for Green’s function based electronic structure theory calculations"; + license = [ licenses.asl20 ]; + homepage = "https://github.com/nomad-coe/greenX"; + platforms = platforms.linux; + maintainers = [ maintainers.sheepforce ]; + }; +} From 289f85a12f7a47265680af30cf4ea104d531ff61 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:17:20 +0200 Subject: [PATCH 15/17] openorbitaloptimizer: init at 0.1.0 --- .../op/openorbitaloptimizer/package.nix | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 pkgs/by-name/op/openorbitaloptimizer/package.nix diff --git a/pkgs/by-name/op/openorbitaloptimizer/package.nix b/pkgs/by-name/op/openorbitaloptimizer/package.nix new file mode 100644 index 000000000000..a99733eb02e9 --- /dev/null +++ b/pkgs/by-name/op/openorbitaloptimizer/package.nix @@ -0,0 +1,51 @@ +{ + stdenv, + lib, + fetchFromGitHub, + gfortran, + cmake, + pkg-config, + armadillo, + blas, + lapack, +}: + +stdenv.mkDerivation rec { + pname = "OpenOrbitalOptimizer"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "susilethola"; + repo = "openorbitaloptimizer"; + rev = "v${version}"; + hash = "sha256-otIs2Y79KoEL4ut8YQe7Y27LpmpId8h/X8B6GIg8l+E="; + }; + + nativeBuildInputs = [ + pkg-config + cmake + gfortran + ]; + + buildInputs = [ + armadillo + blas + lapack + ]; + + outputs = [ + "out" + "dev" + ]; + + # Uses a hacky python setup run by cmake, which is hard to get running + doCheck = false; + + meta = with lib; { + description = "Common orbital optimisation algorithms for quantum chemistry"; + license = [ licenses.mpl20 ]; + homepage = "https://github.com/susilehtola/OpenOrbitalOptimizer"; + platforms = platforms.linux; + maintainers = [ maintainers.sheepforce ]; + }; +} From ba123555aaba1570f424970d1da48f29de2f7eff Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Mon, 28 Jul 2025 16:18:57 +0200 Subject: [PATCH 16/17] cp2k: 2025.1 -> 2025.2, switch to cmake build --- pkgs/by-name/cp/cp2k/package.nix | 209 ++++++++++----------------- pkgs/by-name/cp/cp2k/pkgconfig.patch | 14 ++ pkgs/top-level/all-packages.nix | 69 +++++++++ 3 files changed, 159 insertions(+), 133 deletions(-) create mode 100644 pkgs/by-name/cp/cp2k/pkgconfig.patch diff --git a/pkgs/by-name/cp/cp2k/package.nix b/pkgs/by-name/cp/cp2k/package.nix index 64229039b8ca..9a4b913e29a5 100644 --- a/pkgs/by-name/cp/cp2k/package.nix +++ b/pkgs/by-name/cp/cp2k/package.nix @@ -3,18 +3,19 @@ stdenv, fetchFromGitHub, mpiCheckPhaseHook, + cmake, python3, gfortran, blas, lapack, + dbcsr, fftw, libint, libvori, libxc, dftd4, - mctc-lib, - mstore, - multicharge, + simple-dftd3, + tblite, mpi, gsl, scalapack, @@ -30,6 +31,10 @@ libvdwxc, spla, spfft, + trexio, + toml-f, + greenx, + gmp, enableElpa ? false, elpa, cudaPackages, @@ -44,10 +49,9 @@ "none" ), # Change to a value suitable for your target GPU. - # For AMD values see https://github.com/cp2k/cp2k/blob/master/INSTALL.md#2v-rocmhip-support-for-amd-gpu - # and for Nvidia see https://github.com/cp2k/cp2k/blob/master/INSTALL.md#2i-cuda-optional-improved-performance-on-gpu-systems - gpuVersion ? (if gpuBackend == "cuda" then "A100" else "Mi100"), - gpuArch ? (if gpuBackend == "cuda" then "sm_80" else "gfx908"), + # see https://github.com/cp2k/cp2k/blob/master/CMakeLists.txt#L433 + hipTarget ? "gfx908", + cudaTarget ? "80", }: assert builtins.elem gpuBackend [ @@ -56,20 +60,15 @@ assert builtins.elem gpuBackend [ "rocm" ]; -let - cp2kVersion = "psmp"; - arch = "Linux-x86-64-gfortran"; - -in stdenv.mkDerivation rec { pname = "cp2k"; - version = "2025.1"; + version = "2025.2"; src = fetchFromGitHub { owner = "cp2k"; repo = "cp2k"; - tag = "v${version}"; - hash = "sha256-04AFiEuv+EYubZVoYErQDdr9zipKlF7Gqy8DrUaYUMk="; + rev = "v${version}"; + hash = "sha256-vfl5rCoFeGtYuZ7LcsVsESjKxFbN5IYDvBSzOqsd64w="; fetchSubmodules = true; }; @@ -77,10 +76,14 @@ stdenv.mkDerivation rec { # Remove the build command line from the source. # This avoids dependencies to .dev inputs ./remove-compiler-options.patch + + # Fix pkg-config path generation + ./pkgconfig.patch ]; nativeBuildInputs = [ python3 + cmake which makeWrapper pkg-config @@ -95,15 +98,15 @@ stdenv.mkDerivation rec { libvori libxc dftd4 - mctc-lib - mstore - multicharge + simple-dftd3 + tblite libxsmm mpi spglib scalapack blas lapack + dbcsr plumed zlib hdf5-fortran @@ -111,6 +114,10 @@ stdenv.mkDerivation rec { spla spfft libvdwxc + trexio + toml-f + greenx + gmp ] ++ lib.optional enableElpa elpa ++ lib.optionals (gpuBackend == "cuda") [ @@ -129,15 +136,6 @@ stdenv.mkDerivation rec { propagatedBuildInputs = [ (lib.getBin mpi) ]; propagatedUserEnvPkgs = [ mpi ]; - makeFlags = [ - "ARCH=${arch}" - "VERSION=${cp2kVersion}" - ]; - - doCheck = gpuBackend == "none"; - - enableParallelBuilding = true; - postPatch = '' patchShebangs tools exts/dbcsr/tools/build_utils exts/dbcsr/.cp2k substituteInPlace exts/build_dbcsr/Makefile \ @@ -145,121 +143,66 @@ stdenv.mkDerivation rec { --replace 'SHELL = /bin/sh' 'SHELL = bash' ''; - configurePhase = '' - runHook preConfigure - - cat > arch/${arch}.${cp2kVersion} << EOF - CC = mpicc - CPP = - FC = mpif90 - LD = mpif90 - AR = ar -r - ${lib.strings.optionalString (gpuBackend == "cuda") '' - OFFLOAD_CC = nvcc - OFFLOAD_FLAGS = -O3 -g -w --std=c++11 -arch ${gpuArch} - OFFLOAD_TARGET = cuda - GPUVER = ${gpuVersion} - CXX = mpicxx - CXXFLAGS = -std=c++11 -fopenmp - ''} - ${lib.strings.optionalString (gpuBackend == "rocm") '' - GPUVER = ${gpuVersion} - OFFLOAD_CC = hipcc - OFFLOAD_FLAGS = -fopenmp -m64 -pthread -fPIC -D__GRID_HIP -O2 --offload-arch=${gpuArch} --rocm-path=${rocmPackages.rocm-core} - OFFLOAD_TARGET = hip - CXX = mpicxx - CXXFLAGS = -std=c++11 -fopenmp -D__HIP_PLATFORM_AMD__ - ''} - DFLAGS = -D__FFTW3 -D__LIBXC -D__LIBINT -D__parallel -D__SCALAPACK \ - -D__MPI_VERSION=3 -D__F2008 -D__LIBXSMM -D__SPGLIB \ - -D__MAX_CONTR=4 -D__LIBVORI ${lib.optionalString enableElpa "-D__ELPA"} \ - -D__PLUMED2 -D__HDF5 -D__GSL -D__SIRIUS -D__LIBVDWXC -D__SPFFT -D__SPLA \ - -D__DFTD4 \ - ${ - lib.strings.optionalString ( - gpuBackend == "cuda" - ) "-D__OFFLOAD_CUDA -D__ACC -D__DBCSR_ACC -D__NO_OFFLOAD_PW" - } \ - ${lib.strings.optionalString ( - gpuBackend == "rocm" - ) "-D__OFFLOAD_HIP -D__DBCSR_ACC -D__NO_OFFLOAD_PW"} - CFLAGS = -fopenmp - FCFLAGS = \$(DFLAGS) -O2 -ffree-form -ffree-line-length-none \ - -ftree-vectorize -funroll-loops -msse2 \ - -std=f2008 \ - -fopenmp -ftree-vectorize -funroll-loops \ - ${lib.optionalString enableElpa "$(pkg-config --variable=fcflags elpa)"} \ - -I${lib.getDev libint}/include \ - -I${lib.getDev sirius}/include/sirius \ - -I${lib.getDev libxc}/include \ - -I${lib.getDev dftd4}/include/dftd4 \ - -I${lib.getDev libxsmm}/include \ - -I${lib.getDev hdf5-fortran}/include \ - -fallow-argument-mismatch - LIBS = -lfftw3 -lfftw3_threads \ - -lscalapack -lblas -llapack \ - -lxcf03 -lxc -lxsmmf -lxsmm -lsymspg \ - -lint2 -lstdc++ -lvori \ - -lgomp -lpthread -lm \ - -fopenmp ${lib.optionalString enableElpa "$(pkg-config --libs elpa)"} \ - -lz -ldl ${lib.optionalString (mpi.pname == "openmpi") "$(mpicxx --showme:link)"} \ - -lplumed -lhdf5_fortran -lhdf5_hl -lhdf5 -lgsl -lsirius -lspla -lspfft -lvdwxc \ - -ldftd4 -lmstore -lmulticharge -lmctc-lib \ - ${ - lib.strings.optionalString (gpuBackend == "cuda") '' - -L${cudaPackages.cuda_cudart}/lib/stubs/ \ - -lcudart -lnvrtc -lcuda -lcublas - '' - } \ - ${lib.strings.optionalString ( - gpuBackend == "rocm" - ) "-lamdhip64 -lhipfft -lhipblas -lrocblas"} - LDFLAGS = \$(FCFLAGS) \$(LIBS) - include ${plumed}/lib/plumed/src/lib/Plumed.inc - EOF - - runHook postConfigure - ''; + cmakeFlags = [ + (lib.strings.cmakeBool "CP2K_USE_DFTD4" true) + (lib.strings.cmakeBool "CP2K_USE_TBLITE" true) + (lib.strings.cmakeBool "CP2K_USE_FFTW3" true) + (lib.strings.cmakeBool "CP2K_USE_HDF5" true) + (lib.strings.cmakeBool "CP2K_USE_LIBINT2" true) + (lib.strings.cmakeBool "CP2K_USE_LIBXC" true) + (lib.strings.cmakeBool "CP2K_USE_MPI" true) + (lib.strings.cmakeBool "CP2K_USE_VORI" true) + (lib.strings.cmakeBool "CP2K_USE_TREXIO" true) + (lib.strings.cmakeBool "CP2K_USE_SPGLIB" true) + (lib.strings.cmakeBool "CP2K_USE_SPLA" true) + (lib.strings.cmakeBool "CP2K_USE_LIBXSMM" true) + (lib.strings.cmakeBool "CP2K_USE_SIRIUS" true) + (lib.strings.cmakeBool "CP2K_USE_LIBVDWXC" true) + (lib.strings.cmakeBool "CP2K_USE_PLUMED" true) + (lib.strings.cmakeBool "CP2K_USE_GREENX" true) + (lib.strings.cmakeBool "CP2K_USE_ELPA" enableElpa) + (lib.strings.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) + ] + ++ lib.optionals (gpuBackend == "rocm") [ + (lib.strings.cmakeFeature "CP2K_USE_ACCEL" "HIP") + (lib.strings.cmakeFeature "CMAKE_HIP_ARCHITECTURES" hipTarget) + ] + ++ lib.optionals (gpuBackend == "cuda") [ + (lib.strings.cmakeFeature "CP2K_USE_ACCEL" "CUDA") + (lib.strings.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cudaTarget) + ]; nativeCheckInputs = [ mpiCheckPhaseHook ]; - checkPhase = '' - runHook preCheck - - export CP2K_DATA_DIR=data - mpirun -np 2 exe/${arch}/libcp2k_unittest.${cp2kVersion} - - runHook postCheck - ''; - - installPhase = '' - runHook preInstall - - mkdir -p $out/bin $out/share/cp2k - - cp exe/${arch}/* $out/bin - rm $out/bin/*_unittest.* - - for i in cp2k cp2k_shell graph; do - wrapProgram $out/bin/$i.${cp2kVersion} \ - --set-default CP2K_DATA_DIR $out/share/cp2k - done - - wrapProgram $out/bin/cp2k.popt \ - --set-default CP2K_DATA_DIR $out/share/cp2k \ - --set OMP_NUM_THREADS 1 - - cp -r data/* $out/share/cp2k - - runHook postInstall - ''; - passthru = { inherit mpi; }; + postInstall = '' + mkdir -p $out/share/cp2k + cp -r ../data/* $out/share/cp2k + + for i in $out/bin/*; do + wrapProgram $i \ + --set-default CP2K_DATA_DIR $out/share/cp2k \ + --set-default OMP_NUM_THREADS 1 + done + ''; + + doInstallCheck = gpuBackend == "none"; + + installCheckPhase = '' + runHook preInstallCheck + + for TEST in $out/bin/{dbt_tas,dbt,libcp2k,parallel_rng_types,gx_ac}_unittest.psmp; do + mpirun -n 2 $TEST + done + + runHook postInstallCheck + ''; + meta = { description = "Quantum chemistry and solid state physics program"; homepage = "https://www.cp2k.org"; diff --git a/pkgs/by-name/cp/cp2k/pkgconfig.patch b/pkgs/by-name/cp/cp2k/pkgconfig.patch new file mode 100644 index 000000000000..2194d3a97d01 --- /dev/null +++ b/pkgs/by-name/cp/cp2k/pkgconfig.patch @@ -0,0 +1,14 @@ +diff --git a/cmake/libcp2k.pc.in b/cmake/libcp2k.pc.in +index 618af55e28..8d08a51a0c 100644 +--- a/cmake/libcp2k.pc.in ++++ b/cmake/libcp2k.pc.in +@@ -1,7 +1,7 @@ + prefix="@CMAKE_INSTALL_PREFIX@" + exec_prefix="${prefix}" +-libdir="${prefix}/@CMAKE_INSTALL_LIBDIR@" +-includedir="${prefix}/@CMAKE_INSTALL_INCLUDEDIR@" ++libdir=CMAKE_INSTALL_FULL_LIBDIR@" ++includedir="@CMAKE_INSTALL_FULL_INCLUDEDIR@" + + Name: @PROJECT_NAME@ + Description: @CMAKE_PROJECT_DESCRIPTION@ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 31feafa9b7b4..bdeed6c21a21 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14545,6 +14545,75 @@ with pkgs; siesta-mpi = callPackage ../applications/science/chemistry/siesta { useMpi = true; }; + cp2k = + # CP2K requires all dependencies from the Grimme ecosystem to be build with + # CMake instead of Meson. Unfortunately most other consumers require meson + let + grimmeCmake = lib.makeScope pkgs.newScope (self: { + mctc-lib = pkgs.mctc-lib.override { + buildType = "cmake"; + inherit (self) jonquil toml-f; + }; + + toml-f = pkgs.toml-f.override { + buildType = "cmake"; + inherit (self) test-drive; + }; + + dftd4 = pkgs.dftd4.override { + buildType = "cmake"; + inherit (self) mstore mctc-lib multicharge; + }; + + jonquil = pkgs.jonquil.override { + buildType = "cmake"; + inherit (self) toml-f test-drive; + }; + + mstore = pkgs.mstore.override { + buildType = "cmake"; + inherit (self) mctc-lib; + }; + + multicharge = pkgs.multicharge.override { + buildType = "cmake"; + inherit (self) mctc-lib mstore; + }; + + test-drive = pkgs.test-drive.override { buildType = "cmake"; }; + + simple-dftd3 = pkgs.simple-dftd3.override { + buildType = "cmake"; + inherit (self) mctc-lib mstore toml-f; + }; + + tblite = pkgs.tblite.override { + buildType = "cmake"; + inherit (self) + mctc-lib + mstore + toml-f + multicharge + dftd4 + simple-dftd3 + ; + }; + + sirius = pkgs.sirius.override { + inherit (self) + mctc-lib + toml-f + multicharge + dftd4 + simple-dftd3 + ; + }; + }); + in + grimmeCmake.callPackage ../by-name/cp/cp2k/package.nix { + libxc = pkgs.libxc_7; + }; + ### SCIENCE/GEOMETRY ### SCIENCE/BENCHMARK From dc215d0d4bf16b3f5d73c93b5bd08b02433c85e4 Mon Sep 17 00:00:00 2001 From: Phillip Seeber Date: Thu, 7 Aug 2025 12:13:00 +0200 Subject: [PATCH 17/17] cp2k: move from pkgs/by-name to pkgs/applications nixpkgs-vet CI check demands to move CP2K out of the pkgs/by-name tree --- .../science/chemistry/cp2k/default.nix} | 0 .../cp => applications/science/chemistry}/cp2k/pkgconfig.patch | 0 .../science/chemistry}/cp2k/remove-compiler-options.patch | 0 pkgs/top-level/all-packages.nix | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) rename pkgs/{by-name/cp/cp2k/package.nix => applications/science/chemistry/cp2k/default.nix} (100%) rename pkgs/{by-name/cp => applications/science/chemistry}/cp2k/pkgconfig.patch (100%) rename pkgs/{by-name/cp => applications/science/chemistry}/cp2k/remove-compiler-options.patch (100%) diff --git a/pkgs/by-name/cp/cp2k/package.nix b/pkgs/applications/science/chemistry/cp2k/default.nix similarity index 100% rename from pkgs/by-name/cp/cp2k/package.nix rename to pkgs/applications/science/chemistry/cp2k/default.nix diff --git a/pkgs/by-name/cp/cp2k/pkgconfig.patch b/pkgs/applications/science/chemistry/cp2k/pkgconfig.patch similarity index 100% rename from pkgs/by-name/cp/cp2k/pkgconfig.patch rename to pkgs/applications/science/chemistry/cp2k/pkgconfig.patch diff --git a/pkgs/by-name/cp/cp2k/remove-compiler-options.patch b/pkgs/applications/science/chemistry/cp2k/remove-compiler-options.patch similarity index 100% rename from pkgs/by-name/cp/cp2k/remove-compiler-options.patch rename to pkgs/applications/science/chemistry/cp2k/remove-compiler-options.patch diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bdeed6c21a21..2af02c3c9f28 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14610,7 +14610,7 @@ with pkgs; }; }); in - grimmeCmake.callPackage ../by-name/cp/cp2k/package.nix { + grimmeCmake.callPackage ../applications/science/chemistry/cp2k/default.nix { libxc = pkgs.libxc_7; };