Vendor Gowin EDU IDE, add openFPGALoader/Yosys/nextpnr/Apicula, and USB udev rules for Tang boards.
54 lines
1.9 KiB
Nix
54 lines
1.9 KiB
Nix
# 高云(Gowin)FPGA 开发:开源工具链 + 教育版 IDE + 下载器权限
|
||
# IDE 包装源自 ryan4yin/nur-packages(本地 vendoring,因上游已注释掉该包)
|
||
{ pkgs, ... }:
|
||
|
||
let
|
||
gowin-eda-edu-ide = pkgs.callPackage ../pkgs/gowin-eda-edu-ide { };
|
||
in
|
||
{
|
||
# openFPGALoader / 串口下载器
|
||
users.groups.plugdev = { };
|
||
users.users.whc.extraGroups = [
|
||
"dialout"
|
||
"plugdev"
|
||
];
|
||
|
||
# FTDI / Sipeed Tang 等常见下载器(含 TAG+=uaccess,登录用户可直接访问)
|
||
services.udev.extraRules = ''
|
||
# openFPGALoader — FTDI 常见 VID/PID(Tang Nano / Primer 等)
|
||
ACTION!="add|change", GOTO="gowin_fpga_end"
|
||
SUBSYSTEM!="usb|tty|hidraw", GOTO="gowin_fpga_end"
|
||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="0664", GROUP="plugdev", TAG+="uaccess"
|
||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="0664", GROUP="plugdev", TAG+="uaccess"
|
||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE="0664", GROUP="plugdev", TAG+="uaccess"
|
||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0664", GROUP="plugdev", TAG+="uaccess"
|
||
# Sipeed / CMSIS-DAP 类
|
||
ATTRS{idVendor}=="1d50", MODE="0664", GROUP="plugdev", TAG+="uaccess"
|
||
ATTRS{idVendor}=="0d28", ATTRS{idProduct}=="0204", MODE="0664", GROUP="plugdev", TAG+="uaccess"
|
||
LABEL="gowin_fpga_end"
|
||
'';
|
||
|
||
environment.systemPackages = with pkgs; [
|
||
# 烧录(官方 Programmer 在 NixOS 上不稳定,优先用这个)
|
||
openfpgaloader
|
||
|
||
# 开源综合 / 布局布线(Apicula → nextpnr himbaechel/gowin)
|
||
yosys
|
||
nextpnr
|
||
python3Packages.apycula
|
||
|
||
# 仿真与波形
|
||
iverilog
|
||
verilator
|
||
gtkwave
|
||
|
||
# 高云教育版 IDE:gowin-env / gowin-ide → 启动 gw_ide
|
||
# 强制 X11,避免 Wayland 下 Qt 插件崩溃
|
||
(writeShellScriptBin "gowin-ide" ''
|
||
export QT_QPA_PLATFORM=xcb
|
||
exec ${gowin-eda-edu-ide}/bin/gowin-env "$@"
|
||
'')
|
||
gowin-eda-edu-ide
|
||
];
|
||
}
|