From 04a76f91fecc6677bbb4d7fd9ab6cc2d39ccdb13 Mon Sep 17 00:00:00 2001 From: ahtlon Date: Thu, 30 Jul 2026 18:34:21 +0200 Subject: [PATCH] [flake] the module now actually starts the prod server --- flake.nix | 3 ++- module.nix | 24 ++++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/flake.nix b/flake.nix index 7652db0..22e6445 100644 --- a/flake.nix +++ b/flake.nix @@ -123,6 +123,7 @@ ''); }; }); - nixosModules = { gatekeeper = import ./module.nix; }; + nixosModules.gatekeeper = { config, pkgs, lib, ... }@args: + import ./module.nix (args // { self = self; system = pkgs.system; }); }; } diff --git a/module.nix b/module.nix index 0bd9261..b761f80 100644 --- a/module.nix +++ b/module.nix @@ -8,33 +8,41 @@ in enable = lib.mkEnableOption "Enable the gatekeeper api service."; dotenv = lib.mkOption { type = lib.types.path; - default = null; description = "The path to a .env file with the keys"; }; - db = { + db = lib.mkOption { type = lib.types.path; - default = null; description = "Where to save the database."; }; }; }; config = lib.mkIf cfg.enable { - users.extraGroups.gatekeeper = {}; - users.extraUsers.gatekeeper = { + users.groups.gatekeeper = {}; + users.users.gatekeeper = { description = "gatekeeper user"; group = "gatekeeper"; isSystemUser = true; }; - environment.systemPackages = [self.packages.${system}.default]; + services.pcscd = { + enable = true; + plugins = [ pkgs.acsccid ]; + }; + networking.firewall.allowedTCPPorts = [ 8000 ]; systemd.services.gatekeeper = { + description = "Runs the gatekeeper api"; script = '' - export LD_LIBRARY_PATH="${lib.getLib pkgs.legacyPackages.${system}.pcsclite}/lib''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" - exec ${self.packages.${system}.default}/bin/fastapi run ${self}/app/main.py + export LD_LIBRARY_PATH="${lib.getLib pkgs.pcsclite}/lib''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + exec ${self.packages.${system}.default}/bin/uvicorn --host 0.0.0.0 --port 8000 --app-dir ${self} app.main:app ''; + after = [ "network.target" ]; wantedBy = ["multi-user.target"]; + serviceConfig = { User = "gatekeeper"; Restart = "on-failure"; + RestartSec = "20"; + StateDirectory = "gatekeeper"; + WorkingDirectory = "/var/lib/gatekeeper"; }; }; };