From 1bf8337e495c225e633c53ae07b04a244585c83e Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Thu, 10 Nov 2022 16:29:37 +0100 Subject: [PATCH] feat(nix/home-manager): add radicale module with decsync storage --- .../configuration/graphical-fullblown.nix | 1 + nix/home-manager/programs/radicale.nix | 55 ++++++++++++++++++ nix/variables/passwords.crypt.nix | Bin 1797 -> 1964 bytes shell.nix | 1 + 4 files changed, 57 insertions(+) create mode 100644 nix/home-manager/programs/radicale.nix diff --git a/nix/home-manager/configuration/graphical-fullblown.nix b/nix/home-manager/configuration/graphical-fullblown.nix index 71a808e..82f9728 100644 --- a/nix/home-manager/configuration/graphical-fullblown.nix +++ b/nix/home-manager/configuration/graphical-fullblown.nix @@ -26,6 +26,7 @@ in { ../programs/podman.nix ../programs/vscode ../programs/holochain-launcher.nix + ../programs/radicale.nix ]; nixpkgs.config = { diff --git a/nix/home-manager/programs/radicale.nix b/nix/home-manager/programs/radicale.nix new file mode 100644 index 0000000..b9b026f --- /dev/null +++ b/nix/home-manager/programs/radicale.nix @@ -0,0 +1,55 @@ +{ config, pkgs, lib, ... }: + +let + passwords = import ../../variables/passwords.crypt.nix; + + libdecsync = pkgs.python3Packages.buildPythonPackage rec { + pname = "libdecsync"; + version = "2.2.1"; + + src = pkgs.python3Packages.fetchPypi { + inherit pname version; + hash = "sha256-Mukjzjumv9VL+A0maU0K/SliWrgeRjAeiEdN5a83G0I="; + }; + }; + radicale-storage-decsync = pkgs.python3Packages.buildPythonPackage rec { + pname = "radicale_storage_decsync"; + version = "2.1.0"; + + src = pkgs.python3Packages.fetchPypi { + inherit pname version; + hash = "sha256-X+0MT5o2PjsKxca5EDI+rYyQDmUtbRoELDr6e4YXKCg="; + }; + + buildInputs = [ pkgs.radicale ]; + propagatedBuildInputs = [ libdecsync pkgs.python3Packages.setuptools ]; + }; + radicale-decsync = pkgs.radicale.overrideAttrs (old: { + propagatedBuildInputs = old.propagatedBuildInputs + ++ [ radicale-storage-decsync ]; + }); + radicale-config = pkgs.writeText "radicale-config" '' + [auth] + type = htpasswd + htpasswd_filename = ${ + pkgs.writeText "radicale" '' + radicale:${passwords.users.radicale} + '' + } + htpasswd_encryption = bcrypt + + [storage] + type = radicale_storage_decsync + filesystem_folder = ${config.xdg.dataHome}/radicale + decsync_dir = ${config.xdg.dataHome}/decsync + ''; +in { + systemd.user.services.radicale = { + Unit.Description = "Radicale with DecSync"; + Service = { + ExecStart = "${radicale-decsync}/bin/radicale -C ${radicale-config}"; + Restart = "on-failure"; + }; + Install.WantedBy = [ "default.target" ]; + }; +} diff --git a/nix/variables/passwords.crypt.nix b/nix/variables/passwords.crypt.nix index b18c6e439b6f8cad084c72e12423926d88720180..4e27704fb4a90f6353cfcb5c08bcbcd565fda85b 100644 GIT binary patch literal 1964 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