summaryrefslogtreecommitdiff
path: root/cuda/nix-python-devenv/README.md
blob: df1ef33bebaa93d36bf93fb05ec0f08b6bd2423f (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
43
44
45
46
47
48
49
50
51
# Nix Python Devenv

A Python development environment template using [devenv](https://devenv.sh) with working C bindings,
managed by [uv](https://docs.astral.sh/uv/) package manager.

A version of this repo with CUDA is available on the
[cuda branch](https://github.com/clementpoiret/nix-python-devenv/tree/cuda).

## Features

- CUDA toolkit and CUDNN support (see the `cuda` branch)
- Python 3.x environment
- Fast package management with uv
- Automatic environment activation with direnv
- Example script using numpy

## Installation

1. Install [Nix](https://nixos.org/download/):
   ```bash
   sh <(curl -L https://nixos.org/nix/install) --daemon
   ```

2. Install [devenv](https://devenv.sh/)
   ```bash
   nix-env -iA devenv -f https://github.com/NixOS/nixpkgs/tarball/nixpkgs-unstable
   ```

3. Install [direnv](https://direnv.net/) (optional but recommended)

4. Clone and setup:
   ```bash
   git clone --single-branch --branch cuda git@github.com:clementpoiret/nix-python-devenv.git

   # Allow direnv to manage the environment
   direnv allow
   ```

## Usage

The environment automatically:
- Activates the Python virtual environment
- Sets up LD_LIBRARY_PATH
- Provides the `hello` command to test C Bindings

Run the sample script:
```bash
hello
```

This will display the output of numpy functions.