# Automation server # Copyright (C) 2023 Nguyễn Gia Phong # # This file is part of loang configuration. # # Loang configuration is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Loang configuration is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with loang configuration. If not, see . { config, lib, pkgs, ... }: let inherit (config.networking) domain; httpSock = "unix:${workingDir}/http.sock"; workingDir = "/var/lib/laminar"; in { environment.systemPackages = [ pkgs.laminar ]; services.nginx.virtualHosts."xong.${domain}" = { enableACME = true; forceSSL = true; locations."/".proxyPass = "http://${httpSock}"; locations."/archive/".alias = "/var/lib/laminar/archive/"; }; systemd.services.laminar = { after = [ "network.target" ]; description = "Laminar continuous integration service"; documentation = [ "man:laminard(8)" "https://laminar.ohwg.net/docs.html" ]; environment = { LAMINAR_HOME = workingDir; LAMINAR_BIND_HTTP = httpSock; }; serviceConfig = { ExecStart = "${pkgs.laminar}/bin/laminard"; Group = "laminar"; User = "laminar"; }; wantedBy = [ "multi-user.target" ]; }; users = { users.laminar = { isSystemUser = true; group = "laminar"; home = workingDir; packages = with pkgs; [ git reuse ]; }; groups.laminar.members = [ "nginx" ]; }; }