mirror of
https://github.com/SebastianStork/nixos-config.git
synced 2026-03-22 17:49:07 +01:00
radicale: Refactor
This commit is contained in:
parent
00d1e06c25
commit
c3976fa6fb
1 changed files with 54 additions and 57 deletions
|
|
@ -7,8 +7,59 @@
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
cfg = config.custom.web-services.radicale;
|
cfg = config.custom.web-services.radicale;
|
||||||
|
|
||||||
dataDir = config.services.radicale.settings.storage.filesystem_folder;
|
dataDir = config.services.radicale.settings.storage.filesystem_folder;
|
||||||
|
|
||||||
|
initScript =
|
||||||
|
let
|
||||||
|
gitignore = pkgs.writeText "radicale-collection-gitignore" ''
|
||||||
|
.Radicale.cache
|
||||||
|
.Radicale.lock
|
||||||
|
.Radicale.tmp-*
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "radicale-git-init";
|
||||||
|
runtimeInputs = [ pkgs.git ];
|
||||||
|
text = ''
|
||||||
|
cd ${dataDir}
|
||||||
|
|
||||||
|
if [[ ! -e .git ]]; then
|
||||||
|
git init --initial-branch main
|
||||||
|
fi
|
||||||
|
|
||||||
|
git config user.name "Radicale"
|
||||||
|
git config user.email "radicale@${config.networking.hostName}"
|
||||||
|
|
||||||
|
cat ${gitignore} > .gitignore
|
||||||
|
git add .gitignore
|
||||||
|
if ! git diff --cached --quiet; then
|
||||||
|
git commit --message "Update .gitignore"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
hookScript = pkgs.writeShellApplication {
|
||||||
|
name = "radicale-git-hook";
|
||||||
|
runtimeInputs = [
|
||||||
|
pkgs.git
|
||||||
|
pkgs.gawk
|
||||||
|
(pkgs.python3.withPackages (python-pkgs: [
|
||||||
|
python-pkgs.python-dateutil
|
||||||
|
python-pkgs.vobject
|
||||||
|
]))
|
||||||
|
];
|
||||||
|
text = ''
|
||||||
|
username="$1"
|
||||||
|
create_birthday_calendar="${inputs.radicale-birthday-calendar}/create_birthday_calendar.py"
|
||||||
|
|
||||||
|
git status --porcelain | awk '{print $2}' | python3 $create_birthday_calendar
|
||||||
|
|
||||||
|
git add -A
|
||||||
|
if ! git diff --cached --quiet; then
|
||||||
|
git commit --message "Changes by $username"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.custom.web-services.radicale = {
|
options.custom.web-services.radicale = {
|
||||||
|
|
@ -41,65 +92,11 @@ in
|
||||||
};
|
};
|
||||||
storage.filesystem_folder = "/var/lib/radicale/collections";
|
storage.filesystem_folder = "/var/lib/radicale/collections";
|
||||||
|
|
||||||
storage.hook =
|
storage.hook = "${lib.getExe hookScript} %(user)s";
|
||||||
let
|
|
||||||
hookScript = pkgs.writeShellApplication {
|
|
||||||
name = "radicale-git-hook";
|
|
||||||
runtimeInputs = [
|
|
||||||
pkgs.git
|
|
||||||
pkgs.gawk
|
|
||||||
(pkgs.python3.withPackages (python-pkgs: [
|
|
||||||
python-pkgs.python-dateutil
|
|
||||||
python-pkgs.vobject
|
|
||||||
]))
|
|
||||||
];
|
|
||||||
text = ''
|
|
||||||
username="$1"
|
|
||||||
create_birthday_calendar="${inputs.radicale-birthday-calendar}/create_birthday_calendar.py"
|
|
||||||
|
|
||||||
git status --porcelain | awk '{print $2}' | python3 $create_birthday_calendar
|
|
||||||
|
|
||||||
git add -A
|
|
||||||
if ! git diff --cached --quiet; then
|
|
||||||
git commit --message "Changes by $username"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
"${lib.getExe hookScript} %(user)s";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.radicale.serviceConfig.ExecStartPre =
|
systemd.services.radicale.serviceConfig.ExecStartPre = lib.getExe initScript;
|
||||||
let
|
|
||||||
gitignore = pkgs.writeText "radicale-collection-gitignore" ''
|
|
||||||
.Radicale.cache
|
|
||||||
.Radicale.lock
|
|
||||||
.Radicale.tmp-*
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
lib.getExe (
|
|
||||||
pkgs.writeShellApplication {
|
|
||||||
name = "radicale-git-init";
|
|
||||||
runtimeInputs = [ pkgs.git ];
|
|
||||||
text = ''
|
|
||||||
cd ${dataDir}
|
|
||||||
|
|
||||||
if [[ ! -e .git ]]; then
|
|
||||||
git init --initial-branch main
|
|
||||||
fi
|
|
||||||
|
|
||||||
git config user.name "Radicale"
|
|
||||||
git config user.email "radicale@${config.networking.hostName}"
|
|
||||||
|
|
||||||
cat ${gitignore} > .gitignore
|
|
||||||
git add .gitignore
|
|
||||||
if ! git diff --cached --quiet; then
|
|
||||||
git commit --message "Update .gitignore"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
custom = {
|
custom = {
|
||||||
services = {
|
services = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue