diff options
author | Jasper Ras <jras@hostnet.nl> | 2025-04-18 20:58:54 +0200 |
---|---|---|
committer | Jasper Ras <jras@hostnet.nl> | 2025-04-18 20:58:54 +0200 |
commit | ab409a3701bf59dd73dc1e0324376bdac8b6d74f (patch) | |
tree | 17fba0a6811534858300a550c06376b25f9644c6 /Working with Nix shells.md | |
parent | c8c774ad7c0d98def2e83647d4f635ee275b66de (diff) |
vault backup: 2025-04-18 20:58:54
Diffstat (limited to 'Working with Nix shells.md')
-rw-r--r-- | Working with Nix shells.md | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Working with Nix shells.md b/Working with Nix shells.md new file mode 100644 index 0000000..c042edd --- /dev/null +++ b/Working with Nix shells.md @@ -0,0 +1,66 @@ +Basic invocation: `nix-shell -p [ pkgs ... ]` + +# Shebang +``` +#! /usr/bin/env nix-shell +#! nix-shell -i bash -p bash + +do stuff +``` + +Different interpreters can be set with the `-i` option such as python +``` +#! /usr/bin/env nix-shell +#! nix-shell -i python3 -p python3 + +print("hello world") +``` + +The `-I` option can be used to pin nixpkgs +``` +#! /usr/bin/env nix-shell +#! nix-shell -i bash +#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/aed4b19d312525ae7ca9bceb4e1efe3357d0e2eb.tar.gz + +echo hello world +``` +# Shell.nix +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.
\ No newline at end of file |