Package kotlin-language-server and jdtls again

This commit is contained in:
Charlotte Van Petegem 2021-07-03 11:55:53 +02:00
parent 56955f9898
commit 5726b5211f
No known key found for this signature in database
GPG key ID: 019E764B7184435A
4 changed files with 102 additions and 36 deletions

View file

@ -15,42 +15,53 @@
utils.url = "github:gytis-ivaskevicius/flake-utils-plus/master";
};
outputs = inputs@{ self, nixpkgs, agenix, emacs-overlay, home-manager, utils }: utils.lib.systemFlake {
inherit self inputs;
# This config can only be evaluated on x86_64-linux because of IFD
supportedSystems = [ "x86_64-linux" ];
channels.nixpkgs = {
input = nixpkgs;
patches = map (patch: ./patches + "/${patch}") (builtins.filter (x: x != ".keep") (builtins.attrNames (builtins.readDir ./patches)));
overlaysBuilder = _: [ emacs-overlay.overlay ];
};
hostDefaults = {
modules = [
({ lib, ... }: {
environment.etc = lib.mapAttrs' (key: val: { name = "channels/${key}"; value = { source = val.outPath; }; }) inputs;
nix.nixPath = [ "/etc/channels" ];
})
utils.nixosModules.saneFlakeDefaults
agenix.nixosModules.age
home-manager.nixosModules.home-manager
./modules
];
extraArgs = { nixosConfigurations = self.nixosConfigurations; };
};
hosts = {
kharbranth.modules = [ ./machines/kharbranth ];
kholinar.modules = [ ./machines/kholinar ];
lasting-integrity.modules = [ ./machines/lasting-integrity ];
urithiru.modules = [ ./machines/urithiru ];
};
devShellBuilder = channels:
let pkgs = channels.nixpkgs; in
pkgs.mkShell {
buildInputs = [
pkgs.nixpkgs-fmt
(pkgs.writeShellScriptBin "fetchpatch" "curl -L https://github.com/NixOS/nixpkgs/pull/$1.patch -o patches/$1.patch")
agenix.defaultPackage.x86_64-linux
outputs = inputs@{ self, nixpkgs, agenix, emacs-overlay, home-manager, utils }:
let
customPackages = callPackage: {
jdtls = callPackage ./packages/jdtls { };
kotlin-language-server = callPackage ./packages/kotlin-language-server { };
}; in
utils.lib.systemFlake {
inherit self inputs;
# This config can only be evaluated on x86_64-linux because of IFD
supportedSystems = [ "x86_64-linux" ];
channels.nixpkgs = {
input = nixpkgs;
patches = map (patch: ./patches + "/${patch}") (builtins.filter (x: x != ".keep") (builtins.attrNames (builtins.readDir ./patches)));
overlaysBuilder = _: [
emacs-overlay.overlay
(self: super: customPackages self.callPackage)
];
};
};
hostDefaults = {
modules = [
({ lib, ... }: {
environment.etc = lib.mapAttrs' (key: val: { name = "channels/${key}"; value = { source = val.outPath; }; }) inputs;
nix.nixPath = [ "/etc/channels" ];
})
utils.nixosModules.saneFlakeDefaults
agenix.nixosModules.age
home-manager.nixosModules.home-manager
./modules
];
extraArgs = { nixosConfigurations = self.nixosConfigurations; };
};
hosts = {
kharbranth.modules = [ ./machines/kharbranth ];
kholinar.modules = [ ./machines/kholinar ];
lasting-integrity.modules = [ ./machines/lasting-integrity ];
urithiru.modules = [ ./machines/urithiru ];
};
devShellBuilder = channels:
let pkgs = channels.nixpkgs; in
pkgs.mkShell {
buildInputs = [
pkgs.nixpkgs-fmt
(pkgs.writeShellScriptBin "fetchpatch" "curl -L https://github.com/NixOS/nixpkgs/pull/$1.patch -o patches/$1.patch")
agenix.defaultPackage.x86_64-linux
];
};
packagesBuilder = channels:
let pkgs = channels.nixpkgs; in customPackages pkgs.callPackage;
};
}

View file

@ -36,6 +36,8 @@
home-manager.users.charlotte = { ... }: {
home.packages = with pkgs; [
google-chrome
jdtls
kotlin-language-server
libreoffice-fresh
mpv
okular

View file

@ -0,0 +1,34 @@
{ stdenv, bash, fetchurl, jdk11, ... }:
stdenv.mkDerivation rec {
pname = "jdtls";
version = "1.1.2";
src = fetchurl {
url = "http://download.eclipse.org/${pname}/milestones/${version}/jdt-language-server-${version}-202105191944.tar.gz";
sha256 = "1drx4fs63jr1cbsya6smwfx8rxpdlwb9sg3y80xfnr80dh0mh2c4";
};
sourceRoot = ".";
buildPhase = "true";
installPhase = ''
mkdir -p $out/share/java/jdtls
mv config_* features plugins $out/share/java/jdtls
mkdir $out/bin
cat >$out/bin/jdtls <<HERE
#!${bash}/bin/bash
tmp_dir=\$(mktemp -d /tmp/jdtls.XXXXX)
cp -R $out/share/java/jdtls/config_linux \$tmp_dir
chmod -R u=rwX \$tmp_dir
trap "{ rm -rf \$tmp_dir; }" 0
${jdk11}/bin/java \
-Declipse.application=org.eclipse.jdt.ls.core.id1 \
-Dosgi.bundles.defaultStartLevel=4 \
-Declipse.product=org.eclipse.jdt.ls.core.product \
-noverify \
-Xms1G \
-jar $out/share/java/jdtls/plugins/org.eclipse.equinox.launcher_*.jar \
-configuration "\$tmp_dir/config_linux" \
"\$@"
HERE
chmod +x $out/bin/jdtls
'';
}

View file

@ -0,0 +1,19 @@
{ lib, stdenv, fetchzip, jdk11, makeWrapper, ... }:
stdenv.mkDerivation rec {
pname = "kotlin-language-server";
version = "1.1.2";
src = fetchzip {
url = "https://github.com/fwcd/${pname}/releases/download/${version}/server.zip";
sha256 = "021h9239lr19r9r726hfjlfgwa8fl4m8vfryzsg8fbm0hsziklkz";
};
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
mkdir -p $out
cp -r $src/* $out/
chmod -R u=rwX $out
wrapProgram $out/bin/kotlin-language-server --set JAVA_HOME ${jdk11}
'';
}