let numbers = [ "1" "2" "3" "4" "5" "6" "7" "8" "9" "0" ]; number_to_symbol = num: { type = "basic"; from = { key_code = num; modifiers = { optional = [ "caps_lock" ]; }; }; to = [ { key_code = num; modifiers = [ "left_shift" ]; } ]; }; symbol_to_number = num: { type = "basic"; from = { key_code = num; modifiers = { mandatory = [ "left_shift" ]; optional = [ "caps_lock" ]; }; }; to = [ { key_code = num; } ]; }; manipulators = builtins.concatLists ( map (n: [ (number_to_symbol n) (symbol_to_number n) ]) numbers ); simple_modifications = [ { from.apple_vendor_top_case_key_code = "keyboard_fn"; to = [ { key_code = "left_control"; } ]; } { from.key_code = "left_control"; to = [ { apple_vendor_top_case_key_code = "keyboard_fn"; } ]; } ]; complex_modifications = { name = "Complex Modifications"; rules = [ # { # description = "Change numbers to symbols and vice versa"; # manipulators = manipulators; # } { description = "Toggle Focus Mode with F6"; manipulators = [ { from = { "key_code" = "f6"; }; to = [ { "shell_command" = "shortcuts run 'Reduced Interruptions'"; } ]; type = "basic"; } ]; } ]; }; config = builtins.toJSON { global.show_in_menu_bar = false; profiles = [ { name = "default"; selected = true; virtual_hid_keyboard.keyboard_type_v2 = "ansi"; inherit simple_modifications; inherit complex_modifications; devices = [ { identifiers.is_keyboard = true; } ]; } ]; }; in { home-manager.sharedModules = [ { home.file.".config/karabiner/karabiner.json" = { force = true; text = config; }; } ]; }