switch to uv and stuff

This commit is contained in:
Prunebutt 2025-10-14 00:01:19 +02:00
parent 1f3eb16391
commit bb1b8eecb9
6 changed files with 133 additions and 56 deletions

113
flake.nix
View file

@ -1,41 +1,90 @@
{
description = "Flake using pyproject.toml metadata";
inputs.pyproject-nix.url = "github:pyproject-nix/pyproject.nix";
inputs.pyproject-nix.inputs.nixpkgs.follows = "nixpkgs";
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";
};
outputs =
{ nixpkgs, pyproject-nix, ... }:
let
inherit (nixpkgs) lib;
forAllSystems = lib.genAttrs lib.systems.flakeExposed;
outputs = {
self,
nixpkgs,
flake-utils,
...
}:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = nixpkgs.legacyPackages.${system};
project = pyproject-nix.lib.project.loadPyproject {
projectRoot = ./.;
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;
};
pythonAttr = "python3";
in
{
devShells = forAllSystems (system: {
default =
let
pkgs = nixpkgs.legacyPackages.${system};
python = pkgs.${pythonAttr};
pythonEnv = python.withPackages (project.renderers.withPackages { inherit python; });
in
pkgs.mkShell { packages = [ pythonEnv ]; };
});
editablePackage = pkgs.python3.pkgs.mkPythonEditablePackage {
pname = project.name;
inherit (project) scripts version;
root = "$PWD";
};
in {
devShells = {
default = pkgs.mkShell {
inputsFrom = [
package
];
packages = forAllSystems (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
python = pkgs.${pythonAttr};
in
{
default = python.pkgs.buildPythonPackage (project.renderers.buildPythonPackage { inherit python; });
}
);
};
buildInputs = [
# our package
editablePackage
#################
# 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};
};
});
}