···1+{
2+ lib,
3+ rustPlatform,
4+ fetchFromGitHub,
5+ installShellFiles,
6+ versionCheckHook,
7+}:
8+9+rustPlatform.buildRustPackage rec {
10+ pname = "ad";
11+ version = "0.1.3";
12+13+ src = fetchFromGitHub {
14+ owner = "sminez";
15+ repo = "ad";
16+ rev = "refs/tags/${version}";
17+ hash = "sha256-l1SyrJW3lZIvoFZG57Bj134sUcoq60xfeXjzVaZPfzs=";
18+ };
19+20+ cargoHash = "sha256-wpR9wZA5SGyLI1ScfZwSENuUMI/iX3YS0P/o9drIwoo=";
21+22+ nativeBuildInputs = [ installShellFiles ];
23+24+ checkFlags = [
25+ # both assume `/usr/bin/sh` exists
26+ "--skip=buffer::tests::try_expand_known_works::file_that_exists_abs_path"
27+ "--skip=buffer::tests::try_expand_known_works::file_that_exists_abs_path_with_addr"
28+ ];
29+30+ postInstall = ''
31+ installManPage doc/man/ad.1
32+ '';
33+34+ nativeInstallCheckInputs = [
35+ versionCheckHook
36+ ];
37+38+ doInstallCheck = true;
39+40+ meta = {
41+ description = "Adaptable text editor";
42+ longDescription = ''
43+ ad (pronounced A.D.) is an attempt at combining a modal
44+ editing interface of likes of vi and kakoune with the
45+ approach to extensibility of Plan9's Acme. Inside
46+ of ad text is something you can execute as well as edit.
47+48+ It is primarily intended as playground for experimenting
49+ with implementing various text editor features and
50+ currently is not at all optimised or feature complete
51+ enough for use as your main text editor.
52+ '';
53+ homepage = "https://github.com/sminez/ad";
54+ license = lib.licenses.mit;
55+ mainProgram = "ad";
56+ maintainers = with lib.maintainers; [ aleksana ];
57+ # rely on unix domain socket
58+ # https://github.com/sminez/ad/issues/28
59+ platforms = lib.platforms.unix;
60+ };
61+}