marmota 1.0.1

Daily note templating system
marmota-1.0.1 is not a library.

Quality gate status

Groundhog

Groundhog was built to replace the Obsidian Daily Notes plugin.

Daily notes are great but obsidian is limited to just copying the same text over and over

Groundhog can generate different text depending on the day of the week, carries forward tasks and recurring content, and integrates particularly well with NixOS

Contributions are welcome and wanted!! Feel free to open issues for any feature you would like or fix you need. If you want to contribute to the project please check contributing.md

Example

This is a cleansed version of my own daily note template

the first line tells me the day of the week

Plans for today shows my schedule for the day

the habit tracker list things I need to do every day

Todays most valuable action and tasks is where I list and prioritize the tasks I need to solve

daily note template

the note generated will depend on the day of the week

On monday for example we would have thursday

And then on tuesday the note would look like this friday

The !copy_tasks token ignores any completed tasks

And !by_weekday will return different content depending on the day of the week

Quickstart

By default grounghog will look for a template on the following path

~/Notes/templates/dnt.md

You can install with cargo using the following command.

cargo install marmota

If you dont already have cargo just follow the official guide to installing rust

Then you can run the groundhog command

groundhog

This will generate a daily-note with todays date in

~/Notes/daily-note/YYYY-MM-DD.md

if you are using obsidian just turn on obsidians daily note plugin and configure the new file location to daily-note

Warning

this assumes your vault is in ~/Notes if your vault is in any other dir, refer to the configuration section and substitute ~/Notes for your vaults path

new file location

Groundhog uses the same naming convention as obsidian for its daily notes. This means every daily note feature from obsidian will work (Open next daily note, open todays daily note and open previous daily note)

Groundhog will also symlink todays daily note to

~/Notes/daily-note.md

This means todays daily note will always be available on this path.

If you are not using obsidian you probably want to open the symlink in your editor of choice. in my case

nvim ~/Notes/daily-note.md

as the path doesnt change you can alias it to a single command

notes

Installation With nixos

installation with nix may seem complex but it will automatically add a systemd service that runs everyday on midnight generating the next days note.

And all you have to do is provide the groundhog url to your nixos flake

  inputs = {
    groundhog.url = "github:B3ella/groundhog";
  };

then enable groundhog and put your username in

      modules = [
        groundhog.nixosModules.default
        {
          services.groundhog = {
            enable = true;
            user = "bella";
          };
        }
      ];

Template Syntax

By default groundhog looks for a template on ~/Notes/templates/dnt.md

to overwrite this value refer to the configuration section

Groundhog processes markdown templates and supports a few special tokens.

Copy previous section

# Work
!copy_last_day

This copies the matching section from yesterday’s note

Copy Tasks

# Work
!copy_tasks

works just as copy last day, but ignores completed tasks

Completed taks are lines that start with:

- [x]

Weekday-specific content

!by_weekday[Deep work;Admin;Planning;Meetings;Follow-ups;Review;Reset]
!by_weekday[Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday]

This selects a value based on the current day of the week. It expexts a list of 7 values in between square brackets separated by semicolons The first value is the one for sunday and it goes on to saturday

Configuration

Groundhog reads config from:

~/.config/groundhog

If the file does not exist, it falls back to these defaults:

template_path=~/Notes/templates/dnt.md
archive_path=~/Notes/daily-note/
symlink_path=~/Notes/daily-note.md

template_path is the path to the template file

archive_path is where the generate notes will be stored

symlink_path is the shortcut for the current daily note

You can override the config path with:

groundhog --config-path /path/to/config

Notes

  • This project currently targets Unix-like systems.

Author

B3ella