make file for deployment

This commit is contained in:
Jack Mechem 2026-03-29 16:01:17 -07:00
parent ca87adfe0f
commit 2f04653df4
3 changed files with 25 additions and 7 deletions

6
Makefile Normal file
View file

@ -0,0 +1,6 @@
deploy:
cargo build --release
sudo cp target/release/server-dash-api /var/lib/server-dash-api/server-dash-api
sudo chown server-dash-api:server-dash-api /var/lib/server-dash-api/server-dash-api
sudo chmod 755 /var/lib/server-dash-api/server-dash-api
sudo systemctl restart server-dash-api

View file

@ -38,10 +38,9 @@
linux-pam
libclang
glibc.dev
gnumake
];
in
{
packages.default = pkgs.rustPlatform.buildRustPackage {
package = pkgs.rustPlatform.buildRustPackage {
pname = "server-dash-api";
version = "0.1.0";
src = ./.;
@ -52,6 +51,9 @@
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.linux-pam}/include -I${pkgs.glibc.dev}/include";
};
in
{
packages.default = package;
devShells.default = pkgs.mkShell {
inherit nativeBuildInputs buildInputs;
PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
@ -80,6 +82,11 @@
{
options.services.server-dash-api = {
enable = lib.mkEnableOption "server-dash-api system stats API";
useNixBuild = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Build the binary via Nix instead of using a manually deployed binary";
};
};
config = lib.mkIf config.services.server-dash-api.enable {
@ -116,8 +123,13 @@
User = "server-dash-api";
Group = "server-dash-api";
SupplementaryGroups = [ "shadow" ];
ExecStart = "${self.packages.${pkgs.system}.default}/bin/server-dash-api";
Restart = "always";
ExecStart =
if config.services.server-dash-api.useNixBuild then
"${self.packages.${pkgs.system}.default}/bin/server-dash-api"
else
"/var/lib/server-dash-api/server-dash-api";
Restart = "on-failure";
RestartSec = "10s";
StateDirectory = "server-dash-api";
Environment = [
"RUST_LOG=info"

View file

@ -2,8 +2,8 @@ pub const ALLOWED_SERVICES: &[&str] = &[
"syncthing",
"caddy",
"sshd",
"dashboard",
"sysapi",
"server-dash",
"server-dash-api",
"cloudflare-dyndns.timer",
"cloudflare-dyndns",
"docker",