From c8ce4db2a2234beecadd8f6ce2f32e6f74deb697 Mon Sep 17 00:00:00 2001 From: Prunebutt Date: Sat, 27 Sep 2025 18:54:24 +0200 Subject: [PATCH] split up the flake better --- flake.nix | 67 ++++++++++++++++++++++++++++++++++---------------- pyproject.toml | 1 + 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/flake.nix b/flake.nix index 559540a..e10f4c4 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,27 @@ serverProject = inputs.pyproject-nix.lib.project.loadPyproject { projectRoot = ./.; }; + + # Packages + script = pkgs.writeShellApplication { + name = "scanbuddy"; + + runtimeInputs = with pkgs; [sane-backends brscan5 ghostscript]; + + text = builtins.readFile ./scanbuddy.bash; + }; + + # Returns an attribute set that can be passed to `buildPythonPackage`. + attrs = serverProject.renderers.buildPythonPackage {inherit python;}; + server = python.pkgs.buildPythonPackage (attrs + // { + env.CUSTOM_ENVVAR = "foobar"; + }); + + scanbuddy-pkg = pkgs.symlinkJoin { + name = "scanbuddy"; + paths = [script server]; + }; in { # devShells.${system}.default = pkgs.mkShell { # packages = with pkgs; [ @@ -33,28 +54,32 @@ # exec zsh # ''; # }; - packages.${system} = let - scanbuddy = pkgs.writeShellApplication { - name = "scanbuddy"; - - runtimeInputs = with pkgs; [sane-backends brscan5 ghostscript]; - - text = builtins.readFile ./scanbuddy.bash; - }; - - # Returns an attribute set that can be passed to `buildPythonPackage`. - attrs = serverProject.renderers.buildPythonPackage {inherit python;}; - server = python.pkgs.buildPythonPackage (attrs - // { - env.CUSTOM_ENVVAR = "foobar"; - }); - in { - default = pkgs.symlinkJoin { - name = "scanbuddy"; - paths = [scanbuddy server]; - }; - inherit scanbuddy; + packages.${system} = { + default = scanbuddy-pkg; + inherit script; inherit server; }; + + nixosModules.default = { + config, + pkgs, + lib, + ... + }: { + options = { + service.scanbuddy = lib.mkEnableOption "Enable the scanbuddy server"; + }; + config = { + systemd.services.scanbuddy = lib.mkIf config.service.scanbuddy { + description = "The scanbuddy webservice"; + wantedBy = ["multi-user.target"]; + serviceConfig = { + ExecStart = "${scanbuddy-pkg}/bin/scanbuddy-server"; + Path = ["${scanbuddy-pkg}/bin"]; + WorkingDirectory = "/var/lib/scanbuddy"; + }; + }; + }; + }; }; } diff --git a/pyproject.toml b/pyproject.toml index 49823ce..61e7598 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,7 @@ description = "A REST server for the scanbuddy shell-script" # define any Python dependencies dependencies = [ "flask>3", + "waitress" ] # define the CLI executable