diff --git a/pkgs/applications/window-managers/i3/default.nix b/pkgs/applications/window-managers/i3/default.nix index acb05f4ac771..e9d44fae06a0 100644 --- a/pkgs/applications/window-managers/i3/default.nix +++ b/pkgs/applications/window-managers/i3/default.nix @@ -1,40 +1,101 @@ -{ fetchurl, lib, stdenv, pkg-config, makeWrapper, meson, ninja, installShellFiles, libxcb, xcbutilkeysyms -, xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification, libX11, pcre2, libev -, yajl, xcb-util-cursor, perl, pango, perlPackages, libxkbcommon -, xorgserver, xvfb-run, xdotool, xorg, which -, asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, findXMLCatalogs -, nixosTests +{ + fetchFromGitHub, + lib, + stdenv, + pkg-config, + makeWrapper, + meson, + ninja, + installShellFiles, + libxcb, + xcbutilkeysyms, + xcbutil, + xcbutilwm, + xcbutilxrm, + libstartup_notification, + libX11, + pcre2, + libev, + yajl, + xcb-util-cursor, + perl, + pango, + perlPackages, + libxkbcommon, + xorgserver, + xvfb-run, + xdotool, + xorg, + which, + asciidoc, + xmlto, + docbook_xml_dtd_45, + docbook_xsl, + findXMLCatalogs, + nixosTests, + nix-update-script, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "i3"; - version = "4.23"; + version = "4.24"; - src = fetchurl { - url = "https://i3wm.org/downloads/${pname}-${version}.tar.xz"; - sha256 = "sha256-YQJqcZbJE50POq3ScZfosyDFduOkUOAddMGspIQETEY="; + src = fetchFromGitHub { + owner = "i3"; + repo = "i3"; + rev = "refs/tags/${finalAttrs.version}"; + hash = "sha256-2tuhfB/SMN+osCBfZtw/yDPhNNEhBH4Qo6dexpqVWYk="; }; nativeBuildInputs = [ - pkg-config makeWrapper meson ninja installShellFiles perl - asciidoc xmlto docbook_xml_dtd_45 docbook_xsl findXMLCatalogs + pkg-config + makeWrapper + meson + ninja + installShellFiles + perl + asciidoc + xmlto + docbook_xml_dtd_45 + docbook_xsl + findXMLCatalogs ]; mesonFlags = [ - "-Ddocs=true" - "-Dmans=true" + (lib.mesonBool "docs" true) + (lib.mesonBool "mans" true) ]; - buildInputs = [ - libxcb xcbutilkeysyms xcbutil xcbutilwm xcbutilxrm libxkbcommon - libstartup_notification libX11 pcre2 libev yajl xcb-util-cursor perl pango - perlPackages.AnyEventI3 perlPackages.X11XCB perlPackages.IPCRun - perlPackages.ExtUtilsPkgConfig perlPackages.InlineC - ] ++ lib.optionals doCheck [ - xorgserver xvfb-run xdotool xorg.setxkbmap xorg.xrandr which - ]; - - configureFlags = [ "--disable-builddir" ]; + buildInputs = + [ + libxcb + xcbutilkeysyms + xcbutil + xcbutilwm + xcbutilxrm + libxkbcommon + libstartup_notification + libX11 + pcre2 + libev + yajl + xcb-util-cursor + perl + pango + perlPackages.AnyEventI3 + perlPackages.X11XCB + perlPackages.IPCRun + perlPackages.ExtUtilsPkgConfig + perlPackages.InlineC + ] + ++ lib.optionals finalAttrs.doCheck [ + xorgserver + xvfb-run + xdotool + xorg.setxkbmap + xorg.xrandr + which + ]; postPatch = '' patchShebangs . @@ -43,7 +104,7 @@ stdenv.mkDerivation rec { # patchShebangs can't replace a shebang in the middle of a file. if [ -f testcases/t/318-i3-dmenu-desktop.t ]; then substituteInPlace testcases/t/318-i3-dmenu-desktop.t \ - --replace-fail "#!/usr/bin/env perl" "#!${perl}/bin/perl" + --replace-fail "#!/usr/bin/env perl" "#!${lib.getExe perl}" fi ''; @@ -51,6 +112,8 @@ stdenv.mkDerivation rec { doCheck = stdenv.hostPlatform.isLinux; checkPhase = '' + runHook preCheck + test_failed= # "| cat" disables fancy progress reporting which makes the log unreadable. ./complete-run.pl -p 1 --keep-xserver-output | cat || test_failed="complete-run.pl returned $?" @@ -66,6 +129,8 @@ stdenv.mkDerivation rec { echo "===== End of test log =====" false fi + + runHook postCheck ''; postInstall = '' @@ -79,16 +144,23 @@ stdenv.mkDerivation rec { separateDebugInfo = true; - passthru.tests = { inherit (nixosTests) i3wm; }; + passthru = { + updateScript = nix-update-script { }; + tests = { + inherit (nixosTests) i3wm; + }; + }; - - meta = with lib; { + meta = { description = "Tiling window manager"; - homepage = "https://i3wm.org"; - maintainers = with maintainers; [ modulistic fpletz ]; + homepage = "https://i3wm.org"; + maintainers = with lib.maintainers; [ + modulistic + fpletz + ]; mainProgram = "i3"; - license = licenses.bsd3; - platforms = platforms.all; + license = lib.licenses.bsd3; + platforms = lib.platforms.unix; longDescription = '' A tiling window manager primarily targeted at advanced users and @@ -98,5 +170,4 @@ stdenv.mkDerivation rec { UTF-8 clean. ''; }; - -} +})