v1.1.1
Citizen Launcher CI / verify (push) Failing after 1m18s
Citizen Launcher CI / arch-package (push) Failing after 1m19s
Citizen Launcher CI / rpm-package (push) Failing after 1m21s

This commit is contained in:
2026-09-01 19:50:44 +02:00
parent 9bcd84587e
commit 4a48f9b8c5
46 changed files with 2023 additions and 389 deletions
+23 -30
View File
@@ -1,40 +1,33 @@
# Automatic launcher updates
# Automatic Citizen Launcher updates
## Debian / Ubuntu / Mint
Native mutable packages install `citizen-launcher-self-update.timer`. It checks after boot and roughly every six hours.
The `.deb` installs a root systemd timer:
The release source is read from `/etc/citizen-launcher/release-repo`. Supported formats are:
- `citizen-launcher-self-update.timer`
- checks on boot and every six hours
- reads the latest GitHub Release from the configured repository
- accepts only a newer `citizen-launcher_<version>_amd64.deb`
- requires GitHub's `sha256:` release asset digest
- verifies the downloaded package name, version, and architecture with `dpkg-deb`
- installs via `apt-get` with the dpkg lock timeout enabled
- `github:owner/repository` (legacy `owner/repository` is also accepted)
- `gitea:https://gitea.example/api/v1/repos/owner/repository`
The release repository is stored in:
For privileged system updates, Gitea sources intentionally require HTTPS and the root-owned config file must not be group/world writable. Gitea workflow builds inject their own `${{ gitea.api_url }}` and repository automatically.
```text
/etc/citizen-launcher/release-repo
```
Every privileged update follows the same fail-closed chain:
Default for this project:
1. read and validate the trusted release source;
2. resolve the newest stable release;
3. select only the package format matching the installed package database;
4. require SHA-256 metadata (GitHub API digest or the Gitea release `SHA256SUMS.txt`);
5. download to `/var/cache/citizen-launcher`;
6. verify SHA-256;
7. inspect package name, upstream version and x86-64 architecture;
8. install through the native package database;
9. verify that the installed version actually advanced.
```text
sendnwv/omarchy-sc
```
Native modes:
A package update does not forcibly terminate a running GUI. The existing GUI detects
that `/usr/bin/citizen-launcher` is newer and offers **Launcher neu starten**.
- Debian/Ubuntu/Mint: `.deb` → APT
- Fedora/openSUSE/RHEL family: `.rpm` → RPM database
- Arch family: `.pkg.tar.zst` → pacman
- generic `~/.local`: verified tarball → atomic user-binary replacement
## Generic user install
Immutable OSTree/transactional/SteamOS-style base systems are never modified by the automatic system updater. Their host image owns `/usr`; user-mode Citizen Launcher remains self-updateable.
The Autopilot user timer checks GitHub releases. For a `~/.local` installation it
can replace the launcher binary atomically from the verified Linux tarball without
root privileges.
## Release publishing
`.github/workflows/release.yml` builds and publishes the `.deb`, generic tarball and
SHA256SUMS whenever a `v<VERSION>` tag is pushed. GitHub computes an immutable asset
digest that the Debian self-updater verifies before installation.
An update never forcibly kills the running GUI. The old process detects that the on-disk/package version is newer and offers a controlled restart.
+40
View File
@@ -0,0 +1,40 @@
pkgname=citizen-launcher
pkgver=@VERSION@
pkgrel=1
pkgdesc='Star Citizen setup, launcher and self-maintaining gaming stack for Linux'
arch=('x86_64')
url='https://github.com/sendnwv/omarchy-sc'
license=('MIT')
depends=('ca-certificates' 'tar' 'curl' 'unzip' 'xz' 'zstd' 'polkit' 'util-linux')
optdepends=('pciutils: detailed GPU diagnostics'
'vulkan-tools: detailed Vulkan diagnostics'
'cabextract: use the distro cabextract instead of the portable fallback'
'xdg-utils: additional desktop/browser integration')
options=('!strip')
install='citizen-launcher.install'
source=('citizen-launcher'
'io.github.citizenlauncher.CitizenLauncher.desktop'
'citizen-launcher.svg'
'io.github.citizenlauncher.CitizenLauncher.metainfo.xml'
'citizen-launcher-self-update.service'
'citizen-launcher-self-update.timer'
'citizen-launcher-migrate.desktop'
'90-citizen-launcher.conf'
'90-citizen-launcher-limits.conf'
'release-repo'
'LICENSE')
sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP')
package() {
install -Dm755 "$srcdir/citizen-launcher" "$pkgdir/usr/bin/citizen-launcher"
install -Dm644 "$srcdir/io.github.citizenlauncher.CitizenLauncher.desktop" "$pkgdir/usr/share/applications/io.github.citizenlauncher.CitizenLauncher.desktop"
install -Dm644 "$srcdir/citizen-launcher.svg" "$pkgdir/usr/share/icons/hicolor/scalable/apps/citizen-launcher.svg"
install -Dm644 "$srcdir/io.github.citizenlauncher.CitizenLauncher.metainfo.xml" "$pkgdir/usr/share/metainfo/io.github.citizenlauncher.CitizenLauncher.metainfo.xml"
install -Dm644 "$srcdir/citizen-launcher-self-update.service" "$pkgdir/usr/lib/systemd/system/citizen-launcher-self-update.service"
install -Dm644 "$srcdir/citizen-launcher-self-update.timer" "$pkgdir/usr/lib/systemd/system/citizen-launcher-self-update.timer"
install -Dm644 "$srcdir/citizen-launcher-migrate.desktop" "$pkgdir/etc/xdg/autostart/citizen-launcher-migrate.desktop"
install -Dm644 "$srcdir/90-citizen-launcher.conf" "$pkgdir/usr/lib/sysctl.d/90-citizen-launcher.conf"
install -Dm644 "$srcdir/90-citizen-launcher-limits.conf" "$pkgdir/etc/security/limits.d/90-citizen-launcher.conf"
install -Dm644 "$srcdir/release-repo" "$pkgdir/etc/citizen-launcher/release-repo"
install -Dm644 "$srcdir/LICENSE" "$pkgdir/usr/share/licenses/citizen-launcher/LICENSE"
}
+16
View File
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
"$ROOT/build.sh"
"$ROOT/packaging/build-deb.sh"
"$ROOT/packaging/build-tarball.sh"
if command -v rpmbuild >/dev/null 2>&1; then
"$ROOT/packaging/build-rpm.sh"
else
echo "Hinweis: rpmbuild fehlt – RPM wird in Fedora/openSUSE CI gebaut." >&2
fi
if command -v makepkg >/dev/null 2>&1 && [[ $EUID -ne 0 ]]; then
"$ROOT/packaging/build-arch.sh"
else
echo "Hinweis: makepkg fehlt/Root – Arch-Paket wird in Arch CI gebaut." >&2
fi
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
VERSION="$(tr -d '[:space:]' < "$ROOT/VERSION")"
command -v makepkg >/dev/null 2>&1 || { echo "makepkg fehlt. Unter Arch: sudo pacman -S --needed base-devel" >&2; exit 2; }
[[ "$(id -u)" -ne 0 ]] || { echo "makepkg darf nicht als root laufen" >&2; exit 2; }
[[ -x "$ROOT/backend/bin/citizen-launcher" ]] || { echo "Backend fehlt: zuerst ./build.sh" >&2; exit 1; }
WORK="$(mktemp -d)"
trap 'rm -rf "$WORK"' EXIT
sed "s/@VERSION@/$VERSION/g" "$ROOT/packaging/arch/PKGBUILD.in" > "$WORK/PKGBUILD"
install -m755 "$ROOT/backend/bin/citizen-launcher" "$WORK/citizen-launcher"
install -m644 "$ROOT/packaging/common/io.github.citizenlauncher.CitizenLauncher.desktop" "$WORK/io.github.citizenlauncher.CitizenLauncher.desktop"
install -m644 "$ROOT/packaging/icons/citizen-launcher.svg" "$WORK/citizen-launcher.svg"
install -m644 "$ROOT/packaging/metainfo/io.github.citizenlauncher.CitizenLauncher.metainfo.xml" "$WORK/io.github.citizenlauncher.CitizenLauncher.metainfo.xml"
install -m644 "$ROOT/packaging/systemd/citizen-launcher-self-update.service" "$WORK/citizen-launcher-self-update.service"
install -m644 "$ROOT/packaging/systemd/citizen-launcher-self-update.timer" "$WORK/citizen-launcher-self-update.timer"
install -m644 "$ROOT/packaging/citizen-launcher-migrate.desktop" "$WORK/citizen-launcher-migrate.desktop"
install -m644 "$ROOT/packaging/common/90-citizen-launcher.conf" "$WORK/90-citizen-launcher.conf"
install -m644 "$ROOT/packaging/common/90-citizen-launcher-limits.conf" "$WORK/90-citizen-launcher-limits.conf"
if [[ -n "${CITIZEN_LAUNCHER_RELEASE_REPO:-}" ]]; then
printf '%s\n' "$CITIZEN_LAUNCHER_RELEASE_REPO" > "$WORK/release-repo"
else
install -m644 "$ROOT/packaging/common/release-repo" "$WORK/release-repo"
fi
install -m644 "$ROOT/LICENSE" "$WORK/LICENSE"
install -m644 "$ROOT/packaging/common/citizen-launcher.package-install" "$WORK/citizen-launcher.install"
(
cd "$WORK"
PKGDEST="$ROOT/dist" makepkg --cleanbuild --clean --force --nodeps --noconfirm
)
PKG="$ROOT/dist/citizen-launcher-${VERSION}-1-x86_64.pkg.tar.zst"
[[ -s "$PKG" ]] || { echo "Arch-Paket wurde nicht erzeugt: $PKG" >&2; exit 1; }
echo "$PKG"
+9 -18
View File
@@ -24,9 +24,13 @@ install -m644 "$ROOT/packaging/systemd/citizen-launcher-self-update.timer" "$PKG
install -m644 "$ROOT/packaging/icons/citizen-launcher.svg" "$PKG/usr/share/icons/hicolor/scalable/apps/citizen-launcher.svg"
install -m644 "$ROOT/packaging/metainfo/io.github.citizenlauncher.CitizenLauncher.metainfo.xml" "$PKG/usr/share/metainfo/io.github.citizenlauncher.CitizenLauncher.metainfo.xml"
install -m644 "$ROOT/packaging/citizen-launcher-migrate.desktop" "$PKG/etc/xdg/autostart/citizen-launcher-migrate.desktop"
printf '%s\n' "${CITIZEN_LAUNCHER_RELEASE_REPO:-sendnwv/omarchy-sc}" > "$PKG/etc/citizen-launcher/release-repo"
printf '%s\n' '# Citizen Launcher / Star Citizen' 'vm.max_map_count = 16777216' > "$PKG/usr/lib/sysctl.d/90-citizen-launcher.conf"
printf '%s\n' '# Citizen Launcher / Star Citizen' '* soft nofile 524288' '* hard nofile 524288' > "$PKG/etc/security/limits.d/90-citizen-launcher.conf"
if [[ -n "${CITIZEN_LAUNCHER_RELEASE_REPO:-}" ]]; then
printf '%s\n' "$CITIZEN_LAUNCHER_RELEASE_REPO" > "$PKG/etc/citizen-launcher/release-repo"
else
install -m644 "$ROOT/packaging/common/release-repo" "$PKG/etc/citizen-launcher/release-repo"
fi
install -m644 "$ROOT/packaging/common/90-citizen-launcher.conf" "$PKG/usr/lib/sysctl.d/90-citizen-launcher.conf"
install -m644 "$ROOT/packaging/common/90-citizen-launcher-limits.conf" "$PKG/etc/security/limits.d/90-citizen-launcher.conf"
install -m755 "$ROOT/packaging/postinst" "$PKG/DEBIAN/postinst"
install -m755 "$ROOT/packaging/prerm" "$PKG/DEBIAN/prerm"
install -m755 "$ROOT/packaging/postrm" "$PKG/DEBIAN/postrm"
@@ -38,27 +42,14 @@ Section: games
Priority: optional
Architecture: $ARCH
Maintainer: Citizen Launcher Project
Depends: ca-certificates, tar, xdg-utils, curl, cabextract, unzip, xz-utils, apt, procps, util-linux, pkexec
Depends: ca-certificates, tar, xdg-utils, curl, cabextract, unzip, xz-utils, zstd, apt, procps, util-linux, pkexec
Recommends: pciutils, vulkan-tools
Description: Star Citizen setup, launcher and self-maintaining gaming stack for Linux
Citizen Launcher manages Wine, DXVK, the RSI Launcher, automatic maintenance,
desktop integration and privacy-conscious support diagnostics.
EOF2
cat > "$PKG/usr/share/applications/io.github.citizenlauncher.CitizenLauncher.desktop" <<'EOF2'
[Desktop Entry]
Name=Citizen Launcher
Comment=Star Citizen for Linux
Exec=/usr/bin/citizen-launcher gui
TryExec=/usr/bin/citizen-launcher
Icon=citizen-launcher
Terminal=false
Type=Application
Categories=Game;
StartupNotify=true
StartupWMClass=CitizenLauncher
Keywords=Star Citizen;RSI;Wine;Gaming;
EOF2
install -m644 "$ROOT/packaging/common/io.github.citizenlauncher.CitizenLauncher.desktop" "$PKG/usr/share/applications/io.github.citizenlauncher.CitizenLauncher.desktop"
mkdir -p "$ROOT/dist"
dpkg-deb --build --root-owner-group "$PKG" "$ROOT/dist/citizen-launcher_${VERSION}_${ARCH}.deb"
+38
View File
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
VERSION="$(tr -d '[:space:]' < "$ROOT/VERSION")"
command -v rpmbuild >/dev/null 2>&1 || { echo "rpmbuild fehlt. Unter Fedora: sudo dnf install rpm-build" >&2; exit 2; }
[[ -x "$ROOT/backend/bin/citizen-launcher" ]] || { echo "Backend fehlt: zuerst ./build.sh" >&2; exit 1; }
WORK="$(mktemp -d)"
trap 'rm -rf "$WORK"' EXIT
TOP="$WORK/rpmbuild"
mkdir -p "$TOP"/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
install -m755 "$ROOT/backend/bin/citizen-launcher" "$TOP/SOURCES/citizen-launcher"
install -m644 "$ROOT/packaging/common/io.github.citizenlauncher.CitizenLauncher.desktop" "$TOP/SOURCES/io.github.citizenlauncher.CitizenLauncher.desktop"
install -m644 "$ROOT/packaging/icons/citizen-launcher.svg" "$TOP/SOURCES/citizen-launcher.svg"
install -m644 "$ROOT/packaging/metainfo/io.github.citizenlauncher.CitizenLauncher.metainfo.xml" "$TOP/SOURCES/io.github.citizenlauncher.CitizenLauncher.metainfo.xml"
install -m644 "$ROOT/packaging/systemd/citizen-launcher-self-update.service" "$TOP/SOURCES/citizen-launcher-self-update.service"
install -m644 "$ROOT/packaging/systemd/citizen-launcher-self-update.timer" "$TOP/SOURCES/citizen-launcher-self-update.timer"
install -m644 "$ROOT/packaging/citizen-launcher-migrate.desktop" "$TOP/SOURCES/citizen-launcher-migrate.desktop"
install -m644 "$ROOT/packaging/common/90-citizen-launcher.conf" "$TOP/SOURCES/90-citizen-launcher.conf"
install -m644 "$ROOT/packaging/common/90-citizen-launcher-limits.conf" "$TOP/SOURCES/90-citizen-launcher-limits.conf"
if [[ -n "${CITIZEN_LAUNCHER_RELEASE_REPO:-}" ]]; then
printf '%s\n' "$CITIZEN_LAUNCHER_RELEASE_REPO" > "$TOP/SOURCES/release-repo"
else
install -m644 "$ROOT/packaging/common/release-repo" "$TOP/SOURCES/release-repo"
fi
install -m644 "$ROOT/LICENSE" "$TOP/SOURCES/LICENSE"
install -m644 "$ROOT/packaging/rpm/citizen-launcher.spec" "$TOP/SPECS/citizen-launcher.spec"
rpmbuild -bb \
--define "_topdir $TOP" \
--define "cl_version $VERSION" \
--define "_unitdir /usr/lib/systemd/system" \
"$TOP/SPECS/citizen-launcher.spec"
mkdir -p "$ROOT/dist"
RPM="$(find "$TOP/RPMS" -type f -name 'citizen-launcher-*.x86_64.rpm' -print -quit)"
[[ -n "$RPM" ]] || { echo "RPM wurde nicht erzeugt" >&2; exit 1; }
# Normalize the release asset name across Fedora/openSUSE so the secure updater
# has one deterministic RPM target.
cp -f "$RPM" "$ROOT/dist/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
echo "$ROOT/dist/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
+101 -10
View File
@@ -1,17 +1,108 @@
Name: citizen-launcher
Version: 1.0.1
Release: 1%{?dist}
Summary: Star Citizen launcher and self-maintaining Wine stack for Linux
License: MIT
BuildArch: x86_64
Requires: ca-certificates, tar, xdg-utils
Name: citizen-launcher
Version: %{cl_version}
Release: 1
Summary: Star Citizen setup, launcher and self-maintaining gaming stack for Linux
License: MIT
URL: https://github.com/sendnwv/omarchy-sc
BuildArch: x86_64
AutoReqProv: no
Requires: ca-certificates
Requires: tar
Requires: curl
Requires: unzip
Requires: xz
Requires: polkit
Requires: util-linux
Recommends: zstd
Recommends: pciutils
Recommends: vulkan-tools
Recommends: cabextract
Recommends: xdg-utils
Source0: citizen-launcher
Source1: io.github.citizenlauncher.CitizenLauncher.desktop
Source2: citizen-launcher.svg
Source3: io.github.citizenlauncher.CitizenLauncher.metainfo.xml
Source4: citizen-launcher-self-update.service
Source5: citizen-launcher-self-update.timer
Source6: citizen-launcher-migrate.desktop
Source7: 90-citizen-launcher.conf
Source8: 90-citizen-launcher-limits.conf
Source9: release-repo
%description
Distro-neutral Citizen Launcher with Wine, DXVK, RSI Launcher management and local GUI.
Citizen Launcher manages a locally tested Wine runner, DXVK, RSI Launcher
compatibility, automatic maintenance, desktop integration and support
diagnostics for Star Citizen on Linux.
%prep
%build
%install
mkdir -p %{buildroot}%{_bindir}
install -m755 citizen-launcher %{buildroot}%{_bindir}/citizen-launcher
install -d %{buildroot}%{_bindir}
install -d %{buildroot}%{_datadir}/applications
install -d %{buildroot}%{_datadir}/icons/hicolor/scalable/apps
install -d %{buildroot}%{_datadir}/metainfo
install -d %{buildroot}%{_unitdir}
install -d %{buildroot}%{_prefix}/lib/sysctl.d
install -d %{buildroot}%{_sysconfdir}/security/limits.d
install -d %{buildroot}%{_sysconfdir}/xdg/autostart
install -d %{buildroot}%{_sysconfdir}/citizen-launcher
install -d %{buildroot}%{_licensedir}/%{name}
install -m755 %{SOURCE0} %{buildroot}%{_bindir}/citizen-launcher
install -m644 %{SOURCE1} %{buildroot}%{_datadir}/applications/io.github.citizenlauncher.CitizenLauncher.desktop
install -m644 %{SOURCE2} %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/citizen-launcher.svg
install -m644 %{SOURCE3} %{buildroot}%{_datadir}/metainfo/io.github.citizenlauncher.CitizenLauncher.metainfo.xml
install -m644 %{SOURCE4} %{buildroot}%{_unitdir}/citizen-launcher-self-update.service
install -m644 %{SOURCE5} %{buildroot}%{_unitdir}/citizen-launcher-self-update.timer
install -m644 %{SOURCE6} %{buildroot}%{_sysconfdir}/xdg/autostart/citizen-launcher-migrate.desktop
install -m644 %{SOURCE7} %{buildroot}%{_prefix}/lib/sysctl.d/90-citizen-launcher.conf
install -m644 %{SOURCE8} %{buildroot}%{_sysconfdir}/security/limits.d/90-citizen-launcher.conf
install -m644 %{SOURCE9} %{buildroot}%{_sysconfdir}/citizen-launcher/release-repo
install -m644 %{_sourcedir}/LICENSE %{buildroot}%{_licensedir}/%{name}/LICENSE
%post
if command -v sysctl >/dev/null 2>&1; then
sysctl -q -w vm.max_map_count=16777216 >/dev/null 2>&1 || true
fi
if command -v systemctl >/dev/null 2>&1; then
systemctl daemon-reload >/dev/null 2>&1 || true
immutable=0
[ -e /run/ostree-booted ] && immutable=1
[ -e /run/transactional-update ] && immutable=1
if [ "$immutable" -eq 0 ]; then
systemctl enable --now citizen-launcher-self-update.timer >/dev/null 2>&1 || true
fi
fi
if command -v update-desktop-database >/dev/null 2>&1; then
update-desktop-database %{_datadir}/applications >/dev/null 2>&1 || true
fi
%preun
if [ "$1" -eq 0 ] && command -v systemctl >/dev/null 2>&1; then
systemctl disable --now citizen-launcher-self-update.timer >/dev/null 2>&1 || true
fi
%postun
if command -v systemctl >/dev/null 2>&1; then
systemctl daemon-reload >/dev/null 2>&1 || true
fi
%files
%license %{_licensedir}/%{name}/LICENSE
%{_bindir}/citizen-launcher
%{_datadir}/applications/io.github.citizenlauncher.CitizenLauncher.desktop
%{_datadir}/icons/hicolor/scalable/apps/citizen-launcher.svg
%{_datadir}/metainfo/io.github.citizenlauncher.CitizenLauncher.metainfo.xml
%{_unitdir}/citizen-launcher-self-update.service
%{_unitdir}/citizen-launcher-self-update.timer
%{_prefix}/lib/sysctl.d/90-citizen-launcher.conf
%{_sysconfdir}/security/limits.d/90-citizen-launcher.conf
%{_sysconfdir}/xdg/autostart/citizen-launcher-migrate.desktop
%config(noreplace) %{_sysconfdir}/citizen-launcher/release-repo
%changelog
* Tue Sep 01 2026 Citizen Launcher Project - 1.1.1-1
- Multi-distribution native package support
@@ -0,0 +1,3 @@
# Citizen Launcher / Star Citizen
* soft nofile 524288
* hard nofile 524288
@@ -0,0 +1,2 @@
# Citizen Launcher / Star Citizen
vm.max_map_count = 16777216
@@ -0,0 +1,27 @@
_is_immutable_host() {
[ -e /run/ostree-booted ] && return 0
[ -e /run/transactional-update ] && return 0
[ -r /etc/os-release ] && grep -Eq '^ID="?(steamos|opensuse-microos|aeon|kalpa)"?$' /etc/os-release && return 0
return 1
}
post_install() {
systemctl daemon-reload >/dev/null 2>&1 || true
if ! _is_immutable_host; then
systemctl enable --now citizen-launcher-self-update.timer >/dev/null 2>&1 || true
fi
sysctl -q -w vm.max_map_count=16777216 >/dev/null 2>&1 || true
command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database /usr/share/applications >/dev/null 2>&1 || true
}
post_upgrade() {
post_install
}
pre_remove() {
systemctl disable --now citizen-launcher-self-update.timer >/dev/null 2>&1 || true
}
post_remove() {
systemctl daemon-reload >/dev/null 2>&1 || true
}
@@ -0,0 +1,12 @@
[Desktop Entry]
Name=Citizen Launcher
Comment=Star Citizen for Linux
Exec=/usr/bin/citizen-launcher gui
TryExec=/usr/bin/citizen-launcher
Icon=citizen-launcher
Terminal=false
Type=Application
Categories=Game;
StartupNotify=true
StartupWMClass=CitizenLauncher
Keywords=Star Citizen;RSI;Wine;Gaming;
+1
View File
@@ -0,0 +1 @@
github:sendnwv/omarchy-sc
@@ -13,6 +13,6 @@
<url type="homepage">https://github.com/sendnwv/omarchy-sc</url>
<categories><category>Game</category></categories>
<provides><binary>citizen-launcher</binary></provides>
<releases><release version="1.0.1" date="2026-08-31"/><release version="1.0.0" date="2026-08-31"/></releases>
<releases><release version="1.1.1" date="2026-09-01"/><release version="1.0.1" date="2026-08-31"/><release version="1.0.0" date="2026-08-31"/></releases>
<content_rating type="oars-1.1"/>
</component>
+108
View File
@@ -0,0 +1,108 @@
Name: citizen-launcher
Version: %{cl_version}
Release: 1
Summary: Star Citizen setup, launcher and self-maintaining gaming stack for Linux
License: MIT
URL: https://github.com/sendnwv/omarchy-sc
BuildArch: x86_64
AutoReqProv: no
Requires: ca-certificates
Requires: tar
Requires: curl
Requires: unzip
Requires: xz
Requires: polkit
Requires: util-linux
Recommends: zstd
Recommends: pciutils
Recommends: vulkan-tools
Recommends: cabextract
Recommends: xdg-utils
Source0: citizen-launcher
Source1: io.github.citizenlauncher.CitizenLauncher.desktop
Source2: citizen-launcher.svg
Source3: io.github.citizenlauncher.CitizenLauncher.metainfo.xml
Source4: citizen-launcher-self-update.service
Source5: citizen-launcher-self-update.timer
Source6: citizen-launcher-migrate.desktop
Source7: 90-citizen-launcher.conf
Source8: 90-citizen-launcher-limits.conf
Source9: release-repo
%description
Citizen Launcher manages a locally tested Wine runner, DXVK, RSI Launcher
compatibility, automatic maintenance, desktop integration and support
diagnostics for Star Citizen on Linux.
%prep
%build
%install
install -d %{buildroot}%{_bindir}
install -d %{buildroot}%{_datadir}/applications
install -d %{buildroot}%{_datadir}/icons/hicolor/scalable/apps
install -d %{buildroot}%{_datadir}/metainfo
install -d %{buildroot}%{_unitdir}
install -d %{buildroot}%{_prefix}/lib/sysctl.d
install -d %{buildroot}%{_sysconfdir}/security/limits.d
install -d %{buildroot}%{_sysconfdir}/xdg/autostart
install -d %{buildroot}%{_sysconfdir}/citizen-launcher
install -d %{buildroot}%{_licensedir}/%{name}
install -m755 %{SOURCE0} %{buildroot}%{_bindir}/citizen-launcher
install -m644 %{SOURCE1} %{buildroot}%{_datadir}/applications/io.github.citizenlauncher.CitizenLauncher.desktop
install -m644 %{SOURCE2} %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/citizen-launcher.svg
install -m644 %{SOURCE3} %{buildroot}%{_datadir}/metainfo/io.github.citizenlauncher.CitizenLauncher.metainfo.xml
install -m644 %{SOURCE4} %{buildroot}%{_unitdir}/citizen-launcher-self-update.service
install -m644 %{SOURCE5} %{buildroot}%{_unitdir}/citizen-launcher-self-update.timer
install -m644 %{SOURCE6} %{buildroot}%{_sysconfdir}/xdg/autostart/citizen-launcher-migrate.desktop
install -m644 %{SOURCE7} %{buildroot}%{_prefix}/lib/sysctl.d/90-citizen-launcher.conf
install -m644 %{SOURCE8} %{buildroot}%{_sysconfdir}/security/limits.d/90-citizen-launcher.conf
install -m644 %{SOURCE9} %{buildroot}%{_sysconfdir}/citizen-launcher/release-repo
install -m644 %{_sourcedir}/LICENSE %{buildroot}%{_licensedir}/%{name}/LICENSE
%post
if command -v sysctl >/dev/null 2>&1; then
sysctl -q -w vm.max_map_count=16777216 >/dev/null 2>&1 || true
fi
if command -v systemctl >/dev/null 2>&1; then
systemctl daemon-reload >/dev/null 2>&1 || true
immutable=0
[ -e /run/ostree-booted ] && immutable=1
[ -e /run/transactional-update ] && immutable=1
if [ "$immutable" -eq 0 ]; then
systemctl enable --now citizen-launcher-self-update.timer >/dev/null 2>&1 || true
fi
fi
if command -v update-desktop-database >/dev/null 2>&1; then
update-desktop-database %{_datadir}/applications >/dev/null 2>&1 || true
fi
%preun
if [ "$1" -eq 0 ] && command -v systemctl >/dev/null 2>&1; then
systemctl disable --now citizen-launcher-self-update.timer >/dev/null 2>&1 || true
fi
%postun
if command -v systemctl >/dev/null 2>&1; then
systemctl daemon-reload >/dev/null 2>&1 || true
fi
%files
%license %{_licensedir}/%{name}/LICENSE
%{_bindir}/citizen-launcher
%{_datadir}/applications/io.github.citizenlauncher.CitizenLauncher.desktop
%{_datadir}/icons/hicolor/scalable/apps/citizen-launcher.svg
%{_datadir}/metainfo/io.github.citizenlauncher.CitizenLauncher.metainfo.xml
%{_unitdir}/citizen-launcher-self-update.service
%{_unitdir}/citizen-launcher-self-update.timer
%{_prefix}/lib/sysctl.d/90-citizen-launcher.conf
%{_sysconfdir}/security/limits.d/90-citizen-launcher.conf
%{_sysconfdir}/xdg/autostart/citizen-launcher-migrate.desktop
%config(noreplace) %{_sysconfdir}/citizen-launcher/release-repo
%changelog
* Tue Sep 01 2026 Citizen Launcher Project - 1.1.1-1
- Multi-distribution native package support