summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhillip Seeber <phillip.seeber@uni-jena.de>2023-12-04 17:06:21 +0100
committerPhillip Seeber <phillip.seeber@uni-jena.de>2023-12-04 17:08:07 +0100
commit50fc2bfb8bbb28356d39f891eec31ea1a31db633 (patch)
tree446aa848f91cca7921cf4eaf8fa41ba274914238
parent36fbaa0de4ba40984daae894f1ab3ce5d8c9f76e (diff)
quantum-espresso: 6.6 -> 7.2
-rw-r--r--pkgs/applications/science/chemistry/quantum-espresso/default.nix104
-rw-r--r--pkgs/top-level/aliases.nix1
-rw-r--r--pkgs/top-level/all-packages.nix6
3 files changed, 95 insertions, 16 deletions
diff --git a/pkgs/applications/science/chemistry/quantum-espresso/default.nix b/pkgs/applications/science/chemistry/quantum-espresso/default.nix
index 9933d0d8c727..4c4482919772 100644
--- a/pkgs/applications/science/chemistry/quantum-espresso/default.nix
+++ b/pkgs/applications/science/chemistry/quantum-espresso/default.nix
@@ -1,41 +1,119 @@
{ lib
, stdenv
, fetchFromGitLab
+, fetchFromGitHub
+, fetchurl
+, git
+, cmake
+, gnum4
, gfortran
+, pkg-config
, fftw
, blas
, lapack
-, useMpi ? false
+, scalapack
+, wannier90
+, hdf5
+, libmbd
+, libxc
+, enableMpi ? true
, mpi
}:
+assert ! blas.isILP64;
+assert ! lapack.isILP64;
+
+let
+ # "rev"s must exactly match the git submodule commits in the QE repo
+ gitSubmodules = {
+ devxlib = fetchFromGitLab {
+ group = "max-centre";
+ owner = "components";
+ repo = "devicexlib";
+ rev = "a6b89ef77b1ceda48e967921f1f5488d2df9226d";
+ hash = "sha256-p3fRplVG4YSN6ILNlOwf+aSEhpTJPXqiS1+wnzWVA2U=";
+ };
+
+ pw2qmcpack = fetchFromGitHub {
+ owner = "QMCPACK";
+ repo = "pw2qmcpack";
+ rev = "f72ab25fa4ea755c1b4b230ae8074b47d5509c70";
+ hash = "sha256-K1Z90xexsUvk4SdEb8FGryRal0GAFoLz3j1h/RT2nYw=";
+ };
+ };
+
+in
stdenv.mkDerivation rec {
- version = "6.6";
+ version = "7.2";
pname = "quantum-espresso";
src = fetchFromGitLab {
owner = "QEF";
repo = "q-e";
rev = "qe-${version}";
- sha256 = "1mkfmw0fq1dabplzdn6v1abhw0ds55gzlvbx3a9brv493whk21yp";
+ hash = "sha256-0q0QWX4BVjVHjcbKOBpjbBADuL+2S5LAALyrxmjVs4c=";
};
- passthru = {
- inherit mpi;
- };
+ # add git submodules manually and fix pkg-config file
+ prePatch = ''
+ chmod -R +rwx external/
+
+ substituteInPlace external/devxlib.cmake \
+ --replace "qe_git_submodule_update(external/devxlib)" ""
+ substituteInPlace external/CMakeLists.txt \
+ --replace "qe_git_submodule_update(external/pw2qmcpack)" "" \
+ --replace "qe_git_submodule_update(external/d3q)" "" \
+ --replace "qe_git_submodule_update(external/qe-gipaw)" ""
- preConfigure = ''
- patchShebangs configure
+ ${builtins.toString (builtins.attrValues
+ (builtins.mapAttrs
+ (name: val: ''
+ cp -r ${val}/* external/${name}/.
+ chmod -R +rwx external/${name}
+ '')
+ gitSubmodules
+ )
+ )}
+
+ substituteInPlace cmake/quantum_espresso.pc.in \
+ --replace 'libdir="''${prefix}/@CMAKE_INSTALL_LIBDIR@"' 'libdir="@CMAKE_INSTALL_FULL_LIBDIR@"'
'';
- nativeBuildInputs = [ gfortran ];
+ passthru = { inherit mpi; };
+
+ nativeBuildInputs = [
+ cmake
+ gfortran
+ git
+ pkg-config
+ ];
- buildInputs = [ fftw blas lapack ]
- ++ (lib.optionals useMpi [ mpi ]);
+ buildInputs = [
+ fftw
+ blas
+ lapack
+ wannier90
+ libmbd
+ libxc
+ hdf5
+ ] ++ lib.optional enableMpi scalapack;
- configureFlags = if useMpi then [ "LD=${mpi}/bin/mpif90" ] else [ "LD=${gfortran}/bin/gfortran" ];
+ propagatedBuildInputs = lib.optional enableMpi mpi;
+ propagatedUserEnvPkgs = lib.optional enableMpi mpi;
- makeFlags = [ "all" ];
+ cmakeFlags = [
+ "-DBUILD_SHARED_LIBS=ON"
+ "-DWANNIER90_ROOT=${wannier90}"
+ "-DMBD_ROOT=${libmbd}"
+ "-DQE_ENABLE_OPENMP=ON"
+ "-DQE_ENABLE_LIBXC=ON"
+ "-DQE_ENABLE_HDF5=ON"
+ "-DQE_ENABLE_PLUGINS=pw2qmcpack"
+ ] ++ lib.optionals enableMpi [
+ "-DQE_ENABLE_MPI=ON"
+ "-DQE_ENABLE_MPI_MODULE=ON"
+ "-DQE_ENABLE_SCALAPACK=ON"
+ ];
meta = with lib; {
description = "Electronic-structure calculations and materials modeling at the nanoscale";
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index e655c34c7e82..e3c9d2dc717c 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -768,6 +768,7 @@ mapAliases ({
qt6ct = qt6Packages.qt6ct; # Added 2023-03-07
qtcurve = libsForQt5.qtcurve; # Added 2020-11-07
qtile-unwrapped = python3.pkgs.qtile; # Added 2023-05-12
+ quantum-espresso-mpi = quantum-espresso; # Added 2023-11-23
qutebrowser-qt6 = throw "'qutebrowser-qt6' has been replaced by 'qutebrowser', since the the qt5 version has been removed"; # Added 2023-08-19
quvi = throw "'quvi' has been removed, as it was broken and unmaintained"; # Added 2023-11-25
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index e52c56b3a738..4823a1990cae 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -38847,9 +38847,9 @@ with pkgs;
pymol = callPackage ../applications/science/chemistry/pymol { };
- quantum-espresso = callPackage ../applications/science/chemistry/quantum-espresso { };
-
- quantum-espresso-mpi = callPackage ../applications/science/chemistry/quantum-espresso { useMpi = true; };
+ quantum-espresso = callPackage ../applications/science/chemistry/quantum-espresso {
+ hdf5 = hdf5-fortran;
+ };
siesta = callPackage ../applications/science/chemistry/siesta { };