diff --git a/docs/src/individual-docs/languages/cplusplus.md b/docs/src/individual-docs/languages/cplusplus.md index d3615c80f..26a4e44b9 100644 --- a/docs/src/individual-docs/languages/cplusplus.md +++ b/docs/src/individual-docs/languages/cplusplus.md @@ -1,4 +1,133 @@ +## Getting Started +The easiest way to get started with C++ is to simply enable it: + +```nix +languages.cplusplus = { + enable = true; +}; +``` + +This will automatically: + +- Use `clang` as the default C++ package +- Install it along with CMake and other tools + +Alternatively, you can manually specify packages: + +```nix +languages.cplusplus = { + enable = true; + package = pkgs.stdenv.cc; +}; +``` + +## Setting up the [Conan](https://conan.io/) package manager + +Add `conan-flake` to your inputs: + +```shell-session +$ devenv inputs add conan-flake git+https://codeberg.org/tarcisio/conan-flake +``` + +You can check [the list of available options](/reference/options.md#languagescplusplusconanenable). The [`languages.cplusplus.conan.config`](/reference/options.md#languagescplusplusconanconfig) option, however, maps the whole of the options available in the [`conan-flake`](https://flake.parts/options/conan-flake.html) module — check the [official module documentation](https://flake.parts/options/conan-flake.html#options) and see the examples in [conan-flake's README file](https://codeberg.org/tarcisio/conan-flake/src/branch/main/README.md) to help you setting up. + +Config the `devenv.nix` file accordingly. For example: + +```nix +languages.cplusplus = { + enable = true; + conan = { + enable = true; + install.enable = true; + }; +}; +``` + +By default, when Conan is enabled: + +- The default C++ package is set to `config.stdenv.cc` +- Conan is configured to use the same CMake available in the developmemnt shell + +### In Action: + +```shell-session +$ devenv shell +Building shell ... +Entering shell ... + +conan profile show # This would show the default profile. +``` + +## Additional Examples + +### LLVM-based C++ Toolchain + +If you would like to integrate with the LLVM compiler infrastructure: + +```nix +{ pkgs, ... }: + +{ + languages.cplusplus = { + enable = true; + conan = { + enable = true; + install.enable = true; + config = { + stdenv = pkgs.overrideCC + ( + pkgs.llvmPackages.libcxxStdenv.override { + targetPlatform.useLLVM = true; + } + ) + pkgs.llvmPackages.clangUseLLVM; + # By default: compiler.libcxx=libstdc++11, so undo it: + compilerLibCxx = null; + }; + }; + }; +} +``` + +Or even: + +```nix +{ pkgs, ... }: + +{ + stdenv = pkgs.overrideCC + ( + pkgs.llvmPackages.libcxxStdenv.override { + targetPlatform.useLLVM = true; + } + ) + pkgs.llvmPackages.clangUseLLVM; + + languages.cplusplus = { + enable = true; + conan = { + enable = true; + install.enable = true; + config = { + # By default: compiler.libcxx=libstdc++11, so undo it: + compilerLibCxx = null; + }; + }; + }; +} +``` + +### In Action: + +```shell-session +$ devenv shell +Building shell ... +Entering shell ... + +conan profile show # This would show the default profile. +conan create . --build=missing # This would create and test the current package. +``` [comment]: # (Please add your documentation on top of this line) diff --git a/docs/src/individual-docs/languages/zig.md b/docs/src/individual-docs/languages/zig.md index b49cbeea7..f3f00ab77 100644 --- a/docs/src/individual-docs/languages/zig.md +++ b/docs/src/individual-docs/languages/zig.md @@ -10,6 +10,7 @@ languages.zig = { ``` This will automatically: + - Use the specified Zig version from zig-overlay - Install the corresponding ZLS version (e.g., version "0.15.1" uses ZLS 0.15.0) diff --git a/docs/src/languages/cplusplus.md b/docs/src/languages/cplusplus.md index a145d67f7..03aa8c2e5 100644 --- a/docs/src/languages/cplusplus.md +++ b/docs/src/languages/cplusplus.md @@ -1,5 +1,134 @@ [comment]: # (Do not edit this file as it is autogenerated. Go to docs/individual-docs if you want to make edits.) +## Getting Started +The easiest way to get started with C++ is to simply enable it: + +```nix +languages.cplusplus = { + enable = true; +}; +``` + +This will automatically: + +- Use `clang` as the default C++ package +- Install it along with CMake and other tools + +Alternatively, you can manually specify packages: + +```nix +languages.cplusplus = { + enable = true; + package = pkgs.stdenv.cc; +}; +``` + +## Setting up the [Conan](https://conan.io/) package manager + +Add `conan-flake` to your inputs: + +```shell-session +$ devenv inputs add conan-flake git+https://codeberg.org/tarcisio/conan-flake +``` + +You can check [the list of available options](/reference/options.md#languagescplusplusconanenable). The [`languages.cplusplus.conan.config`](/reference/options.md#languagescplusplusconanconfig) option, however, maps the whole of the options available in the [`conan-flake`](https://flake.parts/options/conan-flake.html) module — check the [official module documentation](https://flake.parts/options/conan-flake.html#options) and see the examples in [conan-flake's README file](https://codeberg.org/tarcisio/conan-flake/src/branch/main/README.md) to help you setting up. + +Config the `devenv.nix` file accordingly. For example: + +```nix +languages.cplusplus = { + enable = true; + conan = { + enable = true; + install.enable = true; + }; +}; +``` + +By default, when Conan is enabled: + +- The default C++ package is set to `config.stdenv.cc` +- Conan is configured to use the same CMake available in the developmemnt shell + +### In Action: + +```shell-session +$ devenv shell +Building shell ... +Entering shell ... + +conan profile show # This would show the default profile. +``` + +## Additional Examples + +### LLVM-based C++ Toolchain + +If you would like to integrate with the LLVM compiler infrastructure: + +```nix +{ pkgs, ... }: + +{ + languages.cplusplus = { + enable = true; + conan = { + enable = true; + install.enable = true; + config = { + stdenv = pkgs.overrideCC + ( + pkgs.llvmPackages.libcxxStdenv.override { + targetPlatform.useLLVM = true; + } + ) + pkgs.llvmPackages.clangUseLLVM; + # By default: compiler.libcxx=libstdc++11, so undo it: + compilerLibCxx = null; + }; + }; + }; +} +``` + +Or even: + +```nix +{ pkgs, ... }: + +{ + stdenv = pkgs.overrideCC + ( + pkgs.llvmPackages.libcxxStdenv.override { + targetPlatform.useLLVM = true; + } + ) + pkgs.llvmPackages.clangUseLLVM; + + languages.cplusplus = { + enable = true; + conan = { + enable = true; + install.enable = true; + config = { + # By default: compiler.libcxx=libstdc++11, so undo it: + compilerLibCxx = null; + }; + }; + }; +} +``` + +### In Action: + +```shell-session +$ devenv shell +Building shell ... +Entering shell ... + +conan profile show # This would show the default profile. +conan create . --build=missing # This would create and test the current package. +``` [comment]: # (Please add your documentation on top of this line) @@ -7,6 +136,8 @@ ### languages\.cplusplus\.enable + + Whether to enable tools for C++ development\. @@ -24,6 +155,188 @@ false +*Example:* + +```nix +true +``` + +*Declared by:* + - [https://github\.com/cachix/devenv/blob/main/src/modules/languages/cplusplus\.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +### languages\.cplusplus\.package + + + +The C++ compiler to use\. + + + +*Type:* +package + + + +*Default:* + +```nix +pkgs.clang +``` + +*Declared by:* + - [https://github\.com/cachix/devenv/blob/main/src/modules/languages/cplusplus\.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +### languages\.cplusplus\.cmake + +Configuration for cmake + + + +*Type:* +submodule + + + +*Default:* + +```nix +{ } +``` + +*Declared by:* + - [https://github\.com/cachix/devenv/blob/main/src/modules/languages/cplusplus\.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +### languages\.cplusplus\.cmake\.package + + + +The CMake package to use\. + + + +*Type:* +package + + + +*Default:* + +```nix +pkgs.cmake +``` + +*Declared by:* + - [https://github\.com/cachix/devenv/blob/main/src/modules/languages/cplusplus\.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +### languages\.cplusplus\.conan\.enable + + + +Whether to enable install conan\. + + + +*Type:* +boolean + + + +*Default:* + +```nix +false +``` + + + +*Example:* + +```nix +true +``` + +*Declared by:* + - [https://github\.com/cachix/devenv/blob/main/src/modules/languages/cplusplus\.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +### languages\.cplusplus\.conan\.package + + + +The conan package to use\. + + + +*Type:* +package + + + +*Default:* + +```nix +pkgs.conan +``` + +*Declared by:* + - [https://github\.com/cachix/devenv/blob/main/src/modules/languages/cplusplus\.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +### languages\.cplusplus\.conan\.config + + + +conan configuration\. + + + +*Type:* +attribute set + + + +*Default:* + +```nix +{ } +``` + +*Declared by:* + - [https://github\.com/cachix/devenv/blob/main/src/modules/languages/cplusplus\.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +### languages\.cplusplus\.conan\.install\.enable + + + +Whether to enable conan install during devenv initialisation\. + + + +*Type:* +boolean + + + +*Default:* + +```nix +false +``` + + + *Example:* ```nix @@ -88,3 +401,56 @@ pkgs.ccls *Declared by:* - [https://github\.com/cachix/devenv/blob/main/src/modules/languages/cplusplus\.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +### languages\.cplusplus\.tools\.enable + + + +Whether to enable Standalone command line tools for C++ development\. + + + +*Type:* +boolean + + + +*Default:* +Enabled by default for clang-based compilers + + + +*Example:* + +```nix +true +``` + +*Declared by:* + - [https://github\.com/cachix/devenv/blob/main/src/modules/languages/cplusplus\.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +### languages\.cplusplus\.tools\.package + + + +The C++ command line tools package to use\. + + + +*Type:* +package + + + +*Default:* + +```nix +pkgs.clang-tools +``` + +*Declared by:* + - [https://github\.com/cachix/devenv/blob/main/src/modules/languages/cplusplus\.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) diff --git a/docs/src/languages/zig.md b/docs/src/languages/zig.md index d68e0c1e8..72058b04a 100644 --- a/docs/src/languages/zig.md +++ b/docs/src/languages/zig.md @@ -11,6 +11,7 @@ languages.zig = { ``` This will automatically: + - Use the specified Zig version from zig-overlay - Install the corresponding ZLS version (e.g., version "0.15.1" uses ZLS 0.15.0) diff --git a/docs/src/reference/options.md b/docs/src/reference/options.md index abd394688..dee5573ea 100644 --- a/docs/src/reference/options.md +++ b/docs/src/reference/options.md @@ -14882,6 +14882,190 @@ false +*Example:* + +```nix +true +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +## languages.cplusplus.package + + + +The C++ compiler to use. + + + +*Type:* +package + + + +*Default:* + +```nix +pkgs.clang +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +## languages.cplusplus.cmake + + + +Configuration for cmake + + + +*Type:* +submodule + + + +*Default:* + +```nix +{ } +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +## languages.cplusplus.cmake.package + + + +The CMake package to use. + + + +*Type:* +package + + + +*Default:* + +```nix +pkgs.cmake +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +## languages.cplusplus.conan.enable + + + +Whether to enable install conan. + + + +*Type:* +boolean + + + +*Default:* + +```nix +false +``` + + + +*Example:* + +```nix +true +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +## languages.cplusplus.conan.package + + + +The conan package to use. + + + +*Type:* +package + + + +*Default:* + +```nix +pkgs.conan +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +## languages.cplusplus.conan.config + + + +conan configuration. + + + +*Type:* +attribute set + + + +*Default:* + +```nix +{ } +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +## languages.cplusplus.conan.install.enable + + + +Whether to enable conan install during devenv initialisation. + + + +*Type:* +boolean + + + +*Default:* + +```nix +false +``` + + + *Example:* ```nix @@ -14949,6 +15133,59 @@ pkgs.ccls +## languages.cplusplus.tools.enable + + + +Whether to enable Standalone command line tools for C++ development. + + + +*Type:* +boolean + + + +*Default:* +Enabled by default for clang-based compilers + + + +*Example:* + +```nix +true +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + +## languages.cplusplus.tools.package + + + +The C++ command line tools package to use. + + + +*Type:* +package + + + +*Default:* + +```nix +pkgs.clang-tools +``` + +*Declared by:* + - [https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix](https://github.com/cachix/devenv/blob/main/src/modules/languages/cplusplus.nix) + + + ## languages.crystal.enable diff --git a/src/modules/languages/cplusplus.nix b/src/modules/languages/cplusplus.nix index e67933276..6be1f254c 100644 --- a/src/modules/languages/cplusplus.nix +++ b/src/modules/languages/cplusplus.nix @@ -2,11 +2,81 @@ let cfg = config.languages.cplusplus; + + inputArgs = { + name = "conan-flake"; + url = "git+https://codeberg.org/tarcisio/conan-flake"; + attribute = "conan"; + }; + + # When enabled, use getInput (throws helpful error if missing) + # Otherwise, use tryGetInput to populate the docs when the input is available. + conan-flake = + if cfg.conan.enable then config.lib.getInput inputArgs else config.lib.tryGetInput inputArgs; + + # Determine config root: prefer git.root, fallback to devenv.root + configRoot = if config.git.root != null then config.git.root else config.devenv.root; + + conanSubmodule = + if conan-flake != null then + # We automatically configure Conan with the correct tree root for the project. + conan-flake.lib.submoduleWith pkgs { inherit configRoot; } + else + lib.types.attrs; in { options.languages.cplusplus = { enable = lib.mkEnableOption "tools for C++ development"; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.clang; + defaultText = lib.literalExpression "pkgs.clang"; + description = "The C++ compiler to use."; + }; + + cmake = lib.mkOption { + type = lib.types.submodule { + options.package = lib.mkOption { + type = lib.types.package; + default = pkgs.cmake; + defaultText = lib.literalExpression "pkgs.cmake"; + description = "The CMake package to use."; + }; + }; + description = "Configuration for cmake"; + default = { }; + }; + + tools = { + enable = lib.mkEnableOption "Standalone command line tools for C++ development" // { + default = cfg.package.isClang; + defaultText = lib.literalMD "Enabled by default for clang-based compilers"; + }; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.clang-tools; + defaultText = lib.literalExpression "pkgs.clang-tools"; + description = "The C++ command line tools package to use."; + }; + }; + + conan = { + enable = lib.mkEnableOption "install conan"; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.conan; + defaultText = lib.literalExpression "pkgs.conan"; + description = "The conan package to use."; + }; + config = lib.mkOption { + type = conanSubmodule; + description = "conan configuration."; + default = { }; + }; + install.enable = lib.mkEnableOption "conan install during devenv initialisation"; + }; + lsp = { enable = lib.mkEnableOption "C++ Language Server" // { default = true; }; package = lib.mkOption { @@ -18,11 +88,29 @@ in }; }; - config = lib.mkIf cfg.enable { - packages = with pkgs; [ - clang-tools - cmake - clang - ] ++ lib.optional cfg.lsp.enable cfg.lsp.package; - }; + config = lib.mkMerge [ + (lib.mkIf cfg.enable { + packages = with pkgs; [ + cfg.cmake.package + cfg.package + ] + ++ lib.optional cfg.tools.enable cfg.tools.package + ++ lib.optional cfg.lsp.enable cfg.lsp.package; + }) + + # + (lib.mkIf (cfg.enable && cfg.conan.enable) { + languages.cplusplus.conan.config.stdenv = lib.mkDefault config.stdenv; + languages.cplusplus.conan.config.package = lib.mkDefault cfg.conan.package; + languages.cplusplus.conan.config.platformToolRequires = lib.mkDefault { + cmake = cfg.cmake.package.version; + }; + languages.cplusplus.package = lib.mkDefault cfg.conan.config.stdenv.cc; + }) + + # + (lib.mkIf (cfg.enable && cfg.conan.enable && cfg.conan.install.enable) { + inputsFrom = [ cfg.conan.config.outputs.devShell ]; + }) + ]; } diff --git a/tests/cplusplus-conan-llvm-devenv/devenv.nix b/tests/cplusplus-conan-llvm-devenv/devenv.nix new file mode 100644 index 000000000..5e8913cb1 --- /dev/null +++ b/tests/cplusplus-conan-llvm-devenv/devenv.nix @@ -0,0 +1,36 @@ +{ pkgs, config, ... }: + +{ + stdenv = pkgs.overrideCC + ( + pkgs.llvmPackages.libcxxStdenv.override { + targetPlatform.useLLVM = true; + } + ) + pkgs.llvmPackages.clangUseLLVM; + + languages.cplusplus = { + enable = true; + conan = { + enable = true; + install.enable = true; + config = { + # By default: compiler.libcxx=libstdc++11, so undo it: + compilerLibCxx = null; + }; + }; + }; + + enterTest = '' + ${pkgs.lib.getExe config.languages.cplusplus.package} --version + ${pkgs.lib.getExe config.languages.cplusplus.package} --version \ + | grep clang + ${pkgs.lib.getExe config.languages.cplusplus.cmake.package} --version + ${pkgs.lib.getExe config.languages.cplusplus.lsp.package} --version \ + | grep ${pkgs.lib.escapeShellArg config.languages.cplusplus.lsp.package.version} + ${pkgs.lib.getExe config.languages.cplusplus.conan.package} --version + echo "enable:"${pkgs.lib.escapeShellArg config.languages.cplusplus.tools.enable}":" | grep "enable:1:" + ${pkgs.lib.getExe config.languages.cplusplus.conan.package} profile show \ + | grep "cmake/"${pkgs.lib.escapeShellArg config.languages.cplusplus.cmake.package.version} + ''; +} diff --git a/tests/cplusplus-conan-llvm-devenv/devenv.yaml b/tests/cplusplus-conan-llvm-devenv/devenv.yaml new file mode 100644 index 000000000..0a9fd6c94 --- /dev/null +++ b/tests/cplusplus-conan-llvm-devenv/devenv.yaml @@ -0,0 +1,3 @@ +inputs: + conan-flake: + url: git+https://codeberg.org/tarcisio/conan-flake diff --git a/tests/cplusplus-conan-llvm/devenv.nix b/tests/cplusplus-conan-llvm/devenv.nix new file mode 100644 index 000000000..596cf8484 --- /dev/null +++ b/tests/cplusplus-conan-llvm/devenv.nix @@ -0,0 +1,34 @@ +{ pkgs, config, ... }: + +{ + languages.cplusplus = { + enable = true; + conan = { + enable = true; + install.enable = true; + config = { + stdenv = pkgs.overrideCC + ( + pkgs.llvmPackages.libcxxStdenv.override { + targetPlatform.useLLVM = true; + } + ) + pkgs.llvmPackages.clangUseLLVM; + # By default: compiler.libcxx=libstdc++11, so undo it: + compilerLibCxx = null; + }; + }; + }; + enterTest = '' + ${pkgs.lib.getExe config.languages.cplusplus.package} --version + ${pkgs.lib.getExe config.languages.cplusplus.package} --version \ + | grep clang + ${pkgs.lib.getExe config.languages.cplusplus.cmake.package} --version + ${pkgs.lib.getExe config.languages.cplusplus.lsp.package} --version \ + | grep ${pkgs.lib.escapeShellArg config.languages.cplusplus.lsp.package.version} + ${pkgs.lib.getExe config.languages.cplusplus.conan.package} --version + echo "enable:"${pkgs.lib.escapeShellArg config.languages.cplusplus.tools.enable}":" | grep "enable:1:" + ${pkgs.lib.getExe config.languages.cplusplus.conan.package} profile show \ + | grep "cmake/"${pkgs.lib.escapeShellArg config.languages.cplusplus.cmake.package.version} + ''; +} diff --git a/tests/cplusplus-conan-llvm/devenv.yaml b/tests/cplusplus-conan-llvm/devenv.yaml new file mode 100644 index 000000000..0a9fd6c94 --- /dev/null +++ b/tests/cplusplus-conan-llvm/devenv.yaml @@ -0,0 +1,3 @@ +inputs: + conan-flake: + url: git+https://codeberg.org/tarcisio/conan-flake diff --git a/tests/cplusplus-conan/devenv.nix b/tests/cplusplus-conan/devenv.nix new file mode 100644 index 000000000..04c17f6a2 --- /dev/null +++ b/tests/cplusplus-conan/devenv.nix @@ -0,0 +1,20 @@ +{ pkgs, config, ... }: + +{ + languages.cplusplus.enable = true; + languages.cplusplus.conan.enable = true; + languages.cplusplus.conan.install.enable = true; + enterTest = '' + ${pkgs.lib.getExe config.languages.cplusplus.package} --version + ${pkgs.lib.getExe config.languages.cplusplus.package} --version \ + | grep ${pkgs.lib.escapeShellArg config.stdenv.cc.cc.pname} + ${pkgs.lib.getExe config.languages.cplusplus.cmake.package} --version + ${pkgs.lib.getExe config.languages.cplusplus.lsp.package} --version \ + | grep ${pkgs.lib.escapeShellArg config.languages.cplusplus.lsp.package.version} + ${pkgs.lib.getExe config.languages.cplusplus.conan.package} --version + echo "enable:"${pkgs.lib.escapeShellArg config.languages.cplusplus.tools.enable}":" \ + | grep "enable:"${pkgs.lib.escapeShellArg config.stdenv.cc.isClang}":" + ${pkgs.lib.getExe config.languages.cplusplus.conan.package} profile show \ + | grep "cmake/"${pkgs.lib.escapeShellArg config.languages.cplusplus.cmake.package.version} + ''; +} diff --git a/tests/cplusplus-conan/devenv.yaml b/tests/cplusplus-conan/devenv.yaml new file mode 100644 index 000000000..0a9fd6c94 --- /dev/null +++ b/tests/cplusplus-conan/devenv.yaml @@ -0,0 +1,3 @@ +inputs: + conan-flake: + url: git+https://codeberg.org/tarcisio/conan-flake diff --git a/tests/cplusplus/devenv.nix b/tests/cplusplus/devenv.nix new file mode 100644 index 000000000..cd9f2937b --- /dev/null +++ b/tests/cplusplus/devenv.nix @@ -0,0 +1,16 @@ +{ pkgs, config, ... }: + +{ + languages.cplusplus.enable = true; + enterTest = '' + clang --version + ${pkgs.lib.getExe config.languages.cplusplus.package} --version \ + | grep clang + cmake --version + ccls --version | grep ${pkgs.lib.escapeShellArg config.languages.cplusplus.lsp.package.version} + # Validate some clang-tools are in the path: + clang-doc --version + clang-format --version + clang-tidy --version + ''; +}