diff --git a/hosts/common/user/configs/gui/obsidian/default.nix b/hosts/common/user/configs/gui/obsidian/default.nix index 59c8e9a..d881400 100644 --- a/hosts/common/user/configs/gui/obsidian/default.nix +++ b/hosts/common/user/configs/gui/obsidian/default.nix @@ -424,6 +424,50 @@ in cssSnippets = [ ./snippets/file-explorer-separators.css ]; themes = [ (import ./themes/minimal { inherit pkgs; }) ]; + + hotkeys = { + "command-palette:open" = [ { key = "F1"; } ]; + "app:open-help" = [ ]; + "editor:swap-line-down" = [ + { + modifiers = [ "Alt" ]; + key = "ArrowDown"; + } + ]; + "editor:swap-line-up" = [ + { + modifiers = [ "Alt" ]; + key = "ArrowUp"; + } + ]; + "editor:fold-all" = [ + { + modifiers = [ + "Alt" + "Mod" + ]; + key = "T"; + } + ]; + "advanced-cursors:add-cursor-above" = [ + { + modifiers = [ + "Mod" + "Shift" + ]; + key = "ArrowUp"; + } + ]; + "advanced-cursors:add-cursor-below" = [ + { + modifiers = [ + "Mod" + "Shift" + ]; + key = "ArrowDown"; + } + ]; + }; }; }; diff --git a/hosts/common/user/configs/gui/obsidian/options.nix b/hosts/common/user/configs/gui/obsidian/options.nix index 6787d3f..b570a6d 100644 --- a/hosts/common/user/configs/gui/obsidian/options.nix +++ b/hosts/common/user/configs/gui/obsidian/options.nix @@ -144,6 +144,24 @@ in }; }; }; + + hotkeysOptions = + { config, ... }: + { + options = { + modifiers = mkOption { + type = listOf str; + description = "The hotkey modifiers."; + default = [ ]; + }; + + key = mkOption { + type = str; + description = "The hotkey."; + }; + }; + }; + in { enable = mkEnableOption "obsidian"; @@ -204,6 +222,12 @@ in type = raw; default = [ ]; }; + + hotkeys = mkOption { + description = "Hotkeys to configure."; + type = raw; + default = { }; + }; }; vaults = mkOption { @@ -261,6 +285,12 @@ in type = listOf (either package (submodule themesOptions)); default = cfg.sharedSettings.themes; }; + + hotkeys = mkOption { + description = "Hotkeys to configure."; + type = attrsOf (listOf (submodule hotkeysOptions)); + default = cfg.sharedSettings.hotkeys; + }; }; }; @@ -406,6 +436,13 @@ in source = toPkg theme; }; }) vault.settings.themes; + + mkHotkeys = vault: { + name = "${vault.target}/.obsidian/hotkeys.json"; + value = { + source = (pkgs.formats.json { }).generate "hotkeys.json" vault.settings.hotkeys; + }; + }; in builtins.listToAttrs ( lib.lists.flatten ( @@ -416,6 +453,7 @@ in (mkCommunityPlugins vault) (mkCssSnippets vault) (mkThemes vault) + (mkHotkeys vault) ]) vaults ) );