OpenFOAMing-Sea/pkgs/openfoam/default.nix
2025-04-22 16:57:29 +02:00

88 lines
2.1 KiB
Nix

{
stdenv,
lib,
pkgs,
...
}: let
version = "12.20250206";
major = "12";
revision = "20250206";
realname = "OpenFOAM";
in let
pkg = stdenv.mkDerivation {
pname = "openfoam";
inherit version major;
src = pkgs.fetchFromGitHub {
owner = realname;
repo = "${realname}-${major}";
rev = "${revision}";
sha256 = "sha256-MZ29G5+49ZjE2hHC4uRF6PTR7cI5hrdjOn66lMnIgIw=";
};
nativeBuildInputs = with pkgs; [bash m4 flex bison];
buildInputs = with pkgs; [fftw mpi scotch boost cgal zlib];
patches = [
./0001-etc-bashrc-add-placeholder-for-FOAM_INST_DIR.patch
];
postPatch = ''
substituteInPlace etc/bashrc \
--replace 'export SCOTCH_TYPE=ThirdParty' 'export SCOTCH_TYPE=system' \
--replace 'export ZOLTAN_TYPE=ThirdParty' 'export ZOLTAN_TYPE=none'
patchShebangs Allwmake
patchShebangs etc
patchShebangs wmake
patchShebangs applications
patchShebangs bin
'';
configurePhase = ''
export FOAM_INST_DIR=$NIX_BUILD_TOP/source
export WM_PROJECT_DIR=$FOAM_INST_DIR/${realname}-${major}
mkdir $WM_PROJECT_DIR
mv $(find $FOAM_INST_DIR/ -maxdepth 1 -not -path $WM_PROJECT_DIR -not -path $FOAM_INST_DIR/) \
$WM_PROJECT_DIR/
set +e
. $WM_PROJECT_DIR/etc/bashrc
set -e
'';
buildPhase = ''
sh $WM_PROJECT_DIR/Allwmake -j$CORES
wclean all
wmakeLnIncludeAll
'';
installPhase = ''
mkdir -p $out/${realname}-${major}
substituteInPlace $WM_PROJECT_DIR/etc/bashrc \
--replace '# __inst_dir_placeholder__' "export FOAM_INST_DIR=$out"
cp -Ra $WM_PROJECT_DIR/* $out/${realname}-${major}
'';
passthru = {
shellHook = ''
. ${pkg}/${realname}-${major}/etc/bashrc
'';
};
meta = with pkgs.lib; {
homepage = "https://www.openfoam.org/";
description = "OpenFOAM is a free, open source CFD software released and developed by OpenFOAM Foundation";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = [ "wose" ];
broken = pkgs.stdenv.isDarwin;
};
};
in
pkg