Refactoring of the nix file. (#4494)

* Fix version number.

* Use the packages.x86_64-linux namespace.

* linux. prepend no longer required.

* Created build-shadps4 module.

.

.

.

.

.

.

.

* Move dependency list to generator function parameters.

* Using call package to run builder.

* Pull in matching names and use inherit.

* Paths need to be wrapped in a "".

* Put , on the packages.

* And inherit does not need any , .

* Fixups.

* release and releaseWithDebugInfo now use the same builder.

* Set default pacakge to releaseWtihDebugInfo.

* Rename to build, moved down a directory and deleted modules/

.

* Seperated devshell into shell.nix

.

.

.

.

.

* Double ".nix"

* Nix Formatting.

* Included missing dependencies for shell.

.

.

.

.

* Update Lock file.

* Removed old unused shell.nix.

* Collapse shell and build into flake.nix

.

* Window bar patch

.

.

.

* Removed unused patches list.

* As older nix shell was removed. Also remove old documentation.
This commit is contained in:
Connor Garey 2026-05-31 21:56:16 +01:00 committed by GitHub
parent d1030d01db
commit 5f89834cb5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 253 additions and 191 deletions

View File

@ -48,12 +48,6 @@ sudo zypper install clang git cmake libasound2 libpulse-devel \
vulkan-devel vulkan-validationlayers libpng-devel
```
#### NixOS
```bash
nix-shell shell.nix
```
#### Nix Flake Development Shell
```bash
nix develop
@ -63,13 +57,13 @@ ln -s ./build/compile_commands.json .
#### Nix Flake Build
```bash
nix build .?submodules=1#linux.debug
nix build .?submodules=1#debug
```
```bash
nix build .?submodules=1#linux.release
nix build .?submodules=1#release
```
```bash
nix build .?submodules=1#linux.releaseWithDebugInfo
nix build .?submodules=1#releaseWithDebugInfo
```
#### Other Linux distributions

6
flake.lock generated
View File

@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1774386573,
"narHash": "sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc=",
"lastModified": 1779560665,
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9",
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
"type": "github"
},
"original": {

362
flake.nix
View File

@ -16,127 +16,259 @@
{
formatter.x86_64-linux = pkgsLinux.nixpkgs-fmt;
devShells.x86_64-linux.default = pkgsLinux.mkShell.override { stdenv = pkgsLinux.clangStdenv; } {
packages = with pkgsLinux; [
clang-tools
cmake
pkg-config
vulkan-tools
renderdoc
gef
strace
perf
openal
zlib.dev
libedit.dev
vulkan-headers
vulkan-utility-libraries
ffmpeg.dev
fmt.dev
glslang.dev
wayland.dev
stb
libpng.dev
libuuid
sdl3.dev
alsa-lib
hidapi
ibus.dev
jack2.dev
libdecor.dev
libthai.dev
fribidi.dev
libxcb.dev
libGL.dev
libpulseaudio.dev
libusb1.dev
libx11.dev
libxcursor.dev
libxext
libxfixes.dev
libxi.dev
libxinerama.dev
libxkbcommon
libxrandr.dev
libxrender.dev
libxtst
pipewire.dev
libxscrnsaver
sndio
];
shellHook = ''
echo "Entering shadPS4 development shell!"
'';
CMAKE_C_COMPILER = "clang";
CMAKE_CXX_COMPILER = "clang++";
CMAKE_EXPORT_COMPILE_COMMANDS = "ON";
};
linux =
devShells.x86_64-linux.default =
let
nativeInputs = with pkgsLinux; [
cmake
ninja
pkg-config
magic-enum
fmt
eudev
];
buildInputs = with pkgsLinux; [
boost
cli11
openal
nlohmann_json
vulkan-loader
vulkan-headers
vulkan-memory-allocator
toml11
zlib
zydis
pugixml
ffmpeg
libpulseaudio
pipewire
vulkan-loader
wayland
wayland-scanner
libX11
libxrandr
libxext
libxcursor
libxi
libxscrnsaver
libxtst
libxcb
libdecor
libxkbcommon
libGL
libuuid
miniz
libressl
];
shell =
{ mkShell
, clangStdenv
, clang-tools
, cmake
, pkg-config
, vulkan-tools
, renderdoc
, gef
, strace
, perf
, openal
, zlib
, libedit
, vulkan-headers
, vulkan-utility-libraries
, ffmpeg
, fmt
, glslang
, wayland
, stb
, libpng
, libuuid
, sdl3
, alsa-lib
, hidapi
, ibus
, jack2
, libdecor
, libthai
, fribidi
, libxcb
, libGL
, libpulseaudio
, libusb1
, libx11
, libxcursor
, libxext
, libxfixes
, libxi
, libxinerama
, libxkbcommon
, libxrandr
, libxrender
, libxtst
, pipewire
, libxscrnsaver
, sndio
, cli11
, nlohmann_json
, spdlog
,
}:
build = { debugSymbols ? true, buildFlags }: pkgsLinux.clangStdenv.mkDerivation {
pname = "shadps4";
version = "15.1";
system = "x86_64-linux";
src = ./.;
mkShell.override { stdenv = clangStdenv; } {
packages = [
clang-tools
cmake
pkg-config
vulkan-tools
dontStrip = if debugSymbols then true else false;
renderdoc
gef
strace
perf
nativeBuildInputs = nativeInputs;
buildInputs = buildInputs;
cmakeFlags = buildFlags;
};
openal
zlib.dev
libedit.dev
vulkan-headers
vulkan-utility-libraries
ffmpeg.dev
fmt.dev
glslang.dev
wayland.dev
stb
libpng.dev
libuuid
cli11
nlohmann_json
spdlog.dev
sdl3.dev
alsa-lib
hidapi
ibus.dev
jack2.dev
libdecor.dev
libthai.dev
fribidi.dev
libxcb.dev
libGL.dev
libpulseaudio.dev
libusb1.dev
libx11.dev
libxcursor.dev
libxext
libxfixes.dev
libxi.dev
libxinerama.dev
libxkbcommon
libxrandr.dev
libxrender.dev
libxtst
pipewire.dev
libxscrnsaver
sndio
];
shellHook = ''
echo "Entering shadPS4 development shell!"
'';
CMAKE_C_COMPILER = "clang";
CMAKE_CXX_COMPILER = "clang++";
CMAKE_EXPORT_COMPILE_COMMANDS = "ON";
};
in
pkgsLinux.callPackage shell { };
packages.x86_64-linux =
let
build =
{ clangStdenv
, cmake
, ninja
, pkg-config
, magic-enum
, fmt
, eudev
, boost
, cli11
, openal
, nlohmann_json
, vulkan-loader
, vulkan-headers
, vulkan-memory-allocator
, toml11
, zlib
, zydis
, pugixml
, ffmpeg
, libpulseaudio
, pipewire
, wayland
, wayland-scanner
, libX11
, libxrandr
, libxext
, libxcursor
, libxi
, libxscrnsaver
, libxtst
, libxcb
, libdecor
, libxkbcommon
, libGL
, libuuid
, miniz
, libressl
, src
, system
, cmakeFlags
, dontStrip ? true
,
}:
clangStdenv.mkDerivation (finalAttrs: {
inherit src system cmakeFlags dontStrip;
pname = "shadps4";
version = "0.15.1";
nativeBuildInputs = [
cmake
ninja
pkg-config
magic-enum
fmt
eudev
];
buildInputs = [
boost
cli11
openal
nlohmann_json
vulkan-loader
vulkan-headers
vulkan-memory-allocator
toml11
zlib
zydis
pugixml
ffmpeg
libpulseaudio
pipewire
wayland
wayland-scanner
libX11
libxrandr
libxext
libxcursor
libxi
libxscrnsaver
libxtst
libxcb
libdecor
libxkbcommon
libGL
libuuid
miniz
libressl
];
# Cannot get the Branch name from the sandbox.
# Getting the commit hash can still be acquired through self.
patchPhase = ''
substituteInPlace src/common/scm_rev.cpp.in \
--replace-fail "@GIT_BRANCH@" "${self.shortRev or "Dirty"}"
substituteInPlace src/common/scm_rev.cpp.in \
--replace-fail "@GIT_DESC@" ""
'';
});
debugBuild = pkgsLinux.callPackage build
{
src = "${self}";
system = "x86_64-linux";
cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Debug" ];
};
releaseBuild = pkgsLinux.callPackage build
{
src = "${self}";
system = "x86_64-linux";
dontStrip = false;
cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ];
};
releaseWithDebugInfoBuild = pkgsLinux.callPackage build
{
src = "${self}";
system = "x86_64-linux";
cmakeFlags = [ "-DCMAKE_BUILD_TYPE=RelWithDebInfo" ];
};
in
{
debug = build { buildFlags = [ "-DCMAKE_BUILD_TYPE=Debug" ]; };
release = build { debugSymbols = false; buildFlags = [ "-DCMAKE_BUILD_TYPE=Release" ]; };
releaseWithDebugInfo = build { buildFlags = [ "-DCMAKE_BUILD_TYPE=RelWithDebInfo" ]; };
debug = debugBuild;
release = releaseBuild;
releaseWithDebugInfo = releaseWithDebugInfoBuild;
default = releaseWithDebugInfoBuild;
};
};
}

