{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; systems.url = "github:nix-systems/default"; pyproject-nix = { url = "github:pyproject-nix/pyproject.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; uv2nix = { url = "github:pyproject-nix/uv2nix"; inputs.nixpkgs.follows = "nixpkgs"; inputs.pyproject-nix.follows = "pyproject-nix"; }; pyproject-build-systems = { url = "github:pyproject-nix/build-system-pkgs"; inputs.nixpkgs.follows = "nixpkgs"; inputs.pyproject-nix.follows = "pyproject-nix"; inputs.uv2nix.follows = "uv2nix"; }; }; outputs = { self, nixpkgs, systems, pyproject-nix, uv2nix, pyproject-build-systems, ... }: let inherit (nixpkgs) lib; eachSystem = lib.genAttrs (import systems); workspace = uv2nix.lib.workspace.loadWorkspace { workspaceRoot = ./.; }; in { devShells = eachSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; python = pkgs.python3; overlay = workspace.mkPyprojectOverlay { sourcePreference = "wheel"; }; editableOverlay = workspace.mkEditablePyprojectOverlay { root = "$REPO_ROOT"; }; editableSet = (pkgs.callPackage pyproject-nix.build.packages { inherit python; }).overrideScope (lib.composeManyExtensions [ pyproject-build-systems.overlays.default overlay editableOverlay ]); venv = editableSet.mkVirtualEnv "rangifer-dev" workspace.deps.all; in { default = pkgs.mkShell { packages = [ venv pkgs.uv pkgs.pyright ]; env = { UV_NO_SYNC = "1"; UV_PYTHON = "${venv}/bin/python"; UV_PYTHON_DOWNLOADS = "never"; }; shellHook = '' unset PYTHONPATH export REPO_ROOT=$(git rev-parse --show-toplevel) ''; }; }); }; }