diff --git a/.clangd b/.clangd index 63fe9bab..527de5ae 100644 --- a/.clangd +++ b/.clangd @@ -1,3 +1,3 @@ CompileFlags: - Add: [ -Wall, -Wextra, -std=c++20, -I./local/pkgs/biu/include ] + Add: [ -Wall, -Wextra, -std=c++23 ] Compiler: gcc \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4daee5b1..b6f97437 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,3 @@ result result-man outputs .direnv -.cache -.vscode -build diff --git a/local/pkgs/default.nix b/local/pkgs/default.nix index 11f42728..926d6f29 100644 --- a/local/pkgs/default.nix +++ b/local/pkgs/default.nix @@ -47,19 +47,21 @@ inputs: rec gnu = inputs.pkgs.callPackage ./vasp/gnu { inherit (inputs.pkgs.llvmPackages) openmp; - inherit wannier90; + inherit wannier90 additionalCommands; hdf5 = inputs.pkgs.hdf5.override { mpiSupport = true; fortranSupport = true; }; }; gnu-mkl = inputs.pkgs.callPackage ./vasp/gnu-mkl { inherit (inputs.pkgs.llvmPackages) openmp; - inherit wannier90; + inherit wannier90 additionalCommands; hdf5 = inputs.pkgs.hdf5.override { mpiSupport = true; fortranSupport = true; }; }; - nvidia = inputs.pkgs.callPackage ./vasp/nvidia { inherit lmod nvhpc wannier90; hdf5 = hdf5-nvhpc; }; - intel = inputs.pkgs.callPackage ./vasp/intel { inherit lmod oneapi wannier90; hdf5 = hdf5-oneapi; }; + nvidia = inputs.pkgs.callPackage ./vasp/nvidia + { inherit lmod nvhpc wannier90 additionalCommands; hdf5 = hdf5-nvhpc; }; + intel = inputs.pkgs.callPackage ./vasp/intel + { inherit lmod oneapi wannier90 additionalCommands; hdf5 = hdf5-oneapi; }; amd = inputs.pkgs.callPackage ./vasp/amd - { inherit aocc aocl wannier90; hdf5 = hdf5-aocc; openmpi = openmpi-aocc; gcc = gcc-pie; }; + { inherit aocc aocl wannier90 additionalCommands; hdf5 = hdf5-aocc; openmpi = openmpi-aocc; gcc = gcc-pie; }; wannier90 = inputs.pkgs.callPackage "${inputs.topInputs.nixpkgs-unstable}/pkgs/by-name/wa/wannier90/package.nix" {}; hdf5-nvhpc = inputs.pkgs.callPackage ./vasp/hdf5-nvhpc { inherit lmod nvhpc; inherit (inputs.pkgs.hdf5) src; }; @@ -69,6 +71,8 @@ inputs: rec openmpi-aocc = inputs.pkgs.callPackage ./vasp/openmpi-aocc { inherit aocc; gcc = gcc-pie; }; gcc-pie = inputs.pkgs.wrapCC (inputs.pkgs.gcc.cc.overrideAttrs (prev: { configureFlags = prev.configureFlags ++ [ "--enable-default-pie" ];})); + additionalCommands = let uid = inputs.config.nixos.user.uid.gb; in + ''[ "$(${inputs.pkgs.coreutils}/bin/id -u)" -eq ${builtins.toString uid} ] && exit 1''; }; oneapi = inputs.pkgs.callPackage ./oneapi {}; mumax = inputs.pkgs.callPackage ./mumax { src = inputs.topInputs.mumax; }; diff --git a/local/pkgs/vasp/amd/default.nix b/local/pkgs/vasp/amd/default.nix index 63eff334..653f8c6e 100644 --- a/local/pkgs/vasp/amd/default.nix +++ b/local/pkgs/vasp/amd/default.nix @@ -1,6 +1,7 @@ { buildFHSEnv, writeScript, stdenvNoCC, requireFile, substituteAll, - aocc, rsync, which, hdf5, wannier90, aocl, openmpi, gcc, zlib, glibc, binutils, libpsm2 + aocc, rsync, which, hdf5, wannier90, aocl, openmpi, gcc, zlib, glibc, binutils, libpsm2, + additionalCommands ? "" }: let sources = import ../source.nix { inherit requireFile; }; @@ -61,6 +62,8 @@ let fi export OMP_NUM_THREADS + ${additionalCommands} + exec "$@" ''; runEnv = version: buildFHSEnv diff --git a/local/pkgs/vasp/gnu-mkl/default.nix b/local/pkgs/vasp/gnu-mkl/default.nix index 74fd3ea2..a94a82aa 100644 --- a/local/pkgs/vasp/gnu-mkl/default.nix +++ b/local/pkgs/vasp/gnu-mkl/default.nix @@ -1,6 +1,7 @@ { stdenvNoCC, requireFile, writeShellApplication, - rsync, mkl, mpi, openmp, gfortran, gcc, fftwMpi, hdf5, wannier90 + rsync, mkl, mpi, openmp, gfortran, gcc, fftwMpi, hdf5, wannier90, + additionalCommands ? "" }: let sources = import ../source.nix { inherit requireFile; }; @@ -48,6 +49,8 @@ let fi export OMP_NUM_THREADS + ${additionalCommands} + exec "$@" ''; }; diff --git a/local/pkgs/vasp/gnu/default.nix b/local/pkgs/vasp/gnu/default.nix index d92b86a4..938c2230 100644 --- a/local/pkgs/vasp/gnu/default.nix +++ b/local/pkgs/vasp/gnu/default.nix @@ -1,6 +1,7 @@ { stdenvNoCC, requireFile, writeShellApplication, - rsync, blas, scalapack, mpi, openmp, gfortran, gcc, fftwMpi, hdf5, wannier90 + rsync, blas, scalapack, mpi, openmp, gfortran, gcc, fftwMpi, hdf5, wannier90, + additionalCommands ? "" }: let sources = import ../source.nix { inherit requireFile; }; @@ -47,6 +48,8 @@ let fi export OMP_NUM_THREADS + ${additionalCommands} + exec "$@" ''; }; diff --git a/local/pkgs/vasp/intel/default.nix b/local/pkgs/vasp/intel/default.nix index 0239989e..d21c6139 100644 --- a/local/pkgs/vasp/intel/default.nix +++ b/local/pkgs/vasp/intel/default.nix @@ -1,6 +1,6 @@ { buildFHSEnv, writeScript, stdenvNoCC, requireFile, substituteAll, symlinkJoin, writeTextDir, - config, oneapiArch ? config.oneapiArch or "SSE3", + config, oneapiArch ? config.oneapiArch or "SSE3", additionalCommands ? "", oneapi, gcc, glibc, lmod, rsync, which, wannier90, binutils, hdf5, zlib }: let @@ -82,6 +82,8 @@ let # set OMP_STACKSIZE if not set export OMP_STACKSIZE=''${OMP_STACKSIZE-512M} + ${additionalCommands} + ${ if variant == "env" then ''exec "$@"'' else diff --git a/local/pkgs/vasp/nvidia/default.nix b/local/pkgs/vasp/nvidia/default.nix index 66460449..51e281b9 100644 --- a/local/pkgs/vasp/nvidia/default.nix +++ b/local/pkgs/vasp/nvidia/default.nix @@ -1,6 +1,6 @@ { buildFHSEnv, writeScript, stdenvNoCC, requireFile, substituteAll, symlinkJoin, - config, cudaCapabilities ? config.cudaCapabilities, nvhpcArch ? config.nvhpcArch or "px", + config, cudaCapabilities ? config.cudaCapabilities, nvhpcArch ? config.nvhpcArch or "px", additionalCommands ? "", nvhpc, lmod, mkl, gfortran, rsync, which, hdf5, wannier90, zlib }: let @@ -67,6 +67,8 @@ let fi export OMP_NUM_THREADS + ${additionalCommands} + ${ if variant == "env" then ''exec "$@"'' else