wow
This commit is contained in:
parent
6cb26d93a0
commit
d6103ad33a
5 changed files with 160 additions and 6 deletions
83
hosts/server/hikari/hako/services/api.nix
Normal file
83
hosts/server/hikari/hako/services/api.nix
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
{ inputs, pkgs, ... }:
|
||||
|
||||
let
|
||||
apiDependencies = pkgs.stdenv.mkDerivation {
|
||||
pname = "imnyang-api-dependencies";
|
||||
version = "unstable";
|
||||
src = inputs.api;
|
||||
|
||||
nativeBuildInputs = [ pkgs.bun ];
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
buildPhase = ''
|
||||
export HOME="$TMPDIR/home"
|
||||
mkdir -p "$HOME"
|
||||
bun install --frozen-lockfile --no-progress
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out"
|
||||
cp -a node_modules "$out/node_modules"
|
||||
'';
|
||||
|
||||
outputHashMode = "recursive";
|
||||
outputHash = "sha256-ke6cG/cBON6d6giFo1RAQ4gMfIbmagJfCI1FfZl1w/8=";
|
||||
};
|
||||
|
||||
apiPackage = pkgs.stdenv.mkDerivation {
|
||||
pname = "imnyang-api";
|
||||
version = "unstable";
|
||||
src = inputs.api;
|
||||
|
||||
nativeBuildInputs = [ pkgs.bun ];
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
buildPhase = ''
|
||||
cp -a ${apiDependencies}/node_modules ./node_modules
|
||||
bun run build
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
install -Dm755 server "$out/bin/server"
|
||||
mkdir -p "$out/share/imnyang-api"
|
||||
cp -r src/mitda "$out/share/imnyang-api/mitda"
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
systemd.services.api = {
|
||||
description = "Elysia";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
|
||||
path = [ pkgs.dnsutils ];
|
||||
|
||||
preStart = ''
|
||||
if ! test -e /var/lib/imnyang-api/nadae.hrts; then
|
||||
printf '0\n' > /var/lib/imnyang-api/nadae.hrts
|
||||
fi
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
User = "imnyang";
|
||||
WorkingDirectory = "/var/lib/imnyang-api";
|
||||
StateDirectory = "imnyang-api";
|
||||
StateDirectoryMode = "0750";
|
||||
ExecStart = "${apiPackage}/bin/server";
|
||||
Restart = "always";
|
||||
RestartSec = 5;
|
||||
Environment = [
|
||||
"NODE_ENV=production"
|
||||
"MITDA_ASSETS_DIR=${apiPackage}/share/imnyang-api/mitda"
|
||||
];
|
||||
NoNewPrivileges = true;
|
||||
PrivateTmp = true;
|
||||
ProtectHome = true;
|
||||
ProtectSystem = "strict";
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Reference in a new issue