anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / editors / nano / default.nix
blob432d297aea5e8f7a5193d629192ebdaed78ae1e6
1 { lib, stdenv, fetchurl, fetchFromGitHub, ncurses, texinfo, writeScript
2 , common-updater-scripts, git, nix, nixfmt-classic, coreutils, gnused
3 , callPackage, file ? null, gettext ? null, enableNls ? true, enableTiny ? false
4 }:
6 assert enableNls -> (gettext != null);
8 let
9   nixSyntaxHighlight = fetchFromGitHub {
10     owner = "seitz";
11     repo = "nanonix";
12     rev = "bf8d898efaa10dce3f7972ff765b58c353b4b4ab";
13     hash = "sha256-1tJV7F+iwMPRV6FgnbTw+5m7vMhgaeXftYkr9GPR4xw=";
14   };
16 in stdenv.mkDerivation rec {
17   pname = "nano";
18   version = "8.2";
20   src = fetchurl {
21     url = "mirror://gnu/nano/${pname}-${version}.tar.xz";
22     hash = "sha256-1a0H3YYvrK4DBRxUxlNeVMftdAcxh4P8rRrS1wdv/+s=";
23   };
25   nativeBuildInputs = [ texinfo ] ++ lib.optional enableNls gettext;
26   buildInputs = [ ncurses ] ++ lib.optional (!enableTiny) file;
28   outputs = [ "out" "info" ];
30   configureFlags = [
31     "--sysconfdir=/etc"
32     (lib.enableFeature enableNls "nls")
33     (lib.enableFeature enableTiny "tiny")
34   ];
36   postInstall = if enableTiny then
37     null
38   else ''
39     cp ${nixSyntaxHighlight}/nix.nanorc $out/share/nano/
40   '';
42   enableParallelBuilding = true;
44   passthru = {
45     tests = { expect = callPackage ./test-with-expect.nix { }; };
47     updateScript = writeScript "update.sh" ''
48       #!${stdenv.shell}
49       set -o errexit
50       PATH=${
51         lib.makeBinPath [
52           common-updater-scripts
53           git
54           nixfmt-classic
55           nix
56           coreutils
57           gnused
58         ]
59       }
61       oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion ${pname}" | tr -d '"')"
62       latestTag="$(git -c 'versionsort.suffix=-' ls-remote --exit-code --refs --sort='version:refname' --tags git://git.savannah.gnu.org/nano.git '*' | tail --lines=1 | cut --delimiter='/' --fields=3 | sed 's|^v||g')"
64       if [ ! "$oldVersion" = "$latestTag" ]; then
65         update-source-version ${pname} "$latestTag" --version-key=version --print-changes
66         nixpkgs="$(git rev-parse --show-toplevel)"
67         default_nix="$nixpkgs/pkgs/applications/editors/nano/default.nix"
68         nixfmt "$default_nix"
69       else
70         echo "${pname} is already up-to-date"
71       fi
72     '';
73   };
75   meta = with lib; {
76     homepage = "https://www.nano-editor.org/";
77     description = "Small, user-friendly console text editor";
78     license = licenses.gpl3Plus;
79     maintainers = with maintainers; [ joachifm nequissimus ];
80     platforms = platforms.all;
81     mainProgram = "nano";
82   };