diff --git a/common/firefox.nix b/common/firefox.nix index b718c3d..e874bbf 100644 --- a/common/firefox.nix +++ b/common/firefox.nix @@ -26,7 +26,7 @@ in ++ optionals config.services.desktopManager.plasma6.enable [ pkgs.plasma-browser-integration ]; programs.firefox = { - package = pkgs.firefox-beta; + # package = pkgs.firefox-beta; enable = true; nativeMessagingHosts.packages = [ ] diff --git a/common/tooling/c.nix b/common/tooling/c.nix new file mode 100644 index 0000000..49a3bbb --- /dev/null +++ b/common/tooling/c.nix @@ -0,0 +1,69 @@ +{ + pkgs, + config, + lib, + ... +}: +let + lang_support_id = "c"; + inherit (config.grimmShared) enable tooling graphical; + inherit (lib) + optionals + mkIf + getExe' + types + mkOption + elem + ; +in +{ + config = mkIf (enable && tooling.enable && (elem lang_support_id tooling.supportedLangs)) { + environment.systemPackages = + with pkgs; + [ + util-linux + linuxPackages.perf + pkg-config + glib + glibc + clang + clang-tools + ] + ++ optionals graphical [ + libva-utils + jetbrains.clion + ]; + + grimmShared.tooling.lang_servers = [ + { + lsp = { + package = pkgs.clang-tools; + lspconf_config = '' + { + cmd = { 'clangd', '--background-index'}, + root_dir = require("lspconfig.util").root_pattern( + "CMakeLists.txt", + "flake.nix", + ".git" + ) + }''; + lspconf_mod_name = "clangd"; + }; + fmt = rec { + package = pkgs.clang-tools; + command = getExe' package "clang-format"; + includes = [ + "*.c" + "*.h" + "*.cpp" + "*.hpp" + ]; + }; + } + ]; + }; + + options.grimmShared.tooling.supportedLangs = mkOption { + type = types.listOf (types.enum [ lang_support_id ]); + }; +} diff --git a/common/tooling/default.nix b/common/tooling/default.nix index d086f05..86a0907 100644 --- a/common/tooling/default.nix +++ b/common/tooling/default.nix @@ -8,6 +8,8 @@ let inherit (config.grimmShared) enable tooling graphical; inherit (lib) mkEnableOption + mkOption + types getExe optionals mkIf @@ -23,6 +25,8 @@ in ./nvim.nix ./lsp.nix ./git.nix + ./c.nix + ./java.nix ]; config = mkIf (enable && tooling.enable) { @@ -40,14 +44,9 @@ in wget bat hyfetch - util-linux btop - linuxPackages.perf eza - gcc - jdk17 - pkg-config unzip p7zip @@ -55,13 +54,10 @@ in gomuks ranger - visualvm imagemagick nmap parted - glib - glibc expect ] ++ optionals graphical [ @@ -69,8 +65,6 @@ in qdirstat libva-utils gparted - jetbrains.clion - jetbrains.idea-community ]; environment.shellAliases = { @@ -108,5 +102,11 @@ in options.grimmShared.tooling = { enable = mkEnableOption "grimm-tooling"; + + supportedLangs = mkOption { + type = types.listOf (types.enum [ ]); + default = [ ]; + description = "Languages for which to enable support"; + }; }; } diff --git a/common/tooling/java.nix b/common/tooling/java.nix new file mode 100644 index 0000000..caa1c70 --- /dev/null +++ b/common/tooling/java.nix @@ -0,0 +1,41 @@ +{ + pkgs, + config, + lib, + ... +}: +let + lang_support_id = "java"; + inherit (config.grimmShared) enable tooling graphical; + inherit (lib) + optionals + mkIf + types + mkOption + elem + ; +in +{ + config = mkIf (enable && tooling.enable && (elem lang_support_id tooling.supportedLangs)) { + environment.systemPackages = [ + pkgs.jdk17 + pkgs.visualvm + ] ++ optionals graphical [ pkgs.jetbrains.idea-community ]; + + grimmShared.tooling.lang_servers = [ + { + lsp = { + package = pkgs.java-language-server; + }; + fmt = { + package = pkgs.google-java-format; + includes = [ "*.java" ]; + }; + } + ]; + }; + + options.grimmShared.tooling.supportedLangs = mkOption { + type = types.listOf (types.enum [ lang_support_id ]); + }; +} diff --git a/common/tooling/lsp.nix b/common/tooling/lsp.nix index 991c4d4..d56689a 100644 --- a/common/tooling/lsp.nix +++ b/common/tooling/lsp.nix @@ -23,7 +23,7 @@ let ( '' [formatter.${getName fmt.package}] - command = "${getExe fmt.package}" + command = "${fmt.command}" includes = ${builtins.toJSON fmt.includes} '' + (optionalString (fmt.options != [ ]) "options = ${builtins.toJSON fmt.options}\n") @@ -42,7 +42,6 @@ in ++ (map (v: v.lsp.package) (filter (v: !isNull v.lsp) tooling.lang_servers)) ++ (map (v: v.fmt.package) (filter (v: !isNull v.fmt) tooling.lang_servers)); - # environment.shellAliases."treefmt" = "${getExe pkgs.treefmt} --config-file ${treefmt_conf}"; environment.shellAliases."treefmt" = "${getExe pkgs.treefmt} --config-file $(${getExe find_conf})"; grimmShared.tooling.nvim.extraLuaRC = @@ -71,7 +70,7 @@ in options = { lspconf_mod_name = mkOption { type = types.nullOr types.nonEmptyStr; - default = getName config.package; + default = builtins.replaceStrings [ "-" ] [ "_" ] (getName config.package); description = "lspconfig module name"; }; diff --git a/common/tooling/nvim.nix b/common/tooling/nvim.nix index 953b4d2..b87ea3b 100644 --- a/common/tooling/nvim.nix +++ b/common/tooling/nvim.nix @@ -23,7 +23,10 @@ in programs.git.config.core.editor = getExe pkgs.neovim; - grimmShared.tooling.nvim.plugins = with pkgs.vimPlugins; [ vim-monokai-pro ]; + grimmShared.tooling.nvim = { + plugins = with pkgs.vimPlugins; [ vim-monokai-pro ]; + # extraLuaRC = [ "vim.lsp.inlay_hint.enable(true)" ]; + }; programs.neovim = { enable = true; diff --git a/common/tooling/python.nix b/common/tooling/python.nix index 5a48ede..a36114b 100644 --- a/common/tooling/python.nix +++ b/common/tooling/python.nix @@ -5,6 +5,7 @@ ... }: let + lang_support_id = "python"; inherit (config.grimmShared) enable tooling graphical; pyLibs = python-pkgs: with python-pkgs; [ @@ -14,17 +15,26 @@ let scipy pygobject3 ]; + + inherit (lib) + mkIf + types + mkOption + mapAttrsToList + concatLines + elem + ; in { - config = lib.mkIf (enable && tooling.enable) { + config = mkIf (enable && tooling.enable && (elem lang_support_id tooling.supportedLangs)) { environment.systemPackages = [ (pkgs.python3.withPackages pyLibs) ] ++ lib.optionals graphical (with pkgs; [ jetbrains.pycharm-community ]); programs.xonsh = { enable = true; - config = lib.concatLines ( - lib.mapAttrsToList ( + config = concatLines ( + mapAttrsToList ( name: value: "aliases[\"${name}\"] = '''${value}'''" ) config.environment.shellAliases ); @@ -42,4 +52,8 @@ in } ]; }; + + options.grimmShared.tooling.supportedLangs = mkOption { + type = types.listOf (types.enum [ lang_support_id ]); + }; } diff --git a/common/tooling/rust.nix b/common/tooling/rust.nix index 29a6ea9..3e0c601 100644 --- a/common/tooling/rust.nix +++ b/common/tooling/rust.nix @@ -5,19 +5,30 @@ ... }: let + lang_support_id = "rust"; + inherit (lib) + optionals + mkIf + types + mkOption + elem + ; inherit (config.grimmShared) enable tooling graphical; in { - config = lib.mkIf (enable && tooling.enable) { + config = mkIf (enable && tooling.enable && (elem lang_support_id tooling.supportedLangs)) { environment.systemPackages = with pkgs; - [ pkg-config ] ++ lib.optionals graphical [ jetbrains.clion ]; + [ + pkg-config + cargo + ] + ++ optionals graphical [ jetbrains.clion ]; grimmShared.tooling.lang_servers = [ { lsp = { package = pkgs.rust-analyzer; - lspconf_mod_name = "rust_analyzer"; }; fmt = { package = pkgs.rustfmt; @@ -26,4 +37,8 @@ in } ]; }; + + options.grimmShared.tooling.supportedLangs = mkOption { + type = types.listOf (types.enum [ lang_support_id ]); + }; } diff --git a/configuration.nix b/configuration.nix index af82472..4d1a008 100644 --- a/configuration.nix +++ b/configuration.nix @@ -20,6 +20,12 @@ locale = true; network = true; tooling = { + supportedLangs = [ + "rust" + "c" + "java" + "python" + ]; enable = true; }; }; diff --git a/fake_flake.nix b/fake_flake.nix index 6b88203..fe0efc2 100644 --- a/fake_flake.nix +++ b/fake_flake.nix @@ -28,11 +28,11 @@ let }; nixpkgs_patches = [ - { - # xonsh update - url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/305316.patch"; - hash = "sha256-W3jh6qRA/7V1fImLm3vRmaT6h6gL5rlNBUuIidZHaZc="; - } + #{ + # # xonsh update + # url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/305316.patch"; + # hash = "sha256-W3jh6qRA/7V1fImLm3vRmaT6h6gL5rlNBUuIidZHaZc="; + #} ]; # enable ccache for lix if ccache is enabled diff --git a/nix/sources.json b/nix/sources.json index de9e495..5ec2af3 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -29,22 +29,22 @@ "homepage": "https://nyx.chaotic.cx", "owner": "chaotic-cx", "repo": "nyx", - "rev": "bae54b9e537d17c298b30436990d4962caab73d0", - "sha256": "13p1ygwf7q95na4lc3b4cp8rinpc4jvdhyz4c50ig77iz55mvbij", + "rev": "5b1f4d9d757db78bc0fdf3e3bd0b161d46d6bc5d", + "sha256": "0qsya33g1my8xcvd1a6l1nsmcgnam0wknfrpmvfl39c1jmj7rgzv", "type": "tarball", - "url": "https://github.com/chaotic-cx/nyx/archive/bae54b9e537d17c298b30436990d4962caab73d0.tar.gz", + "url": "https://github.com/chaotic-cx/nyx/archive/5b1f4d9d757db78bc0fdf3e3bd0b161d46d6bc5d.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "lix-module": { "branch": "main", "repo": "https://git.lix.systems/lix-project/nixos-module.git", - "rev": "c8ab1e79ba0140bc75731c75177242089506260b", + "rev": "53d713eb486f21d653af3ef3528e9a19ecfc45e5", "type": "git" }, "lix-pkg": { "branch": "main", "repo": "https://git.lix.systems/lix-project/lix.git", - "rev": "ceccac835c55e3b5c805851bad871360641ff1d9", + "rev": "005ee33a9a145f714f4837b1c0b5c430ac3bc588", "type": "git" }, "nixos-mailserver": { @@ -66,15 +66,15 @@ "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { - "branch": "nixos-unstable", + "branch": "nixos-unstable-small", "description": "Nix Packages collection", "homepage": null, "owner": "NixOS", "repo": "nixpkgs", - "rev": "f1010e0469db743d14519a1efd37e23f8513d714", - "sha256": "0khh2y04wp4dy1hy0nxc4raacp8149ds7mpwmnymf55v7xzf10vn", + "rev": "22b25d36f84f5449e2799af1def209278ef75147", + "sha256": "14a1ym1bml6n4lnxhxgsk6dvdn5c8ivhl1xl5v2l6awcw9q2vf0g", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/f1010e0469db743d14519a1efd37e23f8513d714.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/22b25d36f84f5449e2799af1def209278ef75147.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } }