update nixpkgs:

- downgrade mitmproxy to avoid breakage
- add test for pip lock script
- fix bug in flake compat implementation (https://github.com/nix-community/flake-compat/pull/4#issuecomment-1950301370)
- small fix in docs for lock and eval-cache
- fix lock refresh script: don't swallow errors
This commit is contained in:
DavHau 2024-02-24 19:25:23 +07:00 committed by mergify[bot]
parent 3308e05808
commit 887022b8c1
14 changed files with 202 additions and 40 deletions

View File

@ -200,7 +200,13 @@
rootOverrides =
mapAttrs'
(input: lockKey: nameValuePair lockKey (impureOverrides.${input} or null))
(input: lockKey': let
lockKey =
if builtins.isList lockKey'
then builtins.concatStringsSep "/" lockKey'
else lockKey';
in
nameValuePair lockKey (impureOverrides.${input} or null))
lockFile.nodes.${lockFile.root}.inputs;
allNodes =

View File

@ -71,6 +71,39 @@
"type": "github"
}
},
"mdbook-nixdoc": {
"inputs": {
"flake-parts": [
"nix-unit",
"flake-parts"
],
"nix-github-actions": [
"nix-unit",
"nix-github-actions"
],
"nixpkgs": [
"nix-unit",
"nixpkgs"
],
"treefmt-nix": [
"nix-unit",
"treefmt-nix"
]
},
"locked": {
"lastModified": 1708342507,
"narHash": "sha256-KoaAog/peCdkrtapUPq7F9aneJLXZMwo6CCcQ3+OtOA=",
"owner": "adisbladis",
"repo": "mdbook-nixdoc",
"rev": "ce2d327032fb3d6f20144a54e7dc1195c108a1b1",
"type": "github"
},
"original": {
"owner": "adisbladis",
"repo": "mdbook-nixdoc",
"type": "github"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
@ -97,16 +130,19 @@
"flake-parts": [
"flake-parts"
],
"mdbook-nixdoc": "mdbook-nixdoc",
"nix-github-actions": "nix-github-actions",
"nixpkgs": "nixpkgs",
"nixpkgs": [
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1701194455,
"narHash": "sha256-TlCq5DnIlfMFS+b/kqi0vR/8gRgVpqisOr+gjpo1VPc=",
"lastModified": 1708394818,
"narHash": "sha256-75YUg5yCnWVYrrrevYpa0r8axH5c0Uub2n8tQCBAPT4=",
"owner": "nix-community",
"repo": "nix-unit",
"rev": "2a061b6981c12b1a995740799a4465c3124f60ac",
"rev": "1fda41fe253ec495a2884f50e1b2ab836a7a94b4",
"type": "github"
},
"original": {
@ -117,32 +153,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1701045352,
"narHash": "sha256-iWsDbWzBP4gotkRfg/lH2A3O9wFoJc+yVO8CDuHLRe8=",
"lastModified": 1708751719,
"narHash": "sha256-0uWOKSpXJXmXswOvDM5Vk3blB74apFB6rNGWV5IjoN0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5171694860f185961daff3b1b413dabcab421300",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1696604326,
"narHash": "sha256-YXUNI0kLEcI5g8lqGMb0nh67fY9f2YoJsILafh6zlMo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "87828a0e03d1418e848d3dd3f3014a632e4a4f64",
"rev": "f63ce824cd2f036216eb5f637dfef31e1a03ee89",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"ref": "nixpkgs-unstable",
"type": "indirect"
}
},
@ -173,7 +193,7 @@
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"nix-unit": "nix-unit",
"nixpkgs": "nixpkgs_2",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks"
}
},

View File

