Skip to content

Installation

Installation

This guide covers installation methods for sysc-greet across different Linux distributions.

Quick Install Script

One-line install for most systems:

curl -fsSL https://raw.githubusercontent.com/Nomadcxx/sysc-greet/master/install.sh | sudo bash

The interactive installer will prompt you to: 1. Choose your greeter backend (niri default, cagebreak, sway, or hyprland deprecated) 2. Configure backend settings 3. Install dependencies automatically

Hyprland greeter support ends in ~3 months. Migrate to cagebreak or niri.

Manual Build

Prerequisites

  • Go 1.25+
  • greetd
  • Wayland backend: niri (default), cagebreak, sway, or hyprland (deprecated)
  • kitty (terminal emulator)
  • gSlapper (wallpaper daemon)
  • swww (legacy wallpaper daemon, optional fallback)

Build Steps

git clone https://github.com/Nomadcxx/sysc-greet
cd sysc-greet
go build -o sysc-greet ./cmd/sysc-greet/
sudo install -Dm755 sysc-greet /usr/local/bin/sysc-greet

Run Installer

The installer handles compositor configuration automatically:

go run ./cmd/installer/

Arch Linux (AUR)

sysc-greet provides four AUR packages, one per greeter backend:

# niri (default)
yay -S sysc-greet

# Cagebreak variant (the Hyprland replacement)
yay -S sysc-greet-cagebreak

# Sway variant
yay -S sysc-greet-sway

# Hyprland variant (deprecated, replaced by cagebreak)
yay -S sysc-greet-hyprland

The packages conflict with each other — install exactly one. Each pulls in its compositor as a dependency; sysc-greet-cagebreak also pulls in socat, which is required to quit the compositor after login.

Pre-built Packages

Download pre-built packages from GitHub Releases:

Debian/Ubuntu (.deb)

wget https://github.com/Nomadcxx/sysc-greet/releases/download/v1.1.8/sysc-greet_1.1.8_amd64.deb
sudo apt install ./sysc-greet_1.1.8_amd64.deb

The package will: 1. Install sysc-greet to /usr/local/bin/ 2. Install configs to /usr/share/sysc-greet/ 3. Detect your compositor and configure greetd 4. Enable the greetd service

Note: Package configs use conservative syntax compatible with stable distribution versions. For bleeding-edge compositor features, use the install script or AUR instead.

Fedora (.rpm)

wget https://github.com/Nomadcxx/sysc-greet/releases/download/v1.1.8/sysc-greet-1.1.8-1.x86_64.rpm
sudo dnf install ./sysc-greet-1.1.8-1.x86_64.rpm

After installation, reboot your system to see sysc-greet.

The releases page also carries cagebreak .deb/.rpm packages (Debian 13, Ubuntu 24.04/25.x, Fedora 42) since no distro packages exist — see Cagebreak Setup.

Switching Compositors

The package auto-detects your compositor during installation. If you have multiple compositors installed or want to switch to a different one, edit /etc/greetd/config.toml:

sudo nano /etc/greetd/config.toml

Change the command line to your preferred compositor:

Niri:

[default_session]
command = "niri -c /etc/greetd/niri-greeter-config.kdl"
user = "greeter"

Cagebreak:

[default_session]
command = "cagebreak -e -c /etc/greetd/cagebreak-greeter-config"
user = "greeter"

-e enables cagebreak's IPC socket, which the greeter config uses to quit the compositor after login — socat must be installed. See Cagebreak Setup.

Sway:

[default_session]
command = "sway -c /etc/greetd/sway-greeter-config"
user = "greeter"

Hyprland (deprecated):

[default_session]
command = "Hyprland -c /etc/greetd/hyprland-greeter-config.conf"
user = "greeter"

All compositor configs are installed at /etc/greetd/. Save the file and reboot to apply the change.

NixOS (Flake)

Add to flake.nix

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    sysc-greet = {
      url = "github:Nomadcxx/sysc-greet";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, sysc-greet, ... }: {
    nixosConfigurations.your-hostname = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        ./configuration.nix
        sysc-greet.nixosModules.default
      ];
    };
  };
}

