From 5b776288bd555eb40b88e6e12adc409107e7b2d1 Mon Sep 17 00:00:00 2001 From: ahtlon Date: Fri, 10 Jul 2026 16:36:58 +0200 Subject: [PATCH] [nix] add module.nix --- flake.nix | 3 ++- module.nix | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 module.nix diff --git a/flake.nix b/flake.nix index d3a4cd2..7652db0 100644 --- a/flake.nix +++ b/flake.nix @@ -119,9 +119,10 @@ type = "app"; program = toString (nixpkgs.legacyPackages.${system}.writeShellScript "gatekeeper" '' export LD_LIBRARY_PATH="${lib.getLib nixpkgs.legacyPackages.${system}.pcsclite}/lib''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" - exec ${self.packages.${system}.default}/bin/fastapi run ${self}/app/main.py "$@"; + exec ${self.packages.${system}.default}/bin/fastapi dev ${self}/app/main.py "$@"; ''); }; }); + nixosModules = { gatekeeper = import ./module.nix; }; }; } diff --git a/module.nix b/module.nix new file mode 100644 index 0000000..e9138a0 --- /dev/null +++ b/module.nix @@ -0,0 +1,41 @@ +{config, pkgs, lib, self, system, ... }: +let + cfg = config.services.gatekeeper; +in +{ + options = { + services.gatekeeper = { + 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 = { + type = lib.types.path; + default = null; + description = "Where to save the database."; + }; + }; + }; + config = lib.mkIf cfg.enable { + users.extraGroups.gatekeeper = {}; + users.extraUsers.gatekeeper = { + description = "gatekeeper user"; + group = "gatekeeper"; + isSystemUser = true; + }; + #environment.systemPackages = [self.packages.${system}.default]; + systemd.services.gatekeeper = { + script = '' + export LD_LIBRARY_PATH="${lib.getLib pkgs.pcsclite}/lib''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + exec ${pkgs.python3.pkgs.uvicorn}/bin/uvicorn run ${self}/app/main.py + ''; + wantedBy = ["multi-user.target"]; + serviceConfig = { + User = "gatekeeper"; + Restart = "on-failure"; + }; + }; + }; +} \ No newline at end of file