diff --git a/hosts/desktop/shared-home.nix b/hosts/desktop/shared-home.nix index 0685067..744223d 100644 --- a/hosts/desktop/shared-home.nix +++ b/hosts/desktop/shared-home.nix @@ -38,7 +38,10 @@ krita.enable = true; davinci.enable = true; obs.enable = true; - obsidian.enable = true; + obsidian = { + enable = true; + vaultCmd = true; + }; librewolf = { enable = true; diff --git a/modules/home-manager/programs/obsidian.nix b/modules/home-manager/programs/obsidian.nix index f3de9fb..78c0895 100644 --- a/modules/home-manager/programs/obsidian.nix +++ b/modules/home-manager/programs/obsidian.nix @@ -1,16 +1,43 @@ { config, lib, pkgs, ... }: + let cfg = config.obsidian; + vaultCmd = pkgs.writeShellScriptBin "vault" '' + command="$1"; + + if [[ "$command" == "sync" ]]; then + git="${pkgs.git}/bin/git"; + date="$(date +%F) $(date +%R)" + + cd ${cfg.vaultDir} + $git pull + if [[ "$(echo "$($git diff --shortstat)" | awk '{print $1}')" -ne "" ]]; then + $git commit -m "vault backup: $date" -a + fi + $git push + fi + ''; in { imports = [ ]; options.obsidian = with lib; with lib.types; { enable = mkEnableOption ""; + vaultCmd = mkOption { + type = bool; + default = false; + }; + vaultDir = mkOption { + type = str; + default = "${config.home.homeDirectory}/.vault"; + }; }; config = lib.mkIf cfg.enable { services.flatpak.packages = [ "md.obsidian.Obsidian" ]; + home.packages = [ + (if cfg.vaultCmd then vaultCmd else null) + ]; }; }