161 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  config,
 | 
						|
  pkgs,
 | 
						|
  lib,
 | 
						|
  ...
 | 
						|
}:
 | 
						|
let
 | 
						|
  inherit (config.my)
 | 
						|
    dmenu
 | 
						|
    editor
 | 
						|
    theme
 | 
						|
    accent
 | 
						|
    ;
 | 
						|
  inherit (theme) color;
 | 
						|
  inherit (pkgs) kakounePlugins;
 | 
						|
  inherit (pkgs.kakouneUtils) buildKakounePlugin;
 | 
						|
in
 | 
						|
{
 | 
						|
  imports = [ ./kak-tree-sitter.nix ];
 | 
						|
  config = {
 | 
						|
    programs.kakoune = {
 | 
						|
      enable = true;
 | 
						|
      plugins = with kakounePlugins; [
 | 
						|
        kak-ansi
 | 
						|
        active-window-kak
 | 
						|
        (buildKakounePlugin rec {
 | 
						|
          pname = "auto-pairs.kak";
 | 
						|
          version = "0.1";
 | 
						|
          src = pkgs.fetchFromGitHub {
 | 
						|
            owner = "alexherbo2";
 | 
						|
            repo = pname;
 | 
						|
            rev = "bfdcb8566076f653ec707f86207f83ea75173ce9";
 | 
						|
            sha256 = "sha256-MgqCuGj03ctKty2yQgQvy6qV/0s7euNwukhSjqauqW8=";
 | 
						|
          };
 | 
						|
        })
 | 
						|
        (buildKakounePlugin rec {
 | 
						|
          pname = "kakoune-mirror-colemak";
 | 
						|
          version = "0.1";
 | 
						|
          src = pkgs.fetchFromGitHub {
 | 
						|
            owner = "lelgenio";
 | 
						|
            repo = pname;
 | 
						|
            rev = "8f191172590d7615d0a56c857e9331ce69164670";
 | 
						|
            sha256 = "sha256-ERNtWOn8rq53YmByTQnwDObN7Fs5HYBwvNIyTJrj2hw=";
 | 
						|
          };
 | 
						|
        })
 | 
						|
        (buildKakounePlugin rec {
 | 
						|
          pname = "kakoune-palette";
 | 
						|
          version = "0.1";
 | 
						|
          src = pkgs.fetchFromGitHub {
 | 
						|
            owner = "delapouite";
 | 
						|
            repo = pname;
 | 
						|
            rev = "052cab5f48578679d94717ed5f62429be9865d5d";
 | 
						|
            sha256 = "sha256-fk0TL6qG3zX8cPp1xvhMw0/g9xSKKp04uyagaPq/Nd0=";
 | 
						|
          };
 | 
						|
        })
 | 
						|
        (buildKakounePlugin rec {
 | 
						|
          pname = "kak-crosshairs";
 | 
						|
          version = "0.1";
 | 
						|
          src = pkgs.fetchFromGitHub {
 | 
						|
            owner = "lelgenio";
 | 
						|
            repo = pname;
 | 
						|
            rev = "3a6bcd9b50737a9280de109e32048991a2f85f7c";
 | 
						|
            sha256 = "sha256-wZQ9tsAOqG4eW28DwJ6VcsR9gSrCGqFjbTARhvTLWTQ=";
 | 
						|
          };
 | 
						|
        })
 | 
						|
        (buildKakounePlugin rec {
 | 
						|
          pname = "kakoune-colemak-neio";
 | 
						|
          version = "0.1";
 | 
						|
          src = pkgs.fetchFromGitHub {
 | 
						|
            owner = "lelgenio";
 | 
						|
            repo = pname;
 | 
						|
            rev = "28b9aabafb8d422a4c52b2a15424056fb87c8d90";
 | 
						|
            sha256 = "sha256-d3OTjo02QFsbNqmgd28fHgSjPcdF8BJleCJGCyOFc18=";
 | 
						|
          };
 | 
						|
        })
 | 
						|
        (buildKakounePlugin rec {
 | 
						|
          pname = "kakoune-multi-file";
 | 
						|
          version = "0.1";
 | 
						|
          src = pkgs.fetchFromGitHub {
 | 
						|
            owner = "natasky";
 | 
						|
            repo = pname;
 | 
						|
            rev = "1cc6baeb14b773916eb9209469aa77b3cfa67a0a";
 | 
						|
            sha256 = "sha256-3PLxG9UtT0MMSibvTviXQIgTH3rApZ3WSbNCEH3c7HE=";
 | 
						|
          };
 | 
						|
          buildInputs = with pkgs; [
 | 
						|
            python3Minimal
 | 
						|
          ];
 | 
						|
        })
 | 
						|
      ];
 | 
						|
      extraConfig =
 | 
						|
        lib.concatStringsSep "\n" (
 | 
						|
          map (lib.readFile) (
 | 
						|
            [
 | 
						|
              ./filetypes.kak
 | 
						|
              ./hooks.kak
 | 
						|
              ./indent.kak
 | 
						|
              ./keys.kak
 | 
						|
              ./lsp-config.kak
 | 
						|
              ./usermode.kak
 | 
						|
              ./git-mode.kak
 | 
						|
            ]
 | 
						|
            ++ lib.optional (dmenu == "rofi") ./rofi-commands.kak
 | 
						|
          )
 | 
						|
        )
 | 
						|
        + ''
 | 
						|
          try %{
 | 
						|
            eval %sh{ kak-tree-sitter -vvvv -dks --init $kak_session }
 | 
						|
          }
 | 
						|
 | 
						|
          set global scrolloff 10,20
 | 
						|
          set global autoreload yes
 | 
						|
          set global startup_info_version 99999999
 | 
						|
          set global grepcmd 'rg -Hn'
 | 
						|
 | 
						|
        ''
 | 
						|
        + (import ./colors.nix {
 | 
						|
          inherit
 | 
						|
            pkgs
 | 
						|
            lib
 | 
						|
            color
 | 
						|
            accent
 | 
						|
            ;
 | 
						|
        });
 | 
						|
    };
 | 
						|
    home.file = {
 | 
						|
      ".config/kak-lsp/kak-lsp.toml".source = ./kak-lsp.toml;
 | 
						|
    };
 | 
						|
 | 
						|
    home.packages = with pkgs; [
 | 
						|
      terminal
 | 
						|
      ranger
 | 
						|
      bmenu
 | 
						|
      kak-lsp
 | 
						|
      kak-tree-sitter
 | 
						|
      kak-pager
 | 
						|
      kak-man-pager
 | 
						|
 | 
						|
      emmet-cli
 | 
						|
      nodePackages.prettier
 | 
						|
      pint-fmt
 | 
						|
 | 
						|
      aspell
 | 
						|
      aspellDicts.en
 | 
						|
      aspellDicts.pt_BR
 | 
						|
 | 
						|
      ripgrep
 | 
						|
    ];
 | 
						|
    home.activation = {
 | 
						|
      update_kakoune = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
 | 
						|
        $DRY_RUN_CMD timeout 1s kak -clear &&
 | 
						|
        $DRY_RUN_CMD timeout 1s kak -l | xargs -r -n1 timeout 1s kak -e "config-source;quit" -ui dummy -c ||
 | 
						|
        $DRY_RUN_CMD true
 | 
						|
      '';
 | 
						|
    };
 | 
						|
    home.sessionVariables = lib.mkIf (editor == "kakoune") {
 | 
						|
      EDITOR = "kak";
 | 
						|
      # Some plugins(kak_ansi) like to compile stuff
 | 
						|
      CC = "cc";
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |