From e4a133daf6b2b2536b5dc9b09210c6b5d7d11caa Mon Sep 17 00:00:00 2001 From: Jack Mechem Date: Sat, 28 Mar 2026 17:46:07 -0700 Subject: [PATCH] Edit nix flake and rename project --- Cargo.toml | 2 +- flake.nix | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 59 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a295173..58644a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "server-stats-rust" +name = "server-dash-api" version = "0.1.0" edition = "2024" diff --git a/flake.nix b/flake.nix index e16275f..b4b6fcd 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "sysapi - system stats & command execution REST API in Rust"; + description = "server-dash-api - system stats & command execution REST API in Rust"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; rust-overlay = { @@ -42,7 +42,7 @@ in { packages.default = pkgs.rustPlatform.buildRustPackage { - pname = "sysapi"; + pname = "server-dash-api"; version = "0.1.0"; src = ./.; cargoHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; @@ -62,11 +62,65 @@ BINDGEN_EXTRA_CLANG_ARGS = "-I${pkgs.linux-pam}/include -I${pkgs.glibc.dev}/include"; RUST_SRC_PATH = "${rustToolchain}/lib/rustlib/src/rust/library"; shellHook = '' - echo "🦀 sysapi dev shell ready" + echo "🦀 server-dash-api dev shell ready" echo " rustc $(rustc --version)" echo " cargo $(cargo --version)" ''; }; } - ); + ) + // { + nixosModules.default = + { + config, + pkgs, + lib, + ... + }: + { + options.services.server-dash-api = { + enable = lib.mkEnableOption "server-dash-api system stats API"; + }; + + config = lib.mkIf config.services.server-dash-api.enable { + users.users.server-dash-api = { + isSystemUser = true; + group = "server-dash-api"; + extraGroups = [ "shadow" ]; + home = "/var/lib/server-dash-api"; + createHome = true; + }; + users.groups.server-dash-api = { }; + + security.polkit.extraConfig = '' + polkit.addRule(function(action, subject) { + if ((action.id == "org.freedesktop.systemd1.manage-units" || + action.id == "org.freedesktop.login1.reboot") && + subject.user == "server-dash-api") { + return polkit.Result.YES; + } + }); + ''; + + systemd.services.server-dash-api = { + description = "server-dash-api - Rust System Stats API"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + User = "server-dash-api"; + Group = "server-dash-api"; + SupplementaryGroups = [ "shadow" ]; + ExecStart = "${self.packages.${pkgs.system}.default}/bin/server-dash-api"; + Restart = "always"; + StateDirectory = "server-dash-api"; + Environment = [ + "RUST_LOG=info" + "SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" + ]; + }; + }; + }; + }; + }; }