72 lines
1.7 KiB
Nix
72 lines
1.7 KiB
Nix
{
|
|
config,
|
|
inputs,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
weddingPackage =
|
|
if inputs.wedding ? packages then
|
|
inputs.wedding.packages.${pkgs.system}.default
|
|
else
|
|
pkgs.buildGoModule {
|
|
pname = "wedding";
|
|
version = "source";
|
|
src = inputs.wedding;
|
|
subPackages = [ "internal/cmd/app" ];
|
|
vendorHash = "sha256-rxaikaR4UGXu2hIuR9ZbOnITBsCq5zEDAlwrhhRudoo=";
|
|
env = {
|
|
CGO_ENABLED = 0;
|
|
};
|
|
ldflags = [
|
|
"-s"
|
|
"-w"
|
|
];
|
|
postInstall = ''
|
|
mkdir -p $out/share/wedding
|
|
cp -r public $out/share/wedding/public
|
|
'';
|
|
};
|
|
in
|
|
{
|
|
options.wedding = {
|
|
enable = lib.mkEnableOption "Wedding site";
|
|
};
|
|
|
|
config = lib.mkIf config.wedding.enable {
|
|
sops.secrets.gotify_password = { };
|
|
|
|
systemd.services.wedding = {
|
|
description = "Wedding site";
|
|
wantedBy = [ "multi-user.target" ];
|
|
after = [ "network-online.target" ];
|
|
wants = [ "network-online.target" ];
|
|
serviceConfig = {
|
|
ExecStart = "${weddingPackage}/bin/app";
|
|
Restart = "on-failure";
|
|
DynamicUser = true;
|
|
WorkingDirectory = "${weddingPackage}/share/wedding";
|
|
Environment = [
|
|
"PUBLIC_DIR=${weddingPackage}/share/wedding/public"
|
|
"GOTIFY_URL=https://message.wastring.com"
|
|
"GOTIFY_TOKEN=AxlVMOKqqoohYxC"
|
|
"HTTP_ADDR=0.0.0.0:8083"
|
|
"PORT=8083"
|
|
];
|
|
};
|
|
};
|
|
|
|
services.nginx = {
|
|
virtualHosts."wedding.wastring.com" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:8083";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|