{ inputs = { flake-parts.url = "github:hercules-ci/flake-parts"; nixpkgs.url = "github:nixos/nixpkgs"; }; outputs = inputs@{ flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "aarch64-linux" "x86_64-linux" ]; perSystem = { config, pkgs, ... }: { packages.default = pkgs.qt6Packages.callPackage ./build.nix { }; devShells.default = pkgs.mkShell { inputsFrom = [ config.packages.default ]; buildInputs = with pkgs; [ gdb qtcreator qt6.qttools # this is for the shellhook portion makeWrapper # bashInteractive ]; # set the environment variables that unpatched Qt apps expect shellHook = '' export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) # Add Qt-related environment variables. # https://discourse.nixos.org/t/qt-development-environment-on-a-flake-system/23707/5 setQtEnvironment=$(mktemp) random=$(openssl rand -base64 20 | sed "s/[^a-zA-Z0-9]//g") makeShellWrapper "$(type -p sh)" "$setQtEnvironment" "''${qtWrapperArgs[@]}" --argv0 "$random" sed "/$random/d" -i "$setQtEnvironment" source "$setQtEnvironment" # qmlls does not account for the import path and bases its search off qtbase's path. # The actual imports come from qtdeclarative. This directs qmlls to the correct imports. export QMLLS_BUILD_DIRS=$(pwd)/build:$QML2_IMPORT_PATH ''; }; }; }; }