diff --git a/flake.lock b/flake.lock index 132dae51..00b0a892 100644 --- a/flake.lock +++ b/flake.lock @@ -374,11 +374,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1721226092, - "narHash": "sha256-UBvzVpo5sXSi2S/Av+t+Q+C2mhMIw/LBEZR+d6NMjws=", + "lastModified": 1721409541, + "narHash": "sha256-b6PLr0Ty7JPDBtJtjnYzlBf02bbH9alWMAgispMkTwk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c716603a63aca44f39bef1986c13402167450e0a", + "rev": "0c53b6b8c2a3e46c68e04417e247bba660689c9d", "type": "github" }, "original": { diff --git a/hosts/pc/configuration.nix b/hosts/pc/configuration.nix index 8035c0ea..12247585 100644 --- a/hosts/pc/configuration.nix +++ b/hosts/pc/configuration.nix @@ -34,7 +34,7 @@ games.enable = true; mihoyo.enable = true; }; - dev.lang.ides = [ "go" "sql" "haskell" "fork" ]; + dev.lang.ides = [ "go" "sql" "haskell" "fork" "jvm" ]; hardware = rec { grub.enableMultiBoot = true; sound.enable = true; diff --git a/modules/dev/ide.nix b/modules/dev/ide.nix index 6c255700..27f5de7e 100644 --- a/modules/dev/ide.nix +++ b/modules/dev/ide.nix @@ -7,23 +7,43 @@ let homeDir = config.home-manager.users.wittano.home.homeDirectory; addProjectDirField = attr: builtins.mapAttrs (n: v: v // { projectDir = "${homeDir}/projects/own/${n}"; }) attr; - avaiableIde = addProjectDirField (with unstable.jetbrains; { - python.package = pycharm-professional; - cpp.package = clion; - go.package = goland; - dotnet.package = rider; - rust.package = rust-rover; - jvm.package = idea-ultimate; - sql.package = datagrip; - web.package = webstorm; - andorid.package = unstable.andorid-studio; - haskell.extraConfig = { - home-manager.users.wittano.home.packages = with unstable; [ zed-editor ]; - }; - fork.extraConfig = { - home-manager.users.wittano.home.packages = with unstable; [ vscodium ]; - }; - }); + avaiableIde = + let + mkExtraConfig = ide: mkMerge [ + { + home-manager.users.wittano.home.packages = with unstable; [ vscodium ]; + } + (ide.extraConfig or { }) + ]; + in + addProjectDirField (with unstable.jetbrains; rec { + python.package = pycharm-professional; + cpp.package = clion; + go.package = goland; + dotnet.package = rider; + rust.package = rust-rover; + jvm.package = idea-ultimate; + sql.package = datagrip; + web.package = webstorm; + andorid.package = unstable.andorid-studio; + haskell.extraConfig = { + home-manager.users.wittano.home.packages = with unstable; [ zed-editor ]; + }; + fork.extraConfig = + let + jvmConfig = mkExtraConfig jvm; + cppConfig = mkExtraConfig cpp; + rustConfig = mkExtraConfig rust; + in + mkMerge [ + jvmConfig + cppConfig + rustConfig + { + home-manager.users.wittano.home.packages = with unstable; [ vscodium ]; + } + ]; + }); installedIDEs = trivial.pipe cfg.ides [ (builtins.map (x: avaiableIde."${x}".package or null))