Add duckstation to the steam deck.
This commit is contained in:
parent
144f83982d
commit
ba81687d42
@ -10,6 +10,7 @@
|
|||||||
./roles/2ship2harkinian
|
./roles/2ship2harkinian
|
||||||
./roles/ares
|
./roles/ares
|
||||||
./roles/dolphin
|
./roles/dolphin
|
||||||
|
./roles/duckstation
|
||||||
./roles/global_options
|
./roles/global_options
|
||||||
./roles/graphics
|
./roles/graphics
|
||||||
./roles/pcsx2
|
./roles/pcsx2
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
config = {
|
config = {
|
||||||
me.ares.enable = true;
|
me.ares.enable = true;
|
||||||
me.dolphin.enable = true;
|
me.dolphin.enable = true;
|
||||||
|
me.duckstation.enable = true;
|
||||||
me.graphical = true;
|
me.graphical = true;
|
||||||
me.optimizations.enable = true;
|
me.optimizations.enable = true;
|
||||||
me.pcsx2.enable = true;
|
me.pcsx2.enable = true;
|
||||||
|
90
nix/steam_deck/configuration/roles/duckstation/default.nix
Normal file
90
nix/steam_deck/configuration/roles/duckstation/default.nix
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
steam_duckstation = pkgs.writeScriptBin "steam_duckstation" ''
|
||||||
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.libglvnd}/lib"
|
||||||
|
exec ${pkgs.duckstation}/bin/duckstation-qt "''${@}"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [ ];
|
||||||
|
|
||||||
|
options.me = {
|
||||||
|
duckstation.enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
description = "Whether we want to install duckstation.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.me.duckstation.enable (
|
||||||
|
lib.mkMerge [
|
||||||
|
(lib.mkIf config.me.graphical {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
duckstation
|
||||||
|
steam_duckstation
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file.".local/share/duckstation/settings.ini" = {
|
||||||
|
source = ./files/settings.ini;
|
||||||
|
};
|
||||||
|
|
||||||
|
me.persist.directories = [
|
||||||
|
".local/share/duckstation/memcards"
|
||||||
|
".local/share/duckstation/savestates"
|
||||||
|
];
|
||||||
|
me.state.directories = [
|
||||||
|
".local/share/duckstation/cache"
|
||||||
|
".local/share/duckstation/shaders"
|
||||||
|
".local/share/duckstation/screenshots"
|
||||||
|
".local/share/duckstation/videos"
|
||||||
|
".local/share/duckstation/covers"
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(
|
||||||
|
final: prev:
|
||||||
|
let
|
||||||
|
optimizeWithFlags =
|
||||||
|
pkg: flags:
|
||||||
|
pkg.overrideAttrs (old: {
|
||||||
|
env.CXXFLAGS = (old.env.CXXFLAGS or "") + (lib.strings.concatStringsSep " " flags);
|
||||||
|
});
|
||||||
|
original_package =
|
||||||
|
if config.me.optimizations.enable then
|
||||||
|
(optimizeWithFlags prev.duckstation [
|
||||||
|
"-march=znver2"
|
||||||
|
"-mtune=znver2"
|
||||||
|
])
|
||||||
|
else
|
||||||
|
prev.duckstation;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
duckstation = pkgs.buildEnv {
|
||||||
|
name = prev.duckstation.name;
|
||||||
|
paths = [
|
||||||
|
(config.lib.nixGL.wrap original_package)
|
||||||
|
];
|
||||||
|
extraOutputsToInstall = [
|
||||||
|
"man"
|
||||||
|
"doc"
|
||||||
|
"info"
|
||||||
|
];
|
||||||
|
# We have to use 555 instead of the normal 444 here because the .desktop file ends up inside $HOME on steam deck and desktop files must be either not in $HOME or must be executable, otherwise KDE Plasma refuses to execute them.
|
||||||
|
postBuild = ''
|
||||||
|
chmod 0555 $out/share/applications/org.duckstation.DuckStation.desktop
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
})
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
@ -0,0 +1,368 @@
|
|||||||
|
[Main]
|
||||||
|
SettingsVersion = 3
|
||||||
|
EmulationSpeed = 1
|
||||||
|
FastForwardSpeed = 0
|
||||||
|
TurboSpeed = 0
|
||||||
|
SyncToHostRefreshRate = false
|
||||||
|
IncreaseTimerResolution = true
|
||||||
|
InhibitScreensaver = true
|
||||||
|
StartPaused = false
|
||||||
|
StartFullscreen = false
|
||||||
|
PauseOnFocusLoss = true
|
||||||
|
PauseOnControllerDisconnection = false
|
||||||
|
SaveStateOnExit = true
|
||||||
|
CreateSaveStateBackups = true
|
||||||
|
SaveStateCompression = ZstDefault
|
||||||
|
ConfirmPowerOff = false
|
||||||
|
EnableDiscordPresence = false
|
||||||
|
LoadDevicesFromSaveStates = false
|
||||||
|
DisableAllEnhancements = false
|
||||||
|
RewindEnable = false
|
||||||
|
RewindFrequency = 10
|
||||||
|
RewindSaveSlots = 10
|
||||||
|
RunaheadFrameCount = 0
|
||||||
|
SetupWizardIncomplete = false
|
||||||
|
|
||||||
|
|
||||||
|
[Console]
|
||||||
|
Region = Auto
|
||||||
|
Enable8MBRAM = false
|
||||||
|
EnableCheats = false
|
||||||
|
|
||||||
|
|
||||||
|
[PINE]
|
||||||
|
Enabled = false
|
||||||
|
Slot = 28011
|
||||||
|
|
||||||
|
|
||||||
|
[CPU]
|
||||||
|
ExecutionMode = Recompiler
|
||||||
|
OverclockEnable = false
|
||||||
|
OverclockNumerator = 1
|
||||||
|
OverclockDenominator = 1
|
||||||
|
RecompilerMemoryExceptions = false
|
||||||
|
RecompilerBlockLinking = true
|
||||||
|
RecompilerICache = false
|
||||||
|
FastmemMode = MMap
|
||||||
|
|
||||||
|
|
||||||
|
[GPU]
|
||||||
|
Renderer = Automatic
|
||||||
|
Adapter =
|
||||||
|
ResolutionScale = 3
|
||||||
|
Multisamples = 1
|
||||||
|
UseDebugDevice = false
|
||||||
|
DisableShaderCache = false
|
||||||
|
DisableDualSourceBlend = false
|
||||||
|
DisableFramebufferFetch = false
|
||||||
|
DisableTextureBuffers = false
|
||||||
|
DisableTextureCopyToSelf = false
|
||||||
|
DisableMemoryImport = false
|
||||||
|
DisableRasterOrderViews = false
|
||||||
|
PerSampleShading = false
|
||||||
|
UseThread = true
|
||||||
|
ThreadedPresentation = false
|
||||||
|
UseSoftwareRendererForReadbacks = false
|
||||||
|
TrueColor = true
|
||||||
|
Debanding = false
|
||||||
|
ScaledDithering = true
|
||||||
|
ForceRoundTextureCoordinates = false
|
||||||
|
AccurateBlending = false
|
||||||
|
TextureFilter = Nearest
|
||||||
|
SpriteTextureFilter =
|
||||||
|
LineDetectMode = Disabled
|
||||||
|
DownsampleMode = Disabled
|
||||||
|
DownsampleScale = 1
|
||||||
|
WireframeMode = Disabled
|
||||||
|
DisableInterlacing = true
|
||||||
|
ForceNTSCTimings = false
|
||||||
|
WidescreenHack = false
|
||||||
|
ChromaSmoothing24Bit = false
|
||||||
|
PGXPEnable = false
|
||||||
|
PGXPCulling = true
|
||||||
|
PGXPTextureCorrection = true
|
||||||
|
PGXPColorCorrection = false
|
||||||
|
PGXPVertexCache = false
|
||||||
|
PGXPCPU = false
|
||||||
|
PGXPPreserveProjFP = false
|
||||||
|
PGXPTolerance = -1
|
||||||
|
PGXPDepthBuffer = false
|
||||||
|
PGXPDisableOn2DPolygons = false
|
||||||
|
PGXPDepthClearThreshold = 300
|
||||||
|
|
||||||
|
|
||||||
|
[Display]
|
||||||
|
DeinterlacingMode = Adaptive
|
||||||
|
CropMode = Overscan
|
||||||
|
ActiveStartOffset = 0
|
||||||
|
ActiveEndOffset = 0
|
||||||
|
LineStartOffset = 0
|
||||||
|
LineEndOffset = 0
|
||||||
|
Force4_3For24Bit = false
|
||||||
|
AspectRatio = Auto (Game Native)
|
||||||
|
Alignment = Center
|
||||||
|
Rotation = Normal
|
||||||
|
Scaling = BilinearSmooth
|
||||||
|
OptimalFramePacing = false
|
||||||
|
PreFrameSleep = false
|
||||||
|
SkipPresentingDuplicateFrames = false
|
||||||
|
PreFrameSleepBuffer = 2
|
||||||
|
VSync = true
|
||||||
|
DisableMailboxPresentation = true
|
||||||
|
ExclusiveFullscreenControl = Automatic
|
||||||
|
ScreenshotMode = InternalResolution
|
||||||
|
ScreenshotFormat = PNG
|
||||||
|
ScreenshotQuality = 85
|
||||||
|
CustomAspectRatioNumerator = 0
|
||||||
|
ShowOSDMessages = true
|
||||||
|
ShowFPS = false
|
||||||
|
ShowSpeed = false
|
||||||
|
ShowResolution = false
|
||||||
|
ShowLatencyStatistics = false
|
||||||
|
ShowGPUStatistics = false
|
||||||
|
ShowCPU = false
|
||||||
|
ShowGPU = false
|
||||||
|
ShowFrameTimes = false
|
||||||
|
ShowStatusIndicators = true
|
||||||
|
ShowInputs = false
|
||||||
|
ShowEnhancements = false
|
||||||
|
OSDScale = 100
|
||||||
|
StretchVertically = false
|
||||||
|
|
||||||
|
|
||||||
|
[CDROM]
|
||||||
|
ReadaheadSectors = 8
|
||||||
|
MechaconVersion = VC1A
|
||||||
|
RegionCheck = false
|
||||||
|
LoadImageToRAM = false
|
||||||
|
LoadImagePatches = false
|
||||||
|
MuteCDAudio = false
|
||||||
|
ReadSpeedup = 1
|
||||||
|
SeekSpeedup = 1
|
||||||
|
|
||||||
|
|
||||||
|
[Audio]
|
||||||
|
Backend = Cubeb
|
||||||
|
Driver =
|
||||||
|
OutputDevice =
|
||||||
|
StretchMode = TimeStretch
|
||||||
|
BufferMS = 50
|
||||||
|
OutputLatencyMS = 20
|
||||||
|
OutputLatencyMinimal = false
|
||||||
|
StretchSequenceLengthMS = 30
|
||||||
|
StretchSeekWindowMS = 20
|
||||||
|
StretchOverlapMS = 10
|
||||||
|
StretchUseQuickSeek = false
|
||||||
|
StretchUseAAFilter = false
|
||||||
|
OutputVolume = 100
|
||||||
|
FastForwardVolume = 100
|
||||||
|
OutputMuted = false
|
||||||
|
|
||||||
|
|
||||||
|
[Hacks]
|
||||||
|
UseOldMDECRoutines = false
|
||||||
|
ExportSharedMemory = false
|
||||||
|
DMAMaxSliceTicks = 1000
|
||||||
|
DMAHaltTicks = 100
|
||||||
|
GPUFIFOSize = 16
|
||||||
|
GPUMaxRunAhead = 128
|
||||||
|
|
||||||
|
|
||||||
|
[PCDrv]
|
||||||
|
Enabled = false
|
||||||
|
EnableWrites = false
|
||||||
|
Root =
|
||||||
|
|
||||||
|
|
||||||
|
[BIOS]
|
||||||
|
TTYLogging = false
|
||||||
|
PatchFastBoot = false
|
||||||
|
SearchDirectory = ../../../.persist/manual/games/sony_ps2/bios
|
||||||
|
|
||||||
|
|
||||||
|
[MemoryCards]
|
||||||
|
Card1Type = PerGameTitle
|
||||||
|
Card2Type = None
|
||||||
|
UsePlaylistTitle = true
|
||||||
|
Directory = memcards
|
||||||
|
|
||||||
|
|
||||||
|
[ControllerPorts]
|
||||||
|
MultitapMode = Disabled
|
||||||
|
PointerXScale = 8
|
||||||
|
PointerYScale = 8
|
||||||
|
PointerXInvert = false
|
||||||
|
PointerYInvert = false
|
||||||
|
|
||||||
|
|
||||||
|
[Cheevos]
|
||||||
|
Enabled = false
|
||||||
|
ChallengeMode = false
|
||||||
|
Notifications = true
|
||||||
|
LeaderboardNotifications = true
|
||||||
|
SoundEffects = true
|
||||||
|
Overlays = true
|
||||||
|
EncoreMode = false
|
||||||
|
SpectatorMode = false
|
||||||
|
UnofficialTestMode = false
|
||||||
|
UseFirstDiscFromPlaylist = true
|
||||||
|
UseRAIntegration = false
|
||||||
|
NotificationsDuration = 5
|
||||||
|
LeaderboardsDuration = 10
|
||||||
|
|
||||||
|
|
||||||
|
[Logging]
|
||||||
|
LogLevel = Info
|
||||||
|
LogFilter =
|
||||||
|
LogTimestamps = true
|
||||||
|
LogToConsole = true
|
||||||
|
LogToDebug = false
|
||||||
|
LogToWindow = false
|
||||||
|
LogToFile = false
|
||||||
|
|
||||||
|
|
||||||
|
[Debug]
|
||||||
|
ShowVRAM = false
|
||||||
|
DumpCPUToVRAMCopies = false
|
||||||
|
DumpVRAMToCPUCopies = false
|
||||||
|
ShowGPUState = false
|
||||||
|
ShowCDROMState = false
|
||||||
|
ShowSPUState = false
|
||||||
|
ShowTimersState = false
|
||||||
|
ShowMDECState = false
|
||||||
|
ShowDMAState = false
|
||||||
|
|
||||||
|
|
||||||
|
[TextureReplacements]
|
||||||
|
EnableVRAMWriteReplacements = false
|
||||||
|
PreloadTextures = false
|
||||||
|
DumpVRAMWrites = false
|
||||||
|
DumpVRAMWriteForceAlphaChannel = true
|
||||||
|
DumpVRAMWriteWidthThreshold = 128
|
||||||
|
DumpVRAMWriteHeightThreshold = 128
|
||||||
|
|
||||||
|
|
||||||
|
[MediaCapture]
|
||||||
|
Backend = FFmpeg
|
||||||
|
Container = mp4
|
||||||
|
VideoCapture = true
|
||||||
|
VideoWidth = 640
|
||||||
|
VideoHeight = 480
|
||||||
|
VideoAutoSize = false
|
||||||
|
VideoBitrate = 6000
|
||||||
|
VideoCodec =
|
||||||
|
VideoCodecUseArgs = false
|
||||||
|
AudioCodecArgs =
|
||||||
|
AudioCapture = true
|
||||||
|
AudioBitrate = 128
|
||||||
|
AudioCodec =
|
||||||
|
AudioCodecUseArgs = false
|
||||||
|
|
||||||
|
|
||||||
|
[Folders]
|
||||||
|
Cache = cache
|
||||||
|
Cheats = cheats
|
||||||
|
Covers = covers
|
||||||
|
Dumps = dump
|
||||||
|
GameIcons = gameicons
|
||||||
|
GameSettings = gamesettings
|
||||||
|
InputProfiles = inputprofiles
|
||||||
|
SaveStates = savestates
|
||||||
|
Screenshots = screenshots
|
||||||
|
Shaders = shaders
|
||||||
|
Textures = textures
|
||||||
|
UserResources = resources
|
||||||
|
Videos = videos
|
||||||
|
|
||||||
|
|
||||||
|
[InputSources]
|
||||||
|
SDL = true
|
||||||
|
SDLControllerEnhancedMode = false
|
||||||
|
SDLPS5PlayerLED = false
|
||||||
|
XInput = false
|
||||||
|
RawInput = false
|
||||||
|
|
||||||
|
|
||||||
|
[Pad1]
|
||||||
|
Type = AnalogController
|
||||||
|
Up = SDL-0/DPadUp
|
||||||
|
Right = SDL-0/DPadRight
|
||||||
|
Down = SDL-0/DPadDown
|
||||||
|
Left = SDL-0/DPadLeft
|
||||||
|
Triangle = SDL-0/Y
|
||||||
|
Circle = SDL-0/B
|
||||||
|
Cross = SDL-0/A
|
||||||
|
Square = SDL-0/X
|
||||||
|
Select = SDL-0/Back
|
||||||
|
Start = SDL-0/Start
|
||||||
|
L1 = SDL-0/LeftShoulder
|
||||||
|
R1 = SDL-0/RightShoulder
|
||||||
|
L2 = SDL-0/+LeftTrigger
|
||||||
|
R2 = SDL-0/+RightTrigger
|
||||||
|
L3 = SDL-0/LeftStick
|
||||||
|
R3 = SDL-0/RightStick
|
||||||
|
LLeft = SDL-0/-LeftX
|
||||||
|
LRight = SDL-0/+LeftX
|
||||||
|
LDown = SDL-0/+LeftY
|
||||||
|
LUp = SDL-0/-LeftY
|
||||||
|
RLeft = SDL-0/-RightX
|
||||||
|
RRight = SDL-0/+RightX
|
||||||
|
RDown = SDL-0/+RightY
|
||||||
|
RUp = SDL-0/-RightY
|
||||||
|
Analog = SDL-0/Guide
|
||||||
|
SmallMotor = SDL-0/SmallMotor
|
||||||
|
LargeMotor = SDL-0/LargeMotor
|
||||||
|
|
||||||
|
|
||||||
|
[Pad2]
|
||||||
|
Type = None
|
||||||
|
|
||||||
|
|
||||||
|
[Pad3]
|
||||||
|
Type = None
|
||||||
|
|
||||||
|
|
||||||
|
[Pad4]
|
||||||
|
Type = None
|
||||||
|
|
||||||
|
|
||||||
|
[Pad5]
|
||||||
|
Type = None
|
||||||
|
|
||||||
|
|
||||||
|
[Pad6]
|
||||||
|
Type = None
|
||||||
|
|
||||||
|
|
||||||
|
[Pad7]
|
||||||
|
Type = None
|
||||||
|
|
||||||
|
|
||||||
|
[Pad8]
|
||||||
|
Type = None
|
||||||
|
|
||||||
|
|
||||||
|
[Hotkeys]
|
||||||
|
FastForward = Keyboard/Tab
|
||||||
|
TogglePause = Keyboard/Space
|
||||||
|
Screenshot = Keyboard/F10
|
||||||
|
ToggleFullscreen = Keyboard/F11
|
||||||
|
OpenPauseMenu = Keyboard/Escape
|
||||||
|
LoadSelectedSaveState = Keyboard/F1
|
||||||
|
SaveSelectedSaveState = Keyboard/F2
|
||||||
|
SelectPreviousSaveStateSlot = Keyboard/F3
|
||||||
|
SelectNextSaveStateSlot = Keyboard/F4
|
||||||
|
|
||||||
|
|
||||||
|
[UI]
|
||||||
|
UnofficialBuildWarningConfirmed = true
|
||||||
|
MainWindowGeometry = AdnQywADAAAAAAAAAAAAAAAAAx8AAAKOAAAAAAAAAAAAAAMfAAACjgAAAAAAAAAABQAAAAAAAAAAAAAAAx8AAAKO
|
||||||
|
MainWindowState = AAAA/wAAAAD9AAAAAAAAAyAAAAJjAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAEAAAAOAHQAbwBvAGwAQgBhAHIAAAAAAP////8AAAAAAAAAAA==
|
||||||
|
|
||||||
|
|
||||||
|
[AutoUpdater]
|
||||||
|
CheckAtStartup = false
|
||||||
|
|
||||||
|
|
||||||
|
[GameList]
|
||||||
|
RecursivePaths = /home/deck/.persist/manual/games/sony_ps1/roms
|
Loading…
x
Reference in New Issue
Block a user