protestswap/flake.nix

91 lines
2.2 KiB
Nix
Raw Normal View History

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
}