|
# Guide to Nix for KoboldCpp |
|
|
|
- KoboldCpp is available on Nixpkgs and can be installed by adding just |
|
`koboldcpp` to your `environment.systemPackages` *(or it can also be placed |
|
in `home.packages`)*. |
|
|
|
## KoboldCpp Nix - CUDA Support |
|
|
|
In order to enable NVIDIA CUDA support, you'll need to configure several |
|
settings: |
|
|
|
- Enable required options: |
|
|
|
```nix |
|
nixpkgs.config.allowUnfree = true; # Allow proprietary software |
|
nixpkgs.config.cudaSupport = true; # Enable CUDA functionality |
|
``` |
|
|
|
- Set your GPU architecture: |
|
|
|
```nix |
|
nixpkgs.config.cudaCapabilities = [ "sm_75" ]; # Example for RTX 2080 |
|
``` |
|
|
|
To find your GPU's architecture code: |
|
|
|
1. Visit the [NVIDIA Architecture Guide](https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/) |
|
2. Locate your GPU Architecture |
|
3. Use the corresponding `sm_XX` code in your configuration |
|
|
|
## Hardware Support |
|
|
|
- β
Vulkan: Enabled by default on Linux |
|
- β
Metal: Enabled by default on macOS |
|
- β ROCm: Not currently available |
|
|
|
## Example KoboldCpp Nix Configuration |
|
|
|
```nix |
|
nixpkgs.config = { |
|
allowUnfree = true; |
|
cudaSupport = true; |
|
cudaCapabilities = [ "sm_75" ]; |
|
}; |
|
environment.systemPackages = [ pkgs.koboldcpp ]; |
|
# If you're using home-manager to install KoboldCpp |
|
# home.packages = [ pkgs.koboldcpp ]; |
|
|
|
# You can also just override koboldcpp to add your CUDA architecture: |
|
# environment.systemPackages = [ (koboldcpp.override { cudaArches = ["sm_75"]; }) ] |
|
# or |
|
# home.packages = [ (koboldcpp.override { cudaArches = ["sm_75"]; }) ]; |
|
``` |
|
|
|
## KoboldCpp - Home Manager |
|
|
|
The setup for Home Manager is the same as regular Nix, with one exception |
|
regarding Home Manager's instance of nixpkgs. By default, Home Manager manages |
|
its own isolated instance of nixpkgs, which has two implications: |
|
|
|
1. You can keep your private Home Manager nixpkgs instance and simply repeat |
|
your `nixpkgs.config` in home manager. |
|
2. You can set `home-manager.useGlobalPkgs = true;` to copy your module |
|
system's nixpkgs instance. This way, you only need to define it in your |
|
`configuration.nix`, and Home Manager will "inherit" this configuration. |
|
|
|
## Getting Help for KoboldCpp Nix |
|
|
|
- If you face any issues with running KoboldCpp on Nix, please open an issue |
|
[here](https://github.com/NixOS/nixpkgs/issues/new?assignees=&labels=0.kind%3A+bug&projects=&template=bug_report.md&title=) |
|
|