calendar
This commit is contained in:
81
home-modules/calendar.nix
Normal file
81
home-modules/calendar.nix
Normal file
@@ -0,0 +1,81 @@
|
||||
{ config, lib, user, secrets, domain, ... }: let
|
||||
calendars = [
|
||||
{
|
||||
name = "Preservation";
|
||||
primary = true;
|
||||
url = "https://dav.${domain}/nx2/preservation/";
|
||||
color = "#dddddd";
|
||||
}
|
||||
{
|
||||
name = "Effort";
|
||||
primary = false;
|
||||
url = "https://dav.${domain}/nx2/effort/";
|
||||
color = "#dd2222";
|
||||
}
|
||||
{
|
||||
name = "Experience";
|
||||
primary = false;
|
||||
url = "https://dav.${domain}/nx2/experience/";
|
||||
color = "#2222dd";
|
||||
}
|
||||
{
|
||||
name = "Exposure";
|
||||
primary = false;
|
||||
url = "https://dav.${domain}/nx2/exposure/";
|
||||
color = "#22aa22";
|
||||
}
|
||||
{
|
||||
name = "Engagement";
|
||||
primary = false;
|
||||
url = "https://dav.${domain}/nx2/engagement/";
|
||||
color = "#8800CC";
|
||||
}
|
||||
];
|
||||
in {
|
||||
accounts.calendar.accounts = let
|
||||
makeCalendar = url: primary: color: {
|
||||
inherit primary;
|
||||
remote = {
|
||||
type = "caldav";
|
||||
userName = user;
|
||||
inherit url;
|
||||
};
|
||||
};
|
||||
m = cc: lib.attrsets.mergeAttrsList ( map (c: { "${c.name}" = makeCalendar c.url c.primary c.color;}) cc );
|
||||
in m calendars;
|
||||
|
||||
|
||||
# TODO: Replace this once https://github.com/nix-community/home-manager/pull/5484 is merged.
|
||||
# Make sure it works, though, including the order of calendars.
|
||||
programs.thunderbird.settings = let
|
||||
|
||||
makeThunderbirdCalendar = cal: let
|
||||
calendarAccountSafeName = (builtins.replaceStrings ["."] ["-"]) cal.name;
|
||||
in {
|
||||
"calendar.registry.${calendarAccountSafeName}.cache.enabled" = true;
|
||||
"calendar.registry.${calendarAccountSafeName}.calendar-main-default" = cal.primary;
|
||||
"calendar.registry.${calendarAccountSafeName}.calendar-main-in-composite" = true;
|
||||
"calendar.registry.${calendarAccountSafeName}.color" = cal.color;
|
||||
"calendar.registry.${calendarAccountSafeName}.name" = cal.name;
|
||||
"calendar.registry.${calendarAccountSafeName}.type" = "caldav";
|
||||
"calendar.registry.${calendarAccountSafeName}.uri" = config.accounts.calendar.accounts.${cal.name}.remote.url;
|
||||
"calendar.registry.${calendarAccountSafeName}.username" = config.accounts.calendar.accounts.${cal.name}.remote.userName;
|
||||
};
|
||||
in lib.attrsets.mergeAttrsList (
|
||||
map (cal: makeThunderbirdCalendar cal) calendars
|
||||
) // {
|
||||
|
||||
"calendar.registry.sleep-as-android.cache.enabled" = true;
|
||||
"calendar.registry.sleep-as-android.calendar-main-in-composite" = true;
|
||||
"calendar.registry.sleep-as-android.color" = "#222233";
|
||||
"calendar.registry.sleep-as-android.name" = "Sleep As Android";
|
||||
"calendar.registry.sleep-as-android.type" = "ics";
|
||||
"calendar.registry.sleep-as-android.readOnly" = true;
|
||||
"calendar.registry.sleep-as-android.uri" = secrets.calendar.sleep-as-android-url;
|
||||
|
||||
"calendar.list.sortOrder" = lib.fold (cal: acc: cal.name + " " + acc) "" calendars;
|
||||
|
||||
# Keep these after removing the above.
|
||||
"calendar.week.start" = 1;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user