Skip to content

Arch Linux install gulide #48

@OverwatchAlexanderB

Description

@OverwatchAlexanderB

Updated install instructions for Arch Linux :
I found that installing it on Arch dose not work so thru trial and error i compiled these instructions with hope that it might help anyone with same issue.

1. Environment & Workspace Prep


Clone and install core dependencies:

git clone https://github.com/ArmchairDevelopers/Kyber.git --recurse-submodules
cd Kyber

yay -S protobuf3.12

sudo pacman -S flutter clang wpewebkit mpv
flutter --disable-analytics

Setup Rust Nightly:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
rustup install nightly && rustup default nightly

Setup Paths:

echo 'export PATH="$PATH":"$HOME/.pub-cache/bin"' >> ~/.bashrc
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc


Activate Melos and apply the mkdir patch:

dart pub global activate melos
sed -i 's/- mkdir "\(.*\)"/- mkdir -p "\1"/' pubspec.yaml

melos bootstrap

2. Fixing the FFI & Code Bugs

cd Launcher


Fix the Clang include path in ffigen.dart. Open tool/ffigen.dart and ensure the compilerOptions section includes your specific clang version path (usually /usr/lib/clang/22/include on Arch):

nano tool/ffigen.dart

Change the compilerOptions section to add the clang include dir:

compilerOptions: [
  '-I/usr/lib/clang/22/include',
  '-isystem',
  packageRoot.resolve('third_party/vivox').toFilePath(),
  '-include',
  'stdbool.h',
],

Run the generator:

dart run tool/ffigen.dart


Apply UI patches for Linux compatibility:

sed -i 's/child: RadioButton(/child: Checkbox(/' lib/features/frosty/dialogs/frosty_import_dialog.dart
sed -i 's/style: RadioButtonThemeData(/style: CheckboxThemeData(/' lib/features/frosty/dialogs/frosty_import_dialog.dart
sed -i 's/if (value) {/if (value == true) {/' lib/features/frosty/dialogs/frosty_import_dialog.dart

3. Resolving the "Missing Maxima" Error

To fix the "Could not find the program maxima-bootstrap" error, you must build the Maxima backend components:

cd ../ThirdParty/Maxima
cargo build --release --bin maxima-bootstrap
cargo build --release --bin maxima-service

4. Final Build & Manual File Move

Build the Launcher:

cd ../../Launcher
flutter build linux

cd build/linux/x64/release/bundle


IMPORTANT: Manually copy the Maxima binaries you just built into the Launcher bundle so it can find them:

cp ~/Kyber/ThirdParty/Maxima/target/release/maxima-bootstrap .
cp ~/Kyber/ThirdParty/Maxima/target/release/maxima-service .

chmod +x maxima-bootstrap maxima-service


Fix permissions for the crashpad handler:

chmod +x lib/crashpad_handler


Create the permanent launch script with LD_PRELOAD to prevent library errors:

cat > launch.sh << 'EOF'
#!/bin/bash
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LD_PRELOAD="$DIR/lib/libquickjs_c_bridge_plugin.so" "$DIR/kyber_launcher" "$@"
EOF

chmod +x launch.sh

5. Desktop Integration

cat > ~/.local/share/applications/kyber-launcher.desktop << 'EOF'
[Desktop Entry]
Name=Kyber Launcher
Exec=/home/blurr/Kyber/Launcher/build/linux/x64/release/bundle/launch.sh
Icon=/home/blurr/Kyber/Launcher/build/linux/x64/release/bundle/data/flutter_assets/assets/icons/kyber-logo.png
Type=Application
Categories=Game;
EOF

update-desktop-database ~/.local/share/applications/


sudo pacman -S zip

cd ~/Kyber/Module
zip -r ../kyber-module.zip .
mkdir -p ~/.local/share/kyber/module/
mv ../kyber-module.zip ~/.local/share/kyber/module/

cd ~/Kyber/Launcher/build/linux/x64/release/bundle
./launch.sh

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions