diff --git a/hosts/temperance/configuration.nix b/hosts/temperance/configuration.nix index 1341691..bccc180 100644 --- a/hosts/temperance/configuration.nix +++ b/hosts/temperance/configuration.nix @@ -48,7 +48,7 @@ in { neovim.enable = true; # sadly just not advanced enough, yet. helix.enable = true; - kakoune.enable = false; + kakoune.enable = true; }; discord.enable = true; nushell.enable = true; diff --git a/modules/programs/editors/kakoune/default.nix b/modules/programs/editors/kakoune/default.nix index c667665..959ef43 100644 --- a/modules/programs/editors/kakoune/default.nix +++ b/modules/programs/editors/kakoune/default.nix @@ -7,60 +7,90 @@ inherit (config.modules.other.system) username; cfg = config.modules.system.programs.editors.kakoune; inherit (lib) mkIf mkEnableOption; -in { - imports = [./mappings.nix]; - options.modules.editors.kakoune.enable = mkEnableOption "kakoune"; - config.home-manager.users.${username}.programs.kakoune = mkIf cfg.enable { - enable = true; - package = pkgs.kakoune-unwrapped; - config = { - autoComplete = ["insert"]; - autoReload = "yes"; - indentWidth = 4; - tabStop = 4; - incrementalSearch = false; - numberLines = { - enable = true; - relative = true; - highlightCursor = true; - separator = "|"; - }; - - scrollOff = { - lines = 4; - columns = 4; - }; - wrapLines = { - enable = true; - indent = true; - word = true; - }; - - ui = { - enableMouse = true; - assistant = "none"; - statusLine = "bottom"; - }; + custom-kakoune = pkgs.stdenv.mkDerivation { + name = "custom-kakoune"; + src = pkgs.fetchFromGitHub { + owner = "mawww"; + repo = "kakoune"; + rev = "be82047dbf5f74f123e925b96e0e13962a4e0c09"; + hash = "sha256-akSmIe0SUe9re8a90ssrykowCzThZnzqVow9erT+0U4="; }; - plugins = with pkgs.kakounePlugins; [ - active-window-kak - auto-pairs-kak - byline-kak # ope - prelude-kak # dependency of byline - fzf-kak - kakboard - kakoune-buffer-switcher - kakoune-buffers - kakoune-lsp - kakoune-rainbow - kakoune-registers - kakoune-vertical-selection - powerline-kak - quickscope-kak - smarttab-kak - zig-kak + makeFlags = ["debug=no" "PREFIX=${placeholder "out"}"]; + + enableParallellBuilding = true; + + doInstallCheck = false; + installCheckPhase = '' + $out/bin/kak -ui json -e "kill 0" + ''; + postInstall = '' + cd "$out/share/kak" + autoload_target=$(readlink autoload) + rm autoload + mkdir autoload + ln -s --relative "$autoload_target" autoload + ''; + }; +in { + imports = [./mappings.nix]; + options.modules.programs.editors.kakoune.enable = mkEnableOption "kakoune"; + config = { + environment.systemPackages = [ + custom-kakoune ]; - # extraConfig = ./kakrc; + home-manager.users.${username}.programs.kakoune = mkIf false { + enable = true; + package = custom-kakoune; + config = { + autoComplete = ["insert"]; + autoReload = "yes"; + indentWidth = 4; + tabStop = 4; + incrementalSearch = false; + numberLines = { + enable = true; + relative = true; + highlightCursor = true; + separator = " "; + }; + + scrollOff = { + lines = 4; + columns = 4; + }; + wrapLines = { + enable = true; + indent = true; + word = true; + }; + + ui = { + enableMouse = true; + assistant = "none"; + statusLine = "bottom"; + }; + }; + + plugins = with pkgs.kakounePlugins; [ + active-window-kak + auto-pairs-kak + byline-kak # ope + prelude-kak # dependency of byline + kak-ls + kakboard + kakoune-buffer-switcher + kakoune-buffers + kakoune-lsp + kakoune-rainbow + kakoune-registers + kakoune-vertical-selection + powerline-kak + quickscope-kak + smarttab-kak + zig-kak + ]; + # extraConfig = ./kakrc; + }; }; }