From 92226fff95c83539e81eff5a0c8b62b015d7468e Mon Sep 17 00:00:00 2001 From: Hektor Misplon Date: Sun, 23 Nov 2025 19:08:36 +0100 Subject: [PATCH] declare taskwarrior for all NixOS hosts --- flake.lock | 24 +++++++-------- home/hosts/astyanax/default.nix | 4 +++ home/hosts/astyanax/packages.nix | 2 +- home/modules/taskwarrior.nix | 51 ++++++++++++++++++++++++++++++++ hosts/astyanax/default.nix | 25 ++++++++++++++++ 5 files changed, 93 insertions(+), 13 deletions(-) create mode 100644 home/modules/taskwarrior.nix diff --git a/flake.lock b/flake.lock index fefa3d7..4948d59 100644 --- a/flake.lock +++ b/flake.lock @@ -29,11 +29,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1763438658, - "narHash": "sha256-ojDdZbQG9wJyEkAQSpGUvgJ4edDnY13HXdf0dHaYKJw=", + "lastModified": 1763885608, + "narHash": "sha256-eFRbKKMaEHC5EaL7sxfPVFPFsr0Plzx03e1VkJkcsBA=", "owner": "rycee", "repo": "nur-expressions", - "rev": "095dd41814f14586166d8c1fd9012d5e8dad0a44", + "rev": "c94982d5890f4ff0737d57ed97503c1c8d40195c", "type": "gitlab" }, "original": { @@ -85,10 +85,10 @@ "nix-secrets": { "flake": false, "locked": { - "lastModified": 1762546290, - "narHash": "sha256-a0mXF68to0eJQiIq1vCBMcGCX1UA1lBpwHgCinKfORA=", + "lastModified": 1763919406, + "narHash": "sha256-WaGxnH7dm63syPt8E4MXbg4XVxQveXPe+cZu3iPz25w=", "ref": "main", - "rev": "b0473511f3718fb95f01e6c8bad6da3eb582974c", + "rev": "4423bf215047474ecb89f4d8ad63a04e734b252a", "shallow": true, "type": "git", "url": "ssh://git@github.com/hektor/nix-secrets" @@ -154,11 +154,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1763334038, - "narHash": "sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ=", + "lastModified": 1763622513, + "narHash": "sha256-1jQnuyu82FpiSxowrF/iFK6Toh9BYprfDqfs4BB+19M=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c", + "rev": "c58bc7f5459328e4afac201c5c4feb7c818d604b", "type": "github" }, "original": { @@ -324,11 +324,11 @@ ] }, "locked": { - "lastModified": 1763417348, - "narHash": "sha256-n5xDOeNN+smocQp3EMIc11IzBlR9wvvTIJZeL0g33Fs=", + "lastModified": 1763870012, + "narHash": "sha256-AHxFfIu73SpNLAOZbu/AvpLhZ/Szhx6gRPj9ufZtaZA=", "owner": "Mic92", "repo": "sops-nix", - "rev": "3f66a7fb9626a9a9c077612ef10a0ce396286c7d", + "rev": "4e7d74d92398b933cc0e0e25af5b0836efcfdde3", "type": "github" }, "original": { diff --git a/home/hosts/astyanax/default.nix b/home/hosts/astyanax/default.nix index fc82beb..10c05db 100644 --- a/home/hosts/astyanax/default.nix +++ b/home/hosts/astyanax/default.nix @@ -9,6 +9,10 @@ imports = [ ../../modules/dconf.nix # TODO: Only enable when on Gnome? ../../modules/git.nix + (import ../../modules/taskwarrior.nix { + inherit config; + inherit pkgs; + }) ]; home.stateVersion = "25.05"; diff --git a/home/hosts/astyanax/packages.nix b/home/hosts/astyanax/packages.nix index 252a1b4..48acd78 100644 --- a/home/hosts/astyanax/packages.nix +++ b/home/hosts/astyanax/packages.nix @@ -31,11 +31,11 @@ with pkgs; pnpm ripgrep silver-searcher + sops sshfs stylelint svelte-language-server tailwindcss-language-server - taskwarrior3 tldr tmux tmuxp diff --git a/home/modules/taskwarrior.nix b/home/modules/taskwarrior.nix new file mode 100644 index 0000000..3b1f603 --- /dev/null +++ b/home/modules/taskwarrior.nix @@ -0,0 +1,51 @@ +{ + config, + pkgs, + ... +}: + +{ + home.packages = with pkgs; [ + python314 + libnotify + ]; + + home.file = { + ".config/task/taskrc" = { + force = true; # overwrite when present + source = ../../dots/.config/task/taskrc; + }; + ".config/task/taskrc.d/aliases".source = ../../dots/.config/task/taskrc.d/aliases; + ".config/task/taskrc.d/colors".source = ../../dots/.config/task/taskrc.d/colors; + ".config/task/taskrc.d/contexts".source = ../../dots/.config/task/taskrc.d/contexts; + ".config/task/taskrc.d/reports".source = ../../dots/.config/task/taskrc.d/reports; + ".config/task/taskrc.d/udas".source = ../../dots/.config/task/taskrc.d/udas; + ".config/task/taskrc.d/urgency".source = ../../dots/.config/task/taskrc.d/urgency; + ".local/share/task/hooks/on-exit.sync.py" = { + source = ../../dots/.local/share/task/hooks/on-exit.sync.py; + }; + ".local/share/task/scripts/sync-and-notify.sh" = { + source = ../../dots/.local/share/task/scripts/sync-and-notify.sh; + executable = true; + }; + }; + + programs.taskwarrior = with pkgs; { + enable = true; + package = taskwarrior3; + colorTheme = "dark-256"; + config = { + # sync = { + # server.url = "${builtins.readFile config.sops.secrets."taskwarrior_sync_server_url".path}"; + # server.client_id = "${builtins.readFile + # config.sops.secrets."taskwarrior_sync_server_client_id".path + # }"; + # encryption_secret = "${builtins.readFile + # config.sops.secrets."taskwarrior_sync_encryption_secret".path + # }"; + # }; + recurrence = "off"; # TODO: enable only on andromache + }; + extraConfig = "include ${config.sops.templates."taskrc.d/sync".path}"; + }; +} diff --git a/hosts/astyanax/default.nix b/hosts/astyanax/default.nix index d018680..95223b4 100644 --- a/hosts/astyanax/default.nix +++ b/hosts/astyanax/default.nix @@ -11,6 +11,7 @@ imports = [ inputs.disko.nixosModules.disko + inputs.sops-nix.nixosModules.sops inputs.home-manager.nixosModules.default ./hard.nix ../../modules/bootloader.nix @@ -30,6 +31,30 @@ ../../modules/ssh/hardened-openssh.nix ]; + sops = { + validateSopsFiles = false; + defaultSopsFile = "${builtins.toString inputs.nix-secrets}/secrets.yaml"; + defaultSopsFormat = "yaml"; + age.keyFile = "/home/h/.config/sops/age/keys.txt"; + + secrets = { + "test" = { }; + + "taskwarrior_sync_server_url".owner = config.users.users.h.name; + "taskwarrior_sync_server_client_id".owner = config.users.users.h.name; + "taskwarrior_sync_encryption_secret".owner = config.users.users.h.name; + }; + + templates."taskrc.d/sync" = { + owner = config.users.users.h.name; + content = '' + sync.server.url=${config.sops.placeholder."taskwarrior_sync_server_url"} + sync.server.client_id=${config.sops.placeholder."taskwarrior_sync_server_client_id"} + sync.encryption_secret=${config.sops.placeholder."taskwarrior_sync_encryption_secret"} + ''; + }; + }; + environment.systemPackages = [ inputs.nvim.packages.x86_64-linux.nvim ]; nix.settings.experimental-features = [