Files
whc-nixos/modules/apps.nix
T
WHC cac29b4c79 Add Gowin FPGA toolchain for desktop development.
Vendor Gowin EDU IDE, add openFPGALoader/Yosys/nextpnr/Apicula, and USB udev rules for Tang boards.
2026-09-19 18:34:38 +08:00

148 lines
3.2 KiB
Nix

{ pkgs, ... }:
let
# nixpkgs 里的 QQ 官方链接已 404,改用 GitHub 镜像
qq-fixed = pkgs.qq.overrideAttrs (old: {
version = "3.2.28-2026-04-29";
src = pkgs.fetchurl {
url = "https://github.com/libzonda/Linux-QQ-release/releases/download/3.2.28/QQ_3.2.28_260429_amd64_01.deb";
hash = "sha256-aOeddKzcDFpw76jqHYtkELUaIZBoQ3dNOC8y4OOh8Nc=";
};
});
# nixpkgs 走 archive.org 易失败,改用腾讯官方 AppImage
wechat-fixed = pkgs.callPackage "${pkgs.path}/pkgs/by-name/we/wechat/linux.nix" {
pname = "wechat";
version = "4.1.1";
src = pkgs.fetchurl {
url = "https://dldir1v6.qq.com/weixin/Universal/Linux/WeChatLinux_x86_64.AppImage";
hash = "sha256-T1StKQLs1vb9xWgLc1R/gNVCO/RwsBI3pXmi5bPK7us=";
};
meta = pkgs.wechat.meta;
};
# 微信/QQ 在 Wayland 下原生 IME 不稳定,强制 X11 + fcitx IM 模块
fcitxGtkPath = "${pkgs.fcitx5-gtk}/lib/gtk-3.0";
fcitxQt5Path = "${pkgs.libsForQt5.fcitx5-qt}/lib/qt-5.15/plugins";
fcitxQt6Path = "${pkgs.kdePackages.fcitx5-qt}/lib/qt-6/plugins";
wechat-ime = pkgs.writeShellScriptBin "wechat" ''
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export SDL_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export QT_QPA_PLATFORM=xcb
export GTK_PATH="${fcitxGtkPath}''${GTK_PATH:+:$GTK_PATH}"
export QT_PLUGIN_PATH="${fcitxQt5Path}:${fcitxQt6Path}''${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH}"
exec ${wechat-fixed}/bin/wechat "$@"
'';
qq-ime = pkgs.stdenvNoCC.mkDerivation {
pname = "qq-ime";
version = qq-fixed.version;
dontUnpack = true;
nativeBuildInputs = [
pkgs.makeWrapper
pkgs.copyDesktopItems
];
desktopItems = [
(pkgs.makeDesktopItem {
name = "qq";
desktopName = "QQ";
genericName = "QQ";
comment = "Tencent QQ";
exec = "qq %U";
icon = "qq";
categories = [
"Network"
"InstantMessaging"
];
startupWMClass = "QQ";
terminal = false;
})
];
installPhase = ''
mkdir -p $out/bin $out/share
makeWrapper ${qq-fixed}/bin/qq $out/bin/qq \
--set GTK_IM_MODULE fcitx \
--set QT_IM_MODULE fcitx \
--set SDL_IM_MODULE fcitx \
--set XMODIFIERS @im=fcitx \
--prefix GTK_PATH : ${fcitxGtkPath} \
--unset NIXOS_OZONE_WL \
--add-flags "--ozone-platform=x11"
if [ -d ${qq-fixed}/share/icons ]; then
cp -a ${qq-fixed}/share/icons $out/share/
fi
runHook postInstall
'';
meta = qq-fixed.meta;
};
in
{
environment.systemPackages = with pkgs; [
wget
curl
google-chrome
wechat-ime
qq-ime
wpsoffice-cn
git
gcc
gnumake
binutils
gdb
cmake
pkg-config
autoconf
automake
libtool
ninja
meson
clang
clang-tools
lld
lldb
ccache
bear
valgrind
cppcheck
python3
python3Packages.pip
openssl
zlib
file
unzip
zip
which
tree
htop
ripgrep
fd
smartmontools
lm_sensors
pciutils
usbutils
lshw
bluez
vulkan-tools
libva-utils
mesa-demos
ffmpeg
jq
bat
eza
fzf
btop
opencode
cursor-cli
];
}