@ -7,7 +7,7 @@
};
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
nixpkgs.url = "nixpkgs/nixpkgs-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
@ -19,7 +19,7 @@
pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs";
nix-unit.url = "github:nix-community/nix-unit";
# nix-unit.inputs.nixpkgs.follows = "nixpkgs";
nix-unit.inputs.nixpkgs.follows = "nixpkgs";
nix-unit.inputs.flake-parts.follows = "flake-parts";
devshell = {

View File

@ -61,7 +61,7 @@ in {
dream2nix.modules.dream2nix.nixpkgs-overrides
];
nixpkgs-overrides = {
exclude = ["propagatedBuildInputs"];
exclude = ["propagatedBuildInputs" "dependencies"];
};
};
lazy-object-proxy = {

View File

@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1702272962,
"narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=",
"lastModified": 1708751719,
"narHash": "sha256-0uWOKSpXJXmXswOvDM5Vk3blB74apFB6rNGWV5IjoN0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d",
"rev": "f63ce824cd2f036216eb5f637dfef31e1a03ee89",
"type": "github"
},
"original": {

View File

@ -49,7 +49,7 @@ in {
refresh = l.mkOption {
type = t.path;
description = "Script to refresh the cache file of this package";
description = "Script to refresh the eval cache file";
readOnly = true;
};
};

View File

@ -47,7 +47,7 @@
refresh_scripts = json.loads('${l.toJSON cfg.fields}') # noqa: E501
repo_path = Path(subprocess.run(
['${config.paths.findRoot}'], # noqa: E501
check=True, text=True, capture_output=True)
check=True, text=True, stdout=subprocess.PIPE)
.stdout.strip())
lock_path_rel = Path('${config.paths.package}/${config.paths.lockFile}') # noqa: E501
lock_path = repo_path / lock_path_rel.relative_to(lock_path_rel.anchor)
@ -200,7 +200,7 @@ in {
config = {
lock.refresh = config.deps.writeScriptBin "refresh" ''
#!/usr/bin/env bash
#!${config.deps.bash}/bin/bash
set -Eeuo pipefail
### Executing auto generated refresh script
@ -221,7 +221,7 @@ in {
deps = {nixpkgs, ...}:
l.mapAttrs (_: l.mkDefault) {
inherit (nixpkgs) nix writeScriptBin;
inherit (nixpkgs) bash nix writeScriptBin;
inherit (nixpkgs.writers) writePython3 writePython3Bin;
};
};

View File

@ -79,7 +79,7 @@ in {
refresh = l.mkOption {
type = t.package;
description = "Script to refresh the cache file of this package";
description = "Script to refresh the lock file";
readOnly = true;
};

View File

@ -135,7 +135,7 @@ in {
inherit (cfg) env pypiSnapshotDate pipFlags pipVersion requirementsList requirementsFiles nativeBuildInputs;
inherit (config.deps) writePureShellScript nix;
inherit (config.paths) findRoot;
inherit (nixpkgs) gitMinimal nix-prefetch-scripts python3 writeText openssh;
inherit (nixpkgs) fetchFromGitHub fetchurl gitMinimal nix-prefetch-scripts openssh python3 rustPlatform writeText;
pythonInterpreter = "${python}/bin/python";
};
setuptools = config.deps.python.pkgs.setuptools;

View File

@ -0,0 +1,56 @@
# An example package with dependencies defined via pyproject.toml
{
config,
lib,
dream2nix,
packageSets,
...
}: let
pyproject = lib.importTOML (config.mkDerivation.src + /pyproject.toml);
pkgs = packageSets.nixpkgs;
in {
imports = [
dream2nix.modules.dream2nix.pip
];
deps = {nixpkgs, ...}: {
python = nixpkgs.python310;
};
inherit (pyproject.project) name version;
mkDerivation = {
src = ./.;
};
pip = {
pypiSnapshotDate = "2023-08-27";
requirementsList =
pyproject.build-system.requires
or []
++ pyproject.project.dependencies;
flattenDependencies = true;
};
paths.projectRootFile = "pyproject.toml";
public = lib.mkForce (pkgs.runCommand "pip-lock-script-works" {
outputHashMode = "flat";
outputHashAlgo = "sha256";
outputHash = "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=";
# invalidate by including into the name a hash over:
# - the path to the nixpkgs
# - TODO: the implementation of the fetch script
name = let
hash = builtins.hashString "sha256" (builtins.unsafeDiscardStringContext ''
${pkgs.path}
'');
in "pip-lock-script-works-${lib.substring 0 16 hash}";
} ''
cp -r ${config.mkDerivation.src}/* .
chmod +w -R .
ls -lah
${config.lock.refresh}/bin/refresh
touch $out
'');
}

View File

@ -0,0 +1,9 @@
from setuptools import setup
def main():
print("Hello World!")
if __name__ == "__main__":
main()

View File

@ -0,0 +1,14 @@
[build-system]
requires = [ "setuptools" ]
build-backend = "setuptools.build_meta"
[project]
name = "my-tool"
description = "my tool"
version = "1.0.0"
dependencies = [
"setuptools"
]
[project.scripts]
my-tool = "my_tool:main"

View File

@ -43,6 +43,9 @@
writePureShellScript,
nix-prefetch-scripts,
openssh,
fetchFromGitHub,
fetchurl,
rustPlatform,
}: let
package = import ./package.nix {
inherit
@ -53,9 +56,63 @@
;
};
pythonFixed = python3.override {
packageOverrides = curr: prev: {
/*
downgrading to version 10.1.*, as 10.2.0 introduces a breakage triggering:
[17:42:11.824][[::1]:56958] client connect
[17:42:11.909][[::1]:56958] server connect pypi.org:443 (151.101.64.223:443)
[17:42:11.958] Deferring layer decision, not enough data: [...]
*/
mitmproxy = prev.mitmproxy.overridePythonAttrs (old: rec {
version = "10.1.6";
src = fetchFromGitHub {
owner = "mitmproxy";
repo = "mitmproxy";
rev = "refs/tags/${version}";
hash = "sha256-W+gxK5bNCit1jK9ojwE/HVjUz6OJcNw6Ac1lN5FxGgw=";
};
doCheck = false;
pyproject = true;
# format = "pyproject";
});
mitmproxy-rs = prev.mitmproxy-rs.overrideAttrs (old: rec {
version = "0.4.1";
src = fetchFromGitHub {
owner = "mitmproxy";
repo = "mitmproxy_rs";
rev = version;
hash = "sha256-Vc7ez/W40CefO2ZLAHot14p478pDPtQor865675vCtI=";
};
cargoDeps = rustPlatform.importCargoLock {
lockFile = "${src}/Cargo.lock";
outputHashes = {
"internet-packet-0.1.0" = "sha256-VtEuCE1sulBIFVymh7YW7VHCuIBjtb6tHoPz2tjxX+Q=";
};
};
});
mitmproxy-macos = prev.buildPythonPackage rec {
pname = "mitmproxy-macos";
version = "0.4.1";
format = "wheel";
src = fetchurl {
url = "https://files.pythonhosted.org/packages/85/79/f11ba4cf6e89408ed52d9317c00d3ae4ad18c51cf710821c9342fc95cd0f/mitmproxy_macos-0.5.1-py3-none-any.whl";
hash = "sha256-P7T8mTCzMQEphnWuumZF3ucb4XYgyMsHyBC6i+1sKkI=";
};
pythonImportsCheck = ["mitmproxy_macos"];
nativeBuildInputs = [
prev.hatchling
];
};
};
};
# We use nixpkgs python3 to run mitmproxy, see function parameters
pythonWithMitmproxy =
python3.withPackages
pythonFixed.withPackages
(ps: [ps.mitmproxy ps.python-dateutil]);
path = [nix gitMinimal openssh] ++ nativeBuildInputs;

View File

@ -6,7 +6,7 @@
}: let
libpdm = (import ../../../modules/dream2nix/WIP-python-pdm/lib.nix) {
inherit lib libpyproject;
python3 = pkgs.python3;
python3 = pkgs.python310;
targetPlatform = lib.systems.elaborate "x86_64-linux";
};
pyproject-nix = inputs.pyproject-nix;