From 08f527f90c41784d89c5453411fd687b44152846 Mon Sep 17 00:00:00 2001 From: Jordan Holt Date: Sat, 7 Jan 2023 19:07:44 +0000 Subject: [PATCH] Add C/C++ and Scala environments --- modules/default.nix | 3 +++ modules/dev/cc.nix | 20 +++++++++++++++++++ modules/dev/scala.nix | 18 +++++++++++++++++ modules/dev/shell.nix | 16 +++++++++++++++ modules/editors/neovim/default.nix | 8 ++++++++ modules/editors/neovim/lua/config/lsp/cc.lua | 5 +++++ .../editors/neovim/lua/config/lsp/scala.lua | 5 +++++ 7 files changed, 75 insertions(+) create mode 100644 modules/dev/cc.nix create mode 100644 modules/dev/scala.nix create mode 100644 modules/dev/shell.nix create mode 100644 modules/editors/neovim/lua/config/lsp/cc.lua create mode 100644 modules/editors/neovim/lua/config/lsp/scala.lua diff --git a/modules/default.nix b/modules/default.nix index b6f6848..af6da19 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -3,11 +3,14 @@ ./options.nix ./desktop/firefox.nix ./desktop/gnome.nix + ./dev/cc.nix ./dev/java.nix ./dev/lua.nix ./dev/node.nix ./dev/python.nix ./dev/rust.nix + ./dev/scala.nix + ./dev/shell.nix ./dev/zig.nix ./editors/neovim ./editors/vscode.nix diff --git a/modules/dev/cc.nix b/modules/dev/cc.nix new file mode 100644 index 0000000..b711ad0 --- /dev/null +++ b/modules/dev/cc.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: + +with lib; +with lib.my; +let cfg = config.modules.dev.cc; +in { + options.modules.dev.cc = { + enable = mkBoolOpt false; + }; + + config = mkIf cfg.enable { + user.packages = with pkgs; [ + clang + gcc + gdb + cmake + llvmPackages.libcxx + ]; + }; +} \ No newline at end of file diff --git a/modules/dev/scala.nix b/modules/dev/scala.nix new file mode 100644 index 0000000..08b1425 --- /dev/null +++ b/modules/dev/scala.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: + +with lib; +with lib.my; +let cfg = config.modules.dev.scala; +in { + options.modules.dev.scala = { + enable = mkBoolOpt false; + }; + + config = mkIf cfg.enable { + user.packages = with pkgs; [ + jdk + sbt + scala + ]; + }; +} \ No newline at end of file diff --git a/modules/dev/shell.nix b/modules/dev/shell.nix new file mode 100644 index 0000000..7fc8687 --- /dev/null +++ b/modules/dev/shell.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: + +with lib; +with lib.my; +let cfg = config.modules.dev.shell; +in { + options.modules.dev.shell = { + enable = mkBoolOpt false; + }; + + config = mkIf cfg.enable { + user.packages = with pkgs; [ + shellcheck + ]; + }; +} \ No newline at end of file diff --git a/modules/editors/neovim/default.nix b/modules/editors/neovim/default.nix index 459eb13..cd73ae2 100644 --- a/modules/editors/neovim/default.nix +++ b/modules/editors/neovim/default.nix @@ -70,6 +70,9 @@ in { ] ++ # Install appropriate language servers + (if dev.cc.enable then [ + ccls # C/C++ + ] else []) ++ (if dev.java.enable then [ java-language-server # Java ltex-ls # LaTeX @@ -96,6 +99,9 @@ in { (if dev.rust.enable then [ rust-analyzer # Rust ] else []) ++ + (if dev.scala.enable then [ + metals # Scala + ] else []) ++ (if dev.zig.enable then [ zls # Zig ] else []); @@ -105,11 +111,13 @@ in { "nvim/lua" = { source = ./lua; recursive = true; }; "nvim/lua/config/lsp.lua".text = '' -- This file is autogenerated, do not edit. + ${if dev.cc.enable then "require('config.lsp.cc')\n" else ""} ${if dev.java.enable then "require('config.lsp.java')\n" else ""} ${if dev.lua.enable then "require('config.lsp.lua')\n" else ""} ${if dev.node.enable then "require('config.lsp.node')\n" else ""} ${if dev.python.enable then "require('config.lsp.python')\n" else ""} ${if dev.rust.enable then "require('config.lsp.rust')\n" else ""} + ${if dev.scala.enable then "require('config.lsp.scala')\n" else ""} ${if dev.zig.enable then "require('config.lsp.zig')\n" else ""} ''; }; diff --git a/modules/editors/neovim/lua/config/lsp/cc.lua b/modules/editors/neovim/lua/config/lsp/cc.lua new file mode 100644 index 0000000..9e344ac --- /dev/null +++ b/modules/editors/neovim/lua/config/lsp/cc.lua @@ -0,0 +1,5 @@ +lspconfig = require('lspconfig') + +-- Requires C/C++ +lspconfig.ccls.setup{} + diff --git a/modules/editors/neovim/lua/config/lsp/scala.lua b/modules/editors/neovim/lua/config/lsp/scala.lua new file mode 100644 index 0000000..a8efb60 --- /dev/null +++ b/modules/editors/neovim/lua/config/lsp/scala.lua @@ -0,0 +1,5 @@ +lspconfig = require('lspconfig') + +-- Requires Scala +lspconfig.metals.setup{} +