aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/desktops/deepin/dde-control-center/default.nix
blob: 850e39b93676c6e820b19fe1d7aa6efd6a121657 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
{ stdenv
, mkDerivation
, fetchFromGitHub
, pkgconfig
, cmake
, deepin
, qttools
, qtdeclarative
, networkmanager
, qtsvg
, qtx11extras
, dtkcore
, dtkwidget
, geoip
, gsettings-qt
, dde-network-utils
, networkmanager-qt
, xorg
, mtdev
, fontconfig
, freetype
, dde-api
, dde-daemon
, qt5integration
, deepin-desktop-base
, deepin-desktop-schemas
, dbus
, systemd
, dde-qt-dbus-factory
, qtmultimedia
, qtbase
, glib
, gnome3
, which
, substituteAll
, tzdata
, wrapGAppsHook
}:

mkDerivation rec {
  pname = "dde-control-center";
  version = "5.0.0";

  src = fetchFromGitHub {
    owner = "linuxdeepin";
    repo = pname;
    rev = version;
    sha256 = "10bx8bpvi3ib32a3l4nyb1j0iq3bch8jm9wfm6d5v0ym1zb92x3b";
  };

  nativeBuildInputs = [
    cmake
    deepin.setupHook
    pkgconfig
    wrapGAppsHook
  ];

  buildInputs = [
    dde-api
    dde-daemon
    dde-network-utils
    dde-qt-dbus-factory
    deepin-desktop-base
    deepin-desktop-schemas
    dtkcore
    dtkwidget
    fontconfig
    freetype
    geoip
    glib
    gnome3.networkmanager-l2tp
    gnome3.networkmanager-openconnect
    gnome3.networkmanager-openvpn
    gnome3.networkmanager-vpnc
    gsettings-qt
    mtdev
    networkmanager-qt
    qt5integration
    qtbase
    qtdeclarative
    qtmultimedia
    qtsvg
    qttools
    qtx11extras
    xorg.libX11
    xorg.libXext
    xorg.libXrandr
    xorg.libxcb
  ];

  cmakeFlags = [
    "-DDISABLE_SYS_UPDATE=YES"
    "-DDCC_DISABLE_GRUB=YES"
  ];

  patches = [
    (substituteAll {
      src = ./fix-paths.patch;
      nmcli = "${networkmanager}/bin/nmcli";
      which = "${which}/bin/which";
      # not packaged
      # dman = "${deepin-manual}/bin/dman";
      inherit tzdata;
      # exclusive to deepin linux?
      # allows to synchronize configuration files to cloud networks
      # deepin_sync = "${deepin-sync}";
    })
  ];

  postPatch = ''
    searchHardCodedPaths

    patchShebangs translate_ts2desktop.sh
    patchShebangs translate_generation.sh
    patchShebangs translate_desktop2ts.sh

    fixPath $out /usr dde-control-center-autostart.desktop \
      com.deepin.dde.ControlCenter.service \
      src/frame/widgets/utils.h

    substituteInPlace dde-control-center.desktop \
      --replace "dbus-send" "${dbus}/bin/dbus-send"
    substituteInPlace com.deepin.controlcenter.addomain.policy \
      --replace "/bin/systemctl" "/run/current-system/sw/bin/systemctl"
  '';

  dontWrapQtApps = true;

  preFixup = ''
    gappsWrapperArgs+=(
      "''${qtWrapperArgs[@]}"
    )
  '';

  postFixup = ''
    # debuging
    searchForUnresolvedDLL $out
    searchHardCodedPaths $out
  '';

  passthru.updateScript = deepin.updateScript { inherit pname version src; };

  meta = with stdenv.lib; {
    description = "Control panel of Deepin Desktop Environment";
    homepage = "https://github.com/linuxdeepin/dde-control-center";
    license = licenses.gpl3;
    platforms = platforms.linux;
    maintainers = with maintainers; [ romildo worldofpeace ];
  };
}