tvl-depot/tools/url-blocker
William Carroll 0c71fc9d1d Drop support for dir-locals.nix, <nixpkgs>, etc.
In the spirit of Marie Kondo, I'm tidying up!

TL;DR:
- Prefer .envrc `use_nix` and delete all dir-locals.nix files
- Remove ~all references to <nixpkgs>, <unstable>, <depot> and prefer
  referencing each with briefcase.third_party.{pkgs,unstable,depot}
- Delete nixBufferFromShell function since I was only using that in
  dir-locals.nix files
2020-08-20 11:26:32 +01:00
..
.envrc Drop support for dir-locals.nix, <nixpkgs>, etc. 2020-08-20 11:26:32 +01:00
default.nix Drop support for dir-locals.nix, <nixpkgs>, etc. 2020-08-20 11:26:32 +01:00
Main.hs Delete the stale tests 2020-03-29 20:39:39 +01:00
README.md Read and write to /etc/hosts 2020-03-29 20:39:39 +01:00
rules.json Read and write to /etc/hosts 2020-03-29 20:39:39 +01:00
shell.nix Drop support for dir-locals.nix, <nixpkgs>, etc. 2020-08-20 11:26:32 +01: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.