erlu/default.nix
Gregory Bednov 58198c6ecd изменено: CMakeLists.txt
новый файл:    appimage-build.nix
	новый файл:    assets/icons/erlu.ico
	изменено:      default.nix
	новый файл:    packaging/windows/erlu.rc
	изменено:      src/MainWindow.cpp
	изменено:      src/MainWindow.h
	изменено:      src/items/BlockItem.cpp
	изменено:      src/items/HeaderFooterItem.cpp
	изменено:      src/main.cpp
	изменено:      src/plugins/color/ColorsPlugin.cpp
	изменено:      src/plugins/color/translations/colors_en.ts
	изменено:      src/plugins/color/translations/colors_fr.ts
	изменено:      src/plugins/color/translations/colors_ru.ts
2026-03-04 20:23:09 +03:00

74 lines
1.9 KiB
Nix

{ pkgs ? import <nixpkgs> {}
, buildColorsPlugin ? true
}:
let
inherit (pkgs) lib stdenv cmake pkg-config;
qt = pkgs.qt6;
in
stdenv.mkDerivation rec {
pname = "erlu_idef0_editor";
version = "1.0.1";
src = lib.cleanSourceWith {
src = ./.;
filter = path: type:
(lib.cleanSourceFilter path type)
&& (builtins.baseNameOf path != "build");
};
nativeBuildInputs = [
cmake
pkg-config
qt.wrapQtAppsHook
qt.qttools
];
buildInputs = [
qt.qtbase
];
configurePhase = ''
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$out \
-DBUILD_COLORS_PLUGIN=${if buildColorsPlugin then "ON" else "OFF"}
'';
buildPhase = ''
cmake --build build
find . -path "*/translations/*.ts" -print0 | while IFS= read -r -d "" f; do
out_path=$(printf '%s\n' "$f" | sed 's/\.ts$/.qm/')
lrelease "$f" -qm "$out_path"
done
'';
installPhase = ''
runHook preInstall
cmake --install build --prefix $out
# app translations
if [ -d translations ]; then
mkdir -p $out/share/idef0/translations
find translations -maxdepth 1 -type f -name '*.qm' -print0 | xargs -0 -r cp -t $out/share/idef0/translations
fi
# plugin translations
find src/plugins -path "*/translations/*.qm" -print0 | while IFS= read -r -d "" f; do
rel="''${f#src/plugins/}" # e.g., color/translations/colors_en.qm
plugdir="''${rel%%/translations/*}" # e.g., color
dest="$out/plugins/$plugdir/translations"
mkdir -p "$dest"
cp "$f" "$dest/"
done
runHook postInstall
'';
qtWrapperArgs = [
"--set" "QT_LOGGING_RULES" "qt.qpa.wayland.textinput=false"
];
meta = with lib; {
description = "IDEF0 diagram editor built with Qt 6 Widgets";
license = licenses.lgpl3Plus;
mainProgram = "erlu_idef0_editor";
platforms = platforms.linux;
};
}