From 140763b5292c97338e8310f5b2195f8eff773db1 Mon Sep 17 00:00:00 2001 From: Malte Brandy Date: Tue, 27 Apr 2021 14:26:09 +0200 Subject: [PATCH] Configure kassandra config better --- home-manager/roles/kassandra.nix | 31 ++++- home-manager/roles/kassandra/types.dhall | 121 ++++++++++++++++++++ home-manager/roles/kassandra/uiConfig.dhall | 70 +---------- nix/sources.json | 2 +- overlays/10-previews.nix | 1 + private | 2 +- 6 files changed, 153 insertions(+), 74 deletions(-) mode change 100644 => 120000 home-manager/roles/kassandra/uiConfig.dhall diff --git a/home-manager/roles/kassandra.nix b/home-manager/roles/kassandra.nix index 6fe5303c..e4700efe 100644 --- a/home-manager/roles/kassandra.nix +++ b/home-manager/roles/kassandra.nix @@ -1,9 +1,34 @@ -{ ... }: { +{ pkgs, ... }: let + dhallFiles = pkgs.runCommand "kassandra-config-src" {} '' + mkdir $out + ${pkgs.kassandra2}/bin/kassandra2 print-types > $out/types.dhall + ln -s ${./kassandra}/{config,backend}.dhall $out + ln -s ${../../private/kassandra-uiConfig.dhall} $out/uiConfig.dhall + ''; + backend = pkgs.dhallPackages.buildDhallPackage { + name = "kassandra-backend-config"; + code = "${dhallFiles}/backend.dhall : (${dhallFiles}/types.dhall).BackendConfig"; + source = true; + dependencies = [ pkgs.dhallPackages.Prelude ]; + }; + standalone = pkgs.dhallPackages.buildDhallPackage { + name = "kassandra-standalone-config"; + code = "${dhallFiles}/config.dhall : (${dhallFiles}/types.dhall).StandaloneConfig"; + source = true; + dependencies = [ pkgs.dhallPackages.Prelude ]; + }; + + dhallResult = pkgs.runCommand "kassandra-config" {} '' + mkdir $out + ln -s ${backend}/source.dhall $out/backend.dhall + ln -s ${standalone}/source.dhall $out/config.dhall + ''; +in +{ home.file = { "kassandra-config" = { target = ".config/kassandra"; - source = ./kassandra; - recursive = true; + source = dhallResult.out; }; }; } diff --git a/home-manager/roles/kassandra/types.dhall b/home-manager/roles/kassandra/types.dhall index 939c5e27..04dab3ed 100644 --- a/home-manager/roles/kassandra/types.dhall +++ b/home-manager/roles/kassandra/types.dhall @@ -117,6 +117,127 @@ StandaloneAccount = < RemoteAccount : } } >, +BackendConfig = { users : + List + { mapKey : Text + , mapValue : + { passwordHash : Text + , userConfig : + { localBackend : + < TaskwarriorBackend : + { taskRcPath : Optional Text + , taskDataPath : Optional Text + , taskConfig : List { name : Text, value : Text } + , taskBin : Optional Text + , hookListenPort : + < Port : { port : Natural } + | PortRange : { min : Natural, max : Natural } + > + , hookSuffix : Text + , createHooksOnStart : Bool + , removeHooksOnExit : Bool + } + | GitBackend : + { directoryPath : Text + , commit : Bool + , configureMerge : Bool + , createIfMissing : Bool + , origin : Optional Text + , pushOnWrite : Bool + , watchFiles : Bool + , pullTimerSeconds : Optional Natural + } + > + , uiConfig : + { viewList : + List + < SearchWidget + | ConfigListWidget : + { name : Text, limit : Optional Natural } + > + , configuredLists : + List + { name : Text + , list : + < QueryList : + { query : + List + < HasProperty : + { property : + < DescriptionMatches : + { filter : Text } + | ParentBlocked + | Blocked + | Waiting + | Pending + | Completed + | Deleted + | IsParent + | OnList + | HasTag : { tag : Text } + | HasParent + > + } + | HasntProperty : + { property : + < DescriptionMatches : + { filter : Text } + | ParentBlocked + | Blocked + | Waiting + | Pending + | Completed + | Deleted + | IsParent + | OnList + | HasTag : { tag : Text } + | HasParent + > + } + > + } + | TagList : { name : Text } + | DefinitionList : + { elements : + List + < ConfigList : + { name : Text + , limit : Optional Natural + } + | ListElement : + { item : + < TaskwarriorTask : + { uuid : Text } + | AdHocTask : + { description : Text } + | HabiticaTask : + { task : + < HabiticaDaily + | HabiticaTodo + > + } + | Mail : { id : Text } + > + } + > + } + | ChildrenList : { uuid : Text } + | DependenciesList : { uuid : Text } + | HabiticaList : + { list : < HabiticaDailys | HabiticaTodos > } + | Mails + > + } + , uiFeatures : + { sortInTag : Bool + , treeOption : < NoTree | PartOfTree | DependsTree > + } + } + } + , filterTag : Text + } + } +}, Widget = < SearchWidget | ConfigListWidget : { name : Text, limit : Optional Natural } >, NamedListQuery = { name : Text , list : diff --git a/home-manager/roles/kassandra/uiConfig.dhall b/home-manager/roles/kassandra/uiConfig.dhall deleted file mode 100644 index 7551d655..00000000 --- a/home-manager/roles/kassandra/uiConfig.dhall +++ /dev/null @@ -1,69 +0,0 @@ -let types = ./types.dhall - -let Prelude = - { List.map - = - https://prelude.dhall-lang.org/v20.1.0/List/map.dhall sha256:dd845ffb4568d40327f2a817eb42d1c6138b929ca758d50bc33112ef3c885680 - } - -let confWid = - \(name : Text) -> - types.Widget.ConfigListWidget { name, limit = None Natural } - -let listElement = - \(el : types.ListItem) -> - types.DefinitionElement.ListElement { item = el } - -let simpleTask = - \(desc : Text) -> - listElement (types.ListItem.AdHocTask { description = desc }) - -let defList = - \(name : Text) -> - \(list : List types.DefinitionElement) -> - { name, list = types.ListQuery.DefinitionList { elements = list } } - -let defSimpleList = - \(name : Text) -> - \(list : List Text) -> - defList - name - (Prelude.List.map Text types.DefinitionElement simpleTask list) - -in { configuredLists = - [ { name = "Task Baum", list = types.ListQuery.TagList { name = "root" } } - , defSimpleList - "Orga Routine" - [ "Maintenance" - , "Kassandra 1 Dialog" - , "Inbox sortieren" - , "Tasks in Taskbaum einsortieren" - , "Tagesagenda für morgen mit Taglisten" - , "Habitica kontrollieren" - , "Await checken" - ] - , defSimpleList "Wochen Routine" [ "Projekte durchgehen" ] - , defSimpleList - "Tee kochen" - [ "Wasser filtern" - , "Wasser kochen" - , "Wasser aufgießen" - , "Teebeutel entnehmen" - , "Neues Wasser filtern" - ] - , defList - "Morgen Routine" - [ simpleTask "Wiegen" - , simpleTask "Podcast anmachen" - , simpleTask "Anziehen" - , types.DefinitionElement.ConfigList - { name = "Tee kochen", limit = None Natural } - , simpleTask "Zähne Putzen" - , simpleTask "Rasieren" - , simpleTask "Frühstücken" - ] - ] - , uiFeatures = { sortInTag = False, treeOption = types.TreeOption.NoTree } - , viewList = - [ confWid "Task Baum", confWid "Orga Routine", confWid "Morgen Routine" ] - } diff --git a/home-manager/roles/kassandra/uiConfig.dhall b/home-manager/roles/kassandra/uiConfig.dhall new file mode 120000 index 00000000..6de3aa78 --- /dev/null +++ b/home-manager/roles/kassandra/uiConfig.dhall @@ -0,0 +1 @@ +../../../private/kassandra-uiConfig.dhall \ No newline at end of file diff --git a/nix/sources.json b/nix/sources.json index 66634f81..1725af6c 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -34,7 +34,7 @@ "branch": "master", "ref": "master", "repo": "git@hera.m-0.eu:kassandra2", - "rev": "23a25a654dd571e64db80b1920fc6105b9628505", + "rev": "0f2e5ad6580f00029d2c18357dbaadb9528cc48e", "type": "git" }, "logfeed": { diff --git a/overlays/10-previews.nix b/overlays/10-previews.nix index 2480fa57..daf07fd3 100644 --- a/overlays/10-previews.nix +++ b/overlays/10-previews.nix @@ -12,6 +12,7 @@ in { upterm = unstable.upterm; syncthing = unstable.syncthing; vimPlugins = unstable.vimPlugins; + dhallPackages = unstable.dhallPackages; fzf = unstable.fzf; matrix-synapse-tools.rust-synapse-compress-state = unstable.matrix-synapse-tools.rust-synapse-compress-state; } diff --git a/private b/private index 4936a6fc..5795136d 160000 --- a/private +++ b/private @@ -1 +1 @@ -Subproject commit 4936a6fc7e714c182f355d246db0a085c0602a12 +Subproject commit 5795136d2dd2a4619933e2a7a0a779e96ca81e5a