diff --git a/users/ryan/home.nix b/users/ryan/home.nix
index ffbab67..f1c1b32 100644
--- a/users/ryan/home.nix
+++ b/users/ryan/home.nix
@@ -16,6 +16,8 @@
# My own modules
ryan.neovim.enable = true;
ryan.simple-bar.enable = pkgs.stdenv.isDarwin;
+ ryan.taskwarrior-widget.enable = pkgs.stdenv.isDarwin;
+ ryan.ubersicht.enable = pkgs.stdenv.isDarwin;
programs.starship = {
enable = true;
diff --git a/users/ryan/modules/taskwarrior-ubersicht/default.nix b/users/ryan/modules/taskwarrior-ubersicht/default.nix
new file mode 100644
index 0000000..1f16c24
--- /dev/null
+++ b/users/ryan/modules/taskwarrior-ubersicht/default.nix
@@ -0,0 +1,23 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.ryan.simple-bar;
+ # Fetch the git repo at a specific rev
+ "taskwarrior-ubersicht-upstream" = builtins.fetchGit {
+ url = "https://github.com/nstanger/taskwarrior.widget";
+ rev = "30428166fc84491eec36d91248df65f95064c97c";
+ shallow = true;
+ };
+in
+{
+ options.ryan.taskwarrior-widget.enable = mkEnableOption "taskwarrior-widget";
+
+ config = mkIf cfg.enable {
+ home.file."Library/Application Support/Übersicht/widgets/taskwarrior.widget" = {
+ source = taskwarrior-ubersicht-upstream;
+ recursive = false;
+ };
+ };
+}
diff --git a/users/ryan/modules/ubersicht/default.nix b/users/ryan/modules/ubersicht/default.nix
new file mode 100644
index 0000000..fb514cb
--- /dev/null
+++ b/users/ryan/modules/ubersicht/default.nix
@@ -0,0 +1,20 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.ryan.ubersicht;
+in
+{
+ options.ryan.ubersicht.enable = mkEnableOption "ubersicht";
+
+ config = mkIf cfg.enable {
+ launchd.agents.ubersicht = {
+ enable = true;
+ config = {
+ ProgramArguments = [ "/usr/bin/open" "-a" "Übersicht" ];
+ RunAtLoad = true;
+ };
+ };
+ };
+}