use unpatched qt for dev tooling (fmt, lint, devshell)

This commit is contained in:
Damocles 2026-04-20 20:59:06 +02:00
parent e85cd40266
commit 06fb97bc23
2 changed files with 38 additions and 24 deletions

View file

@ -55,8 +55,9 @@
nixpkgs.lib.genAttrs systems ( nixpkgs.lib.genAttrs systems (
system: system:
fn rec { fn rec {
pkgs = (nixpkgs.legacyPackages.${system}).extend qtbaseOverlay; rawPkgs = nixpkgs.legacyPackages.${system};
treefmt-eval = treefmt-nix.lib.evalModule pkgs treefmt-config; pkgs = rawPkgs.extend qtbaseOverlay;
treefmt-eval = treefmt-nix.lib.evalModule rawPkgs treefmt-config;
} }
); );
in in
@ -64,7 +65,7 @@
formatter = forAllSystems ({ treefmt-eval, ... }: treefmt-eval.config.build.wrapper); formatter = forAllSystems ({ treefmt-eval, ... }: treefmt-eval.config.build.wrapper);
packages = forAllSystems ( packages = forAllSystems (
{ pkgs, ... }: { pkgs, rawPkgs, ... }:
let let
# Rebuild quickshell against patched Qt via its overlay # Rebuild quickshell against patched Qt via its overlay
qs = (pkgs.extend quickshell.overlays.default).quickshell.override { qs = (pkgs.extend quickshell.overlays.default).quickshell.override {
@ -94,28 +95,30 @@
pname = "screen-uaf-reproducer-patched"; pname = "screen-uaf-reproducer-patched";
version = "0"; version = "0";
src = ./test/screen-uaf-reproducer; src = ./test/screen-uaf-reproducer;
nativeBuildInputs = [ pkgs.cmake pkgs.qt6.wrapQtAppsHook ]; nativeBuildInputs = [
pkgs.cmake
pkgs.qt6.wrapQtAppsHook
];
buildInputs = [ pkgs.qt6.qtbase ]; buildInputs = [ pkgs.qt6.qtbase ];
}; };
screen-uaf-reproducer-unpatched = screen-uaf-reproducer-unpatched = rawPkgs.stdenv.mkDerivation {
let
rawPkgs = nixpkgs.legacyPackages.${pkgs.stdenv.hostPlatform.system};
in
rawPkgs.stdenv.mkDerivation {
pname = "screen-uaf-reproducer-unpatched"; pname = "screen-uaf-reproducer-unpatched";
version = "0"; version = "0";
src = ./test/screen-uaf-reproducer; src = ./test/screen-uaf-reproducer;
nativeBuildInputs = [ rawPkgs.cmake rawPkgs.qt6.wrapQtAppsHook ]; nativeBuildInputs = [
rawPkgs.cmake
rawPkgs.qt6.wrapQtAppsHook
];
buildInputs = [ rawPkgs.qt6.qtbase ]; buildInputs = [ rawPkgs.qt6.qtbase ];
}; };
} }
); );
devShells = forAllSystems ( devShells = forAllSystems (
{ pkgs, ... }: { rawPkgs, ... }:
{ {
default = pkgs.mkShell { default = rawPkgs.mkShell {
packages = with pkgs; [ packages = with rawPkgs; [
cargo cargo
rustc rustc
rust-analyzer rust-analyzer
@ -129,21 +132,25 @@
); );
checks = forAllSystems ( checks = forAllSystems (
{ pkgs, treefmt-eval }: {
pkgs,
rawPkgs,
treefmt-eval,
}:
{ {
formatting = treefmt-eval.config.build.check self; formatting = treefmt-eval.config.build.check self;
build = self.packages.${pkgs.stdenv.hostPlatform.system}.default; build = self.packages.${pkgs.stdenv.hostPlatform.system}.default;
nova-stats = self.packages.${pkgs.stdenv.hostPlatform.system}.nova-stats; nova-stats = self.packages.${pkgs.stdenv.hostPlatform.system}.nova-stats;
docs = self.packages.${pkgs.stdenv.hostPlatform.system}.docs; docs = self.packages.${pkgs.stdenv.hostPlatform.system}.docs;
qmllint = qmllint =
pkgs.runCommand "nova-shell-qmllint" rawPkgs.runCommand "nova-shell-qmllint"
{ {
nativeBuildInputs = [ pkgs.qt6.qtdeclarative ]; nativeBuildInputs = [ rawPkgs.qt6.qtdeclarative ];
src = self; src = self;
} }
'' ''
cd $src cd $src
export QML_IMPORT_PATH="${pkgs.qt6.qtdeclarative}/lib/qt-6/qml:${ export QML_IMPORT_PATH="${rawPkgs.qt6.qtdeclarative}/lib/qt-6/qml:${
quickshell.packages.${pkgs.stdenv.hostPlatform.system}.default quickshell.packages.${pkgs.stdenv.hostPlatform.system}.default
}/lib/qt-6/qml" }/lib/qt-6/qml"
qmllint -E \ qmllint -E \

View file

@ -1,4 +1,11 @@
{ pkgs ? import <nixpkgs> {} }: {
pkgs ? import <nixpkgs> { },
}:
pkgs.mkShell { pkgs.mkShell {
nativeBuildInputs = with pkgs; [ cmake qt6.qtbase qt6.wrapQtAppsHook wlr-randr ]; nativeBuildInputs = with pkgs; [
cmake
qt6.qtbase
qt6.wrapQtAppsHook
wlr-randr
];
} }