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 linux-pam
libclang libclang
glibc.dev glibc.dev
gnumake
]; ];
in package = pkgs.rustPlatform.buildRustPackage {
{
packages.default = pkgs.rustPlatform.buildRustPackage {
pname = "server-dash-api"; pname = "server-dash-api";
version = "0.1.0"; version = "0.1.0";
src = ./.; src = ./.;
@ -52,6 +51,9 @@
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.linux-pam}/include -I${pkgs.glibc.dev}/include"; BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.linux-pam}/include -I${pkgs.glibc.dev}/include";
}; };
in
{
packages.default = package;
devShells.default = pkgs.mkShell { devShells.default = pkgs.mkShell {
inherit nativeBuildInputs buildInputs; inherit nativeBuildInputs buildInputs;
PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
@ -80,6 +82,11 @@
{ {
options.services.server-dash-api = { options.services.server-dash-api = {
enable = lib.mkEnableOption "server-dash-api system stats 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 { config = lib.mkIf config.services.server-dash-api.enable {
@ -116,8 +123,13 @@
User = "server-dash-api"; User = "server-dash-api";
Group = "server-dash-api"; Group = "server-dash-api";
SupplementaryGroups = [ "shadow" ]; SupplementaryGroups = [ "shadow" ];
ExecStart = "${self.packages.${pkgs.system}.default}/bin/server-dash-api"; ExecStart =
Restart = "always"; 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"; StateDirectory = "server-dash-api";
Environment = [ Environment = [
"RUST_LOG=info" "RUST_LOG=info"

View file

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