From dc295a9e494e31c38cd81d7560c7ae504a09d0c7 Mon Sep 17 00:00:00 2001 From: SebastianStork Date: Sun, 20 Oct 2024 13:06:13 +0200 Subject: [PATCH] Add nextcloud synchronization --- hosts/inspiron/default.nix | 1 - hosts/north/default.nix | 1 - modules/home/nextcloud-sync.nix | 59 ++++++++++++++++++++++++++++++++ modules/home/nextcloud.nix | 11 ------ users/seb/@inspiron/secrets.yaml | 7 ++-- users/seb/@north/secrets.yaml | 7 ++-- users/seb/home.nix | 2 +- 7 files changed, 68 insertions(+), 20 deletions(-) create mode 100644 modules/home/nextcloud-sync.nix delete mode 100644 modules/home/nextcloud.nix diff --git a/hosts/inspiron/default.nix b/hosts/inspiron/default.nix index 68bef91..af4de28 100644 --- a/hosts/inspiron/default.nix +++ b/hosts/inspiron/default.nix @@ -25,7 +25,6 @@ virtualisation.enable = true; sops.enable = true; printing.enable = true; - syncthing.enable = true; auto-gc.enable = true; geoclue.enable = true; tailscale = { diff --git a/hosts/north/default.nix b/hosts/north/default.nix index e9db8f4..8efef91 100644 --- a/hosts/north/default.nix +++ b/hosts/north/default.nix @@ -23,7 +23,6 @@ virtualisation.enable = true; sops.enable = true; printing.enable = true; - syncthing.enable = true; auto-gc.enable = true; geoclue.enable = true; tailscale = { diff --git a/modules/home/nextcloud-sync.nix b/modules/home/nextcloud-sync.nix new file mode 100644 index 0000000..b2d5beb --- /dev/null +++ b/modules/home/nextcloud-sync.nix @@ -0,0 +1,59 @@ +{ + config, + pkgs, + lib, + ... +}: +let + paths = [ + "Documents" + "Downloads" + "Pictures" + "Music" + "Videos" + "Projects" + ]; + syncCommand = + path: + "nextcloudcmd ${ + lib.concatStringsSep " " [ + "--user seb" + "--password \"$(cat ${config.sops.secrets."nextcloud-password".path})\"" + "--path /Sync/${path}" + "--non-interactive" + "~/${path}" + "https://cloud.stork-atlas.ts.net" + ] + }"; +in +{ + options.myConfig.nextcloud-sync.enable = lib.mkEnableOption ""; + + config = lib.mkIf config.myConfig.nextcloud-sync.enable { + sops.secrets."nextcloud-password" = { }; + + systemd.user = { + services.nextcloud-autosync = { + Service = { + ExecStart = lib.getExe' (pkgs.writeShellApplication { + name = "nextcloud-sync-script"; + runtimeInputs = [ pkgs.nextcloud-client ]; + text = builtins.concatStringsSep "\n" (map syncCommand paths); + }) "nextcloud-sync-script"; + }; + }; + + timers.nextcloud-autosync = { + Install.WantedBy = [ "default.target" ]; + Timer = { + OnBootSec = "1min"; + OnUnitActiveSec = "5min"; + }; + Unit.After = [ + "network-online.target" + "sops-nix.service" + ]; + }; + }; + }; +} diff --git a/modules/home/nextcloud.nix b/modules/home/nextcloud.nix deleted file mode 100644 index 511a6c1..0000000 --- a/modules/home/nextcloud.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, lib, ... }: -{ - options.myConfig.nextcloud.enable = lib.mkEnableOption ""; - - config = lib.mkIf config.myConfig.nextcloud.enable { - services.nextcloud-client = { - enable = true; - startInBackground = true; - }; - }; -} diff --git a/users/seb/@inspiron/secrets.yaml b/users/seb/@inspiron/secrets.yaml index c8a6121..9fe23c9 100644 --- a/users/seb/@inspiron/secrets.yaml +++ b/users/seb/@inspiron/secrets.yaml @@ -1,4 +1,5 @@ github-ssh-key: ENC[AES256_GCM,data:ahboYxvvd8QuDT7BKpAfqCJzUnhoWpsHmAP5RIy0fVnetIEZFVMgf1tAgchqkisG05mQRPp17xMIsGaeZG0WrPEct1l5VhLjC7cgxBgFM/pMlfxAJUaZQG8pIKUMtlpDmpdRO1SW+8wUOwNNyWoo2yd513XGM04L91QdUYXRe12YsGz+JddJSGgQd/3PZJknDhI/NGCBCj25u9oIfhw6aYdsrEYTbeFIO8lomCgLb1AlITwwQFqcyCzV42Ifk/v2KoCK6JO7mvAb1rtOqwCUm6r6rfyv8Hy2P5ckGmu8/h4ZzaccuhWZQyFhhxFMYJFHEejqnZFehGL+EV4JxXzBQuL2mrZmDfC9sNsresZSkM9CL6+ZvYq3X9eldLLGt9m3Hx6a7+dTTnLVvqz2ycmbR/EHY6BkQ6rd2FomjBIFWubBCa76UPOT7uuwY3ebtB/aHtKf+nqrkYiWDpoIpI7o7hr85j65IMEGvyqJqYxJN4mI/z3yreOfbUTv+3ymExeqeTdQLb/ryD9Kk/GzZtXa,iv:9yf3/tzhvKbI2T5NA5cWdjuVVfPCVKDou84SKvEVG4M=,tag:437owh8BgJ7urnVuW2PzyQ==,type:str] +nextcloud-password: ENC[AES256_GCM,data:xzoP07fEC8lMEfpppFo2zW3Ea1J37UvlnAp4+Vg=,iv:wFNVM3LZcSK+TA2ZYrdk3WJotYPro7QMEiA/qX0/mVI=,tag:zCzFwFnEJ1lzfWXu8Fn9dQ==,type:str] sops: kms: [] gcp_kms: [] @@ -23,8 +24,8 @@ sops: LzNhelFLTWhqd1FxazMzdmNXZnVwODAKQqwbkhPmBliuWpvrDbMn50yxYx8izVGE XsSeOv9OEKmxiWUJX928vxBNUm8cLtOazvRbdTxgbiAgHWIoEv4mUg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-07-04T22:45:41Z" - mac: ENC[AES256_GCM,data:8spcUd/bcvLIWU+a9Zbf9TKfWAHhqdkU0vtsuiTY6CkXmja5HsTiQ0kqfUgcmE2c+vM7PaXqIRV/4j/6tcaAiYly/+Y9uKGIhjs8QoRsP7NVvnUsNO1rc13yEFPe5c1DVZrTxbKAFWV9N66h6Qm1ZVkpCS2YqTUa7Jdo006oGNI=,iv:jc2F3IcXR1bCNNvvnCvNMS+UfnKWuxHvOhis0bQ6Yuc=,tag:la5RA3dCisEwUWbgRf9OHA==,type:str] + lastmodified: "2024-10-19T15:28:57Z" + mac: ENC[AES256_GCM,data:VFN6IR2FIuR5lHLoHIrIR/xgVmWzslKlp15oqybP0W4sdBJlUhjW4FoHl9CLmTQwOKxiQ+leItW56WI+zQu3HlKz78I/LKKN4XvDMTx1LBplcXsKZlMSmr0l3c/gsPlk44l5pNJiaqQugb5f4GkhRehrpw6gjBeQ5ISHVEg6L4Q=,iv:7yd6H99IKQvr2t32sIe2ewgvIHFpXO22xsiCmN3CHuk=,tag:EWojkfIpd7hWENRoYWUE8A==,type:str] pgp: [] unencrypted_suffix: _unencrypted - version: 3.8.1 + version: 3.9.1 diff --git a/users/seb/@north/secrets.yaml b/users/seb/@north/secrets.yaml index 97b28c1..d0fbbda 100644 --- a/users/seb/@north/secrets.yaml +++ b/users/seb/@north/secrets.yaml @@ -1,4 +1,5 @@ github-ssh-key: ENC[AES256_GCM,data:j8+ZA2oLeRbd8SeOELiV8UUYIreKUqg5SEkpaRshZDeiEoHEd7JCrShFY378aqWPBKqi6OZOI69dU/oBqXRnVzRhJCJb0GdeWItcOt85EtwPdMg6zDno3h3pnnkxd+9BsUZRx9WPh9uihxfk78tB/I9XN9Xl3kjBEBZrV0PUJQkYzbZ6HXHOIzz0k5ysEiGkscP/NQNQ8nnYpDZDz/BHhyJEcbaUXDgIVlbIskzfoWFIjRH+kpxgkwikwhAV7DBFex/CbLqwUvT53q0S8k0tHKf/HPdc84vPfl5sNT0iy4qxLt/l1mJZYjGyFJYdz5G7xSZnTE05bEEOLPAfAt7gIOzTETi+ZByzvEyu3VJah4SiJCbel9DZxqF1fxBXGhAExA6Lo6Q5QbuJZISCXFK4SZW+M30cA2WbRKL1aThix2eFRI9XJKvWMscyqo1do8xhdSy1ZZwRHD+MHWTuh8L/gVLevf4CuZLAQfguNhKGzpCBZNPABx2vSLxwtS+brJxyJOPSdNa3+Wuh+N01aJv3,iv:Tr2mM8/uQjORcXi3g2dcEPp1lXBOC/1ykKUJkNFOLZI=,tag:LPiiFUeu0Csjb6qrGdXsAA==,type:str] +nextcloud-password: ENC[AES256_GCM,data:f9KhzSU0z7z3PNpm4K5YRjnoRADr4BF9leSzDE8=,iv:tFwSeOJ6AO+pHiDFt0ricSJLQqIKpWu7cF+scdU50No=,tag:tFzwLgncwRyopiPUnQIFbQ==,type:str] sops: kms: [] gcp_kms: [] @@ -23,8 +24,8 @@ sops: RWtJdlNqRkU3OC9KVGhpcC9QcW5WTG8K+TYbo8tudt7mYuBce5n5ShuqcXkPA80e avMoxXZ74tZEWz8qaQtgMR6ayeUU+3p2sHoY5ayHfmzmjljt/CCwvw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-07-04T22:03:44Z" - mac: ENC[AES256_GCM,data:sDT9OQf1hNWaARnsdL1K5S1uthySEtrPauRkeEEgpUo0Li4DhqAUY9TJHKG8UIG9eZ8WduIKm8ciUGx7zSkgWflGx3o3dmkVpTRKz73HLmU5SqQoZ0r8xLR2mVtqxhy3c5WWVp9mKRKt+lH98SyPVpU5aXX5KWAuTm+nBdQu4+E=,iv:bWWUklD5CWHoOGTY3/J34mtV430xCfX6QvVigXgrFIE=,tag:eM3sXD1o2K1hYqcSatU2qw==,type:str] + lastmodified: "2024-10-19T15:28:35Z" + mac: ENC[AES256_GCM,data:BkU2+cbKatfgPbT2VL3ym8RCpFWhSzdEzfZcV88iwMPC7cLP/ckqaD1hqANLMEuG1IyKENbsl2N65mlPzMrY6D2bAkEjPIR3cJT2ZfvHIj8SaJAHI8Fig6XlRT5o8zTQzHx595a+3rofZgS5IzxBQz9CZp7Z+4HZ/ElQUgR4FCk=,iv:SpGH8Jiu9Zoeevb1ub1JQMUwzokPBqvB9H1IGGk103E=,tag:QPUZLTTqJj8TeOlHcayGWg==,type:str] pgp: [] unencrypted_suffix: _unencrypted - version: 3.8.1 + version: 3.9.1 diff --git a/users/seb/home.nix b/users/seb/home.nix index 60277c7..40a1c1e 100644 --- a/users/seb/home.nix +++ b/users/seb/home.nix @@ -15,7 +15,7 @@ git.enable = true; vscode.enable = true; equalizer.enable = true; - nextcloud.enable = true; + nextcloud-sync.enable = true; }; home.packages = [