Skip to content

Instantly share code, notes, and snippets.

@tastycode
Created May 20, 2024 18:03
Show Gist options
  • Save tastycode/acf89a82692c1bdea622dbc300224995 to your computer and use it in GitHub Desktop.
Save tastycode/acf89a82692c1bdea622dbc300224995 to your computer and use it in GitHub Desktop.
{ pkgs, lib, ... }:
let
filteredPackages = ["pytest-httpserver" "werkzeug"];
in {
packages = with pkgs; [
git
zlib
stdenv.cc.cc.lib
];
languages.python = {
enable = true;
package = pkgs.python311.override {
packageOverrides = self: super: {
buildPythonPackage = super.buildPythonPackage.overrideAttrs (oldAttrs: {
propagatedBuildInputs = (oldAttrs.propagatedBuildInputs or []).filter (pkg: !(lib.elem pkg.pname filteredPackages));
doCheck = false; # Disable running tests globally
installCheckPhase = ":";
pytestCheckPhase = null;
});
pytest-httpserver = super.pytest-httpserver.overrideAttrs (oldAttrs: {
doInstallCheck = false;
doCheck = false;
src = null; # If you decide to modify the source or remove test directories
});
responses = super.responses.overrideAttrs (oldAttrs: rec {
propagatedBuildInputs = oldAttrs.propagatedBuildInputs
.filter (pkg: !(lib.elem pkg.pname filteredPackages));
});
};
};
};
# languages.python = {
# enable = true;
# package = let
# filteredPackages = ["pytest-httpserver" "werkzeug"];
# in pkgs.python311.override {
# packageOverrides = self: super: {
# pytest-httpserver = super.pytest-httpserver.override {
# doCheck = false;
# };
# buildPythonPackage = oldAttrs: super.buildPythonPackage ((pkgs.lib.debug.traceVal oldAttrs).overrideAttrs (oa: {
# doCheck = false;
# propagatedBuildInputs = (pkgs.lib.debug.traceVal oa).propagatedBuildInputs
# .filter (pkg: !(lib.elem pkg.pname filteredPackages));
# buildInputs = oa.buildInputs
# .filter (pkg: !(lib.elem pkg.pname filteredPackages));
# }));
# };
# };
# };
env.LD_LIBRARY_PATH = let
pyPackages = import pkgs;
# pkgs.python311Packages.override {
# packageOverrides = self: super: {
# buildPythonPackage = super.buildPythonPackage.overrideAttrs (oldAttrs: {
# propagatedBuildInputs = (oldAttrs.propagatedBuildInputs or []).filter (pkg: !(lib.elem pkg.pname filteredPackages));
# doCheck = false; # Disable running tests globally
# installCheckPhase = ":";
# pytestCheckPhase = null;
# });
#
# };
# };
in lib.mkIf pkgs.stdenv.isLinux (
lib.makeLibraryPath (with pkgs; [
gcc-unwrapped.lib
linuxPackages_latest.nvidia_x11
zlib
cmake
cudaPackages.cudatoolkit
cudaPackages.cudnn
cudaPackages.libcublas
cudaPackages.libcurand
cudaPackages.libcufft
cudaPackages.libcusparse
cudaPackages.cuda_nvtx
cudaPackages.cuda_cupti
cudaPackages.cuda_nvrtc
cudaPackages.nccl
] ++ (with pkgs.python311Packages; [
vllm
]))
);
env.CUDA_HOME = "${pkgs.cudaPackages.cudatoolkit}";
env.CUDA_PATH = "${pkgs.cudaPackages.cudatoolkit}";
}
{
inputs = {
nixpkgs.url = "github:cachix/devenv-nixpkgs/rolling";
systems.url = "github:nix-systems/default";
devenv.url = "github:cachix/devenv";
devenv.inputs.nixpkgs.follows = "nixpkgs";
};
nixConfig = {
extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=";
extra-substituters = "https://devenv.cachix.org";
};
outputs = { self, nixpkgs, devenv, systems, ... } @ inputs:
let
lib = nixpkgs.lib;
forEachSystem = nixpkgs.lib.genAttrs (import systems);
in {
devShells = forEachSystem (system:
let
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
config.allowBroken = true;
packageOverrides = pkgs: {
python311Packages = pkgs.python311Packages.override {
overrides = self: super: {
buildPythonPackage = super.buildPythonPackage.overrideAttrs (oldAttrs: rec {
propagatedBuildInputs = oldAttrs.propagatedBuildInputs
.filter (pkg: !(lib.elem pkg.pname ["pytest-httpserver"]));
doInstallCheck = false;
doCheck = false;
});
responses = super.responses.overrideAttrs (oldAttrs: rec {
propagatedBuildInputs = oldAttrs.propagatedBuildInputs
.filter (pkg: !(lib.elem pkg.pname ["pytest-httpserver"]));
});
elastic-transport = super.responses.overrideAttrs (oldAttrs: rec {
propagatedBuildInputs = oldAttrs.propagatedBuildInputs
.filter (pkg: !(lib.elem pkg.pname ["pytest-httpserver"]));
});
# pytest-httpserver = throw "Package pytest-httpserver is disabled globally";
pytest-httpserver = super.pytest-httpserver.overrideAttrs (oldAttrs: {
doInstallCheck = false;
doCheck = false;
src = null; # If you decide to modify the source or remove test directories
});
werkzeug = throw "Package werkzeug is disabled globally";
};
};
};
};
in {
default = devenv.lib.mkShell {
inherit inputs pkgs;
modules = [
( import ./devenv.nix { inherit pkgs lib; })
];
};
});
};
}
building '/nix/store/x2yn0v154liz5bs7gd2h7b7pwmynyxp6-python3.11-aioresponses-0.7.6.drv'...
copying path '/nix/store/av07i0w816zrjbqffv6nysdr9dcnx0z0-qtbase-6.6.3' from 'https://cache.nixos.org'...
error: builder for '/nix/store/kqzp6znrvfqaly97af8b1x2jhx33cncr-python3.11-pytest-httpserver-1.0.10.drv' failed with exit code 1;
last 25 log lines:
> if e.errno == errno.EADDRINUSE:
> print(
> f"Port {port} is in use by another program. Either identify and"
> " stop that program, or start the server with a different"
> " port.",
> file=sys.stderr,
> )
>
> if sys.platform == "darwin" and port == 5000:
> print(
> "On macOS, try disabling the 'AirPlay Receiver' service"
> " from System Preferences -> General -> AirDrop & Handoff.",
> file=sys.stderr,
> )
>
> > sys.exit(1)
> E SystemExit: 1
>
> /nix/store/78z7q9pbyqmg7xsn0kpy8hzr281yhfy0-python3.11-werkzeug-3.0.1/lib/python3.11/site-packages/werkzeug/serving.py:769: SystemExit
> ---------------------------- Captured stderr setup -----------------------------
> Cannot assign requested address
> =========================== short test summary info ============================
> ERROR tests/test_ip_protocols.py::test_ipv6 - SystemExit: 1
> ======= 86 passed, 8 skipped, 1 deselected, 1 xfailed, 1 error in 12.06s =======
> /nix/store/v5lsd029lz5lfhamivbgqyp3zdv94ah2-stdenv-linux/setup: line 1578: pop_var_context: head of shell_variables not a function context
For full logs, run 'nix log /nix/store/kqzp6znrvfqaly97af8b1x2jhx33cncr-python3.11-pytest-httpserver-1.0.10.drv'.
error: 1 dependencies of derivation '/nix/store/ycmz89nlabkcqj2y7h2p16zaqa5fylxf-python3.11-elastic-transport-8.12.0.drv' failed to build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment