v1.1.1
This commit is contained in:
+23
-30
@@ -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.
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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
@@ -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;
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user