{ description = "Python UV dev environment"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; pyproject-nix = { url = "github:pyproject-nix/pyproject.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; uv2nix = { url = "github:pyproject-nix/uv2nix"; inputs.pyproject-nix.follows = "pyproject-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; pyproject-build-systems = { url = "github:pyproject-nix/build-system-pkgs"; inputs.pyproject-nix.follows = "pyproject-nix"; inputs.uv2nix.follows = "uv2nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, uv2nix, pyproject-nix, pyproject-build-systems, ... }: let inherit (nixpkgs) lib; workspace = uv2nix.lib.workspace.loadWorkspace {workspaceRoot = ./.;}; overlay = workspace.mkPyProjectOverlay{ sorcePreference = "wheel"; }; pyprojectOverrides = _final: _prev: {}; pkgs = nixpkgs.legacyPackages.x86_64-linux; python = pkgs.python314; pythonSet = (pkgs.callPackage pyproject-nix.build.packages{ inherit python; }).overrideScope ( lib.composeManyExtensions [ pyproject-build-systems.overlays.default overlay pyprojectOverrides ] ); in { packages.x86_64-linux.default = pythonSet.mkVirtualEnv "autumnism" workspace.deps.default; apps.x86_64-linux = { default = { type ="app"; program = "${self.packages.x86_64-linux.default}/bin/hello"; }; }; devShells.x86_64-linux = { uv2nix = let editableOverlay = workspace.mkEditablePyprojectOverlay { root = "$REPO_ROOT"; }; editablePythonSet = pythonSet.overrideScope ( lib.composeManyExtensions [ editableOverlay (final: prev: { autumnism = prev.autumnism.overrideAttrs (old: { src = lib.fileset.toSource { root = old.src; fileset = lib.fileset.unions [ (old.src + "pyproject.toml") (old.src + "/README.md") (old.src + "/src/autumnism") ]; }; nativeBuildInputs = old.nativeBuildInputs ++ final.resolveBuildSystem { editables = [ ]; }; }); }) ] ); virtualenv = editablePythonSet.mkVirtualEnv "autumnism-dev-env" workspace.deps.all; in pkgs.mkShell { packages = [ virtualenv pkgs.uv ]; env = { UV_NO_SYNC = "1"; UV_PYTHON = python.interpreter; UV_PYTHON_DOWNLOADS = "never"; }; shellHook = '' unset PYTHONPATH export REPO_ROOT=$(git rev-parse --show-toplevel) ''; }; }; }; }