mirror of
				https://github.com/nmasur/dotfiles
				synced 2025-11-04 11:43:16 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			667 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			667 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  config,
 | 
						|
  pkgs,
 | 
						|
  lib,
 | 
						|
  ...
 | 
						|
}:
 | 
						|
 | 
						|
let
 | 
						|
  cfg = config.nmasur.presets.programs.alacritty-darwin;
 | 
						|
in
 | 
						|
{
 | 
						|
 | 
						|
  options.nmasur.presets.programs.alacritty-darwin.enable =
 | 
						|
    lib.mkEnableOption "Alacritty terminal macOS settings";
 | 
						|
 | 
						|
  config = lib.mkIf cfg.enable {
 | 
						|
    # MacOS-specific settings for Alacritty
 | 
						|
    programs.alacritty = {
 | 
						|
      enable = true;
 | 
						|
      settings = {
 | 
						|
        font.size = lib.mkForce 20.0;
 | 
						|
        shell.program = "${pkgs.fish}/bin/fish";
 | 
						|
        window.startup_mode = "SimpleFullScreen";
 | 
						|
        key_bindings = [
 | 
						|
          {
 | 
						|
            key = "F";
 | 
						|
            mods = "Super";
 | 
						|
            action = "ToggleSimpleFullscreen";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "F";
 | 
						|
            mods = "Control|Shift";
 | 
						|
            action = "SearchForward";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "L";
 | 
						|
            mods = "Super";
 | 
						|
            chars = "\\x1F";
 | 
						|
          }
 | 
						|
          # Some Mac key combinations need to be manually added
 | 
						|
          {
 | 
						|
            key = "Return";
 | 
						|
            mods = "Shift";
 | 
						|
            chars = "\\x1b[13;2u";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Return";
 | 
						|
            mods = "Control";
 | 
						|
            chars = "\\x1b[13;5u";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Return";
 | 
						|
            mods = "Control|Shift";
 | 
						|
            chars = "\\x1b[13;6u";
 | 
						|
          }
 | 
						|
 | 
						|
          {
 | 
						|
            key = "N";
 | 
						|
            mods = "Command";
 | 
						|
            action = "SpawnNewInstance";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "PageUp";
 | 
						|
            action = "ScrollPageUp";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "PageUp";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B[5~";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "PageUp";
 | 
						|
            mods = "Shift";
 | 
						|
            chars = "\\x1B[5~";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "PageDown";
 | 
						|
            action = "ScrollPageDown";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "PageDown";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B[6~";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "PageDown";
 | 
						|
            mods = "Shift";
 | 
						|
            chars = "\\x1B[6~";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Home";
 | 
						|
            action = "ScrollToTop";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Home";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1BOH";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Home";
 | 
						|
            mods = "Shift";
 | 
						|
            chars = "\\x1B[H";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "End";
 | 
						|
            action = "ScrollToBottom";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "End";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1BOF";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "End";
 | 
						|
            mods = "Shift";
 | 
						|
            chars = "\\x1B[F";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Tab";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B	";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Tab";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1Bx1B[Z";
 | 
						|
          }
 | 
						|
          # {
 | 
						|
          #   key = "Back";
 | 
						|
          #   chars = "\\x7F";
 | 
						|
          # }
 | 
						|
          {
 | 
						|
            key = "Back";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bx7F";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Back";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1Bx08";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Space";
 | 
						|
            mods = "Control";
 | 
						|
            chars = "\\x00";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Space";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x20";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Left";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bb";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Left";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1Bx1B[D";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Right";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bf";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Right";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1Bx1B[C";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Down";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bx1B[B";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Down";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1Bx1B[B";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Up";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bx1B[A";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Up";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1Bx1B[A";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "A";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Ba";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "A";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BA";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "B";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bb";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "B";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BB";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "C";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bc";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "C";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BC";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "D";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bd";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "D";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BD";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "E";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Be";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "E";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BE";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "F";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bf";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "F";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BF";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "G";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bg";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "G";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BG";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "H";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bh";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "H";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BH";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "I";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bi";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "I";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BI";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "J";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bj";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "J";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BJ";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "K";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bk";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "K";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BK";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "L";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bl";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "L";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BL";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "M";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bm";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "M";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BM";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "N";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bn";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "N";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BN";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "O";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bo";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "O";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BO";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "P";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bp";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "P";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BP";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Q";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bq";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Q";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BQ";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "R";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Br";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "R";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BR";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "S";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bs";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "S";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BS";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "T";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bt";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "T";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BT";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "U";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bu";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "U";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BU";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "V";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bv";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "V";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BV";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "W";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bw";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "W";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BW";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "X";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bx";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "X";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BX";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Y";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1By";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Y";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BY";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Z";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1Bz";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Z";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1BZ";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key1";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B1";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key1";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B!";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key2";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B2";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key2";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B#";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key3";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B3";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key3";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B#";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key4";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B4";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key4";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B$";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key5";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B5";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key5";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B%";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key6";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B6";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key6";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B^";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key7";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B7";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key7";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B&";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key8";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B8";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key8";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B*";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key9";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B9";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key9";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B(";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key0";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B0";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Key0";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B)";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Minus";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B-";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Minus";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B_";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Equals";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B=";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Equals";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B+";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "LBracket";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B[";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "LBracket";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B{";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "RBracket";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B]";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "RBracket";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B}";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Backslash";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B\\\\";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Backslash";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B|";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Semicolon";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B;";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Semicolon";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B =";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Apostrophe";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B'";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Apostrophe";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = ''\x1B"'';
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Comma";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B;";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Comma";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B<";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Period";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B.";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Period";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B>";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Slash";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B/";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Slash";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B?";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Grave";
 | 
						|
            mods = "Alt";
 | 
						|
            chars = "\\x1B`";
 | 
						|
          }
 | 
						|
          {
 | 
						|
            key = "Grave";
 | 
						|
            mods = "Alt|Shift";
 | 
						|
            chars = "\\x1B~";
 | 
						|
          }
 | 
						|
        ];
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |