Skip to content

Commit 11c8bf9

Browse files
committed
feat(emacs): add Java support
1 parent 0c1eccd commit 11c8bf9

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

modules/nixos/programs/emacs/default.nix

+9
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,25 @@ in
6262
# Python
6363
nodePackages.pyright
6464
ruff-lsp
65+
# Java
66+
jdk21
67+
jdt-language-server
6568
];
6669

6770
elementary.home = {
6871
programs.emacs = {
6972
enable = true;
7073
package = emacsPackage;
74+
extraConfig = ''
75+
(setq lsp-java-server-install-dir "${pkgs.jdt-language-server}/share/java/jdtls")
76+
(setq lsp-java-server-config-dir (concat (file-name-as-directory (xdg-config-home)) "lsp-java/config_linux/"))
77+
(add-to-list 'lsp-java-vmargs "-javaagent:${pkgs.elementary.lombok-jar}/share/java/lombok.jar")
78+
'';
7179
};
7280
file = {
7381
".emacs.d/init.el".source = ./init.el;
7482
".emacs.d/early-init.el".text = earlyInitText;
83+
".config/lsp-java/config_linux/config.ini".source = "${pkgs.jdt-language-server}/share/java/jdtls/config_linux/config.ini";
7584
};
7685
};
7786

modules/nixos/programs/emacs/init.el

+6
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,12 @@
657657
(bound-and-true-p lsp-mode))
658658
(lsp-format-buffer)))))
659659

660+
(use-package lsp-java
661+
:init
662+
(add-hook 'java-ts-mode-hook . (lambda ()
663+
(require 'lsp-java)
664+
(lsp))))
665+
660666
(use-package markdown-mode
661667
:custom
662668
(markdown-fontify-code-blocks-natively t)

packages/lombok-jar/default.nix

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{ lib, stdenv, fetchurl }:
2+
3+
stdenv.mkDerivation rec {
4+
pname = "lombok-jar";
5+
version = "1.18.30";
6+
7+
src = fetchurl {
8+
url = "https://projectlombok.org/downloads/lombok-${version}.jar";
9+
sha256 = "sha256-1+4SLu4erutFGCqJ/zb8LdCGhY0bL1S2Fcb+97odYBI=";
10+
};
11+
12+
buildCommand = ''
13+
mkdir -p $out/share/java
14+
cp $src $out/share/java/lombok.jar
15+
'';
16+
17+
meta = {
18+
description = "A library that can write a lot of boilerplate for your Java project";
19+
platforms = lib.platforms.all;
20+
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
21+
license = lib.licenses.mit;
22+
homepage = "https://projectlombok.org/";
23+
maintainers = [ lib.maintainers.CrystalGamma ];
24+
};
25+
}

0 commit comments

Comments
 (0)