Merge branch 'main' into docs

This commit is contained in:
Paul Haerle 2024-06-26 19:01:47 +02:00 committed by GitHub
commit a7ebf95ad4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 527 additions and 71 deletions

View File

@ -145,11 +145,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1717893485, "lastModified": 1719285171,
"narHash": "sha256-WMU6ZRZrBgEUDIF0siu2aIyVAXcxfElSwzZtS/mSpN4=", "narHash": "sha256-kOUKtKfYEh8h8goL/P6lKF4Jb0sXnEkFyEganzdTGvo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3bcedce9f4de37570242faf16e1e143583407eab", "rev": "cfb89a95f19bea461fc37228dc4d07b22fe617c2",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -0,0 +1,36 @@
# An example package with dependencies defined via pyproject.toml
{
config,
lib,
dream2nix,
...
}: {
imports = [
dream2nix.modules.dream2nix.WIP-python-pdm
];
deps = {nixpkgs, ...}: {
python = nixpkgs.python3;
};
mkDerivation = {
src = lib.cleanSourceWith {
src = lib.cleanSource ./.;
filter = name: type:
!(builtins.any (x: x) [
(lib.hasSuffix ".nix" name)
(lib.hasPrefix "." (builtins.baseNameOf name))
(lib.hasSuffix "flake.lock" name)
]);
};
};
pdm.lockfile = ./pdm.lock;
pdm.pyproject = ./pyproject.toml;
buildPythonPackage = {
format = lib.mkForce "pyproject";
pythonImportsCheck = [
"mytool"
];
};
}

View File

