summaryrefslogtreecommitdiff
path: root/3 resources/nix/Shell.nix.md
blob: 13715c2f1c8b095a2abe35b0a9a739e86bdd6939 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#nix #shell

---
Can be used to set up per dir environments, e.g using direnv to automatically activate them.
## Python
https://nixos.org/manual/nixpkgs/stable/#python

```nix
{ pkgs ? import <nixpkgs> {}}:

pkgs.mkShell {
    packages = [ pkgs.virtualenv ];
}
```

```nix
with import <nixpkgs> {};
let
	my_toolz = python311.pkgs.buildPythonPackage rec { 
		pname = "toolz";
		version = "0.10.0";
		pyproject = true;
		src = fetchPypi {
			inherit pname version;
			hash = "sha256-CP3V73yWSArRHBLUct4hrNMjWZlvaaUlkpm1QP66RWA=";
		};
		nativeBuildInputs = [
			python311.pkgs.setuptools
			python311.pkgs.wheel
		]; # has no tests
		doCheck = false;
		meta = {
			homepage = "https://github.com/pytoolz/toolz/";
			description = "List processing tools and functional utilities";
			# [...]
		};
	};
in python311.withPackages (ps: with ps; [ numpy my_toolz ]) ).env
```

The [[Import]] is required here because imports a nix expression from another source, in this case nixpkgs.
It is not required at line two, because python310Packages itself is already in the local scope.