{ pkgs, ... }:

{
  programs.sapling = {
    enable = true;
    userName = "John Doe";
    userEmail = "johndoe@example.com";
    aliases = {
      cm = "commit";
      d = "diff --exclude=*.lock";
      s = "status";
      view = "!$HG config paths.default | xargs open";
    };
    extraConfig = {
      pager.pager = "delta";
      gpg.key = "not-an-actual-key";
    };
  };

  nmt.script =
    let
      configfile =
        if pkgs.stdenv.isDarwin then
          "Library/Preferences/sapling/sapling.conf"
        else
          ".config/sapling/sapling.conf";

      expected = builtins.toFile "sapling.conf" ''
        [alias]
        cm=commit
        d=diff --exclude=*.lock
        s=status
        view=!$HG config paths.default | xargs open

        [gpg]
        key=not-an-actual-key

        [pager]
        pager=delta

        [ui]
        username=John Doe <johndoe@example.com>
      '';
    in
    ''
      assertFileExists home-files/${configfile}
      assertFileContent home-files/${configfile} ${expected}
    '';
}
