1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 fetchpatch,
6 nix-update-script,
7 meson,
8 ninja,
9 pkg-config,
10 polkit,
11 vala,
12 wrapGAppsHook3,
13 editorconfig-core-c,
14 granite,
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.0.0";
30
31 src = fetchFromGitHub {
32 owner = "elementary";
33 repo = "code";
34 rev = version;
35 hash = "sha256-muW7K9cFITZaoNi3id+iplmokN5sSE8x1CVQ62+myUU=";
36 };
37
38 patches = [
39 # Fix build with GCC 14
40 # https://github.com/elementary/code/pull/1606
41 (fetchpatch {
42 url = "https://github.com/elementary/code/commit/9b8347adcbb94f3186815413d927eecc51be2ccf.patch";
43 hash = "sha256-VhpvWgOGniOEjxBOjvX30DZIRGalxfPlb9j1VaOAJTA=";
44 })
45 ];
46
47 strictDeps = true;
48
49 nativeBuildInputs = [
50 meson
51 ninja
52 pkg-config
53 polkit # needed for ITS rules
54 vala
55 wrapGAppsHook3
56 ];
57
58 buildInputs = [
59 editorconfig-core-c
60 granite
61 gtk3
62 gtksourceview4
63 gtkspell3
64 libgee
65 libgit2-glib
66 libhandy
67 libpeas2
68 libsoup_3
69 vala # for ValaSymbolResolver provided by libvala
70 vte
71 ];
72
73 # ctags needed in path by outline plugin
74 preFixup = ''
75 gappsWrapperArgs+=(
76 --prefix PATH : "${lib.makeBinPath [ ctags ]}"
77 )
78 '';
79
80 passthru = {
81 updateScript = nix-update-script { };
82 };
83
84 meta = with lib; {
85 description = "Code editor designed for elementary OS";
86 homepage = "https://github.com/elementary/code";
87 license = licenses.gpl3Plus;
88 platforms = platforms.linux;
89 teams = [ teams.pantheon ];
90 mainProgram = "io.elementary.code";
91 };
92}