From 9c08272621a0eeb5b6b1225cf9ba4b7303338c37 Mon Sep 17 00:00:00 2001 From: Quirin Kinader Date: Wed, 20 Aug 2025 20:42:35 +0200 Subject: [PATCH] Initial setup --- .gitignore | 2 + README.md | 1 + flake.nix | 84 +++++++++++++++++++++++++++++++++++ main.py | 5 +++ pyproject.toml | 17 +++++++ src/gardening_iot/__init__.py | 0 6 files changed, 109 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 flake.nix create mode 100644 main.py create mode 100644 pyproject.toml create mode 100644 src/gardening_iot/__init__.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..021fc3d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.lock +*.venv diff --git a/README.md b/README.md new file mode 100644 index 0000000..2264967 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Gardening Automation and Monitoring diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..35e9310 --- /dev/null +++ b/flake.nix @@ -0,0 +1,84 @@ +{ + description = "Gardening Automation and Monitoring"; + + 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 { + sourcePreference = "wheel"; + }; + + pyprojectOverrides = _final: _prev: { + }; + + pkgs = nixpkgs.legacyPackages.x86_64-linux; + + python = pkgs.python312; + + 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 "gardening_iot" workspace.deps.default; + devShells.x86_64-linux = { + impure = pkgs.mkShell { + packages = [ + python + pkgs.uv + ]; + env = + { + UV_PYTHON_DOWNLOADS = "never"; + UV_PYTHON = python.interpreter; + } + // lib.optionalAttrs pkgs.stdenv.isLinux { + LD_LIBRARY_PATH = lib.makeLibraryPath pkgs.pythonManylinuxPackages.manylinux1; + }; + shellHook = '' + unset PYTHONPATH + ''; + }; + }; + }; +} diff --git a/main.py b/main.py new file mode 100644 index 0000000..0a87269 --- /dev/null +++ b/main.py @@ -0,0 +1,5 @@ +def main(): + print("hhhello") + +if __name__ == "__main__": + main() diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..4a25103 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,17 @@ +[project] +name = "gardening_iot" +version = "0.1.0" +description = "Garden Automation and Monitoring" +readme = "README.md" +requires-python = ">=3.12" +dependencies = [ +] + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[dependency-groups] +dev = [ + "ruff>=0.6.7", +] diff --git a/src/gardening_iot/__init__.py b/src/gardening_iot/__init__.py new file mode 100644 index 0000000..e69de29