feat: add collabora gtimelog

Collabora has a special gtimelog application which allows reporting to
its timelog servers. It can be trivially packaged by modifying the
existing gtimelog package from nixpkgs

Change-Id: I9fa7560d8a4a6412ed4b5f818909193aaf1ceeb3
Reviewed-on: https://git.clicks.codes/c/Chimera/NixFiles/+/704
Reviewed-by: Skyler Grey <minion@clicks.codes>
Tested-by: Skyler Grey <minion@clicks.codes>
Reviewed-by: Samuel Shuert <coded@clicks.codes>
diff --git a/flake.lock b/flake.lock
index fa05397..c63a1e0 100644
--- a/flake.lock
+++ b/flake.lock
@@ -21,6 +21,34 @@
         "type": "github"
       }
     },
+    "collabora-gtimelog": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1699275431,
+        "narHash": "sha256-u5ooKnWhkf9Eh90nyqAvHzIDgidhx05SI66L3VLwRJ0=",
+        "ref": "refs/heads/master",
+        "rev": "3faf89054bebf89fcee8640f1b1c2b2b23d1a0dc",
+        "revCount": 464,
+        "type": "git",
+        "url": "https://gitlab.collabora.com/collabora/gtimelog.git"
+      },
+      "original": {
+        "type": "git",
+        "url": "https://gitlab.collabora.com/collabora/gtimelog.git"
+      }
+    },
+    "collabora-icon": {
+      "flake": false,
+      "locked": {
+        "narHash": "sha256-D1rWQZ7dd5IaZSiPPbQchA6nZO0QItrdMs5G2sflIu0=",
+        "type": "file",
+        "url": "https://www.collabora.com/favicon.ico"
+      },
+      "original": {
+        "type": "file",
+        "url": "https://www.collabora.com/favicon.ico"
+      }
+    },
     "ewwsalmoomedits--eww-widgets": {
       "flake": false,
       "locked": {
@@ -351,6 +379,8 @@
     "root": {
       "inputs": {
         "anyrun": "anyrun",
+        "collabora-gtimelog": "collabora-gtimelog",
+        "collabora-icon": "collabora-icon",
         "ewwsalmoomedits--eww-widgets": "ewwsalmoomedits--eww-widgets",
         "home-manager": "home-manager",
         "hyprland": "hyprland",
diff --git a/flake.nix b/flake.nix
index b886ce7..a40d052 100644
--- a/flake.nix
+++ b/flake.nix
@@ -7,6 +7,15 @@
       inputs.nixpkgs.follows = "nixpkgs";
     };
 
+    collabora-gtimelog = {
+      url = "git+https://gitlab.collabora.com/collabora/gtimelog.git";
+      flake = false;
+    };
+    collabora-icon = {
+      url = "https://www.collabora.com/favicon.ico";
+      flake = false;
+    };
+
     ewwsalmoomedits--eww-widgets = {
       url = "github:saimoomedits/eww-widgets";
       flake = false;
@@ -51,6 +60,7 @@
         inputs.hyprland.homeManagerModules.default
         inputs.nur.hmModules.nur
         inputs.nix-index-database.hmModules.nix-index
+        inputs.sops-nix.homeManagerModules.sops
       ];
 
       systems.modules.nixos = [
diff --git a/homes/x86_64-linux/skyler@canvasback/default.nix b/homes/x86_64-linux/skyler@canvasback/default.nix
index f3e7c1b..ccfd1f1 100644
--- a/homes/x86_64-linux/skyler@canvasback/default.nix
+++ b/homes/x86_64-linux/skyler@canvasback/default.nix
@@ -19,10 +19,20 @@
   ...
 }:
 {
-  home.packages = [ pkgs.home-manager ];
+  home.packages = [
+    pkgs.home-manager
+    pkgs.chimera.gtimelog-collabora
+  ];
   chimera.minion.enable = true;
 
   home.shellAliases.home-manager = "${pkgs.home-manager}/bin/home-manager --flake ${config.chimera.shell.rebuildFlakePath}#skyler@canvasback";
 
+  sops.gnupg.home = config.programs.gpg.homedir;
+  sops.secrets."homes/x86_64-linux/skyler@canvasback/gtimelogrc.sops.minion.toml.bin" = {
+    format = "binary";
+    sopsFile = ./gtimelogrc.sops.minion.toml.bin;
+    path = "${config.home.homeDirectory}/.gtimelog/gtimelogrc";
+  };
+
   programs.kitty.settings.shell = "${pkgs.bashInteractive}/bin/bash --login"; # nasty hack to make environment variables load on gnome
 }
diff --git a/homes/x86_64-linux/skyler@canvasback/gtimelogrc.sops.minion.toml.bin b/homes/x86_64-linux/skyler@canvasback/gtimelogrc.sops.minion.toml.bin
new file mode 100644
index 0000000..466f893
--- /dev/null
+++ b/homes/x86_64-linux/skyler@canvasback/gtimelogrc.sops.minion.toml.bin
@@ -0,0 +1,26 @@
+{
+	"data": "ENC[AES256_GCM,data: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,iv:G/nRa7pmQnzx9GVzrqXd5PHtVcSfCy7BGdXbrtMQlYw=,tag:g+VLm9TwgonaJteR8WLpXA==,type:str]",
+	"sops": {
+		"kms": null,
+		"gcp_kms": null,
+		"azure_kv": null,
+		"hc_vault": null,
+		"age": null,
+		"lastmodified": "2024-03-12T14:00:59Z",
+		"mac": "ENC[AES256_GCM,data:8eqDG1R5Aze5Q70O1YFreTADLL+ohQuxmleWEG2ajV0vYzkELQdnIzx3XDYV9jgofODrLiUX1LvW5CoZXX7t7AUgWaKYh136UB8DKOlonDGyZ7xnaoGxTHZMA4ABzz5okFl61lWfcl98nOxsgpnFUkd+8cEz03dXJ8uuiAZHlOM=,iv:Rdbnrf/k2OoTsWHBLDOVHlYSZqKHXG89d3mSH/mWQ2U=,tag:xUBLHXWwFdmqRVarqkSAWg==,type:str]",
+		"pgp": [
+			{
+				"created_at": "2023-04-15T17:13:31Z",
+				"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMA4vnwRU2nlKhAQ//RFkGwGQ0DwoYoUe5XfR6pXX9yZi+fpj3BbNwSaPLUuaH\nolLR+SEZnD5d5Lkp4lBrfeTBVCBC6KduGrwfnlvwE4l2y7PhMuaR+MxS2QlIdK8T\nOcwJyoJRUH8h6R6hnJttH4C3Q+B+01O42xYitDorbbBeVK52uktyBNZFrSAW1ZfE\nGdJOzlpfa6+RA0gcxHCkpIkU+QR0RqW7KICnKFx2FtDb22DIaNxKgJTpeGUKHhfP\naJNIZ5K9rYkrCCEEINSeGHsLn4zyvsZXmlQMdQnoUAo33WanrIsUbXurZAMy1hbB\ngjxm7vaRfbgODu2l9LbQL5kd/eMpZ7BD4wvoyzw7Vyc+yuTyTDWmvMJSwdntLGDu\nEL6eT+XYvqawQ5/7vrnsgv6tjD4rmlmbOu+8hs/7qSEGLP0oOigQpMvCJhGghOhw\na+P1SDaxX0hqTaOVt6CyaKegLsg6mdNTUFI4WZEy948POzIngoWytW3ABPA5tbdF\n9S9IWXhgsUjLyU0P/H/H1WQpZ3bp+pYekEQA1PRhSUpVw8z0wlXoModqL5q9AG7x\np5A2csiRMsrOBr3477UiyRb7VmJPOlq5uR6nopH2uab3pwF4hw6FxttlMsiDj/zw\nk18ta/UjqjBkXtKsHEVFLcVGQbuMnSIz95mmzjtK+yCjsJkYbFgdICcHtr4iUxjS\nXgGpQB8Oz4SaOLHvwMeFJT68ip+ByGfkpZMQqmVsTun1mnJMmrfIKR1l7TTXKd/J\nhaSiSItlU1W5jxOpvGTQL6ilAQM6h5cebEpSEU8X1NAwkwywn/XHkLwqp8Jz5Wk=\n=O9bV\n-----END PGP MESSAGE-----",
+				"fp": "D520AC8D7C9692125B2BBD3A1AFD10256B3C714D"
+			},
+			{
+				"created_at": "2023-04-15T17:13:31Z",
+				"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMAzZ2yNxQ0k/2ARAAu+YQDtAHiK1Tl8+ZWytagBwuAXIKFDpvKEmwTmuQNA9G\nX0se3SILE7FX+WJnl5s4dMtqun11Sdcdhxc7OreAf3tOe+qX5n5cVUh39VS1V4Pj\n/FQfDJivUcqHf0KZiu8hTg0WaWY3UUWRsbXcetkMcZr4pxgNBVQ5ezFsDAVdYmGu\nkm3YGLtbiYbufWtSVzirBeEwN0P10TTtWe9FYJLXMS1O97snUCRDLS9jcIxLs1G/\nxHKv6pnsqsxaDXShHC7BDRF6vZQ4BLYlP06HaMlWhSUvzZvac3rn/I3FkSD0iBOY\nEaYkJeVxIqrXhR4E+M1eneazmrFtBdAupuZGz/8Sc2iRZE6cWxNIjjLRHw5aITHZ\ns3yAiRdIPWWZGOgRw7hPwDvAZKktankuy5O5+Fxq5f1ar7BAJ+pae0kJriUHIhq5\np99jnkZOQI2D1mauwdRwsyeHRBr0/n05KVeYTcm+erxILqZAB1lzykY7kJs5eKyD\nAWzvM+Gw7vDN5xYX2GraNTlcy0R6t6EWOVeLVpgSSBebUohfbMQd9dOce8CT6Hr7\nVfdWb0/bHeeuCOT99DsGKK62Es+hlTKG9zqG4kNxYM2aNA7VmWlTDbcAc9dcfcSi\nJQjMg7wB8biLLeeKIGuA0+UWpWY43h0iqfiHoB0Rqb32t9hOA8GGcgYDhDohDL3S\nWAGanUqlJTwDA/vFrb0d9AmeGQdJX4KDbEp/nQ7R/Epbw5nzGrEc6MTavPOFtL0T\nwbmbl8JhLcqcalvpZWcCl/jCzuhyxqm+B2g2MR6VRzJln5cDa0U8OTM=\n=snGR\n-----END PGP MESSAGE-----",
+				"fp": "B2EEB25AFB4C3A2EC7FAC3A43676C8DC50D24FF6"
+			}
+		],
+		"unencrypted_suffix": "_unencrypted",
+		"version": "3.8.1"
+	}
+}
\ No newline at end of file
diff --git a/packages/gtimelog-collabora/default.nix b/packages/gtimelog-collabora/default.nix
new file mode 100644
index 0000000..3581d37
--- /dev/null
+++ b/packages/gtimelog-collabora/default.nix
@@ -0,0 +1,39 @@
+{
+  inputs,
+  lib,
+  gtimelog,
+  glib-networking,
+  gtk3,
+  libsoup,
+  glib,
+  pango,
+  harfbuzz,
+  gdk-pixbuf,
+  atk,
+  libsecret,
+  gobject-introspection,
+  ...
+}:
+gtimelog.overrideAttrs (oldAttrs: {
+  src = inputs.collabora-gtimelog;
+  makeWrapperArgs = [
+    "--set GIO_MODULE_DIR ${lib.makeSearchPathOutput "out" "lib/gio/modules" [ glib-networking ]}"
+    "--set GI_TYPELIB_PATH ${
+      lib.makeSearchPathOutput "out" "lib/girepository-1.0" [
+        gtk3
+        libsoup
+        glib
+        pango
+        harfbuzz
+        gdk-pixbuf
+        atk
+        libsecret
+      ]
+    }"
+  ];
+  buildInputs = oldAttrs.buildInputs ++ [ glib-networking ];
+  nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ gobject-introspection ];
+  preInstall = ''
+    cp ${inputs.collabora-icon} src/gtimelog/gtimelog-large.png
+  '';
+})