diff --git a/flake.nix b/flake.nix index 804ec2cc..f4ba3a56 100644 --- a/flake.nix +++ b/flake.nix @@ -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; + }; } diff --git a/modules/graphical.nix b/modules/graphical.nix index 4c90920c..be35c1d4 100644 --- a/modules/graphical.nix +++ b/modules/graphical.nix @@ -36,6 +36,8 @@ home-manager.users.charlotte = { ... }: { home.packages = with pkgs; [ google-chrome + jdtls + kotlin-language-server libreoffice-fresh mpv okular diff --git a/packages/jdtls/default.nix b/packages/jdtls/default.nix new file mode 100644 index 00000000..b74fea21 --- /dev/null +++ b/packages/jdtls/default.nix @@ -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 <