1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 nix-update-script,
6 meson,
7 ninja,
8 pkg-config,
9 polkit,
10 vala,
11 wrapGAppsHook3,
12 editorconfig-core-c,
13 granite,
14 gsettings-desktop-schemas,
15 gtk3,
16 gtksourceview4,
17 gtkspell3,
18 libgee,
19 libgit2-glib,
20 libhandy,
21 libpeas2,
22 libsoup_3,
23 vte,
24 ctags,
25}:
26
27stdenv.mkDerivation rec {
28 pname = "elementary-code";
29 version = "8.1.1";
30
31 src = fetchFromGitHub {
32 owner = "elementary";
33 repo = "code";
34 rev = version;
35 hash = "sha256-4IGun7MnrMRmpXD0Kxm/ND4C3pFVhjHqDeP6jUmRg7k=";
36 };
37
38 strictDeps = true;
39
40 nativeBuildInputs = [
41 meson
42 ninja
43 pkg-config
44 polkit # needed for ITS rules
45 vala
46 wrapGAppsHook3
47 ];
48
49 buildInputs = [
50 editorconfig-core-c
51 granite
52 gsettings-desktop-schemas
53 gtk3
54 gtksourceview4
55 gtkspell3
56 libgee
57 libgit2-glib
58 libhandy
59 libpeas2
60 libsoup_3
61 vala # for ValaSymbolResolver provided by libvala
62 vte
63 ];
64
65 # ctags needed in path by outline plugin
66 preFixup = ''
67 gappsWrapperArgs+=(
68 --prefix PATH : "${lib.makeBinPath [ ctags ]}"
69 )
70 '';
71
72 passthru = {
73 updateScript = nix-update-script { };
74 };
75
76 meta = with lib; {
77 description = "Code editor designed for elementary OS";
78 homepage = "https://github.com/elementary/code";
79 license = licenses.gpl3Plus;
80 platforms = platforms.linux;
81 teams = [ teams.pantheon ];
82 mainProgram = "io.elementary.code";
83 };
84}