tvl-depot/users/wpcarro/tools/url-blocker
Vincent Ambo 019f8fd211 subtree(users/wpcarro): docking briefcase at '24f5a642'
git-subtree-dir: users/wpcarro
git-subtree-mainline: 464bbcb15c
git-subtree-split: 24f5a642af
Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
2021-12-14 02:15:47 +03:00
..
.envrc subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
default.nix subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
Main.hs subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
README.md subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
rules.json subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
shell.nix subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00

url-blocker

url-blocker blocks the URLs that you want to block when you want it to block them.

Let's say that you don't want to visit Twitter during the work week. Create the file ~/.config/url-blocker/rules.json with the following contents and url-blocker will take care of the rest.

# ~/.config/url-blocker/rules.json
[
  {
    "urls": [
      "twitter.com",
      "www.twitter.com",
    ],
    "allowed": [
      {
        "day": "Saturday",
        "timeslots": [
          "00:00-11:59"
        ]
      },
      {
        "day": "Sunday",
        "timeslots": [
          "00:00-11:59"
        ]
      }
    ]
  }
]

Installation

$ nix-env -iA 'briefcase.tools.url-blocker'

How does it work?

systemd is intended to run url-blocker once every minute. url-blocker will read /etc/hosts and map the URLs defined in rules.json to 127.0.0.1 when you want them blocked. Because systemd run once every minute, /etc/hosts should be current to the minute as well.