1
0
Fork 0
nixos-config/home-manager/roles/khal.nix

64 lines
1.6 KiB
Nix
Raw Normal View History

2022-03-08 01:42:46 +00:00
{pkgs, ...}: let
calendars = pkgs.privateValue [] "calendars";
2022-02-20 15:58:23 +00:00
plans = pkgs.privateValue
2022-03-08 01:42:46 +00:00
{
"workDay" = "pass";
"weekend" = "pass";
}
"plans";
2022-02-20 15:58:23 +00:00
planning = pkgs.writeShellScriptBin "planning" ''
create-plans; kassandra2
'';
ui = pkgs.writeShellScriptBin "calendar" ''
2022-03-08 01:42:46 +00:00
create-plans; ikhal -d Serien
2022-02-20 15:58:23 +00:00
'';
createPlans = pkgs.writeHaskellScript
2022-03-08 01:42:46 +00:00
{
name = "create-plans";
bins = [pkgs.khal pkgs.vdirsyncer];
imports = [
"Data.Time"
];
} ''
2022-02-20 15:58:23 +00:00
main = do
today <- localDay . zonedTimeToLocalTime <$> getZonedTime
[0..7] & fmap (`addDays` today) & mapM_ \day -> do
planned <- khal ["list", "-a", "Planung", show day, "06:00", "24h", "--notstarted"] |> captureTrim
when (planned == "No events") $ do
say $ "Creating events for " <> show day
if (dayOfWeek day `elem` [Saturday, Sunday]) then do
${plans.weekend}
else do
${plans.workDay}
'';
2022-03-08 01:42:46 +00:00
in {
home.packages = [pkgs.khal createPlans planning ui];
2021-07-05 19:18:23 +00:00
xdg.configFile."khal/config".text = ''
2022-03-08 01:42:46 +00:00
[locale]
dateformat = "%Y-%m-%d"
datetimeformat = "%Y-%m-%d %H:%M"
timeformat = "%H:%M"
[default]
default_calendar = Standard
[calendars]
${
pkgs.lib.concatMapStringsSep "\n" (
{
name,
readOnly ? false,
...
}: ''
[[${name}]]
type = discover
path = ~/.calendars/${name}/*
readonly = ${
if readOnly
then "True"
else "False"
}''
)
calendars
}
2021-07-05 19:18:23 +00:00
'';
}