{ config, lib, pkgs, ... }:

{
  nixpkgs.overlays = [
    (self: super: {
      # Use `cat` instead of `echo` to prevent arguments from being
      # interpreted as an option.
      emacs = pkgs.writeShellScriptBin "emacsclient"
        ''${pkgs.coreutils}/bin/cat <<< "$*"'';
    })
  ];

  services.emacs = {
    defaultEditor = true;
    enable = true;
  };

  nmt.script = "source ${
      pkgs.substituteAll {
        inherit (pkgs) coreutils;
        src = ./emacs-default-editor.sh;
      }
    }";
}