diff --git a/.gitignore b/.gitignore index 49a9e3b..dba3b22 100644 --- a/.gitignore +++ b/.gitignore @@ -34,5 +34,10 @@ .vscode/ .cache/ build/ +/result + +# direnv +/.direnv +/.envrc compile_commands.json diff --git a/flake.nix b/flake.nix index 673d67f..798fdfb 100644 --- a/flake.nix +++ b/flake.nix @@ -36,14 +36,9 @@ }); devShells = eachSystem (system: { - default = pkgsFor.${system}.mkShell { - inputsFrom = [self.packages.${system}.hyprsysteminfo]; - - shellHook = '' - # Generate compile_commands.json - CMAKE_EXPORT_COMPILE_COMMANDS=1 cmake -S . -B ./build - ln -s build/compile_commands.json . - ''; + default = import ./nix/shell.nix { + pkgs = pkgsFor.${system}; + inherit (pkgsFor.${system}) hyprsysteminfo; }; }); }; diff --git a/nix/default.nix b/nix/default.nix index f59cfa3..d76ceed 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -1,28 +1,23 @@ { lib, + nix-gitignore, stdenv, + cmake, - kdePackages, - pciutils, qt6, pkg-config, hyprutils, + pciutils, + kdePackages, version ? "0", }: let - inherit (lib.sources) cleanSource cleanSourceWith; - inherit (lib.strings) hasSuffix makeBinPath; + inherit (lib.strings) makeBinPath; in stdenv.mkDerivation { pname = "hyprsysteminfo"; inherit version; - src = cleanSourceWith { - filter = name: _type: let - baseName = baseNameOf (toString name); - in - ! (hasSuffix ".nix" baseName); - src = cleanSource ../.; - }; + src = nix-gitignore.gitignoreSource [] ./..; nativeBuildInputs = [ cmake @@ -31,11 +26,13 @@ in ]; buildInputs = [ - kdePackages.kirigami-addons qt6.qtbase + qt6.qtdeclarative qt6.qtsvg qt6.qtwayland hyprutils + kdePackages.qqc2-desktop-style + kdePackages.kirigami ]; preFixup = '' diff --git a/nix/shell.nix b/nix/shell.nix new file mode 100644 index 0000000..781eb1d --- /dev/null +++ b/nix/shell.nix @@ -0,0 +1,28 @@ +{ + pkgs ? import {}, + hyprsysteminfo ? pkgs.callPackage ./default.nix {}, + ... +}: pkgs.mkShell { + inputsFrom = [ hyprsysteminfo ]; + nativeBuildInputs = [ pkgs.clang-tools pkgs.pciutils ]; + + shellHook = let + inherit (pkgs.lib.strings) concatMapStringsSep; + qtLibPath = f: concatMapStringsSep ":" f (with pkgs.qt6; [ + qtbase + qtdeclarative + qtwayland + pkgs.kdePackages.qqc2-desktop-style + # see https://github.com/NixOS/nixpkgs/blob/e186dd1a34be7a76c6e2c038ab4b759faec32d5d/pkgs/kde/frameworks/kirigami/default.nix#L9-L11 + pkgs.kdePackages.kirigami.unwrapped + ]); + in '' + # Add Qt-related environment variables. + export QT_PLUGIN_PATH=${qtLibPath (p: "${p}/lib/qt-6/plugins")} + export QML2_IMPORT_PATH=${qtLibPath (p: "${p}/lib/qt-6/qml")} + + # Generate compile_commands.json + CMAKE_EXPORT_COMPILE_COMMANDS=1 cmake -S . -B ./build + ln -s build/compile_commands.json . + ''; +}