Merge 1b2ae5844d into c914fe7d23
This commit is contained in:
commit
54adc5ffb6
|
|
@ -0,0 +1,65 @@
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
version,
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
glib,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
extensionUuid = "breezydesktop@xronlinux.com";
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "gnome-shell-extension-breezy-desktop";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = self;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
glib # for glib-compile-schemas
|
||||||
|
];
|
||||||
|
|
||||||
|
dontConfigure = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit extensionUuid;
|
||||||
|
};
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
extDir=$out/share/gnome-shell/extensions/${extensionUuid}
|
||||||
|
mkdir -p $extDir
|
||||||
|
|
||||||
|
# JavaScript source files
|
||||||
|
cd gnome/src
|
||||||
|
for f in *.js metadata.json; do
|
||||||
|
install -Dm644 "$f" "$extDir/$f"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Fragment shader (resolve symlink)
|
||||||
|
cp -L Sombrero.frag "$extDir/Sombrero.frag"
|
||||||
|
|
||||||
|
# D-Bus interfaces
|
||||||
|
mkdir -p "$extDir/dbus-interfaces"
|
||||||
|
cp dbus-interfaces/*.xml "$extDir/dbus-interfaces/"
|
||||||
|
|
||||||
|
# Textures (resolve symlinks)
|
||||||
|
mkdir -p "$extDir/textures"
|
||||||
|
cp -L textures/* "$extDir/textures/"
|
||||||
|
|
||||||
|
# GSettings schema (resolve symlink and compile)
|
||||||
|
mkdir -p "$extDir/schemas"
|
||||||
|
cp -L schemas/*.xml "$extDir/schemas/"
|
||||||
|
glib-compile-schemas "$extDir/schemas"
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "GNOME Shell extension for Breezy Desktop XR virtual display";
|
||||||
|
homepage = "https://github.com/wheaney/breezy-desktop";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,89 @@
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
version,
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
cmake,
|
||||||
|
pkg-config,
|
||||||
|
kdePackages,
|
||||||
|
libepoxy,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "breezy-kwin";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = self;
|
||||||
|
|
||||||
|
sourceRoot = ".";
|
||||||
|
|
||||||
|
unpackPhase = ''
|
||||||
|
cp -r $src $TMPDIR/breezy-desktop
|
||||||
|
chmod -R u+w $TMPDIR/breezy-desktop
|
||||||
|
cd $TMPDIR/breezy-desktop/kwin
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
kdePackages.extra-cmake-modules
|
||||||
|
kdePackages.wrapQtAppsHook
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = with kdePackages; [
|
||||||
|
kconfig
|
||||||
|
kconfigwidgets
|
||||||
|
kcoreaddons
|
||||||
|
kglobalaccel
|
||||||
|
ki18n
|
||||||
|
kcmutils
|
||||||
|
kwindowsystem
|
||||||
|
kxmlgui
|
||||||
|
kwin
|
||||||
|
qtbase
|
||||||
|
qtdeclarative
|
||||||
|
qt3d
|
||||||
|
qtquick3d
|
||||||
|
libepoxy
|
||||||
|
];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
# VERSION is read relative to kwin/src/../VERSION = kwin/VERSION
|
||||||
|
# and also from kwin/../VERSION for the top-level CMakeLists.txt
|
||||||
|
echo "${finalAttrs.version}" > ../VERSION
|
||||||
|
echo "${finalAttrs.version}" > VERSION
|
||||||
|
|
||||||
|
# Copy files expected by CMake install but located elsewhere in the mono-repo
|
||||||
|
cp ../ui/modules/PyXRLinuxDriverIPC/xrdriveripc.py src/xrdriveripc/xrdriveripc.py
|
||||||
|
cp ../ui/data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg src/kcm/com.xronlinux.BreezyDesktop.svg
|
||||||
|
|
||||||
|
# Fix hardcoded /usr/include/kwin path
|
||||||
|
substituteInPlace cmake/info.cmake \
|
||||||
|
--replace-fail '/usr/include/kwin/effect/effect.h' \
|
||||||
|
'${kdePackages.kwin.dev}/include/kwin/effect/effect.h'
|
||||||
|
|
||||||
|
# Fix QtQuick3D QML module detection - bypass qmake query
|
||||||
|
substituteInPlace CMakeLists.txt \
|
||||||
|
--replace-fail 'execute_process(
|
||||||
|
COMMAND ''${QT6_QMAKE_EXECUTABLE} -query QT_INSTALL_QML
|
||||||
|
OUTPUT_VARIABLE QT6_QML_DIR
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
)' 'set(QT6_QML_DIR "${kdePackages.qtquick3d}/lib/qt-6/qml")'
|
||||||
|
|
||||||
|
# Remove the hardcoded /usr/include reference
|
||||||
|
substituteInPlace src/CMakeLists.txt \
|
||||||
|
--replace-fail 'target_include_directories(breezy_desktop PRIVATE /usr/include/kwin)' \
|
||||||
|
'target_include_directories(breezy_desktop PRIVATE ${kdePackages.kwin.dev}/include/kwin)'
|
||||||
|
'';
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "KWin effect plugin for Breezy Desktop XR virtual display";
|
||||||
|
homepage = "https://github.com/wheaney/breezy-desktop";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
version,
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
meson,
|
||||||
|
ninja,
|
||||||
|
pkg-config,
|
||||||
|
gettext,
|
||||||
|
glib,
|
||||||
|
gtk4,
|
||||||
|
libadwaita,
|
||||||
|
desktop-file-utils,
|
||||||
|
gobject-introspection,
|
||||||
|
wrapGAppsHook4,
|
||||||
|
python3Packages,
|
||||||
|
python3,
|
||||||
|
gst_all_1,
|
||||||
|
appstream,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "breezy-desktop-ui";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
# Use the ui/ subtree but need root for VERSION file
|
||||||
|
src = self;
|
||||||
|
sourceRoot = "ui";
|
||||||
|
|
||||||
|
# The source is a nix store path, not a directory name
|
||||||
|
unpackPhase = ''
|
||||||
|
cp -r $src $TMPDIR/breezy-desktop
|
||||||
|
chmod -R u+w $TMPDIR/breezy-desktop
|
||||||
|
cd $TMPDIR/breezy-desktop/ui
|
||||||
|
sourceRoot=$(pwd)
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
gettext
|
||||||
|
glib # glib-compile-schemas
|
||||||
|
gtk4 # gtk-update-icon-cache
|
||||||
|
desktop-file-utils
|
||||||
|
gobject-introspection
|
||||||
|
wrapGAppsHook4
|
||||||
|
appstream # appstreamcli for validation
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
gtk4
|
||||||
|
libadwaita
|
||||||
|
glib
|
||||||
|
gst_all_1.gstreamer
|
||||||
|
gst_all_1.gst-plugins-base
|
||||||
|
(python3.withPackages (
|
||||||
|
ps: with ps; [
|
||||||
|
pygobject3
|
||||||
|
pydbus
|
||||||
|
]
|
||||||
|
))
|
||||||
|
];
|
||||||
|
|
||||||
|
# Patch the entry scripts to use Nix store paths instead of XDG_DATA_HOME
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace src/breezydesktop.in \
|
||||||
|
--replace-fail "appdir = os.getenv('APPDIR', xdg_data_home)" \
|
||||||
|
"appdir = os.getenv('APPDIR', '$out/share')"
|
||||||
|
substituteInPlace src/virtualdisplay.in \
|
||||||
|
--replace-fail "appdir = os.getenv('APPDIR', xdg_data_home)" \
|
||||||
|
"appdir = os.getenv('APPDIR', '$out/share')" || true
|
||||||
|
|
||||||
|
# Upstream bug: virtualdisplayrow.py is missing from meson.build install list
|
||||||
|
substituteInPlace src/meson.build \
|
||||||
|
--replace-fail "'virtualdisplay.py'," "'virtualdisplay.py', 'virtualdisplayrow.py',"
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Skip tests that need network or display
|
||||||
|
mesonFlags = [
|
||||||
|
];
|
||||||
|
|
||||||
|
# wrapGAppsHook4 handles GI_TYPELIB_PATH, GDK_PIXBUF, etc.
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "GTK4 settings UI for Breezy Desktop XR";
|
||||||
|
homepage = "https://github.com/wheaney/breezy-desktop";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
version,
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
meson,
|
||||||
|
ninja,
|
||||||
|
pkg-config,
|
||||||
|
glslang,
|
||||||
|
spirv-headers,
|
||||||
|
vulkan-headers,
|
||||||
|
vulkan-loader,
|
||||||
|
libx11,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "breezy-vulkan";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
src = "${self}/vulkan/modules/vkBasalt";
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
glslang
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
spirv-headers
|
||||||
|
vulkan-headers
|
||||||
|
vulkan-loader
|
||||||
|
libx11
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall =
|
||||||
|
let
|
||||||
|
sombreroSrc = "${self}/modules/sombrero";
|
||||||
|
vulkanSrc = "${self}/vulkan";
|
||||||
|
in
|
||||||
|
''
|
||||||
|
# Install sombrero shaders
|
||||||
|
mkdir -p $out/share/breezy-vulkan/shaders
|
||||||
|
cp ${sombreroSrc}/Sombrero.frag $out/share/breezy-vulkan/shaders/
|
||||||
|
cp ${sombreroSrc}/calibrating.png $out/share/breezy-vulkan/shaders/ || true
|
||||||
|
|
||||||
|
# Install breezy vulkan config
|
||||||
|
install -Dm644 ${vulkanSrc}/config/vkBasalt.conf $out/share/breezy-vulkan/vkBasalt.conf
|
||||||
|
|
||||||
|
# Install custom banner
|
||||||
|
cp ${vulkanSrc}/custom_banner.png $out/share/breezy-vulkan/ || true
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Vulkan post-processing layer for Breezy Desktop XR gaming";
|
||||||
|
homepage = "https://github.com/wheaney/breezy-desktop";
|
||||||
|
license = lib.licenses.gpl3Only;
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1776169885,
|
||||||
|
"narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1774106199,
|
||||||
|
"narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"xrlinuxdriver": "xrlinuxdriver"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xrlinuxdriver": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1776468124,
|
||||||
|
"narHash": "sha256-Hd/D09C/8eYdQD3bhoZo02Ta1ZxsATavZdIL7Dsv8FI=",
|
||||||
|
"ref": "shymega/nix-flake-support",
|
||||||
|
"rev": "888dceff06f7d0a5b88e2b29c5d98905aa447560",
|
||||||
|
"revCount": 418,
|
||||||
|
"submodules": true,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/shymega/XRLinuxDriver"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"ref": "shymega/nix-flake-support",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/shymega/XRLinuxDriver"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
{
|
||||||
|
description = "Nix Flake for Breezy Desktop";
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable";
|
||||||
|
flake-compat = {
|
||||||
|
url = "github:edolstra/flake-compat";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
xrlinuxdriver.url = "git+https://github.com/shymega/XRLinuxDriver?ref=shymega/nix-flake-support";
|
||||||
|
self.submodules = true;
|
||||||
|
};
|
||||||
|
outputs =
|
||||||
|
inputs:
|
||||||
|
let
|
||||||
|
inherit (inputs) self nixpkgs flake-utils;
|
||||||
|
|
||||||
|
forEachSystem =
|
||||||
|
let
|
||||||
|
systems = [
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-linux"
|
||||||
|
];
|
||||||
|
genPkgs = system: nixpkgs.legacyPackages.${system};
|
||||||
|
inherit (nixpkgs.lib) genAttrs;
|
||||||
|
in
|
||||||
|
f: genAttrs systems (system: f (genPkgs system));
|
||||||
|
in
|
||||||
|
{
|
||||||
|
packages = forEachSystem (
|
||||||
|
pkgs:
|
||||||
|
let
|
||||||
|
version = builtins.readFile "${self}/VERSION";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
breezy-gnome = pkgs.callPackage ./.nix/packages/breezy-gnome { inherit self version; };
|
||||||
|
breezy-kde = pkgs.callPackage ./.nix/packages/breezy-kde { inherit self version; };
|
||||||
|
breezy-ui = pkgs.callPackage ./.nix/packages/breezy-ui { inherit self version; };
|
||||||
|
breezy-vulkan = pkgs.callPackage ./.nix/packages/breezy-vulkan { inherit self version; };
|
||||||
|
breezy-desktop = pkgs.symlinkJoin {
|
||||||
|
name = "breezy-desktop";
|
||||||
|
paths = with self.packages.${pkgs.stdenv.hostPlatform.system}; [
|
||||||
|
breezy-gnome
|
||||||
|
breezy-kde
|
||||||
|
breezy-ui
|
||||||
|
breezy-vulkan
|
||||||
|
] ++ (with inputs.xrlinuxdriver.packages.${pkgs.stdenv.hostPlatform.system}; [
|
||||||
|
xrlinuxdriver
|
||||||
|
]);
|
||||||
|
meta.mainProgram = "breezydesktop";
|
||||||
|
};
|
||||||
|
default = self.packages.${pkgs.stdenv.hostPlatform.system}.breezy-desktop;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
devShells = forEachSystem (pkgs: {
|
||||||
|
default = pkgs.mkShell {
|
||||||
|
inputsFrom = with self.packages.${pkgs.stdenv.hostPlatform.system}; [ default ];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
overlays.default = _: prev: self.packages.${prev.stdenv.hostPlatform.system};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue