quickshell/default.nix

78 lines
2 KiB
Nix
Raw Normal View History

2024-03-04 13:04:29 +00:00
{
lib,
nix-gitignore,
pkgs,
keepDebugInfo,
buildStdenv ? pkgs.clang17Stdenv,
2024-03-04 13:04:29 +00:00
cmake,
ninja,
qt6,
wayland,
wayland-protocols,
2024-03-09 07:08:50 +00:00
gitRev ? (let
headExists = builtins.pathExists ./.git/HEAD;
headContent = builtins.readFile ./.git/HEAD;
in if headExists
then (let
matches = builtins.match "ref: refs/heads/(.*)\n" headContent;
in if matches != null
then builtins.readFile ./.git/refs/heads/${builtins.elemAt matches 0}
else headContent)
else "unknown"),
2024-03-04 13:04:29 +00:00
debug ? false,
enableWayland ? true,
nvidiaCompat ? false,
2024-04-19 09:46:38 +00:00
svgSupport ? true, # you almost always want this
}: buildStdenv.mkDerivation {
2024-03-04 13:04:29 +00:00
pname = "quickshell${lib.optionalString debug "-debug"}";
2024-03-04 13:49:37 +00:00
version = "0.1.0";
src = nix-gitignore.gitignoreSource "/docs\n/examples\n" ./.;
2024-03-04 13:04:29 +00:00
nativeBuildInputs = with pkgs; [
cmake
ninja
qt6.wrapQtAppsHook
] ++ (lib.optionals enableWayland [
pkg-config
wayland-protocols
wayland-scanner
]);
buildInputs = with pkgs; [
qt6.qtbase
qt6.qtdeclarative
2024-04-19 09:46:38 +00:00
]
++ (lib.optionals enableWayland [ qt6.qtwayland wayland ])
++ (lib.optionals svgSupport [ qt6.qtsvg ]);
2024-03-04 13:04:29 +00:00
QTWAYLANDSCANNER = lib.optionalString enableWayland "${qt6.qtwayland}/libexec/qtwaylandscanner";
configurePhase = let
cmakeBuildType = if debug
then "Debug"
else "RelWithDebInfo";
in ''
cmakeBuildType=${cmakeBuildType} # qt6 setup hook resets this for some godforsaken reason
cmakeConfigurePhase
'';
2024-03-09 07:08:50 +00:00
cmakeFlags = [
"-DGIT_REVISION=${gitRev}"
] ++ lib.optional (!enableWayland) "-DWAYLAND=OFF"
++ lib.optional nvidiaCompat "-DNVIDIA_COMPAT=ON";
2024-03-04 13:04:29 +00:00
buildPhase = "ninjaBuildPhase";
enableParallelBuilding = true;
dontStrip = true;
meta = with lib; {
homepage = "https://git.outfoxxed.me/outfoxxed/quickshell";
description = "Simple and flexbile QtQuick based desktop shell toolkit";
2024-03-04 13:49:37 +00:00
license = licenses.lgpl3Only;
2024-03-04 13:04:29 +00:00
platforms = platforms.linux;
};
}