Skip to content

Commit

Permalink
docs: add documentation for titanfall compatibility tools
Browse files Browse the repository at this point in the history
  • Loading branch information
NotAShelf committed Sep 22, 2023
1 parent d22d496 commit 29ffb26
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 27 deletions.
63 changes: 36 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,33 @@ See an overview of the flake outputs by running

## 🗃️ What's in here?

Package | Description
------------------------------------------------------------|------------
[`faf-client`](./pkgs/faf-client) | Forged Alliance Forever client (multiple packages)
[`osu-lazer-bin`](./pkgs/osu-lazer-bin) | osu! lazer, extracted from the official AppImage
[`osu-stable`](./pkgs/osu-stable) | osu! stable version
`rocket-league` | Rocket League from Epic Games
[`star-citizen`](./pkgs/star-citizen) | Star Citizen
[`technic-launcher`](./pkgs/technic-launcher) | Technic Launcher
[`wine-discord-ipc-bridge`](./pkgs/wine-discord-ipc-bridge) | Wine-Discord RPC Bridge
[`wine`](./pkgs/wine) | Multiple Wine packages
[`winestreamproxy`](./pkgs/winestreamproxy) | Wine-Discord RPC (broken)
[`proton-ge`](./pkgs/proton-ge) | Custom build of Proton with the most recent bleeding-edge Proton Experimental WINE

* `legendaryBuilder` is a function that installs games with `legendary-gl`. You
are expected to log in before using it, with `legendary auth`.
The function takes an attrset containing at least the attrset `games` which
includes the games you want installed. Optionally, you can set an `opts`
attrset that will set the options you set inside for all games listed.
You can find a usage example in [example.nix](./example.nix).
| Package | Description |
| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| [`faf-client`](./pkgs/faf-client) | Forged Alliance Forever client (multiple packages) |
| [`osu-lazer-bin`](./pkgs/osu-lazer-bin) | osu! lazer, extracted from the official AppImage |
| [`osu-stable`](./pkgs/osu-stable) | osu! stable version |
| `rocket-league` | Rocket League from Epic Games |
| [`star-citizen`](./pkgs/star-citizen) | Star Citizen |
| [`technic-launcher`](./pkgs/technic-launcher) | Technic Launcher |
| [`wine-discord-ipc-bridge`](./pkgs/wine-discord-ipc-bridge) | Wine-Discord RPC Bridge |
| [`wine`](./pkgs/wine) | Multiple Wine packages |
| [`winestreamproxy`](./pkgs/winestreamproxy) | Wine-Discord RPC (broken) |
| [`proton-ge`](./pkgs/proton-ge) | Custom build of Proton with the most recent bleeding-edge Proton Experimental WINE |
| [`northstar-proton`](./pkgs/titanfall/northstar-proton.nix) | Proton build based on TKG's proton-tkg build system to run the Northstar client on Linux and SteamDeck |
| [`viper`](./pkgs/titanfall/viper.nix) | Launcher+Updater for Titanfall2 Northstar Client |

- `legendaryBuilder` is a function that installs games with `legendary-gl`. You
are expected to log in before using it, with `legendary auth`.
The function takes an attrset containing at least the attrset `games` which
includes the games you want installed. Optionally, you can set an `opts`
attrset that will set the options you set inside for all games listed.
You can find a usage example in [example.nix](./example.nix).

## Install & Run

It's recommended to set up [Cachix](https://app.cachix.org/cache/nix-gaming) so
you don't have to build packages (most useful for wine).

```nix
# configuration.nix
{
Expand All @@ -40,6 +43,7 @@ you don't have to build packages (most useful for wine).
};
}
```

Now, rebuild your configuration and continue reading for install instructions.

#### If you're not using flakes, [go here](#nix-stable).
Expand All @@ -48,6 +52,7 @@ Now, rebuild your configuration and continue reading for install instructions.

Add these packages to your `home.packages` or `environment.systemPackages` by
adding `nix-gaming` as an input:

```nix
# flake.nix
{
Expand All @@ -59,7 +64,7 @@ adding `nix-gaming` as an input:
};
outputs = {self, nixpkgs, ...}@inputs: {
# set up for NixOS
# set up for NixOS
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs;};
modules = [
Expand Down Expand Up @@ -87,6 +92,7 @@ adding `nix-gaming` as an input:
```

Then, add the package(s):

```nix
{pkgs, inputs, ...}: {
environment.systemPackages = [ # or home.packages
Expand All @@ -96,6 +102,7 @@ Then, add the package(s):
```

If you want to install packages to your profile instead, do it like this

```console
nix profile install github:fufexan/nix-gaming#<package>
```
Expand All @@ -107,6 +114,7 @@ may greatly differ from the packages.

To install packages to `environment.systemPackages`, add this in
`configuration.nix`:

```nix
{pkgs, ...}: let
nix-gaming = import (builtins.fetchTarball "https://github.com/fufexan/nix-gaming/archive/master.tar.gz");
Expand Down Expand Up @@ -170,14 +178,14 @@ Import the module in your configuration and enable it along with PipeWire:
pulse.enable = true;
lowLatency = {
# enable this module
# enable this module
enable = true;
# defaults (no need to be set unless modified)
quantum = 64;
rate = 48000;
};
};
# make pipewire realtime-capable
security.rtkit.enable = true;
}
Expand Down Expand Up @@ -210,6 +218,7 @@ These arguments can be modified in order to get the desired results.
### `osu-stable` `wine-discord-ipc-bridge` wine overriding

Sometimes you want to override `wine` for various reasons. Here's how to do it:

```nix
{
environment.systemPackages = let
Expand All @@ -229,13 +238,13 @@ In order to get the most performance out of your machine, you could use the
following tweaks:

- custom/gaming kernel: `linux_xanmod` is the recommended one for games, since
it provides many patches that aid wine and other games. It also provides a
better desktop experience due to its preemptive build and tickless scheduler.
it provides many patches that aid wine and other games. It also provides a
better desktop experience due to its preemptive build and tickless scheduler.
- [gamemode](https://github.com/FeralInteractive/gamemode): lets you achieve
lower nice values and higher realtime privileges at game start. It can either
detect games or be started with `gamemode-run`.
lower nice values and higher realtime privileges at game start. It can either
detect games or be started with `gamemode-run`.

## 👥 Credits & Resources

Thank you: boppyt - gonX - InfinityGhost - LavaDesu - openglfreak - yusdacra
and to all the contributors and users of this repo!
29 changes: 29 additions & 0 deletions pkgs/titanfall/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Titanfall Utilities & Compatibility Tools

## Viper

Viper is a launcher/updater for Titanfall2 Northstar Client. The usage is simple, add it to your system packages
and run `viper` in your terminal. The launcher will guide you through the rest of the process.

## NorthstarProton

NorthstarProton is a Proton build based on TKG's proton-tkg build system to run the Northstar client on
Linux and SteamDeck, along with some enhancements out-of-the-box.

To use `northstar-proton`, you must add it to your steam compatibility tools path.

A simple implementation would be to use the overlay, similar to proton-ge:

```nix
nixpkgs.overlays = [
(_: prev: {
steam = prev.steam.override {
extraProfile = "export STEAM_EXTRA_COMPAT_TOOLS_PATHS='${inputs.nix-gaming.packages.${pkgs.system}.northstar-proton}'";
};
})
];
```

## FlightCore

FlightCore is a launcher/updater for Titanfall2 Northstar Client. Currently not available due to a bug with Tauri disallowing extracted AppImages.

0 comments on commit 29ffb26

Please sign in to comment.