Bash · 2327 bytes Raw Blame History
1 #!/bin/bash
2 # gardm installation script
3 # Installs gardm (gar display manager) system-wide
4
5 set -e
6
7 # Colors for output
8 RED='\033[0;31m'
9 GREEN='\033[0;32m'
10 YELLOW='\033[1;33m'
11 NC='\033[0m' # No Color
12
13 log_info() {
14 echo -e "${GREEN}[INFO]${NC} $1"
15 }
16
17 log_warn() {
18 echo -e "${YELLOW}[WARN]${NC} $1"
19 }
20
21 log_error() {
22 echo -e "${RED}[ERROR]${NC} $1"
23 }
24
25 # Check if running as root
26 if [ "$EUID" -ne 0 ]; then
27 log_error "Please run as root (sudo ./install.sh)"
28 exit 1
29 fi
30
31 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
32 PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
33
34 log_info "Installing gardm from $PROJECT_DIR"
35
36 # Build release binaries
37 log_info "Building release binaries..."
38 cd "$PROJECT_DIR"
39 cargo build --release -p gardmd -p gardm-greeter
40
41 # Install binaries
42 log_info "Installing binaries to /usr/bin..."
43 install -Dm755 target/release/gardmd /usr/bin/gardmd
44 install -Dm755 target/release/gardm-greeter /usr/bin/gardm-greeter
45
46 # Create config directories
47 log_info "Creating configuration directories..."
48 mkdir -p /etc/gardm
49 mkdir -p /usr/share/gardm/backgrounds
50
51 # Install PAM configuration
52 log_info "Installing PAM configuration..."
53 install -Dm644 etc/pam.d/gardm /etc/pam.d/gardm
54
55 # Install systemd service
56 log_info "Installing systemd service..."
57 install -Dm644 etc/gardm.service /usr/lib/systemd/system/gardm.service
58
59 # Install default config if not exists
60 if [ ! -f /etc/gardm/config.toml ]; then
61 log_info "Installing default configuration..."
62 install -Dm644 etc/config.toml /etc/gardm/config.toml
63 else
64 log_warn "/etc/gardm/config.toml already exists, not overwriting"
65 fi
66
67 # Create sysconfig file (empty, for environment overrides)
68 if [ ! -f /etc/sysconfig/gardm ]; then
69 echo "# Environment variables for gardm" > /etc/sysconfig/gardm
70 chmod 644 /etc/sysconfig/gardm
71 fi
72
73 # Reload systemd
74 log_info "Reloading systemd daemon..."
75 systemctl daemon-reload
76
77 log_info "Installation complete!"
78 echo ""
79 echo "To enable gardm as your display manager:"
80 echo " 1. First, TEST gardm (see scripts/test-gardm.sh)"
81 echo " 2. Then disable your current display manager:"
82 echo " sudo systemctl disable sddm # or gdm, lightdm, etc."
83 echo " 3. Enable gardm:"
84 echo " sudo systemctl enable gardm"
85 echo " 4. Reboot"
86 echo ""
87 log_warn "ALWAYS keep a terminal/tty login available as fallback!"