diff --git a/pkgs/tools/package-management/conda/default.nix b/pkgs/tools/package-management/conda/default.nix new file mode 100644 index 000000000000..4589cfcec880 --- /dev/null +++ b/pkgs/tools/package-management/conda/default.nix @@ -0,0 +1,71 @@ +{ lib +, stdenv +, fetchurl +, runCommand +, makeWrapper +, buildFHSUserEnv +, libselinux +, 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.libXrender libselinux ] +# 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.3.31"; + src = fetchurl { + url = "https://repo.continuum.io/miniconda/Miniconda3-${version}-Linux-x86_64.sh"; + sha256 = "1rklq81s9v7xz1q0ha99w2sl6kyc5vhk6b21cza0jr3b8cgz0lam"; + }; + + 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 + ''; + + 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 ]; + }; + } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3d9fcb7ca3fc..925cd63a714a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1681,6 +1681,8 @@ with pkgs; checkbashisms = callPackage ../development/tools/misc/checkbashisms { }; + ckb = libsForQt5.callPackage ../tools/misc/ckb { }; + clamav = callPackage ../tools/security/clamav { }; clex = callPackage ../tools/misc/clex { }; @@ -1703,10 +1705,10 @@ with pkgs; cloud-utils = callPackage ../tools/misc/cloud-utils { }; - ckb = libsForQt5.callPackage ../tools/misc/ckb { }; - compass = callPackage ../development/tools/compass { }; + conda = callPackage ../tools/package-management/conda { }; + convmv = callPackage ../tools/misc/convmv { }; convoy = callPackage ../tools/filesystems/convoy { };