Installing/compiling on NixOS
Nix is a declarative package manager.
Elmer variants included
default
Barebones Elmer with OpenMP and MPI support.
gui
Elmer with GUI.
full
A derivation with more parallel computing features such as HYPRE.
All derivations have Elmer/Ice.
Specifying no variant implies the default derivation.
Nix overlay
The Nix flake exposes an overlay which contains the three Elmer variants under the following package names: elmer, elmer-gui, elmer-full.
Binary cache
Add the following to your Nix config to use the Elmer binary cache.
Building of Elmer with Nix
Compiling from upstream
nix build github:ElmerCSC/elmerfem for the default variant, or nix build github:ElmerCSC/elmerfem#<variant>.
After building, the binaries are accessible under result/bin.
Compiling in a local repository
In the local Elmer repository run nix build or nix build .#<variant>.
Verbose output
By default nix build only shows one line of the build output at once. To enable more verbose output, add the -L flag to the end of the build command.
For developers
Running tests
All tests
nix flake check -L
Specific variant
nix eval --raw .#checks.x86_64-linux.<variant>
Updating nixpkgs
Edit the nixpkgs URL in
flake.nixFind the line
nixpkgs.url = "github:NixOS/nixpkgs/nixos-XX.YY";.Change
XX.YYto the new nixpkgs release.
Run
nix flake updatein the root of the repository.Check that everything works by running
nix flake check -L.
Adding new dependencies or build flags
Find the variant you want to patch.
The derivation declarations are in the form
<variant> = {doCheck ? false}: { ....
Add compile time dependencies to
nativeBuildInputs.Add runtime dependencies to
buildInputs.Add CMake flags to
cmakeFlags.