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

{
  config = {
    programs.nnn = {
      enable = true;
      bookmarks = {
        d = "~/Documents";
        D = "~/Downloads";
        p = "~/Pictures";
        v = "~/Videos";
      };
      package = pkgs.nnnDummy;
      extraPackages = with pkgs; [ foo bar ];
      plugins = {
        src = ./plugins;
        mappings = {
          c = "fzcd";
          f = "finder";
          v = "imgview";
        };
      };
    };

    test.stubs = {
      nnnDummy.buildScript = ''
        runHook preInstall

        mkdir -p "$out/bin"
        touch "$out/bin/nnn"
        chmod +x "$out/bin/nnn"

        runHook postInstall
      '';
      foo = { name = "foo"; };
      bar = { name = "bar"; };
    };

    nmt = {
      description =
        "Check if the binary is correctly wrapped and if the symlinks are made";
      script = ''
        assertDirectoryExists home-files/.config/nnn/plugins

        for bookmark in 'export NNN_BMS' '~/Downloads' '~/Documents' '~/Pictures' '~/Videos'; do
          assertFileRegex home-path/bin/nnn "$bookmark"
        done

        for plugin in 'export NNN_PLUG' 'fzcd' 'finder' 'imgview'; do
          assertFileRegex home-path/bin/nnn "$plugin"
        done
      '';
    };
  };
}