102 lines
2.9 KiB
Nix
102 lines
2.9 KiB
Nix
{ pkgs, ... }@all: with all; let
|
|
v = "nxc";
|
|
user = "lennart";
|
|
domain = hyper.domain;
|
|
calendars = [
|
|
{
|
|
name = "Preservation";
|
|
primary = true;
|
|
url = "https://${v}.${domain}/${user}/preservation/";
|
|
color = "#dddddd";
|
|
}
|
|
{
|
|
name = "Effort";
|
|
url = "https://${v}.${domain}/${user}/effort/";
|
|
color = "#dd2222";
|
|
}
|
|
{
|
|
name = "Experience";
|
|
url = "https://${v}.${domain}/${user}/experience/";
|
|
color = "#2222dd";
|
|
}
|
|
{
|
|
name = "Exposure";
|
|
url = "https://${v}.${domain}/${user}/exposure/";
|
|
color = "#22aa22";
|
|
}
|
|
{
|
|
name = "Engagement";
|
|
url = "https://${v}.${domain}/${user}/engagement/";
|
|
color = "#8800CC";
|
|
}
|
|
{
|
|
name = "Sleep as Android";
|
|
url = secrets.calendar.sleep-as-android-url;
|
|
color = "#111111";
|
|
read-only = true;
|
|
type = "ics";
|
|
}
|
|
{
|
|
name = "LEC";
|
|
url = "https://${domain}/lec.ics";
|
|
color = "#A87000";
|
|
read-only = true;
|
|
type = "ics";
|
|
}
|
|
{
|
|
name = "Feiertage Hessen";
|
|
url = "https://ics.tools/Feiertage/hessen.ics";
|
|
color = "#303030";
|
|
read-only = true;
|
|
type = "ics";
|
|
}
|
|
];
|
|
default_set = {
|
|
# name =
|
|
# url =
|
|
color = "#777777";
|
|
read-only = false;
|
|
primary = false;
|
|
type = "caldav";
|
|
};
|
|
in {
|
|
|
|
home.packages = with pkgs; [
|
|
gnome-calendar
|
|
thunderbird
|
|
];
|
|
|
|
accounts.calendar.accounts = let
|
|
transform_caledar_set = calendar_set: with calendar_set; { # transform set for accounts.calendar.accounts endpoint
|
|
inherit primary;
|
|
remote = {
|
|
inherit url name;
|
|
userName = hyper.user; # my globally set username
|
|
};
|
|
};
|
|
in lib.attrsets.mergeAttrsList (
|
|
map (calendar: {
|
|
"${calendar.name}" = transform_caledar_set ( default_set // calendar );
|
|
}) calendars
|
|
);
|
|
|
|
programs.thunderbird.settings = let
|
|
to_safe_name = name: (builtins.replaceStrings ["."] ["-"]) name;
|
|
in (lib.attrsets.mergeAttrsList (
|
|
map (calendar: with ( default_set // calendar ); {
|
|
"calendar.registry.${to_safe_name calendar.name}.cache.enabled" = true;
|
|
"calendar.registry.${to_safe_name calendar.name}.calendar-main-default" = primary;
|
|
"calendar.registry.${to_safe_name calendar.name}.calendar-main-in-composite" = true;
|
|
"calendar.registry.${to_safe_name calendar.name}.color" = color;
|
|
"calendar.registry.${to_safe_name calendar.name}.name" = name;
|
|
"calendar.registry.${to_safe_name calendar.name}.type" = type;
|
|
"calendar.registry.${to_safe_name calendar.name}.uri" = url;
|
|
"calendar.registry.${to_safe_name calendar.name}.username" = hyper.user;
|
|
"calendar.registry.${to_safe_name calendar.name}.readOnly" = read-only;
|
|
}) calendars
|
|
) // {
|
|
"calendar.list.sortOrder" = lib.fold (calendar: acc: calendar.name + " " + acc) "" calendars;
|
|
"calendar.week.start" = 1;
|
|
});
|
|
}
|