mirror of
https://github.com/elwrcl/copnix.git
synced 2026-10-31 22:28:03 +03:00
obsidian
This commit is contained in:
2 files changed
+60
No files matched your search
@@ -100,6 +100,7 @@ in
|
|||||||
config.flake.homeModules.home-discord-plugins
|
config.flake.homeModules.home-discord-plugins
|
||||||
config.flake.homeModules.home-thunderbird
|
config.flake.homeModules.home-thunderbird
|
||||||
config.flake.homeModules.home-obsidian
|
config.flake.homeModules.home-obsidian
|
||||||
|
config.flake.homeModules.home-obsidian-icloud-sync
|
||||||
config.flake.homeModules.home-mpv
|
config.flake.homeModules.home-mpv
|
||||||
config.flake.homeModules.home-mpv-intel-hard
|
config.flake.homeModules.home-mpv-intel-hard
|
||||||
config.flake.homeModules.home-mpv-svp
|
config.flake.homeModules.home-mpv-svp
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
flake.homeModules.home-obsidian-icloud-sync =
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
vault = "${config.home.homeDirectory}/${config.programs.obsidian.vaults.notes.target}";
|
||||||
|
remote = "icloud:Obsidian/elars";
|
||||||
|
filters = pkgs.writeText "obsidian-icloud-filters.txt" ''
|
||||||
|
- .obsidian/**
|
||||||
|
- .trash/**
|
||||||
|
- .DS_Store
|
||||||
|
'';
|
||||||
|
|
||||||
|
sync = pkgs.writeShellScript "obsidian-icloud-sync" ''
|
||||||
|
workdir="${config.xdg.stateHome}/obsidian-icloud-sync"
|
||||||
|
${pkgs.coreutils}/bin/mkdir -p "$workdir"
|
||||||
|
|
||||||
|
resync=()
|
||||||
|
shopt -s nullglob
|
||||||
|
listings=("$workdir"/*.lst)
|
||||||
|
if [ ''${#listings[@]} -eq 0 ]; then
|
||||||
|
resync=(--resync)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! ${pkgs.diffutils}/bin/cmp -s ${filters} "$workdir/filters.txt"; then
|
||||||
|
${pkgs.coreutils}/bin/install -m644 ${filters} "$workdir/filters.txt"
|
||||||
|
resync=(--resync)
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec ${pkgs.rclone}/bin/rclone bisync "${vault}" "${remote}" \
|
||||||
|
--filters-file "$workdir/filters.txt" \
|
||||||
|
--workdir "$workdir" \
|
||||||
|
--resilient --recover --max-lock 2m \
|
||||||
|
--conflict-resolve newer \
|
||||||
|
"''${resync[@]}"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
systemd.user.services.obsidian-icloud-sync = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Obsidian vault <-> iCloud (rclone bisync)";
|
||||||
|
After = [ "network-online.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${sync}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.timers.obsidian-icloud-sync = {
|
||||||
|
Unit.Description = "Periodic Obsidian iCloud sync";
|
||||||
|
Timer = {
|
||||||
|
OnStartupSec = "1min";
|
||||||
|
OnUnitInactiveSec = "3min";
|
||||||
|
};
|
||||||
|
Install.WantedBy = [ "timers.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in new issue
Block a user