From c649478ee9813b427ca93558b2ad2f0974e91009 Mon Sep 17 00:00:00 2001 From: pinpox Date: Sun, 18 May 2025 13:48:54 +0200 Subject: [PATCH] spoolman: init at 0.22.1 --- pkgs/by-name/sp/spoolman/common.nix | 25 ++++++ pkgs/by-name/sp/spoolman/frontend.nix | 23 ++++++ pkgs/by-name/sp/spoolman/package.nix | 79 +++++++++++++++++++ .../python-modules/scheduler/default.nix | 37 +++++++++ .../sqlalchemy-cockroachdb/default.nix | 37 +++++++++ pkgs/top-level/python-packages.nix | 4 + 6 files changed, 205 insertions(+) create mode 100644 pkgs/by-name/sp/spoolman/common.nix create mode 100644 pkgs/by-name/sp/spoolman/frontend.nix create mode 100644 pkgs/by-name/sp/spoolman/package.nix create mode 100644 pkgs/development/python-modules/scheduler/default.nix create mode 100644 pkgs/development/python-modules/sqlalchemy-cockroachdb/default.nix diff --git a/pkgs/by-name/sp/spoolman/common.nix b/pkgs/by-name/sp/spoolman/common.nix new file mode 100644 index 000000000000..2985fb71551b --- /dev/null +++ b/pkgs/by-name/sp/spoolman/common.nix @@ -0,0 +1,25 @@ +{ lib, fetchFromGitHub }: +let + version = "0.22.1"; +in +{ + inherit version; + + src = fetchFromGitHub { + owner = "Donkie"; + repo = "Spoolman"; + rev = "v${version}"; + hash = "sha256-EVGpwcjEh4u8Vtgu2LypqMqArYLZe7oh1qYhGZpgjh0="; + }; + + meta = with lib; { + description = "Keep track of your inventory of 3D-printer filament spools"; + homepage = "https://github.com/Donkie/Spoolman"; + license = licenses.mit; + maintainers = with maintainers; [ + MayNiklas + pinpox + ]; + mainProgram = "spoolman"; + }; +} diff --git a/pkgs/by-name/sp/spoolman/frontend.nix b/pkgs/by-name/sp/spoolman/frontend.nix new file mode 100644 index 000000000000..9386853458e0 --- /dev/null +++ b/pkgs/by-name/sp/spoolman/frontend.nix @@ -0,0 +1,23 @@ +{ buildNpmPackage, callPackage }: +let + common = callPackage ./common.nix { }; +in + +buildNpmPackage { + pname = "spoolman-frontend"; + + inherit (common) version; + + src = "${common.src}/client"; + + npmDepsHash = "sha256-E4DvEOSHfwwM0C+vTRMDQbCNv2IDyFOFwfqszrI+uOA="; + + VITE_APIURL = "/api/v1"; + + installPhase = "cp -r dist $out"; + + meta = common.meta // { + description = "Spoolman frontend"; + mainProgram = "spoolman-frontend"; + }; +} diff --git a/pkgs/by-name/sp/spoolman/package.nix b/pkgs/by-name/sp/spoolman/package.nix new file mode 100644 index 000000000000..f31ed152bb19 --- /dev/null +++ b/pkgs/by-name/sp/spoolman/package.nix @@ -0,0 +1,79 @@ +{ + python312, + lib, + callPackage, + writeShellScript, + makeWrapper, +}: + +let + common = callPackage ./common.nix { }; + frontend = callPackage ./frontend.nix { }; + python = python312; +in + +python.pkgs.buildPythonPackage rec { + + pname = "spoolman"; + inherit (common) version src; + + pyproject = true; + + nativeBuildInputs = [ + makeWrapper + python.pkgs.pdm-backend + python.pkgs.pythonRelaxDepsHook + ]; + + pythonRelaxDeps = [ "setuptools" ]; + + postPatch = '' + substituteInPlace pyproject.toml --replace-fail psycopg2-binary psycopg2 + ''; + + propagatedBuildInputs = with python.pkgs; [ + uvloop + alembic + asyncpg + fastapi + hishel + httptools + httpx + aiosqlite + platformdirs + prometheus-client + psycopg2 + pydantic + scheduler + setuptools + sqlalchemy + sqlalchemy-cockroachdb + uvicorn + websockets + ]; + + pythonImportsCheck = [ "spoolman" ]; + + postInstall = + let + start_script = writeShellScript "start-spoolman" '' + ${lib.getExe python.pkgs.uvicorn} "$@" spoolman.main:app; + ''; + in + '' + mkdir -p $out/runpath/client/dist $out/bin + cp -r $src/* $out/runpath + cp -r ${frontend}/* $out/runpath/client/dist + + makeWrapper ${start_script} $out/bin/spoolman \ + --chdir $out/runpath \ + --prefix PYTHONPATH : "$out/${python.sitePackages}" \ + --prefix PYTHONPATH : "${python.pkgs.makePythonPath propagatedBuildInputs}" \ + --prefix PATH : "${python.pkgs.alembic}/bin" + ''; + + meta = common.meta // { + description = "Spoolman server"; + mainProgram = "spoolman"; + }; +} diff --git a/pkgs/development/python-modules/scheduler/default.nix b/pkgs/development/python-modules/scheduler/default.nix new file mode 100644 index 000000000000..9a4c6f6d36ae --- /dev/null +++ b/pkgs/development/python-modules/scheduler/default.nix @@ -0,0 +1,37 @@ +{ + lib, + buildPythonPackage, + fetchPypi, + setuptools, + wheel, + typeguard, +}: + +buildPythonPackage rec { + pname = "scheduler"; + version = "0.8.5"; + pyproject = true; + + src = fetchPypi { + inherit pname version; + hash = "sha256-8t1AUbD6cpETSoqoY88bSZmj7FuaF6c+7kJDJX2Lp4k="; + }; + + nativeBuildInputs = [ + setuptools + wheel + ]; + + propagatedBuildInputs = [ + typeguard + ]; + + pythonImportsCheck = [ "scheduler" ]; + + meta = with lib; { + description = "A simple in-process python scheduler library with asyncio, threading and timezone support. Use datetime standard library objects for planning of Jobs depending on time cycles, fixed times, weekdays, dates, weights, offsets and execution counts"; + homepage = "https://pypi.org/project/scheduler/"; + license = licenses.lgpl3; + maintainers = with maintainers; [ pinpox ]; + }; +} diff --git a/pkgs/development/python-modules/sqlalchemy-cockroachdb/default.nix b/pkgs/development/python-modules/sqlalchemy-cockroachdb/default.nix new file mode 100644 index 000000000000..0cbdb6651a97 --- /dev/null +++ b/pkgs/development/python-modules/sqlalchemy-cockroachdb/default.nix @@ -0,0 +1,37 @@ +{ + lib, + buildPythonPackage, + fetchPypi, + setuptools, + wheel, + sqlalchemy, +}: + +buildPythonPackage rec { + pname = "sqlalchemy-cockroachdb"; + version = "2.0.2"; + pyproject = true; + + src = fetchPypi { + inherit pname version; + hash = "sha256-EZdW65BYVdahE0W5nP6FMDGj/lmKnEvzWo3ayfif6Mw="; + }; + + nativeBuildInputs = [ + setuptools + wheel + ]; + + propagatedBuildInputs = [ + sqlalchemy + ]; + + pythonImportsCheck = [ "sqlalchemy_cockroachdb" ]; + + meta = with lib; { + description = "CockroachDB dialect for SQLAlchemy"; + homepage = "https://pypi.org/project/sqlalchemy-cockroachdb"; + license = licenses.asl20; + maintainers = with maintainers; [ pinpox ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ebd25ace79f0..1b6588e9cdf0 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -15519,6 +15519,8 @@ self: super: with self; { schedule = callPackage ../development/python-modules/schedule { }; + scheduler = callPackage ../development/python-modules/scheduler { }; + schema = callPackage ../development/python-modules/schema { }; schema-salad = callPackage ../development/python-modules/schema-salad { }; @@ -16548,6 +16550,8 @@ self: super: with self; { sqlalchemy-citext = callPackage ../development/python-modules/sqlalchemy-citext { }; + sqlalchemy-cockroachdb = callPackage ../development/python-modules/sqlalchemy-cockroachdb { }; + sqlalchemy-continuum = callPackage ../development/python-modules/sqlalchemy-continuum { }; sqlalchemy-file = callPackage ../development/python-modules/sqlalchemy-file { };