Add to configuration.nix

{
  services.sysc-greet = {
    enable = true;
    compositor = "niri";  # or "cagebreak", "sway", "hyprland" (deprecated)
  };

  # Optional: Set initial session for auto-login
  services.sysc-greet.settings.initial_session = {
    command = "Hyprland";
    user = "your-username";
  };
}

By default, the NixOS module does not install niri, cagebreak, hyprland, or sway. Install your chosen backend yourself, or set niriPackage, cagebreakPackage, hyprlandPackage, or swayPackage if you want the module to install and use a specific package. If your compositor is managed elsewhere, set compositorCommand to the exact command greetd should run.

Rebuild System

sudo nixos-rebuild switch --flake .#your-hostname

Post-Installation Setup

Configure greetd

Edit /etc/greetd/config.toml:

[terminal]
vt = 1

[default_session]
# Choose your compositor:
command = "niri -c /etc/greetd/niri-greeter-config.kdl"
# command = "cagebreak -e -c /etc/greetd/cagebreak-greeter-config"
# command = "sway --unsupported-gpu -c /etc/greetd/sway-greeter-config"
# command = "start-hyprland -- -c /etc/greetd/hyprland-greeter-config.conf"
user = "greeter"

Install Compositor Config

Copy the appropriate config to /etc/greetd/:

# niri
sudo cp config/niri-greeter-config.kdl /etc/greetd/

# cagebreak
sudo cp config/cagebreak-greeter-config /etc/greetd/

# sway
sudo cp config/sway-greeter-config /etc/greetd/

# hyprland (deprecated)
sudo cp config/hyprland-greeter-config.conf /etc/greetd/

Create Greeter User

sudo useradd -M -d /var/lib/greeter -G video,render,input -s /usr/bin/nologin greeter
sudo mkdir -p /var/cache/sysc-greet /var/lib/greeter/Pictures/wallpapers \
    /var/lib/greeter/.cache /var/lib/greeter/.config /var/lib/greeter/.local/state
sudo chown -R greeter:greeter /var/cache/sysc-greet /var/lib/greeter
sudo chmod 755 /var/lib/greeter

Enable Service

sudo systemctl enable greetd.service

Verification

After installation, test the greeter:

sysc-greet --test

For fullscreen testing:

kitty --start-as=fullscreen sysc-greet --test

Uninstall

Quick Install Script / Manual Build

Re-run the installer and select Uninstall sysc-greet:

curl -fsSL https://raw.githubusercontent.com/Nomadcxx/sysc-greet/master/install.sh | sudo bash

The uninstaller removes: - /usr/local/bin/sysc-greet — binary - /usr/share/sysc-greet/ — ASCII configs, wallpapers, data files - /etc/greetd/kitty.conf and compositor config files - /var/cache/sysc-greet/ — saved preferences (optional step)

The greeter user and /var/lib/greeter/ are intentionally preserved.

Pre-built Packages

Debian/Ubuntu:

sudo apt remove sysc-greet

Fedora:

sudo dnf remove sysc-greet

Arch Linux (AUR)

yay -R sysc-greet
# replace with sysc-greet-cagebreak, sysc-greet-sway, or sysc-greet-hyprland if applicable

NixOS

Remove the sysc-greet module from configuration.nix and rebuild:

sudo nixos-rebuild switch --flake .#your-hostname

After Uninstalling

To stop greetd from failing on next boot:

sudo systemctl disable greetd.service

Troubleshooting

IPC Client Error

If you see FATAL: Failed to create IPC client, check that: 1. You are not setting GREETD_SOCK environment variable manually 2. greetd is actually running and has created the socket 3. You are running sysc-greet through greetd (not directly in terminal)

Compositor Not Starting

Check compositor logs:

journalctl -u greetd -n 50

Greeter Not Appearing

Verify: 1. greetd service is enabled and running: systemctl status greetd 2. compositor config exists in /etc/greetd/ 3. greeter user has proper permissions

For more help, see Troubleshooting Guide.