summaryrefslogtreecommitdiff
path: root/nix
diff options
context:
space:
mode:
Diffstat (limited to 'nix')
-rw-r--r--nix/default.nix16
-rw-r--r--nix/module.nix27
-rw-r--r--nix/server.nix13
3 files changed, 56 insertions, 0 deletions
diff --git a/nix/default.nix b/nix/default.nix
new file mode 100644
index 0000000..fca9993
--- /dev/null
+++ b/nix/default.nix
@@ -0,0 +1,16 @@
+{
+ lib,
+ python311Packages,
+ version,
+}:
+python311Packages.buildPythonPackage {
+ pname = "guzzle-api";
+ inherit version;
+
+ src = lib.cleanSource ../.;
+ format = "flit";
+ doCheck = false;
+
+ propagatedBuildInputs = with python311Packages; [fastapi pydantic uvicorn];
+ propagatedNativeBuildInputs = with python311Packages; [flit-core];
+}
diff --git a/nix/module.nix b/nix/module.nix
new file mode 100644
index 0000000..0dff2d0
--- /dev/null
+++ b/nix/module.nix
@@ -0,0 +1,27 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ cfg = config.services.guzzle-api;
+ inherit (lib) mkDefault mkEnableOption mkIf;
+in {
+ options.services.guzzle-api.enable = mkEnableOption "enable guzzle-api";
+
+ config.systemd.services.guzzle-api = mkIf cfg.enable {
+ guzzle-api = {
+ enable = mkDefault true;
+ ports = mkDefault ["8080:80"];
+ wantedBy = ["multi-user.target"];
+ after = ["network.target"];
+ script = ''
+ ${pkgs.guzzle-api-server} --host 0.0.0.0 --port 8000
+ '';
+ serviceConfig = mkDefault {
+ Restart = "always";
+ Type = "simple";
+ };
+ };
+ };
+}
diff --git a/nix/server.nix b/nix/server.nix
new file mode 100644
index 0000000..18e4673
--- /dev/null
+++ b/nix/server.nix
@@ -0,0 +1,13 @@
+{
+ writeShellApplication,
+ python311,
+ guzzle-api,
+ ...
+}:
+writeShellApplication {
+ name = "guzzle-api-server";
+ runtimeInputs = [(python311.withPackages (p: [p.uvicorn guzzle-api]))];
+ text = ''
+ uvicorn guzzle_api.api:app "$@"
+ '';
+}