gray/default.nix

73 lines
1.8 KiB
Nix
Raw Normal View History

2021-12-15 02:30:49 +01:00
{ static ? false }:
let
# Pinned Nixpkgs for reproducibility
nixpkgs = builtins.fetchTarball
2021-12-15 02:30:49 +01:00
{ name = "nixpkgs-21.05-ee90403e147";
url = "https://github.com/nixos/nixpkgs/archive/ee90403e147.tar.gz";
sha256 = "1mk3s4ncfa8z8mr6vrgjh74s8dci12yam7plpc1bqgz12wld73ax";
};
2021-12-15 02:30:49 +01:00
2021-12-15 02:30:58 +01:00
# Needed for HTML manual
katex = builtins.fetchTarball {
url = "https://github.com/KaTeX/KaTeX/releases/download/v0.15.1/katex.tar.gz";
sha256 = "007nv11r0z9fz593iwzn55nc0p0wj5lpgf0k2brhs1ynmikq9gjr";
};
2021-12-15 02:30:49 +01:00
# Exclude this file and build artifacts
source = builtins.filterSource
(path: type:
!builtins.elem path [ "configure.mk" "default.nix" "result" ]
2021-12-15 02:30:49 +01:00
&& baseNameOf path != "build") ./.;
inherit (import nixpkgs {}) lib pkgs;
2021-12-15 02:30:49 +01:00
in
pkgs.stdenv.mkDerivation rec {
pname = "gray";
version = "0.1";
src = source;
2021-12-15 02:30:58 +01:00
nativeBuildInputs = with pkgs; [
# fortran
gfortran
# debugging
makefile2graph graphviz
# documentation
2021-12-15 02:31:17 +01:00
help2man pandoc
haskellPackages.pandoc-crossref
2021-12-15 02:30:58 +01:00
(texlive.combine {
inherit (texlive) scheme-small xetex fontspec;
})
# save nixpkgs tarball from gc
nixpkgs
2021-12-15 02:30:58 +01:00
];
2021-12-15 02:31:19 +01:00
buildInputs = lib.optional static pkgs.glibc.static;
2021-12-15 02:30:58 +01:00
# fonts needed for the PDF manual
FONTCONFIG_FILE = pkgs.makeFontsConf {
fontDirectories = with pkgs; [ fira-mono libertinus ];
};
2021-12-15 02:31:19 +01:00
enableParallelBuilding = true;
2021-12-15 02:30:49 +01:00
hardeningDisable = [ "format" ];
configureFlags = [
(lib.enableFeature static "static")
2021-12-15 02:30:58 +01:00
"--with-katex=${katex}"
2021-12-15 02:30:49 +01:00
"GIT_REV=${version}"
"GIT_DIRTY="
];
meta = {
homepage = "https://doi.org/10.13182/FST07-A1494";
description = "A quasi-optical beam-tracing code for EC waves in tokamaks";
platforms = lib.platforms.unix;
# license?
};
}