Skip to content
cccskills
FreePublished on GitHub

python

Package a Python project for corepkgs. Use when writing or editing python/pkgs/<name>/default.nix — covers buildPythonPackage, pyproject, build-system, dependencies, testPaths, pytestCheckHook, disabledTests, and pythonImportsCheck.

The English summary is being prepared. Showing the original description.

ekala-project/corepkgs94 stars(GitHub 94 + cccskills 0)

Run score Not tested

See how to install

Files included (1)

  • SKILL.md3.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Python Packages

Python packages live in python/pkgs/<name>/default.nix.

Minimal Example

{
  lib,
  buildPythonPackage,
  fetchFromGitHub,
  setuptools,
  pytestCheckHook,
}:

buildPythonPackage (finalAttrs: {
  pname = "example";
  version = "1.0.0";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "example";
    repo = "example";
    tag = "v${finalAttrs.version}";
    hash = "sha256-...";
  };

  build-system = [ setuptools ];

  nativeCheckInputs = [ pytestCheckHook ];
  testPaths = [ "tests" ];

  pythonImportsCheck = [ "example" ];

  meta = {
    description = "Example Python library";
    license = lib.licenses.mit;
  };
})

Essential Attributes

  • pyproject = true; — use pyproject.toml-based build (preferred over legacy format = "setuptools")
  • build-system — list of build backends: setuptools, hatchling, flit-core, poetry-core, maturin, pdm-backend, setuptools-scm
  • dependencies — runtime Python dependencies
  • optional-dependencies — attrset of extras groups
  • disabled = pythonOlder "3.9"; — skip on older interpreters

Testing

testPaths auto-generates passthru.tests.python and a test_src output:

nativeCheckInputs = [ pytestCheckHook ];
testPaths = [ "tests" ];

For suites needing extra files: testPaths = [ "tests" "src/helpers" "README.rst" ];

These attributes are forwarded automatically to the test derivation:

  • disabledTests, disabledTestPaths, enabledTestPaths
  • pytestFlags, pytestFlagsArray, unittestFlagsArray
  • preCheck, postCheck, preInstallCheck, postInstallCheck

Disabling Tests

disabledTests = [
  "test_network_access"     # requires internet
  "test_flaky_timing"       # non-deterministic
];

disabledTestPaths = [
  "tests/integration/"      # needs running service
];

Platform-conditional disabling:

disabledTests = [
  "test_basic"
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
  "test_linux_specific"
];

Manual tests.nix (Fallback)

When testPaths is not suitable (e.g., circular dependencies with pytest):

passthru.tests = {
  pytest = callPackage ./tests.nix { };
};

Smoke Checks

pythonImportsCheck runs automatically during buildPythonPackage — no need to enable doInstallCheck:

pythonImportsCheck = [ "requests" "requests.auth" ];

Removing Unwanted Build Dependencies

When upstream pins a dependency unavailable in corepkgs:

pythonRemoveDeps = [ "some-unavailable-dep" ];

Complete Example

{
  lib,
  stdenv,
  buildPythonPackage,
  fetchFromGitHub,
  pythonOlder,
  setuptools,
  certifi,
  charset-normalizer,
  idna,
  urllib3,
  pysocks,
  pytest-mock,
  pytestCheckHook,
}:

buildPythonPackage (finalAttrs: {
  pname = "requests";
  version = "2.34.2";
  pyproject = true;

  disabled = pythonOlder "3.9";

  src = fetchFromGitHub {
    owner = "psf";
    repo = "requests";
    tag = "v${finalAttrs.version}";
    hash = "sha256-...";
  };

  build-system = [ setuptools ];

  dependencies = [
    certifi
    charset-normalizer
    idna
    urllib3
  ];

  optional-dependencies = {
    socks = [ pysocks ];
  };

  nativeCheckInputs = [
    pytest-mock
    pytestCheckHook
  ] ++ finalAttrs.optional-dependencies.socks;

  disabledTests = [
    "test_redirecting_to_bad_url"       # requires network
  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
    "test_basic_response"               # Fatal Python error on aarch64-darwin
  ];

  testPaths = [ "tests" ];

  pythonImportsCheck = [ "requests" ];

  meta = {
    description = "HTTP library for Python";
    homepage = "https://docs.python-requests.org/";
    license = lib.licenses.asl20;
  };
})

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Review a package expression for best-practices compliance. Use when reviewing PRs or auditing existing packages — checks meta completeness, build-system idioms (cmakeEntries, mesonEntries, pyproject), dependency placement, and packaging conventions.

The English summary is being prepared. Showing the original description.

ekala-project/corepkgs94Updated Oct 26, 2026

cmake

Free

Package a CMake-based project for corepkgs. Use when a source tree has a CMakeLists.txt — covers the minimal derivation, cmakeEntries, cross-compilation, and diagnosing CMake configure failures.

The English summary is being prepared. Showing the original description.

ekala-project/corepkgs94Updated Oct 26, 2026

Fix all broken package builds in the repository. Runs a full build of ci/packages.nix in the background while iterating on failures in the foreground until everything builds.

The English summary is being prepared. Showing the original description.

ekala-project/corepkgs94Updated Oct 26, 2026

go

Free

Package a Go module for corepkgs. Use when writing or editing a buildGoModule derivation — covers vendorHash, ldflags, subPackages, tags, env.CGO_ENABLED, proxyVendor, shell completions, and pinning a Go version.

The English summary is being prepared. Showing the original description.

ekala-project/corepkgs94Updated Oct 26, 2026

meson

Free

Package a Meson/Ninja project for corepkgs. Use when a source tree has a meson.build — covers mesonFlags, auto features, cross-compilation, and diagnosing Meson setup failures.

The English summary is being prepared. Showing the original description.

ekala-project/corepkgs94Updated Oct 26, 2026

Work with multi-version packages under pkgs-many (guile, go, erlang, perl, openssl, ...). Use when adding or changing a package that ships several versions side by side — covers the default.nix/variants.nix/generic.nix three-file pattern, the packageOlder/packageAtLeast version helpers, and mkVariantPassthru.

The English summary is being prepared. Showing the original description.

ekala-project/corepkgs94Updated Oct 26, 2026

See all skills by ekala-project

Report a problem with this skill