diff --git a/flake.lock b/flake.lock index c5459c1..bd67c98 100644 --- a/flake.lock +++ b/flake.lock @@ -17,24 +17,45 @@ }, "nixpkgs": { "locked": { - "lastModified": 1656335358, - "narHash": "sha256-t0PZIFCKgjF2WQ0NC6ORigdGgLqQD3vtT+Jx/dhjNsY=", + "lastModified": 1754937576, + "narHash": "sha256-3sWA5WJybUE16kIMZ3+uxcxKZY/JRR4DFBqLdSLBo7w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "62de360d75419386b69ea4af4a8ce104949a8242", + "rev": "ddae11e58c0c345bf66efbddbf2192ed0e58f896", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05", + "ref": "nixos-25.05", "repo": "nixpkgs", "type": "github" } }, + "pyproject-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754923840, + "narHash": "sha256-QSKpYg+Ts9HYF155ltlj40iBex39c05cpOF8gjoE2EM=", + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "rev": "023cd4be230eacae52635be09eef100c37ef78da", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "type": "github" + } + }, "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "pyproject-nix": "pyproject-nix" } } }, diff --git a/flake.nix b/flake.nix index f76346d..2127165 100644 --- a/flake.nix +++ b/flake.nix @@ -1,42 +1,52 @@ { inputs = { nixpkgs = { - url = "github:NixOS/nixpkgs/nixos-22.05"; + url = "github:NixOS/nixpkgs/nixos-25.05"; }; flake-utils = { url = "github:numtide/flake-utils"; + }; + pyproject-nix = { + url = "github:pyproject-nix/pyproject.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; - outputs = { self, nixpkgs, flake-utils, ... }@inputs: - flake-utils.lib.eachDefaultSystem (system: - let + outputs = { + self, + nixpkgs, + flake-utils, + pyproject-nix, + ... + }: + flake-utils.lib.eachDefaultSystem ( + system: let pkgs = import nixpkgs { inherit system; }; - in - { - devShells.default = - let - python = pkgs.python310.withPackages (ps: with ps; [ - poetry - ]); - in + project = pyproject-nix.lib.project.loadPyproject { + projectRoot = ./.; + }; + python = pkgs.python3; + in { + devShells.default = let + arg = project.renderers.withPackages {inherit python;}; + + pythonEnv = python.withPackages arg; + in pkgs.mkShell { - buildInputs = [ - python + packages = [ + pythonEnv + pkgs.uv ]; - shellHook = '' - export POETRY_VIRTUALENVS_IN_PROJECT=true - export PS1='\[\033[1;34m\][jtftp:\w]\$\[\033[0m\] ' - ''; }; packages = { - jtftp = pkgs.poetry2nix.mkPoetryApplication { - python = pkgs.python310; - projectDir = ./.; - }; + jtftp = let + attrs = project.renderers.buildPythonPackage {inherit python;}; + in + python.pkgs.buildPythonPackage (attrs + // { + }); default = self.packages.${system}.jtftp; }; apps = { diff --git a/pyproject.toml b/pyproject.toml index e58da81..0531a62 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,26 +1,10 @@ -[tool.poetry] +[project] name = "jtftp" version = "0.1.0" description = "Jeff's TFTP" -authors = ["Jeffrey C. Ollie "] +# authors = ["Jeffrey C. Ollie "] -[tool.poetry.dependencies] -python = "^3.10" -arrow = "^1.2.2" -aiofiles = "^0.8.0" +dependencies = ["arrow ~= 1.3.0", "aiofiles ~= 24.1.0"] -[tool.poetry.dev-dependencies] -black = "^22.6.0" -flake8 = "^4.0.1" -flake8-bugbear = "^22.6.22" -hypothesis = "^6.48.2" -pytest = "^7.1.2" -pytest-asyncio = "^0.18.3" -pytest-cov = "^3.0.0" - -[tool.poetry.scripts] -serve = 'examples.main:serve' - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" +[project.scripts] +serve = "examples.main:serve"