From fb49c9dcad95ee49a273e08c4e58f5a2ac90d225 Mon Sep 17 00:00:00 2001 From: Maxwell Beck Date: Tue, 22 Apr 2025 12:33:13 -0500 Subject: Initial commit --- flake.nix | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 flake.nix (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..7609f72 --- /dev/null +++ b/flake.nix @@ -0,0 +1,71 @@ +{ + 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) + ''; + }; + }); + }; +} -- cgit 1.4.1