72 lines
1.4 KiB
Nix
72 lines
1.4 KiB
Nix
# Defines the kakrc.
|
|
|
|
{
|
|
# Feature flags
|
|
typescript ? false,
|
|
haskell ? false,
|
|
python ? false,
|
|
rust ? false,
|
|
nix ? true,
|
|
|
|
# Color theme
|
|
theme,
|
|
|
|
# Build tools
|
|
pkgs,
|
|
lib,
|
|
}:
|
|
|
|
# If any of the language features are enabled, enable the
|
|
# extra language server-related keybinds and options.
|
|
let ide = typescript || haskell || python || rust || nix;
|
|
|
|
# Generic keybinds
|
|
keybinds = ''
|
|
|
|
'';
|
|
|
|
# IDE mode enables the language server protocol client
|
|
# and adds keybinds for lsp-hover and lsp-code-actions.
|
|
# If `rust` is enabled, lsp-semantic-tokens is also used.
|
|
ide-config = (lib.optionalString ide ''
|
|
|
|
'');
|
|
|
|
# Sometimes work requires me to touch the frontend. Ew
|
|
typescript-config = (lib.optionalString typescript ''
|
|
|
|
'');
|
|
|
|
# Haskell development
|
|
haskell-config = (lib.optionalString haskell ''
|
|
|
|
'');
|
|
|
|
# Python-related config
|
|
python-config = (lib.optionalString python ''
|
|
|
|
'');
|
|
|
|
# Rust development
|
|
rust-config = (lib.optionalString rust ''
|
|
|
|
'');
|
|
|
|
# Nix hacking-related configuration
|
|
nix-config = (lib.optionalString nix ''
|
|
|
|
'');
|
|
|
|
|
|
in pkgs.writeTextFile (rec {
|
|
name = "kakrc.kak";
|
|
destination = "/share/kak/autoload/${name}";
|
|
text = with theme; ''
|
|
|
|
'' ++ keybinds
|
|
++ typescript-config
|
|
++ haskell-config
|
|
++ python-config
|
|
++ rust-config
|
|
++ nix-config;
|
|
})
|