View File

@ -1,64 +0,0 @@
# SPDX-FileCopyrightText: 2024 shadPS4 Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later
with import (fetchTarball "https://github.com/nixos/nixpkgs/archive/cfd19cdc54680956dc1816ac577abba6b58b901c.tar.gz") { };
pkgs.mkShell {
name = "shadps4-build-env";
nativeBuildInputs = with pkgs; [
llvmPackages_18.clang
cmake
pkg-config
git
util-linux
];
buildInputs = with pkgs; [
alsa-lib
libpulseaudio
openal
zlib
libedit
udev
libevdev
SDL2
jack2
sndio
vulkan-headers
vulkan-utility-libraries
vulkan-tools
ffmpeg
fmt
glslang
libxkbcommon
wayland
xorg.libxcb
xorg.xcbutil
xorg.xcbutilkeysyms
xorg.xcbutilwm
sdl3
stb
wayland-protocols
libpng
];
shellHook = ''
echo "Entering shadPS4 dev shell"
export CMAKE_PREFIX_PATH="${pkgs.vulkan-headers}:$CMAKE_PREFIX_PATH"
# OpenGL
export LD_LIBRARY_PATH="${
pkgs.lib.makeLibraryPath [
pkgs.libglvnd
pkgs.vulkan-tools
]
}:$LD_LIBRARY_PATH"
export LDFLAGS="-L${pkgs.llvmPackages_18.libcxx}/lib -lc++"
export LC_ALL="C.UTF-8"
export XAUTHORITY=${builtins.getEnv "XAUTHORITY"}
'';
}