/ flake.nix
flake.nix
 1  {
 2    description = "dev shell with uv and cuda out of the box";
 3  
 4    inputs = {
 5      nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
 6      nix-gl-host.url = "github:numtide/nix-gl-host";
 7    };
 8  
 9    outputs =
10      {
11        self,
12        nixpkgs,
13        nix-gl-host,
14      }:
15      let
16        pkgs = import nixpkgs {
17          system = "x86_64-linux";
18          config.allowUnfree = true;
19          config.cudaSupport = true;
20        };
21      in
22      {
23        devShells.x86_64-linux.default =
24          with pkgs;
25          mkShell rec {
26            packages = [
27              cmake
28              ninja
29              cudaPackages.cudatoolkit
30              cudaPackages.cuda_cudart
31              cudaPackages.cuda_cupti
32              cudaPackages.cuda_nvrtc
33              cudaPackages.cuda_nvtx
34              cudaPackages.cudnn
35              cudaPackages.libcublas
36              cudaPackages.libcufft
37              cudaPackages.libcurand
38              cudaPackages.libcusolver
39              cudaPackages.libcusparse
40              cudaPackages.libnvjitlink
41              cudaPackages.nccl
42              nix-gl-host.defaultPackage.x86_64-linux
43              uv
44              zlib
45              libGL
46              glib
47              (python3.withPackages (p: [
48                # p.opencv-python
49              ]))
50            ];
51  
52            shellHook = ''
53              # if [ ! -f pyproject.toml ]; then
54              #   uv sync
55              #   . .venv/bin/activate.fish
56              # fi
57              export LD_LIBRARY_PATH=$(nixglhost -p):$LD_LIBRARY_PATH
58              export LD_LIBRARY_PATH="${lib.makeLibraryPath packages}:$LD_LIBRARY_PATH"
59              export LD_LIBRARY_PATH="${stdenv.cc.cc.lib}/lib:$LD_LIBRARY_PATH"
60            '';
61          };
62      };
63  }