chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / wi / winbox4 / package.nix
bloba3c9a7b83a9ac464464b2bba9b958fb5c97d4f5d
2   autoPatchelfHook,
3   copyDesktopItems,
4   fetchurl,
5   fontconfig,
6   freetype,
7   lib,
8   libGL,
9   libxkbcommon,
10   makeDesktopItem,
11   makeWrapper,
12   stdenvNoCC,
13   unzip,
14   writeShellApplication,
15   xorg,
16   zlib,
19 stdenvNoCC.mkDerivation (finalAttrs: {
20   pname = "winbox";
21   version = "4.0beta9";
23   src = fetchurl {
24     name = "WinBox_Linux-${finalAttrs.version}.zip";
25     url = "https://download.mikrotik.com/routeros/winbox/${finalAttrs.version}/WinBox_Linux.zip";
26     hash = "sha256-129ejj3WxYx5kQTy6EOLtBolhx076yMVb5ymkAoXrwc=";
27   };
29   sourceRoot = ".";
31   nativeBuildInputs = [
32     autoPatchelfHook
33     copyDesktopItems
34     # makeBinaryWrapper does not support --run
35     makeWrapper
36     unzip
37   ];
39   buildInputs = [
40     fontconfig
41     freetype
42     libGL
43     libxkbcommon
44     xorg.libxcb
45     xorg.xcbutilimage
46     xorg.xcbutilkeysyms
47     xorg.xcbutilrenderutil
48     xorg.xcbutilwm
49     zlib
50   ];
52   installPhase = ''
53     runHook preInstall
55     install -Dm644 "assets/img/winbox.png" "$out/share/pixmaps/winbox.png"
56     install -Dm755 "WinBox" "$out/bin/WinBox"
58     wrapProgram "$out/bin/WinBox" --run "${lib.getExe finalAttrs.migrationScript}"
60     runHook postInstall
61   '';
63   desktopItems = [
64     (makeDesktopItem {
65       name = "winbox";
66       desktopName = "Winbox";
67       comment = "GUI administration for Mikrotik RouterOS";
68       exec = "WinBox";
69       icon = "winbox";
70       categories = [ "Utility" ];
71     })
72   ];
74   migrationScript = writeShellApplication {
75     name = "winbox-migrate";
76     text = ''
77       XDG_DATA_HOME=''${XDG_DATA_HOME:-$HOME/.local/share}
78       targetFile="$XDG_DATA_HOME/MikroTik/WinBox/Addresses.cdb"
80       if [ -f "$targetFile" ]; then
81         echo "NixOS: WinBox 4 data already present at $(dirname "$targetFile"). Skipping automatic migration."
82         exit 0
83       fi
85       # cover both wine prefix variants
86       # latter was used until https://github.com/NixOS/nixpkgs/pull/329626 was merged on 2024/07/24
87       winePrefixes=(
88         "''${WINEPREFIX:-$HOME/.wine}"
89         "''${WINBOX_HOME:-$XDG_DATA_HOME/winbox}/wine"
90       )
91       sourceFilePathSuffix="drive_c/users/$USER/AppData/Roaming/Mikrotik/Winbox/Addresses.cdb"
92       selectedSourceFile=""
94       for prefix in "''${winePrefixes[@]}"
95       do
96         echo "NixOS: Probing WinBox 3 data path at $prefix..."
97         if [ -f "$prefix/$sourceFilePathSuffix" ]; then
98           selectedSourceFile="$prefix/$sourceFilePathSuffix"
99           break
100         fi
101       done
103       if [ -z "$selectedSourceFile" ]; then
104         echo "NixOS: WinBox 3 data not found. Skipping automatic migration."
105         exit 0
106       fi
108       echo "NixOS: Automatically migrating WinBox 3 data..."
109       install -Dvm644 "$selectedSourceFile" "$targetFile"
110     '';
111   };
113   meta = {
114     description = "Graphical configuration utility for RouterOS-based devices";
115     homepage = "https://mikrotik.com";
116     downloadPage = "https://mikrotik.com/download";
117     changelog = "https://download.mikrotik.com/routeros/winbox/${finalAttrs.version}/CHANGELOG";
118     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
119     license = lib.licenses.unfree;
120     mainProgram = "WinBox";
121     maintainers = with lib.maintainers; [
122       Scrumplex
123       yrd
124     ];
125   };