nix-flakes/overlays/hoffice/default.nix
imnyang bbac123a8d
Some checks failed
CI / check (push) Has been cancelled
CI / ida (push) Has been cancelled
CI / cpt (push) Has been cancelled
CI / build-nixos (ena) (push) Has been cancelled
CI / build-nixos (hako) (push) Has been cancelled
CI / build-nixos (kazusa) (push) Has been cancelled
CI / build-nixos (mizuki) (push) Has been cancelled
wow
2026-07-03 00:45:07 +09:00

185 lines
4.9 KiB
Nix

final: prev:
{
hoffice = prev.stdenv.mkDerivation rec {
pname = "hoffice";
version = "11.20.0.1520";
src = prev.fetchurl {
url = "https://dl.dropbox.com/scl/fi/ia3ub05nti01h8lzb3vwr/1732118678_hoffice_11.20.0.1520_amd64.deb?rlkey=8bnxl9chpm7rt6sr6nc4eoqp0&st=yaxlb481&dl=0";
sha256 = "1ecb2f82e915b49706d1f5f6d206f8bd4a9384fda2bd56798c94046865fe5730";
name = "hoffice-${version}.deb";
};
kimeLib = prev.fetchurl {
url = "https://github.com/Riey/kime/releases/latest/download/libkime-qt-5.11.3.so";
sha256 = "sha256-26udhVyqW+z5Calp3x4uSPM34/u1kSWViJv3LGWeEG0=";
};
nativeBuildInputs = with prev; [
wget
libarchive
xdg-utils
makeWrapper
autoPatchelfHook
];
dontWrapQtApps = true;
# dontPatchELF = true;
buildInputs = with prev; [
cairo
fontconfig
freetype
glibc
libGLU
(harfbuzz.override { withIcu = true; })
cups
curl
curlWithGnuTls
icu63
openssl_1_1
libxcb
libsForQt5.qtbase
libsForQt5.qtx11extras
libsForQt5.qtwayland
libsForQt5.qtmultimedia
libsForQt5.qtwebsockets
zlib
pulseaudio
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
alsa-lib
nss
nspr
gtk3
atk
pango
gdk-pixbuf
xorg.libXcursor
xorg.libXdamage
xorg.libXtst
xorg.libXrandr
xorg.libX11
xorg.libXext
xorg.libXrender
xorg.libXi
xorg.libXfixes
xorg.libXcomposite
xorg.libXxf86vm
libdrm
mesa
libglvnd
kime
];
unpackPhase = ''
mkdir -p $out/tmp
cd $out/tmp
bsdtar -xf ${src}
bsdtar -xf data.tar.xz
cd -
'';
installPhase = ''
mkdir -p $out/opt
cp -r $out/tmp/opt/hnc $out/opt/
mkdir -p $out/usr/share/licenses/hoffice
cp ${./LICENSE} $out/usr/share/licenses/hoffice/LICENSE
# Install input method libraries
mkdir -p "$out/opt/hnc/hoffice11/Bin/qt/plugins/platforminputcontexts"
cp ${kimeLib} "$out/opt/hnc/hoffice11/Bin/qt/plugins/platforminputcontexts/libkime-qt-5.11.3.so"
# Create wrapper scripts
mkdir -p $out/bin
libPath="${prev.lib.makeLibraryPath [
prev.glibc
prev.libxcb
prev.libsForQt5.qtbase
prev.libsForQt5.qtx11extras
prev.libsForQt5.qtwayland
prev.libsForQt5.qtmultimedia
prev.libsForQt5.qtwebsockets
prev.cairo
prev.fontconfig
prev.freetype
(prev.harfbuzz.override { withIcu = true; })
prev.icu63
prev.cups
prev.curl
prev.curlWithGnuTls
prev.openssl_1_1
prev.libGLU
prev.zlib
prev.pulseaudio
prev.gst_all_1.gstreamer
prev.gst_all_1.gst-plugins-base
prev.gst_all_1.gst-plugins-good
prev.alsa-lib
prev.nss
prev.nspr
prev.gtk3
prev.atk
prev.pango
prev.gdk-pixbuf
prev.xorg.libXcursor
prev.xorg.libXdamage
prev.xorg.libXtst
prev.xorg.libXrandr
prev.xorg.libX11
prev.xorg.libXext
prev.xorg.libXrender
prev.xorg.libXi
prev.xorg.libXfixes
prev.xorg.libXcomposite
prev.xorg.libXxf86vm
prev.libdrm
prev.mesa
prev.libglvnd
prev.kime
]}"
for cmd in hwp hsl hword hcl; do
mv "$out/opt/hnc/hoffice11/Bin/$cmd" "$out/opt/hnc/hoffice11/Bin/$cmd.real"
makeWrapper "$out/opt/hnc/hoffice11/Bin/$cmd.real" "$out/opt/hnc/hoffice11/Bin/$cmd" \
--set LD_LIBRARY_PATH "$libPath" \
--set QT_QPA_PLATFORM xcb \
--set QT_XCB_GL_INTEGRATION none \
--set QT_OPENGL software \
--set QT_QUICK_BACKEND software \
--set LIBGL_ALWAYS_SOFTWARE 1
makeWrapper "$out/opt/hnc/hoffice11/Bin/$cmd.real" "$out/bin/$cmd" \
--set LD_LIBRARY_PATH "$libPath" \
--set QT_QPA_PLATFORM xcb \
--set QT_XCB_GL_INTEGRATION none \
--set QT_OPENGL software \
--set QT_QUICK_BACKEND software \
--set LIBGL_ALWAYS_SOFTWARE 1
done
rm -rf $out/tmp
'';
postInstall = ''
xdg-icon-resource forceupdate --theme hicolor &>/dev/null || true
update-desktop-database -q || true
'';
meta = with prev.lib; {
description = "Office document editor for Linux - Hancom Office Editor";
longDescription = ''
,
.
'';
homepage = "https://www.hancom.com";
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = [{
name = "imnyang";
email = "me@imnya.ng";
}];
};
};
}