diff --git a/flake.nix b/flake.nix index d04345d..b1b93ff 100644 --- a/flake.nix +++ b/flake.nix @@ -1,11 +1,9 @@ { description = "server-dash - NixOS System Dashboard"; - inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; - outputs = { self, @@ -24,11 +22,9 @@ version = "0.1.0"; src = ./.; npmDepsHash = "sha256-jzVH/DKNE6m+RowHku7h3brC6T+a6xjl2SKSXiTmLgM="; - buildPhase = '' npm run build ''; - installPhase = '' mkdir -p $out/.next cp -r .next/standalone/. $out/ @@ -49,28 +45,31 @@ { options.services.server-dash = { enable = lib.mkEnableOption "server-dash NixOS System Dashboard"; + package = lib.mkOption { + type = lib.types.path; + default = "/var/lib/server-dash/build"; + description = "Path to the pre-built server-dash package"; + }; }; - config = lib.mkIf config.services.server-dash.enable { - users.users.dashboard = { + users.users.server-dash = { isSystemUser = true; - group = "dashboard"; - home = "/var/lib/dashboard"; + group = "server-dash"; + home = "/var/lib/server-dash"; createHome = true; }; - users.groups.dashboard = { }; - - systemd.services.dashboard = { + users.groups.server-dash = { }; + systemd.services.server-dash = { description = "NixOS System Dashboard"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { Type = "simple"; - User = "dashboard"; - Group = "dashboard"; - ExecStart = "${pkgs.nodejs}/bin/node ${self.packages.${pkgs.system}.default}/server.js"; + User = "server-dash"; + Group = "server-dash"; + ExecStart = "${pkgs.nodejs}/bin/node ${config.services.server-dash.package}/server.js"; Restart = "always"; - EnvironmentFile = "/var/lib/dashboard/.env"; + EnvironmentFile = "/var/lib/server-dash/.env"; Environment = [ "PORT=3000" "HOSTNAME=127.0.0.1" diff --git a/package.json b/package.json index a878289..6b136ae 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,28 @@ { - "name": "server-dash", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "eslint" - }, - "dependencies": { - "next": "16.2.1", - "react": "19.2.4", - "react-dom": "19.2.4", - "react-icons": "^5.6.0" - }, - "devDependencies": { - "@tailwindcss/postcss": "^4", - "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "eslint": "^9", - "eslint-config-next": "16.2.1", - "tailwindcss": "^4", - "typescript": "^5" - } + "name": "server-dash", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "eslint", + "deploy": "npm run build && sudo mkdir -p /var/lib/server-dash/build && sudo cp -r .next/standalone/. /var/lib/server-dash/build/ && sudo mkdir -p /var/lib/server-dash/build/.next && sudo cp -r .next/static /var/lib/server-dash/build/.next/static && sudo cp -r public /var/lib/server-dash/build/public && sudo chown -R server-dash:server-dash /var/lib/server-dash/build && sudo systemctl restart server-dash" + }, + "dependencies": { + "next": "16.2.1", + "react": "19.2.4", + "react-dom": "19.2.4", + "react-icons": "^5.6.0" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.1", + "tailwindcss": "^4", + "typescript": "^5" + } }