flakes/python/uv/flake.nix

61 lines
2 KiB
Nix

{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
nix-jetbrains-plugins.url = "github:theCapypara/nix-jetbrains-plugins";
};
outputs = { self, nixpkgs, nixpkgs-unstable, flake-utils, nix-jetbrains-plugins }:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
pkgs-unstable = import nixpkgs-unstable {
inherit system;
config.allowUnfree = true;
};
pluginList = [
"be.ugent.piedcler.dodona"
"com.github.copilot"
"com.google.tools.ij.aiplugin"
"IdeaVIM"
];
mkShell = pkgs.mkShell.override {
stdenv = pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv;
};
in {
devShells.default = pkgs.mkShell {
packages = (with pkgs; [
python311Full
# CUDA
git gitRepo gnupg autoconf curl
procps gnumake util-linux m4 gperf unzip
cudatoolkit linuxPackages.nvidia_x11
libGLU libGL
xorg.libXi xorg.libXmu freeglut
xorg.libXext xorg.libX11 xorg.libXv xorg.libXrandr zlib
ncurses5 stdenv.cc binutils
]) ++ (with pkgs-unstable; [
uv
]) ++ (with nix-jetbrains-plugins.lib."${system}"; [
# Editor of your choice
(buildIdeWithPlugins pkgs-unstable.jetbrains "pycharm-professional" pluginList)
]);
# CUDA
CUDA_PATH = pkgs.cudatoolkit;
# ImportError: libstdc++.so.6: cannot open shared object file: No such file or directory
LD_LIBRARY_PATH = "${pkgs.linuxPackages.nvidia_x11}/lib:${pkgs.ncurses5}/lib:${pkgs.libGL}/lib/:${pkgs.stdenv.cc.cc.lib}/lib/:${pkgs.glibc}/lib";
EXTRA_LDFLAGS = "-L/lib -L${pkgs.linuxPackages.nvidia_x11}/lib";
EXTRA_CCFLAGS = "-I/usr/include";
# Stop uv from downloading Python binaries automatically if needed.
UV_PYTHON_DOWNLOADS = "never";
};
});
}