From b356074430ad126f67b48baeb986ca37a0552993 Mon Sep 17 00:00:00 2001 From: L-Nafaryus Date: Tue, 19 Dec 2023 22:02:15 +0500 Subject: [PATCH] migration: packages: openfoam --- devShells/default.nix | 4 ++ devShells/openfoam.nix | 11 +++++ packages/default.nix | 4 ++ packages/openfoam/default.nix | 76 +++++++++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 devShells/openfoam.nix create mode 100644 packages/openfoam/default.nix diff --git a/devShells/default.nix b/devShells/default.nix index 95d9645..e0759a3 100644 --- a/devShells/default.nix +++ b/devShells/default.nix @@ -1,3 +1,5 @@ +# self.devShells.${system} +# { self, nixpkgs, ... }: let forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" ]; @@ -10,4 +12,6 @@ in forAllSystems(system: let in { netgen = import ./netgen.nix { inherit pkgs bpkgs; }; + + openfoam = import ./openfoam.nix { inherit pkgs bpkgs; }; }) diff --git a/devShells/openfoam.nix b/devShells/openfoam.nix new file mode 100644 index 0000000..f18fe4e --- /dev/null +++ b/devShells/openfoam.nix @@ -0,0 +1,11 @@ +{ pkgs, bpkgs, ... }: +pkgs.mkShellNoCC { + packages = with pkgs; [ + bpkgs.openfoam + mpi + ]; + + shellHook = '' + . ${bpkgs.openfoam}/OpenFOAM-${bpkgs.openfoam.major}/etc/bashrc + ''; +} diff --git a/packages/default.nix b/packages/default.nix index ac80c49..e7cd0af 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -1,3 +1,5 @@ +# self.packages.${system} +# { self, nixpkgs, ... }: let forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" ]; @@ -10,4 +12,6 @@ in forAllSystems(system: let pkgs = nixpkgsFor.${system}; in { netgen = pkgs.callPackage ./netgen {}; dearpygui = pkgs.callPackage ./dearpygui {}; + + openfoam = pkgs.callPackage ./openfoam {}; }) diff --git a/packages/openfoam/default.nix b/packages/openfoam/default.nix new file mode 100644 index 0000000..90efb50 --- /dev/null +++ b/packages/openfoam/default.nix @@ -0,0 +1,76 @@ +{ + stdenv, lib, pkgs, + version ? "11.20230907", + sha256 ? "sha256-oT9NkQR/KGQYPX5gNuebMZFz+hxG5vp4fownQMkX5r0=", ... +}: +let + version' = lib.strings.splitString "." version; + major = lib.elemAt version' 0; + revision = lib.elemAt version' 1; + realname = "OpenFOAM"; + +in stdenv.mkDerivation { + pname = "openfoam"; + inherit version major; + + src = pkgs.fetchFromGitHub { + owner = realname; + repo = "${realname}-${major}"; + rev = "${revision}"; + sha256 = sha256; + }; + + nativeBuildInputs = with pkgs; [ bash m4 flex bison ]; + + buildInputs = with pkgs; [ fftw mpi scotch boost cgal zlib ]; + + postPatch = '' + substituteInPlace etc/bashrc \ + --replace '[ "$BASH" -o "$ZSH_NAME" ] && \' '#' \ + --replace 'export FOAM_INST_DIR=$(cd $(dirname ${"$"}{BASH_SOURCE:-$0})/../.. && pwd -P) || \' '#' \ + --replace 'export FOAM_INST_DIR=$HOME/$WM_PROJECT' '# __inst_dir_placeholder__' + + 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} + ''; + + 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 = []; + broken = pkgs.stdenv.isDarwin; + }; +}