create readme
This commit is contained in:
parent
38dad223cf
commit
2ea6a4c515
1 changed files with 157 additions and 0 deletions
157
readme.md
Normal file
157
readme.md
Normal file
|
@ -0,0 +1,157 @@
|
|||
# 🎮 play.nix
|
||||
|
||||
A NixOS flake for gaming on Wayland with Gamescope integration and declarative configuration.
|
||||
|
||||
## Features
|
||||
|
||||
- **Gamescope Integration**: Intelligent wrapper with monitor-aware defaults (HDR, VRR, resolution)
|
||||
- **Application Wrappers**: Create custom game launchers that run through Gamescope
|
||||
- **AMD GPU Support**: LACT daemon and performance optimizations
|
||||
- **Gaming Stack**: Steam with Proton-CachyOS, Lutris, Gamemode, and process scheduling
|
||||
|
||||
## Installation
|
||||
|
||||
Add to your `flake.nix`:
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs = {
|
||||
play-nix.url = "github:TophC7/play.nix";
|
||||
# chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; # Not needed, but useful
|
||||
};
|
||||
|
||||
outputs = { play-nix, chaotic, ... }: {
|
||||
nixosConfigurations.yourhostname = nixpkgs.lib.nixosSystem {
|
||||
modules = [
|
||||
play-nix.nixosModules.play
|
||||
# chaotic.nixosModules.default
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### NixOS Configuration
|
||||
|
||||
```nix
|
||||
play = {
|
||||
amd.enable = true; # AMD GPU optimization
|
||||
steam.enable = true; # Steam with Proton-CachyOS
|
||||
lutris.enable = true; # Lutris game manager
|
||||
gamemode.enable = true; # Performance optimization
|
||||
ananicy.enable = true; # Process scheduling
|
||||
};
|
||||
```
|
||||
|
||||
### Home Manager Configuration
|
||||
|
||||
```nix
|
||||
play = {
|
||||
# Configure monitors for automatic gamescope settings
|
||||
monitors = [{
|
||||
name = "DP-1";
|
||||
primary = true;
|
||||
width = 2560;
|
||||
height = 1440;
|
||||
refreshRate = 165;
|
||||
hdr = true;
|
||||
vrr = true;
|
||||
}];
|
||||
|
||||
# Enable gamescope wrapper
|
||||
gamescoperun.enable = true;
|
||||
|
||||
# Create application wrappers
|
||||
wrappers = {
|
||||
# If you wish to override the "steam" command/bin, remove "-gamescope"
|
||||
# Overriding the executables makes it so already existing .desktop launchers use the new wrapper
|
||||
steam-gamescope = {
|
||||
enable = true;
|
||||
# Note: Special case for steam, this is the pkg you should use
|
||||
# Also sas of 06/25, steam does not open in normal "desktop mode" with gamescope
|
||||
# You can however exit big picture mode once already open to access the normal ui
|
||||
command = "${lib.getExe osConfig.programs.steam.package} -tenfoot -bigpicture";
|
||||
extraOptions = {
|
||||
"steam" = true;
|
||||
};
|
||||
};
|
||||
|
||||
lutris-gamescope = {
|
||||
enable = true;
|
||||
package = osConfig.play.lutris.package; # play.nix provides readonly packages
|
||||
extraOptions."force-windows-fullscreen" = true;
|
||||
};
|
||||
|
||||
heroic-gamescope = {
|
||||
enable = true;
|
||||
package = pkgs.heroic;
|
||||
extraOptions."fsr-upscaling" = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Recomendation: Override desktop entries to use gamescope wrappers
|
||||
xdg.desktopEntries = {
|
||||
steam = {
|
||||
name = "Steam";
|
||||
comment = "Steam Big Picture (Gamescope Session)";
|
||||
exec = "${lib.getExe config.play.wrappers.steam.wrappedPackage}";
|
||||
icon = "steam";
|
||||
type = "Application";
|
||||
terminal = false;
|
||||
categories = [ "Game" ];
|
||||
mimeType = [
|
||||
"x-scheme-handler/steam"
|
||||
"x-scheme-handler/steamlink"
|
||||
];
|
||||
settings = {
|
||||
StartupNotify = "true";
|
||||
StartupWMClass = "Steam";
|
||||
PrefersNonDefaultGPU = "true";
|
||||
X-KDE-RunOnDiscreteGpu = "true";
|
||||
Keywords = "gaming;";
|
||||
};
|
||||
actions = {
|
||||
bigpicture = {
|
||||
name = "Steam Client (No Gamescope)";
|
||||
exec = "${lib.getExe (config.play.steam.package or pkgs.steam)}";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
heroic = {
|
||||
name = "Heroic (Gamescope)";
|
||||
exec = "${lib.getExe config.play.wrappers.heroic-gaming.wrappedPackage}";
|
||||
icon = "com.heroicgameslauncher.hgl";
|
||||
type = "Application";
|
||||
categories = [ "Game" ];
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
# Basic usage
|
||||
gamescoperun heroic
|
||||
|
||||
# With custom options
|
||||
gamescoperun -x "--fsr-upscaling-sharpness 5" heroic
|
||||
|
||||
# Legacy environment variable support
|
||||
GAMESCOPE_EXTRA_OPTS="--steam" gamescoperun steam
|
||||
```
|
||||
|
||||
The `gamescoperun` script automatically configures resolution, refresh rate, HDR, and VRR based on your primary monitor settings.
|
||||
|
||||
## Requirements
|
||||
|
||||
- NixOS with Home Manager
|
||||
- Chaotic Nix (for latest Gamescope)
|
||||
- Wayland desktop environment
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
Contributions are welcome! Please feel free to submit issues and pull requests.
|
Loading…
Add table
Reference in a new issue