{ pkgs ? import (if builtins.elem builtins.currentSystem ["x86_64-darwin" "aarch64-darwin"] then ./pinned-25.05.darwin.nix else ./pinned-25.05.nix) {} }: rec { inherit pkgs; ghc966 = pkgs.haskell.compiler.ghc966; cabal_install = pkgs.haskell.lib.compose.justStaticExecutables pkgs.haskell.packages.ghc966.cabal-install; graphviz_dev = pkgs.graphviz.overrideAttrs (finalAttrs: previousAttrs: { version = "11.0.0~dev"; src = pkgs.fetchFromGitLab { owner = "graphviz"; repo = "graphviz"; rev = "f3ec849249ef9cb824feb7f97449d7159e1dcb4e"; # head as of 2024-03-25, see gargantext#329 hash = "sha256-s86IqWz6zeKbcRqpV3cVQBVviHbhUSX1U8GVuJBfjC4="; }; }); graphviz = graphviz_dev.overrideAttrs (finalAttrs: previousAttrs: { # Increase the YY_BUF_SIZE, see https://gitlab.iscpif.fr/gargantext/haskell-gargantext/issues/290#note_9015 patches = [ (pkgs.fetchpatch { url = "https://gist.githubusercontent.com/adinapoli/e93ca7b1d714d27f4af537716b03e3bb/raw/b9cc297c3465878da2d18ee92a3f9b8273923493/graphviz-yy-buf-size.patch"; sha256 = "sha256-8Q3tf37iYaPV50P+Vf/n263ordECiu5eKwONCy3ynV8="; }) ]; }); igraph_0_10_4 = pkgs.igraph.overrideAttrs (finalAttrs: previousAttrs: { version = "0.10.4"; nativeBuildInputs = previousAttrs.nativeBuildInputs; src = pkgs.fetchFromGitHub { owner = "igraph"; repo = "igraph"; rev = "0.10.4"; hash = "sha256-LsTOxUktGZcp46Ec9QH3+9C+VADMYTZZCjKF1gp36xk="; }; postPatch = '' echo "0.10.4" > IGRAPH_VERSION ''; outputs = [ "dev" "out" "doc" ]; buildInputs = [ pkgs.arpack pkgs.blas pkgs.glpk pkgs.gmp pkgs.lapack pkgs.libxml2 pkgs.nanomsg pkgs.plfit pkgs.llvmPackages.openmp ]; cmakeFlags = [ "-DIGRAPH_USE_INTERNAL_BLAS=OFF" "-DIGRAPH_USE_INTERNAL_LAPACK=OFF" "-DIGRAPH_USE_INTERNAL_ARPACK=OFF" "-DIGRAPH_USE_INTERNAL_GLPK=OFF" "-DIGRAPH_USE_INTERNAL_GMP=OFF" "-DIGRAPH_USE_INTERNAL_PLFIT=OFF" "-DIGRAPH_GLPK_SUPPORT=ON" "-DIGRAPH_GRAPHML_SUPPORT=OFF" "-DIGRAPH_OPENMP_SUPPORT=ON" "-DIGRAPH_ENABLE_LTO=AUTO" "-DIGRAPH_ENABLE_TLS=ON" "-DBUILD_SHARED_LIBS=ON" "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}" "-DCMAKE_INSTALL_LIBDIR=${placeholder "out"}/lib" "-DCMAKE_INSTALL_DATADIR=${placeholder "out"}/share" ]; doCheck = false; postInstall = '' mkdir -p "$out/share" cp -r doc "$out/share" ''; postFixup = previousAttrs.postFixup + '' echo "Copying files where they belong .." CUR_DIR=$PWD cd "$dev/include/igraph" && cp *.h ../ cd $CUR_DIR ''; }); hsBuildInputs = [ ghc966 cabal_install pkgs.haskellPackages.alex pkgs.haskellPackages.happy pkgs.haskellPackages.pretty-show ]; nonhsBuildInputs = with pkgs; [ bzip2 czmq docker-compose git gmp gsl #haskell-language-server hlint libffi lapack xz pcre pkg-config postgresql xz zlib blas gfortran expat icu graphviz gcc13 igraph_0_10_4 libpqxx libsodium nanomsg zeromq curl ] ++ ( lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Accelerate ]); libPaths = pkgs.lib.makeLibraryPath nonhsBuildInputs; shellHook = '' export LD_LIBRARY_PATH="${pkgs.gfortran.cc.lib}:${libPaths}:$LD_LIBRARY_PATH" export LIBRARY_PATH="${pkgs.gfortran.cc.lib}:${libPaths}" export PATH="${pkgs.gccStdenv}/bin:$PATH" export NIX_CC="${pkgs.gccStdenv}" export CC="${pkgs.gccStdenv}/bin/gcc" ''; shell = pkgs.mkShell.override { stdenv = pkgs.gccStdenv; } { name = "gargantext-shell"; buildInputs = hsBuildInputs ++ nonhsBuildInputs; inherit shellHook; }; }