lesavka/scripts/install-client.sh

55 lines
1.4 KiB
Bash
Raw Normal View History

2025-06-01 13:31:22 -05:00
#!/usr/bin/env bash
2025-06-15 11:15:52 -05:00
# install-client.sh - install and setup all client related apps and environments
2025-06-01 13:31:22 -05:00
set -euo pipefail
2025-06-01 14:18:42 -05:00
2025-06-01 21:59:43 -05:00
ORIG_USER=${SUDO_USER:-$(id -un)}
2025-06-01 21:58:47 -05:00
# 1. packages (Arch)
sudo pacman -Syq --needed --noconfirm git rustup protobuf gcc evtest
2025-06-01 13:31:22 -05:00
2025-06-01 21:58:47 -05:00
# 2. Rust tool-chain for both root & user
sudo rustup default stable
2025-06-01 21:59:43 -05:00
sudo -u "$ORIG_USER" rustup default stable
2025-06-01 21:58:47 -05:00
# 3. clone / update into a user-writable dir
SRC="$HOME/.local/src/navka"
if [[ -d $SRC/.git ]]; then
2025-06-01 21:59:43 -05:00
sudo -u "$ORIG_USER" git -C "$SRC" pull --ff-only
2025-06-01 14:18:42 -05:00
else
2025-06-01 21:59:43 -05:00
sudo -u "$ORIG_USER" git clone "$PWD" "$SRC"
2025-06-01 14:18:42 -05:00
fi
2025-06-01 21:58:47 -05:00
# 4. build
2025-06-17 08:17:23 -05:00
sudo -u "$ORIG_USER" bash -c "cd '$SRC/client' && cargo clean && cargo build --release"
2025-06-01 21:58:47 -05:00
# 5. install binary
2025-06-08 15:03:10 -05:00
sudo install -Dm755 "$SRC/client/target/release/navka-client" /usr/local/bin/navka-client
2025-06-01 14:18:42 -05:00
2025-06-08 15:03:10 -05:00
# 6. systemd service for system scope: /etc/systemd/system/navka-client.service
sudo tee /etc/systemd/system/navka-client.service >/dev/null <<'EOF'
2025-06-01 13:31:22 -05:00
[Unit]
2025-06-08 14:24:15 -05:00
Description=Navka Client
2025-06-01 21:58:47 -05:00
After=network-online.target
Wants=network-online.target
2025-06-01 14:18:42 -05:00
2025-06-01 13:31:22 -05:00
[Service]
2025-06-08 13:35:23 -05:00
Type=simple
2025-06-08 14:24:15 -05:00
User=root
Group=root
2025-06-08 15:03:10 -05:00
2025-06-08 12:47:11 -05:00
Environment=RUST_LOG=debug
Environment=NAVKA_DEV_MODE=1
Environment=NAVKA_SERVER_ADDR=http://64.25.10.31:50051
2025-06-08 15:03:10 -05:00
ExecStart=/usr/local/bin/navka-client
2025-06-08 13:35:23 -05:00
Restart=no
2025-06-01 14:18:42 -05:00
2025-06-01 13:31:22 -05:00
[Install]
WantedBy=default.target
EOF
2025-06-08 15:03:10 -05:00
# 7. Call the *user* instance inside the callers session
2025-06-08 14:40:15 -05:00
sudo systemctl daemon-reload
sudo systemctl enable --now navka-client.service
2025-06-08 15:03:10 -05:00
sudo systemctl restart navka-client || true