From 7c36681242a826d01808d909693192a91c8fd898 Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Sun, 19 Apr 2026 09:06:57 +0200 Subject: [PATCH] Mount pCloud with turnstile rclone service --- ansible/inventory/group_vars/void.yml | 2 ++ .../profile_desktop_common/tasks/main.yml | 29 ++++++++++++++++ .../.config/service/rclone-pcloud/log/run | 3 ++ .../desktop/.config/service/rclone-pcloud/run | 33 +++++++++++++++++++ dotfiles/desktop/.emacs.d/lisp/lang/org.el | 4 +-- 5 files changed, 69 insertions(+), 2 deletions(-) create mode 100755 dotfiles/desktop/.config/service/rclone-pcloud/log/run create mode 100755 dotfiles/desktop/.config/service/rclone-pcloud/run diff --git a/ansible/inventory/group_vars/void.yml b/ansible/inventory/group_vars/void.yml index b2a6f2f..26c679b 100644 --- a/ansible/inventory/group_vars/void.yml +++ b/ansible/inventory/group_vars/void.yml @@ -11,6 +11,7 @@ void_packages_base: - elogind - fastfetch - flatpak + - fuse3 - gcc - gdb - gnome-keyring @@ -30,6 +31,7 @@ void_packages_base: - pkg-config - podman - podman-compose + - rclone - seahorse - socklog - socklog-void diff --git a/ansible/roles/profile_desktop_common/tasks/main.yml b/ansible/roles/profile_desktop_common/tasks/main.yml index a7c8be5..57c523a 100644 --- a/ansible/roles/profile_desktop_common/tasks/main.yml +++ b/ansible/roles/profile_desktop_common/tasks/main.yml @@ -380,15 +380,44 @@ mode: "0755" - path: "{{ user_home }}/.local/state" mode: "0755" + - path: "{{ user_home }}/.cache" + mode: "0755" + - path: "{{ user_home }}/.cache/rclone" + mode: "0755" - path: "{{ user_home }}/.local/state/ssh-agent" mode: "0700" - path: "{{ user_home }}/.local/share" mode: "0755" - path: "{{ user_home }}/.local/share/keyrings" mode: "0700" + - path: "{{ user_home }}/Remotes" + mode: "0755" - path: /usr/src mode: "0755" +- name: Check whether Org home path already exists + tags: [dotfiles, dotfiles:desktop] + ansible.builtin.stat: + path: "{{ user_home }}/Org" + follow: false + register: org_home_path + +- name: Fail when Org home path conflicts with managed symlink + tags: [dotfiles, dotfiles:desktop] + ansible.builtin.fail: + msg: "{{ user_home }}/Org already exists and is not the managed symlink to {{ user_home }}/Remotes/pCloud/Org" + when: + - org_home_path.stat.exists | default(false) + - not (org_home_path.stat.islnk | default(false) and org_home_path.stat.lnk_source | default('') == user_home + '/Remotes/pCloud/Org') + +- name: Ensure Org home path points to pCloud Org directory + tags: [dotfiles, dotfiles:desktop] + ansible.builtin.file: + src: "{{ user_home }}/Remotes/pCloud/Org" + dest: "{{ user_home }}/Org" + state: link + force: true + - name: Ensure maildir directories exist tags: [dotfiles, dotfiles:desktop] ansible.builtin.file: diff --git a/dotfiles/desktop/.config/service/rclone-pcloud/log/run b/dotfiles/desktop/.config/service/rclone-pcloud/log/run new file mode 100755 index 0000000..d8c1052 --- /dev/null +++ b/dotfiles/desktop/.config/service/rclone-pcloud/log/run @@ -0,0 +1,3 @@ +#!/bin/sh + +exec svlogd -tt ./main diff --git a/dotfiles/desktop/.config/service/rclone-pcloud/run b/dotfiles/desktop/.config/service/rclone-pcloud/run new file mode 100755 index 0000000..2627958 --- /dev/null +++ b/dotfiles/desktop/.config/service/rclone-pcloud/run @@ -0,0 +1,33 @@ +#!/bin/sh + +set -eu + +mountpoint="$HOME/Remotes/pCloud" +cache_dir="$HOME/.cache/rclone/pcloud" +config_path="$HOME/.config/rclone/rclone.conf" + +mkdir -p "$cache_dir" "$mountpoint" + +if mountpoint -q "$mountpoint"; then + exit 0 +fi + +if [ -n "${TURNSTILE_ENV_DIR:-}" ]; then + exec chpst -e "$TURNSTILE_ENV_DIR" rclone mount \ + pcloud: "$mountpoint" \ + --config "$config_path" \ + --cache-dir "$cache_dir" \ + --vfs-cache-mode writes \ + --dir-cache-time 10m \ + --poll-interval 1m \ + --log-level INFO +fi + +exec rclone mount \ + pcloud: "$mountpoint" \ + --config "$config_path" \ + --cache-dir "$cache_dir" \ + --vfs-cache-mode writes \ + --dir-cache-time 10m \ + --poll-interval 1m \ + --log-level INFO diff --git a/dotfiles/desktop/.emacs.d/lisp/lang/org.el b/dotfiles/desktop/.emacs.d/lisp/lang/org.el index b2548a1..4fdf82b 100644 --- a/dotfiles/desktop/.emacs.d/lisp/lang/org.el +++ b/dotfiles/desktop/.emacs.d/lisp/lang/org.el @@ -11,7 +11,7 @@ org-return-follows-link t org-startup-folded 'content org-todo-keywords '((sequence "🆕(t)" "▶️(s)" "⏳(w)" "🔎(p)" "|" "✅(d)" "🗑(c)" "👨(g)")) - org-export-backends '(html latex odt markdown ascii icalendar) + org-export-backends '(html latex odt md ascii icalendar) org-latex-pdf-process '("pdflatex -interaction nonstopmode %f" "pdflatex -interaction nonstopmode %f") org-latex-default-class "article" @@ -44,7 +44,7 @@ ;; Setting default directory for Org files -(setq org-directory "~/Remotes/pCloud/Org") +(setq org-directory "~/Org") (provide 'org)