| pkgs/openfoam | ||
| sims | ||
| .envrc | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
| shell.nix | ||
OpenFOAM nix shell environment
Usage
With direnv installed and active (eval $"(direnv hook bash)") the
environment loads itself when you enter this directory or any below it.
Simulations can be placed inside the sims directory. The sims
directory is ignored by git. If you change branches your simulations
should stay untouched. However it may lead to confusion if you have
simulation results from one OpenFOAM version and then change to another.
Clone this repository again for each OpenFOAM version you want to use to
not confuse yourself ;-)
Requirements
nix with flakes
On nixos flakes can be enabled by adding the following to your system
configuration:
nix.settings.experimental-features = [ "nix-command" "flakes" ];
On other systems add the following to your /etc/nix/nix.conf:
experimental-features = nix-command flakes
direnv
After installing direnv it has to be loaded. Maybe add the hook to your
shellrc:
echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
See https://direnv.net/docs/hook.html for more information.
You'll need to allow the current directory:
direnv allow
Update nixpkgs
From within this directory run
nix flake update
to pin to the latest nixpkgs version.
Update OpenFOAM version
The OpenFOAM derivation is defined in pkgs/openfoam/default.nix. Edit the
variables in the let block at the top of the file and replace the
"sha256-..." string with an empty string. The first build will then fail
and give you the correct sha hash. Replace the empty string with it.
Add different OpenFOAM release
There are branches for each OpenFOAM release. The main branch has always the latest version. If you want to add a new one:
- create a new branch to hold the current version (e.g. openfoam-12)
- update the repository path in
pkgs/openfoam/default.nixby editing the parameters in theletblock. - adjust the
patches,postPatch,configurePhase,buildPhaseandinstallPhaseif required
Reevaluating envrc will build the new OpenFOAM (this may take a while (expect
up to 1h).