2025-10-13 17:32:48 +02:00
|
|
|
{
|
|
|
|
|
description = "Flake using pyproject.toml metadata";
|
|
|
|
|
|
2025-10-14 00:01:19 +02:00
|
|
|
inputs = {
|
|
|
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
|
|
|
# pyproject-nix.url = "github:pyproject-nix/pyproject.nix";
|
|
|
|
|
# pyproject-nix.inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
|
|
|
};
|
2025-10-13 17:32:48 +02:00
|
|
|
|
2025-10-14 00:01:19 +02:00
|
|
|
outputs = {
|
|
|
|
|
self,
|
|
|
|
|
nixpkgs,
|
|
|
|
|
flake-utils,
|
|
|
|
|
...
|
|
|
|
|
}:
|
|
|
|
|
flake-utils.lib.eachDefaultSystem (system: let
|
|
|
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
2025-10-13 17:32:48 +02:00
|
|
|
|
2025-10-14 00:01:19 +02:00
|
|
|
pyproject = builtins.fromTOML (builtins.readFile ./pyproject.toml);
|
|
|
|
|
project = pyproject.project;
|
|
|
|
|
package = pkgs.python3Packages.buildPythonPackage {
|
|
|
|
|
pname = project.name;
|
|
|
|
|
inherit (project) version;
|
|
|
|
|
format = "pyproject";
|
|
|
|
|
|
|
|
|
|
src = ./.;
|
|
|
|
|
|
|
|
|
|
build-system = with pkgs.python3Packages; [
|
|
|
|
|
uv-build
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
# # test dependencies
|
|
|
|
|
nativeCheckInputs = with pkgs; [
|
|
|
|
|
# python3Packages.mypy
|
|
|
|
|
# python3Packages.pytest
|
|
|
|
|
taplo
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
# checkPhase = '''';
|
|
|
|
|
|
|
|
|
|
propagatedBuildInputs = with pkgs; [
|
|
|
|
|
python3Packages.click
|
|
|
|
|
] ++ builtins.map (dep: pkgs.python3Packages.${dep}) project.dependencies;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
editablePackage = pkgs.python3.pkgs.mkPythonEditablePackage {
|
|
|
|
|
pname = project.name;
|
|
|
|
|
inherit (project) scripts version;
|
|
|
|
|
root = "$PWD";
|
2025-10-13 17:32:48 +02:00
|
|
|
};
|
2025-10-14 00:01:19 +02:00
|
|
|
in {
|
|
|
|
|
devShells = {
|
|
|
|
|
default = pkgs.mkShell {
|
|
|
|
|
inputsFrom = [
|
|
|
|
|
package
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
buildInputs = [
|
|
|
|
|
# our package
|
|
|
|
|
editablePackage
|
2025-10-13 17:32:48 +02:00
|
|
|
|
2025-10-14 00:01:19 +02:00
|
|
|
#################
|
|
|
|
|
# VARIOUS TOOLS #
|
|
|
|
|
#################
|
|
|
|
|
|
|
|
|
|
pkgs.python3Packages.build
|
|
|
|
|
pkgs.python3Packages.ipython
|
|
|
|
|
|
|
|
|
|
####################
|
|
|
|
|
# EDITOR/LSP TOOLS #
|
|
|
|
|
####################
|
|
|
|
|
|
|
|
|
|
# LSP server:
|
|
|
|
|
pkgs.python3Packages.python-lsp-server
|
|
|
|
|
|
|
|
|
|
# LSP server plugins of interest:
|
|
|
|
|
pkgs.python3Packages.pylsp-mypy
|
|
|
|
|
pkgs.python3Packages.pylsp-rope
|
|
|
|
|
pkgs.python3Packages.python-lsp-ruff
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
packages = {
|
|
|
|
|
"${project.name}" = package;
|
|
|
|
|
default = self.packages.${system}.${project.name};
|
|
|
|
|
};
|
|
|
|
|
});
|
2025-10-13 17:32:48 +02:00
|
|
|
}
|