From 8f83e22eabd201ef6186a5fc59a4ecef5f7eb638 Mon Sep 17 00:00:00 2001 From: BuyMyMojo Date: Thu, 27 Mar 2025 18:36:35 +1100 Subject: [PATCH 1/5] Create a flake for shadps4-git --- home-manager/programs/shadps4/flake.nix | 97 +++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 home-manager/programs/shadps4/flake.nix diff --git a/home-manager/programs/shadps4/flake.nix b/home-manager/programs/shadps4/flake.nix new file mode 100644 index 0000000..1dc1304 --- /dev/null +++ b/home-manager/programs/shadps4/flake.nix @@ -0,0 +1,97 @@ +{ + description = "Current git build of shadps4"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?rev=cfd19cdc54680956dc1816ac577abba6b58b901c"; + }; + + outputs = + { self, nixpkgs }: + { + + packages.x86_64-linux.default = stdenv.mkDerivation { + name = "shadps4-git"; + pname = "shadps4"; + + src = pkgs.fetchgit { + url = "https://github.com/shadps4-emu/shadPS4"; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ + pkgs.llvmPackages_18.clang + pkgs.cmake + pkgs.pkg-config + pkgs.git + ]; + + buildInputs = [ + pkgs.alsa-lib + pkgs.libpulseaudio + pkgs.openal + pkgs.openssl + pkgs.zlib + pkgs.libedit + pkgs.udev + pkgs.libevdev + pkgs.SDL2 + pkgs.jack2 + pkgs.sndio + pkgs.qt6.qtbase + pkgs.qt6.qttools + pkgs.qt6.qtmultimedia + + pkgs.vulkan-headers + pkgs.vulkan-utility-libraries + pkgs.vulkan-tools + + pkgs.ffmpeg + pkgs.fmt + pkgs.glslang + pkgs.libxkbcommon + pkgs.wayland + pkgs.xorg.libxcb + pkgs.xorg.xcbutil + pkgs.xorg.xcbutilkeysyms + pkgs.xorg.xcbutilwm + pkgs.sdl3 + pkgs.stb + pkgs.qt6.qtwayland + pkgs.wayland-protocols + pkgs.libpng + ]; + + buildPhase = '' + # === setup === + export QT_QPA_PLATFORM="wayland" + export QT_PLUGIN_PATH="${pkgs.qt6.qtwayland}/lib/qt-6/plugins:${pkgs.qt6.qtbase}/lib/qt-6/plugins" + export QML2_IMPORT_PATH="${pkgs.qt6.qtbase}/lib/qt-6/qml" + 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"} + # === setup === + + # === build === + cmake -S . -B build/ -DENABLE_QT_GUI=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + # cmake --build ./build --parallel $(nproc) + # === build === + ''; + + installPhase = '' + cmake --install ./build --parallel $(nproc) + ''; + + }; + + }; +} From 5abf549e0233af1d4625dd4cb2e34116c31c68de Mon Sep 17 00:00:00 2001 From: BuyMyMojo Date: Thu, 27 Mar 2025 19:37:39 +1100 Subject: [PATCH 2/5] Fix up flake for shadps4-git --- home-manager/programs/shadps4/flake.lock | 27 ++++++++ home-manager/programs/shadps4/flake.nix | 87 +++++++++++++++++------- 2 files changed, 88 insertions(+), 26 deletions(-) create mode 100644 home-manager/programs/shadps4/flake.lock diff --git a/home-manager/programs/shadps4/flake.lock b/home-manager/programs/shadps4/flake.lock new file mode 100644 index 0000000..787db5d --- /dev/null +++ b/home-manager/programs/shadps4/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1742889210, + "narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "698214a32beb4f4c8e3942372c694f40848b360d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/home-manager/programs/shadps4/flake.nix b/home-manager/programs/shadps4/flake.nix index 1dc1304..0406032 100644 --- a/home-manager/programs/shadps4/flake.nix +++ b/home-manager/programs/shadps4/flake.nix @@ -2,20 +2,29 @@ description = "Current git build of shadps4"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs?rev=cfd19cdc54680956dc1816ac577abba6b58b901c"; + # nixpkgs.url = "github:nixos/nixpkgs?rev=cfd19cdc54680956dc1816ac577abba6b58b901c"; # Same as https://github.com/shadps4-emu/shadPS4/blob/main/shell.nix + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; }; outputs = { self, nixpkgs }: + let + pkgs = import nixpkgs { + config.allowUnfree = true; + system = "x86_64-linux"; + }; + in { - packages.x86_64-linux.default = stdenv.mkDerivation { + packages.x86_64-linux.default = pkgs.stdenv.mkDerivation { name = "shadps4-git"; pname = "shadps4"; src = pkgs.fetchgit { - url = "https://github.com/shadps4-emu/shadPS4"; + url = "https://github.com/shadps4-emu/shadPS4/437af9320104011b32c34c85a6d888a78969b705"; fetchSubmodules = true; + hash = "sha256-jEGa/W3FaPkqFN3oPOw2vEZpRUiSbOGusBH6L6LqbL8="; + leaveDotGit = true; }; nativeBuildInputs = [ @@ -23,6 +32,7 @@ pkgs.cmake pkgs.pkg-config pkgs.git + pkgs.qt6.wrapQtAppsHook ]; buildInputs = [ @@ -61,36 +71,61 @@ pkgs.libpng ]; - buildPhase = '' - # === setup === - export QT_QPA_PLATFORM="wayland" - export QT_PLUGIN_PATH="${pkgs.qt6.qtwayland}/lib/qt-6/plugins:${pkgs.qt6.qtbase}/lib/qt-6/plugins" - export QML2_IMPORT_PATH="${pkgs.qt6.qtbase}/lib/qt-6/qml" - export CMAKE_PREFIX_PATH="${pkgs.vulkan-headers}:$CMAKE_PREFIX_PATH" + # buildPhase = '' + # # === setup === + # export QT_QPA_PLATFORM="wayland" + # export QT_PLUGIN_PATH="${pkgs.qt6.qtwayland}/lib/qt-6/plugins:${pkgs.qt6.qtbase}/lib/qt-6/plugins" + # export QML2_IMPORT_PATH="${pkgs.qt6.qtbase}/lib/qt-6/qml" + # 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" + # # 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"} - # === setup === + # export LDFLAGS="-L${pkgs.llvmPackages_18.libcxx}/lib -lc++" + # export LC_ALL="C.UTF-8" + # export XAUTHORITY=${builtins.getEnv "XAUTHORITY"} + # # === setup === - # === build === - cmake -S . -B build/ -DENABLE_QT_GUI=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ - # cmake --build ./build --parallel $(nproc) - # === build === - ''; + # # === build === + # cmake -S . -B build/ -DENABLE_QT_GUI=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + # # cmake --build ./build --parallel $(nproc) + # # === build === + # ''; + + # installPhase = '' + # cmake --install . --parallel $(nproc) + # ''; + + cmakeFlags = [ + (nixpkgs.lib.cmakeBool "ENABLE_QT_GUI" true) + (nixpkgs.lib.cmakeBool "ENABLE_UPDATER" false) + ]; + + # Still in development, help with debugging + # cmakeBuildType = "RelWithDebugInfo"; + # dontStrip = true; installPhase = '' - cmake --install ./build --parallel $(nproc) + runHook preInstall + + install -D -t $out/bin shadps4 + install -Dm644 $src/.github/shadps4.png $out/share/icons/hicolor/512x512/apps/net.shadps4.shadPS4.png + install -Dm644 -t $out/share/applications $src/dist/net.shadps4.shadPS4.desktop + install -Dm644 -t $out/share/metainfo $src/dist/net.shadps4.shadPS4.metainfo.xml + + runHook postInstall ''; + runtimeDependencies = [ + pkgs.vulkan-loader + pkgs.xorg.libXi + ]; + }; }; From d7d3cf6f1f3a2abfdb0b26503e0cfed27a50f1f7 Mon Sep 17 00:00:00 2001 From: BuyMyMojo Date: Thu, 27 Mar 2025 20:11:53 +1100 Subject: [PATCH 3/5] Finalise git fetching for shadps4-git (At least the manual version) --- home-manager/programs/shadps4/flake.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/home-manager/programs/shadps4/flake.nix b/home-manager/programs/shadps4/flake.nix index 0406032..bfaa9aa 100644 --- a/home-manager/programs/shadps4/flake.nix +++ b/home-manager/programs/shadps4/flake.nix @@ -20,10 +20,12 @@ name = "shadps4-git"; pname = "shadps4"; - src = pkgs.fetchgit { - url = "https://github.com/shadps4-emu/shadPS4/437af9320104011b32c34c85a6d888a78969b705"; + src = pkgs.fetchFromGitHub { + owner = "shadps4-emu"; + repo = "shadPS4"; + rev = "437af9320104011b32c34c85a6d888a78969b705"; + hash = "sha256-yKaDoqQUGlcfHghqvzs9V8ZjPkO7E1imeTeyiMqGvJw="; fetchSubmodules = true; - hash = "sha256-jEGa/W3FaPkqFN3oPOw2vEZpRUiSbOGusBH6L6LqbL8="; leaveDotGit = true; }; From 062e3fa750506b4aca6a0d24d7af220190b2ae7d Mon Sep 17 00:00:00 2001 From: BuyMyMojo Date: Thu, 27 Mar 2025 20:12:14 +1100 Subject: [PATCH 4/5] install shadps4-git --- home-manager/flake.nix | 1 + home-manager/packages.nix | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/home-manager/flake.nix b/home-manager/flake.nix index d303620..6249fbc 100644 --- a/home-manager/flake.nix +++ b/home-manager/flake.nix @@ -16,6 +16,7 @@ inputs.nixpkgs.follows = "nixpkgs-unstable"; }; + shadps4-git.url = "./programs/shadps4"; }; diff --git a/home-manager/packages.nix b/home-manager/packages.nix index 698ba6e..fd943ad 100644 --- a/home-manager/packages.nix +++ b/home-manager/packages.nix @@ -33,7 +33,7 @@ # The home.packages option allows you to install Nix packages into your # environment. - home.packages = with unstable; [ + home.packages = with unstable; with inputs; [ pkgs.nextcloud-client pkgs.yubioath-flutter pkgs.xpipe @@ -47,6 +47,7 @@ unstable.torzu pkgs.heroic-unwrapped pkgs.ludusavi + inputs.shadps4-git.packages."x86_64-linux".default # === Minecraft === pkgs.prismlauncher From fa5e9af38efd14856a05d201720bc116fcb882b0 Mon Sep 17 00:00:00 2001 From: BuyMyMojo Date: Thu, 27 Mar 2025 20:12:23 +1100 Subject: [PATCH 5/5] bump flake.lock --- home-manager/flake.lock | 46 ++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/home-manager/flake.lock b/home-manager/flake.lock index 370c37b..3f582cd 100644 --- a/home-manager/flake.lock +++ b/home-manager/flake.lock @@ -97,11 +97,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1742669843, - "narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=", + "lastModified": 1742889210, + "narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1e5b653dff12029333a6546c11e108ede13052eb", + "rev": "698214a32beb4f4c8e3942372c694f40848b360d", "type": "github" }, "original": { @@ -113,11 +113,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1742751704, - "narHash": "sha256-rBfc+H1dDBUQ2mgVITMGBPI1PGuCznf9rcWX/XIULyE=", + "lastModified": 1742937945, + "narHash": "sha256-lWc+79eZRyvHp/SqMhHTMzZVhpxkRvthsP1Qx6UCq0E=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f0946fa5f1fb876a9dc2e1850d9d3a4e3f914092", + "rev": "d02d88f8de5b882ccdde0465d8fa2db3aa1169f7", "type": "github" }, "original": { @@ -127,6 +127,22 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1742889210, + "narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "698214a32beb4f4c8e3942372c694f40848b360d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "pnpm2nix": { "inputs": { "flake-utils": "flake-utils_2", @@ -151,7 +167,23 @@ "home-manager": "home-manager", "moonlight": "moonlight", "nixpkgs": "nixpkgs_2", - "nixpkgs-unstable": "nixpkgs-unstable" + "nixpkgs-unstable": "nixpkgs-unstable", + "shadps4-git": "shadps4-git" + } + }, + "shadps4-git": { + "inputs": { + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1, + "narHash": "sha256-40v+vomEF78ueMyMiz3GbMFJi4WOnzfbkGxiB+vFLSY=", + "path": "/nix/store/7w83b1vpap9c0x2gz3g2an6k5n9wkmdk-source/home-manager/programs/shadps4", + "type": "path" + }, + "original": { + "path": "/nix/store/7w83b1vpap9c0x2gz3g2an6k5n9wkmdk-source/home-manager/programs/shadps4", + "type": "path" } }, "systems": {