@ -0,0 +1,112 @@
{
"nodes": {
"dream2nix": {
"inputs": {
"nixpkgs": "nixpkgs",
"purescript-overlay": "purescript-overlay",
"pyproject-nix": "pyproject-nix"
},
"locked": {
"lastModified": 1718044496,
"narHash": "sha256-IBfzTEq2twaEDdBenwl2k60QASIpU18yUAMyifoYkaM=",
"owner": "nix-community",
"repo": "dream2nix",
"rev": "2ab68c8d27a3cd6083e7a2f27d6363577d8532e1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "dream2nix",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1717893485,
"narHash": "sha256-WMU6ZRZrBgEUDIF0siu2aIyVAXcxfElSwzZtS/mSpN4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3bcedce9f4de37570242faf16e1e143583407eab",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"purescript-overlay": {
"inputs": {
"nixpkgs": [
"dream2nix",
"nixpkgs"
],
"slimlock": "slimlock"
},
"locked": {
"lastModified": 1696022621,
"narHash": "sha256-eMjFmsj2G1E0Q5XiibUNgFjTiSz0GxIeSSzzVdoN730=",
"owner": "thomashoneyman",
"repo": "purescript-overlay",
"rev": "047c7933abd6da8aa239904422e22d190ce55ead",
"type": "github"
},
"original": {
"owner": "thomashoneyman",
"repo": "purescript-overlay",
"type": "github"
}
},
"pyproject-nix": {
"flake": false,
"locked": {
"lastModified": 1702448246,
"narHash": "sha256-hFg5s/hoJFv7tDpiGvEvXP0UfFvFEDgTdyHIjDVHu1I=",
"owner": "davhau",
"repo": "pyproject.nix",
"rev": "5a06a2697b228c04dd2f35659b4b659ca74f7aeb",
"type": "github"
},
"original": {
"owner": "davhau",
"ref": "dream2nix",
"repo": "pyproject.nix",
"type": "github"
}
},
"root": {
"inputs": {
"dream2nix": "dream2nix",
"nixpkgs": [
"dream2nix",
"nixpkgs"
]
}
},
"slimlock": {
"inputs": {
"nixpkgs": [
"dream2nix",
"purescript-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1688610262,
"narHash": "sha256-Wg0ViDotFWGWqKIQzyYCgayeH8s4U1OZcTiWTQYdAp4=",
"owner": "thomashoneyman",
"repo": "slimlock",
"rev": "b5c6cdcaf636ebbebd0a1f32520929394493f1a6",
"type": "github"
},
"original": {
"owner": "thomashoneyman",
"repo": "slimlock",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View File

@ -0,0 +1,39 @@
{
description = "My flake with dream2nix packages";
inputs = {
dream2nix.url = "github:nix-community/dream2nix";
nixpkgs.follows = "dream2nix/nixpkgs";
};
outputs = inputs @ {
self,
dream2nix,
nixpkgs,
...
}: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
packages.${system}.default = dream2nix.lib.evalModules {
packageSets.nixpkgs = pkgs;
modules = [
./default.nix
{
paths.projectRoot = ./.;
# can be changed to ".git" or "flake.nix" to get rid of .project-root
paths.projectRootFile = "flake.nix";
paths.package = ./.;
}
];
};
devShells.${system}.default = pkgs.mkShell {
# inherit from the dream2nix generated dev shell
inputsFrom = [self.packages.${system}.default.devShell];
# add extra packages
packages = [
pkgs.hello
];
};
};
}

View File

@ -0,0 +1,144 @@
# This file is @generated by PDM.
# It is not intended for manual editing.
[metadata]
groups = ["default"]
strategy = ["cross_platform", "inherit_metadata"]
lock_version = "4.4.1"
content_hash = "sha256:e68e986bb1a258de4595bc66c55e67dc06f2b3f5a3a3f55da5a4702714797b6b"
[[package]]
name = "certifi"
version = "2024.6.2"
requires_python = ">=3.6"
summary = "Python package for providing Mozilla's CA Bundle."
groups = ["default"]
files = [
{file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"},
{file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"},
]
[[package]]
name = "charset-normalizer"
version = "3.3.2"
requires_python = ">=3.7.0"
summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
groups = ["default"]
files = [
{file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
{file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
{file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
{file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
{file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
{file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
{file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
{file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
{file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
{file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
{file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
{file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
]
[[package]]
name = "idna"
version = "3.7"
requires_python = ">=3.5"
summary = "Internationalized Domain Names in Applications (IDNA)"
groups = ["default"]
files = [
{file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"},
{file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"},
]
[[package]]
name = "requests"
version = "2.32.3"
requires_python = ">=3.8"
summary = "Python HTTP for Humans."
groups = ["default"]
dependencies = [
"certifi>=2017.4.17",
"charset-normalizer<4,>=2",
"idna<4,>=2.5",
"urllib3<3,>=1.21.1",
]
files = [
{file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"},
{file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"},
]
[[package]]
name = "urllib3"
version = "2.2.1"
requires_python = ">=3.8"
summary = "HTTP library with thread-safe connection pooling, file post, and more."
groups = ["default"]
files = [
{file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"},
{file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"},
]

View File

@ -0,0 +1,24 @@
[build-system]
requires = [ "setuptools" ]
build-backend = "setuptools.build_meta"
[project]
name = "mytool"
description = "my tool"
version = "1.0.0"
dependencies = [
"requests",
]
requires-python = ">=3.8"
[project.scripts]
my-tool = "my_tool:main"
[project.optional-dependencies]
extra = [
"simplejson>=3.19.2",
]
[tool.pdm.dev-dependencies]
test = [
"pytest>=8.2.1",
]

View File

@ -32,7 +32,7 @@ in {
buildPythonPackage = { buildPythonPackage = {
format = lib.mkForce "pyproject"; format = lib.mkForce "pyproject";
pythonImportsCheck = [ pythonImportsCheck = [
"my_tool" "mytool"
]; ];
}; };

View File

@ -3,10 +3,10 @@
"sources": { "sources": {
"certifi": { "certifi": {
"is_direct": false, "is_direct": false,
"sha256": "dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1", "sha256": "ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56",
"type": "url", "type": "url",
"url": "https://files.pythonhosted.org/packages/ba/06/a07f096c664aeb9f01624f858c3add0a4e913d6c96257acb4fce61e7de14/certifi-2024.2.2-py3-none-any.whl", "url": "https://files.pythonhosted.org/packages/5b/11/1e78951465b4a225519b8c3ad29769c49e0d8d157a070f681d5b6d64737f/certifi-2024.6.2-py3-none-any.whl",
"version": "2024.2.2" "version": "2024.6.2"
}, },
"charset-normalizer": { "charset-normalizer": {
"is_direct": false, "is_direct": false,
@ -17,8 +17,8 @@
}, },
"click": { "click": {
"is_direct": true, "is_direct": true,
"rev": "f8857cb03268b5b952b88b2acb3e11d9f0f7b6e4", "rev": "923d197b56caa9ffea21edeef5baf1816585b099",
"sha256": "0pcapxavyn8fqxjkwdidl7cdy24cvysyqi9rbhfsfxivp9715bvf", "sha256": "0952vl5cfbb7inc5v5cl232fw776xfc0ygmyj4hzh70l9v0gpk2n",
"type": "git", "type": "git",
"url": "https://github.com/pallets/click.git", "url": "https://github.com/pallets/click.git",
"version": "8.2.0.dev0" "version": "8.2.0.dev0"
@ -32,17 +32,17 @@
}, },
"requests": { "requests": {
"is_direct": false, "is_direct": false,
"sha256": "58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6",
"type": "url", "type": "url",
"url": "https://files.pythonhosted.org/packages/70/8e/0e2d847013cb52cd35b38c009bb167a1a26b2ce6cd6965bf26b47bc0bf44/requests-2.31.0-py3-none-any.whl", "url": "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl",
"version": "2.31.0" "version": "2.32.3"
}, },
"setuptools": { "setuptools": {
"is_direct": false, "is_direct": false,
"sha256": "c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32", "sha256": "54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4",
"type": "url", "type": "url",
"url": "https://files.pythonhosted.org/packages/f7/29/13965af254e3373bceae8fb9a0e6ea0d0e571171b80d6646932131d6439b/setuptools-69.5.1-py3-none-any.whl", "url": "https://files.pythonhosted.org/packages/de/88/70c5767a0e43eb4451c2200f07d042a4bcd7639276003a9c54a68cfcc1f8/setuptools-70.0.0-py3-none-any.whl",
"version": "69.5.1" "version": "70.0.0"
}, },
"urllib3": { "urllib3": {
"is_direct": false, "is_direct": false,

View File

@ -3,7 +3,7 @@ requires = [ "setuptools" ]
build-backend = "setuptools.build_meta" build-backend = "setuptools.build_meta"
[project] [project]
name = "my-tool" name = "mytool"
description = "my tool" description = "my tool"
version = "1.0.0" version = "1.0.0"
dependencies = [ dependencies = [

View File

@ -0,0 +1,5 @@
import requests
def main():
print("Hello World!")

View File

@ -2,11 +2,11 @@
"nodes": { "nodes": {
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1717893485, "lastModified": 1719285171,
"narHash": "sha256-WMU6ZRZrBgEUDIF0siu2aIyVAXcxfElSwzZtS/mSpN4=", "narHash": "sha256-kOUKtKfYEh8h8goL/P6lKF4Jb0sXnEkFyEganzdTGvo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3bcedce9f4de37570242faf16e1e143583407eab", "rev": "cfb89a95f19bea461fc37228dc4d07b22fe617c2",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -81,6 +81,8 @@ in {
runCommand runCommand
stdenvNoCC stdenvNoCC
stdenv stdenv
writeText
unzip
; ;
python = lib.mkDefault config.deps.python3; python = lib.mkDefault config.deps.python3;
}; };
@ -92,7 +94,16 @@ in {
python = lib.mkDefault config.deps.python; python = lib.mkDefault config.deps.python;
}; };
}; };
pdm.sourceSelector = lib.mkDefault libpdm.preferWheelSelector; pdm = {
sourceSelector = lib.mkDefault libpdm.preferWheelSelector;
inherit (config) overrides overrideAll;
inherit (config) name paths;
inherit (config.public) pyEnv;
# make root package always editable
editables = {
${config.name} = config.paths.package;
};
};
buildPythonPackage = { buildPythonPackage = {
format = lib.mkDefault "pyproject"; format = lib.mkDefault "pyproject";
}; };
@ -106,19 +117,41 @@ in {
}; };
public.pyEnv = let public.pyEnv = let
pyEnv' = config.deps.python.withPackages (ps: config.mkDerivation.propagatedBuildInputs); pyEnv' = config.deps.python.withPackages (
ps:
config.mkDerivation.propagatedBuildInputs
# the editableShellHook requires wheel and other build system deps.
++ config.mkDerivation.buildInputs
++ [config.deps.python.pkgs.wheel]
);
in in
pyEnv'.override (old: { pyEnv'.override (old: {
# namespaced packages are triggering a collision error, but this can be # namespaced packages are triggering a collision error, but this can be
# safely ignored. They are still set up correctly and can be imported. # safely ignored. They are still set up correctly and can be imported.
ignoreCollisions = true; ignoreCollisions = true;
}); });
public.shellHook = config.pdm.editablesShellHook;
public.devShell = config.deps.mkShell { public.devShell = config.deps.mkShell {
shellHook = config.public.shellHook;
packages = [ packages = [
config.public.pyEnv config.public.pyEnv
config.deps.pdm config.deps.pdm
]; ];
buildInputs =
[
config.groups.default.packages.tomli.public or config.deps.python.pkgs.tomli
]
++ lib.flatten (
lib.mapAttrsToList
(name: _path: config.groups.default.packages.${name}.evaluated.mkDerivation.buildInputs or [])
config.pdm.editables
);
nativeBuildInputs = lib.flatten (
lib.mapAttrsToList
(name: _path: config.groups.default.packages.${name}.evaluated.mkDerivation.nativeBuildInputs or [])
config.pdm.editables
);
}; };
groups = let groups = let

View File

@ -6,16 +6,23 @@
}: let }: let
l = lib // builtins; l = lib // builtins;
t = l.types; t = l.types;
mkSubmodule = import ../../../lib/internal/mkSubmodule.nix {inherit lib specialArgs;};
in { in {
options.pdm = { options.pdm = mkSubmodule {
lockfile = l.mkOption { imports = [
type = t.path; ../overrides
}; ../python-editables
pyproject = l.mkOption { ];
type = t.path; options = {
}; lockfile = l.mkOption {
type = t.path;
};
pyproject = l.mkOption {
type = t.path;
};
sourceSelector = import ./sourceSelectorOption.nix {inherit lib;}; sourceSelector = import ./sourceSelectorOption.nix {inherit lib;};
};
}; };
options.groups = options.groups =
(import ../WIP-groups/groups-option.nix {inherit config lib specialArgs;}) (import ../WIP-groups/groups-option.nix {inherit config lib specialArgs;})

View File

@ -14,9 +14,6 @@
isRootDrv = drv: cfg.rootDependencies.${drv.name} or false; isRootDrv = drv: cfg.rootDependencies.${drv.name} or false;
isBuildInput = drv: cfg.buildDependencies.${drv.name} or false; isBuildInput = drv: cfg.buildDependencies.${drv.name} or false;
# actually wanted editables (minus the ones set to false)
editables = lib.filterAttrs (_name: path: path != false) config.pip.editables;
writers = import ../../../pkgs/writers { writers = import ../../../pkgs/writers {
inherit lib; inherit lib;
inherit inherit
@ -177,19 +174,14 @@ in {
pip = { pip = {
drvs = drvs; drvs = drvs;
inherit (config) name paths;
inherit (config.public) pyEnv;
# make root package always editable
editables = {
${config.name} = config.paths.package;
};
rootDependencies = rootDependencies =
l.genAttrs (targets.default.${config.name} or []) (_: true); l.genAttrs (targets.default.${config.name} or []) (_: true);
editables =
# make root package always editable
{${config.name} = config.paths.package;};
editablesShellHook = import ./editable.nix {
inherit lib;
inherit (config.deps) unzip writeText;
inherit (config.paths) findRoot;
inherit (config.public) pyEnv;
inherit (cfg) editables;
rootName = config.name;
};
}; };
mkDerivation = { mkDerivation = {
@ -239,18 +231,18 @@ in {
# a dev shell for development # a dev shell for development
public.devShell = config.deps.mkShell { public.devShell = config.deps.mkShell {
packages = [config.public.pyEnv]; packages = [config.public.pyEnv];
shellHook = config.public.shellHook; shellHook = config.pip.editablesShellHook;
buildInputs = buildInputs =
[(config.pip.drvs.tomli.public or config.deps.python.pkgs.tomli)] [(config.drvs.tomli.public or config.deps.python.pkgs.tomli)]
++ lib.flatten ( ++ lib.flatten (
lib.mapAttrsToList lib.mapAttrsToList
(name: _path: config.pip.drvs.${name}.mkDerivation.buildInputs or []) (name: _path: config.drvs.${name}.mkDerivation.buildInputs or [])
editables config.pip.editables
); );
nativeBuildInputs = lib.flatten ( nativeBuildInputs = lib.flatten (
lib.mapAttrsToList lib.mapAttrsToList
(name: _path: config.pip.drvs.${name}.mkDerivation.nativeBuildInputs or []) (name: _path: config.drvs.${name}.mkDerivation.nativeBuildInputs or [])
editables config.pip.editables
); );
}; };
} }

View File

@ -11,6 +11,7 @@ in {
options.pip = mkSubmodule { options.pip = mkSubmodule {
imports = [ imports = [
../overrides ../overrides
../python-editables
]; ];
config.overrideType = { config.overrideType = {
@ -32,15 +33,6 @@ in {
description = "the names of the selected top-level dependencies"; description = "the names of the selected top-level dependencies";
}; };
editables = l.mkOption {
type = t.attrsOf t.str;
};
editablesShellHook = l.mkOption {
type = t.str;
readOnly = true;
};
# user interface # user interface
env = l.mkOption { env = l.mkOption {
type = t.attrsOf t.str; type = t.attrsOf t.str;

View File

@ -0,0 +1,24 @@
{
config,
lib,
dream2nix,
...
}: let
editables = lib.filterAttrs (_name: path: path != false) config.editables;
in {
imports = [
./interface.nix
dream2nix.modules.dream2nix.deps
];
deps = {nixpkgs, ...}: {
inherit (nixpkgs) unzip writeText mkShell;
python = nixpkgs.python3;
};
editablesShellHook = import ./editable.nix {
inherit lib;
inherit (config.deps) unzip writeText;
inherit (config.paths) findRoot;
inherit (config) editables pyEnv;
rootName = config.name;
};
}

View File

@ -1,14 +1,14 @@
import os
import sys
import json
import shutil
import subprocess
import configparser import configparser
import importlib import importlib
import json
import os
import shutil
import subprocess
import sys
from contextlib import redirect_stdout from contextlib import redirect_stdout
from textwrap import dedent
from pathlib import Path from pathlib import Path
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
from textwrap import dedent
import tomli import tomli
@ -173,6 +173,15 @@ def needs_update(args, dream2nix_python_dir):
return old_args != args return old_args != args
def export_environment_vars(python_environment, bin_dir, site_dir, site_packages):
print(
f"""
export PYTHONPATH="{site_dir}:{python_environment / site_packages}:$PYTHONPATH"
export PATH="{bin_dir}:${python_environment}/bin:$PATH"
"""
)
def pretty_print_editables(editables, root_dir, root_name): def pretty_print_editables(editables, root_dir, root_name):
if os.environ.get("D2N_QUIET"): if os.environ.get("D2N_QUIET"):
return return
@ -218,6 +227,7 @@ if __name__ == "__main__":
if dream2nix_python_dir.exists(): if dream2nix_python_dir.exists():
shutil.rmtree(dream2nix_python_dir) shutil.rmtree(dream2nix_python_dir)
else: else:
export_environment_vars(python_environment, bin_dir, site_dir, site_packages)
pretty_print_editables(editables, root_dir, root_name) pretty_print_editables(editables, root_dir, root_name)
exit(0) exit(0)
@ -259,14 +269,8 @@ for index, path in enumerate(sys.path):
""" """
) )
print(
f"""
export PYTHONPATH="{site_dir}:{python_environment / site_packages}:$PYTHONPATH"
export PATH="{bin_dir}:${python_environment}/bin:$PATH"
"""
)
with open(dream2nix_python_dir / "editable-args.json", "w") as f: with open(dream2nix_python_dir / "editable-args.json", "w") as f:
json.dump(args, f, indent=2) json.dump(args, f, indent=2)
export_environment_vars(python_environment, bin_dir, site_dir, site_packages)
pretty_print_editables(editables, root_dir, root_name) pretty_print_editables(editables, root_dir, root_name)

View File

@ -0,0 +1,39 @@
{
lib,
config,
...
}: let
t = lib.types;
in {
options = {
editables = lib.mkOption {
type = t.attrsOf t.str;
};
editablesShellHook = lib.mkOption {
type = t.str;
readOnly = true;
};
editablesDevShell = lib.mkOption {
type = t.package;
readOnly = true;
};
name = lib.mkOption {
type = t.str;
internal = true;
};
paths = lib.mkOption {
type = t.attrsOf t.str;
default = {};
internal = true;
};
pyEnv = lib.mkOption {
type = t.package;
internal = true;
};
};
}

View File

@ -85,6 +85,11 @@ Response format:
""" """
def responseheaders(flow: http.HTTPFlow) -> None:
if "/simple/" not in flow.request.url:
flow.response.stream = True
def response(flow: http.HTTPFlow) -> None: def response(flow: http.HTTPFlow) -> None:
if not "/simple/" in flow.request.url: if not "/simple/" in flow.request.url:
return return