3747daf342
The `profile` parameter in `buildFHSUserEnv` is used to create an /etc/profile file which should be sourced by bash. However, the default runScript is a non-login bash which does not source /etc/profile. Therefore the conda package breaks, as a script which is required for `conda activate`, is not sourced. Also the installationPath parameter is ignored as it is setup in the /etc/profile file.
79 lines
2.5 KiB
Nix
79 lines
2.5 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchurl
|
|
, runCommand
|
|
, makeWrapper
|
|
, buildFHSUserEnv
|
|
, libselinux
|
|
, libarchive
|
|
, libGL
|
|
, xorg
|
|
# Conda installs its packages and environments under this directory
|
|
, installationPath ? "~/.conda"
|
|
# Conda manages most pkgs itself, but expects a few to be on the system.
|
|
, condaDeps ? [ stdenv.cc xorg.libSM xorg.libICE xorg.libX11 xorg.libXau xorg.libXi xorg.libXrender libselinux libGL ]
|
|
# Any extra nixpkgs you'd like available in the FHS env for Conda to use
|
|
, extraPkgs ? [ ]
|
|
}:
|
|
|
|
# How to use this package?
|
|
#
|
|
# First-time setup: this nixpkg downloads the conda installer and provides a FHS
|
|
# env in which it can run. On first use, the user will need to install conda to
|
|
# the installPath using the installer:
|
|
# $ nix-env -iA conda
|
|
# $ conda-shell
|
|
# $ conda-install
|
|
#
|
|
# Under normal usage, simply call `conda-shell` to activate the FHS env,
|
|
# and then use conda commands as normal:
|
|
# $ conda-shell
|
|
# $ conda install spyder
|
|
let
|
|
version = "4.6.14";
|
|
src = fetchurl {
|
|
url = "https://repo.continuum.io/miniconda/Miniconda3-${version}-Linux-x86_64.sh";
|
|
sha256 = "1gn43z1y5zw4yv93q1qajwbmmqs83wx5ls5x4i4llaciba4j6sqd";
|
|
};
|
|
|
|
conda = runCommand "conda-install" { buildInputs = [ makeWrapper ]; }
|
|
''
|
|
mkdir -p $out/bin
|
|
cp ${src} $out/bin/miniconda-installer.sh
|
|
chmod +x $out/bin/miniconda-installer.sh
|
|
|
|
makeWrapper \
|
|
$out/bin/miniconda-installer.sh \
|
|
$out/bin/conda-install \
|
|
--add-flags "-p ${installationPath}" \
|
|
--add-flags "-b"
|
|
'';
|
|
in
|
|
buildFHSUserEnv {
|
|
name = "conda-shell";
|
|
targetPkgs = pkgs: (builtins.concatLists [ [ conda ] condaDeps extraPkgs]);
|
|
profile = ''
|
|
# Add conda to PATH
|
|
export PATH=${installationPath}/bin:$PATH
|
|
# Paths for gcc if compiling some C sources with pip
|
|
export NIX_CFLAGS_COMPILE="-I${installationPath}/include"
|
|
export NIX_CFLAGS_LINK="-L${installationPath}lib"
|
|
# Some other required environment variables
|
|
export FONTCONFIG_FILE=/etc/fonts/fonts.conf
|
|
export QTCOMPOSE=${xorg.libX11}/share/X11/locale
|
|
export LIBARCHIVE=${libarchive.lib}/lib/libarchive.so
|
|
# Allows `conda activate` to work properly
|
|
source ${installationPath}/etc/profile.d/conda.sh
|
|
'';
|
|
|
|
runScript = "bash -l";
|
|
|
|
meta = {
|
|
description = "Conda is a package manager for Python";
|
|
homepage = "https://conda.io/";
|
|
platforms = lib.platforms.linux;
|
|
license = lib.licenses.bsd3;
|
|
maintainers = with lib.maintainers; [ jluttine bhipple ];
|
|
};
|
|
}
|