]> xn--ix-yja.es Git - alex.git/commitdiff
Add Nextcloud setup
authoralex <alex@pdp7.net>
Sat, 21 Oct 2023 16:54:50 +0000 (18:54 +0200)
committeralex <alex@pdp7.net>
Sat, 21 Oct 2023 16:55:08 +0000 (18:55 +0200)
scripts/p7s/nextcloud.py [new file with mode: 0755]
scripts/pyproject.toml

diff --git a/scripts/p7s/nextcloud.py b/scripts/p7s/nextcloud.py
new file mode 100755 (executable)
index 0000000..0077c3a
--- /dev/null
@@ -0,0 +1,40 @@
+import pathlib
+import subprocess
+import textwrap
+
+
+def setup_nextcloud():
+    home = pathlib.Path.home()
+
+    if not (home / ".config" / "rclone" / "rclone.conf").exists():
+        print("Visit https://nextcloud.pdp7.net/nextcloud/index.php/settings/user/security , create an app password")
+
+        subprocess.run(["rclone", "config", "create", "nextcloud", "webdav", "url=https://nextcloud.pdp7.net/nextcloud/remote.php/dav/files/alex/", "vendor=nextcloud", "user=alex", "--all"], check=True)
+
+    (home / "Nextcloud").mkdir(exist_ok=True)
+
+    nextcloud_service_path = home / ".config" / "systemd" / "user" / "nextcloud.service"
+    nextcloud_service_path.parent.mkdir(parents=True, exist_ok=True)
+
+    nextcloud_service_path.write_text(textwrap.dedent("""
+        [Unit]
+
+        [Service]
+        ExecStart=/usr/bin/rclone mount --vfs-cache-mode=full --dir-perms 700 --file-perms 600 nextcloud: /home/alex/Nextcloud/
+
+        [Install]
+        WantedBy=default.target
+    """).lstrip())
+
+    subprocess.run(["systemctl", "--user", "enable", "--now", "nextcloud"], check=True)
+
+    if not (home / ".ssh").exists():
+        subprocess.run(["ln", "-s", "Nextcloud/_ssh", ".ssh"], check=True)
+
+    dotfiles_dir = home / "Nextcloud" / "dotfiles"
+
+    for dotfile in dotfiles_dir.glob("*"):
+        relative_dotfile = dotfile.relative_to(dotfiles_dir)
+        replaced_dotfile = pathlib.Path.home() / ("." + relative_dotfile.parts[0][1:])
+        if not replaced_dotfile.exists():
+            subprocess.run(["ln", "-s", dotfile, replaced_dotfile], check=True)
index b797e68b597daffec248de01176b5b1b9967e2b8..2adaf4e89230d2765fbe41f5ee11f6d90167ac5b 100644 (file)
@@ -20,3 +20,4 @@ ruscreen = 'p7s.ruscreen:main'
 mbsync_config = 'p7s.mail:generate_config'
 db-create = 'p7s.distrobox:create'
 db-enter = 'p7s.distrobox:enter'
+nextcloud_setup = 'p7s.nextcloud:setup_nextcloud'