feat: expose python flake to all systems

This commit is contained in:
Leon Schwarzäugl 2024-12-31 15:32:55 +01:00
parent 5915a28ba0
commit fbc134388d
Signed by: swarsel
GPG key ID: 26A54C31F2A4FD84

View file

@ -32,6 +32,7 @@
}:
let
inherit (nixpkgs) lib;
forAllSystems = lib.genAttrs lib.systems.flakeExposed;
# Load a uv workspace from a workspace root.
# Uv2nix treats all uv projects as workspace projects.
@ -55,38 +56,50 @@
# This is an additional overlay implementing build fixups.
# See:
# - https://pyproject-nix.github.io/uv2nix/FAQ.html
# Construct package set
pythonSets = forAllSystems
(system:
let
pkgs = nixpkgs.legacyPackages.${system};
pyprojectOverrides = _final: _prev: {
# Implement build fixups here.
};
pkgs = nixpkgs.legacyPackages.x86_64-linux;
baseSet = pkgs.callPackage pyproject-nix.build.packages {
python = pkgs.python312;
# Construct package set
pythonSet =
};
in
# Use base package set from pyproject.nix builders
(pkgs.callPackage pyproject-nix.build.packages {
inherit python;
}).overrideScope
baseSet.overrideScope
(
lib.composeManyExtensions [
pyproject-build-systems.overlays.default
overlay
pyprojectOverrides
]
);
));
in
{
# Package a virtual environment as our main application.
#
# Enable no optional dependencies for production build.
packages.x86_64-linux.default = pythonSet.mkVirtualEnv "name-env" workspace.deps.default;
packages = forAllSystems (system:
let
pythonSet = pythonSets.${system};
in
{ default = pythonSet.mkVirtualEnv "name-env" workspace.deps.default; });
# This example provides two different modes of development:
# - Impurely using uv to manage virtual environments
# - Pure development using uv2nix to manage virtual environments
devShells.x86_64-linux = {
devShells = forAllSystems
(system:
let
pythonSet = pythonSets.${system};
pkgs = nixpkgs.legacyPackages.${system};
in
{
# This devShell uses uv2nix to construct a virtual environment purely from Nix, using the same dependency specification as the application.
# The notable difference is that we also apply another overlay here enabling editable mode ( https://setuptools.pypa.io/en/latest/userguide/development_mode.html ).
#
@ -129,6 +142,6 @@
export REPO_ROOT=$(git rev-parse --show-toplevel)
'';
};
};
});
};
}