{ lib , stdenv , fetchFromGitHub , fetchpatch , dbus , fltk13 , gtk2 , libICE , libSM , libtiff , pkg-config }: stdenv.mkDerivation (finalAttrs: { pname = "afterstep"; version = "2.2.12"; src = fetchFromGitHub { owner = "afterstep"; repo = "afterstep"; rev = finalAttrs.version; hash = "sha256-j1ADTRZ3Mxv9VNZWhWCFMnM/CJfkphdrgbw9Ca3bBw0="; }; patches = [ (fetchpatch { url = "https://salsa.debian.org/debian/afterstep/raw/master/debian/patches/44-Fix-build-with-gcc-5.patch"; hash = "sha256-RNLB6PuFVA1PsYt2VwLyLyvY2OO3oIl1xk+0/6nwN+4="; }) # Fix pending upstream inclusion for binutils-2.36 support: # https://github.com/afterstep/afterstep/pull/7 (fetchpatch { name = "binutils-2.36.patch"; url = "https://github.com/afterstep/afterstep/commit/5e9e897cf8c455390dd6f5b27fec49707f6b9088.patch"; hash = "sha256-aGMTyojzXEHGjO9lMT6dwLl01Fd333BUuCIX0FU9ac4="; }) ]; postPatch = '' # Causes fatal ldconfig cache generation attempt on non-NixOS Linux for mkfile in autoconf/Makefile.common.lib.in libAfter{Base,Image}/Makefile.in; do substituteInPlace $mkfile \ --replace 'test -w /etc' 'false' done ''; nativeBuildInputs = [ pkg-config ]; buildInputs = [ dbus fltk13 gtk2 libICE libSM libtiff ]; outputs = [ "out" "man" ]; strictDeps = true; # A strange type of bug: dbus is not immediately found by pkg-config preConfigure = '' # binutils 2.37 fix # https://github.com/afterstep/afterstep/issues/2 fixupList=( "autoconf/Makefile.defines.in" "libAfterImage/aftershow/Makefile.in" "libAfterImage/apps/Makefile.in" "libAfterBase/Makefile.in" "libAfterImage/Makefile.in" ) for toFix in "''${fixupList[@]}"; do substituteInPlace "$toFix" --replace "clq" "cq" done export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config dbus-1 --cflags)" ''; # Parallel build fails due to missing dependencies between private libraries: # ld: cannot find ../libAfterConf/libAfterConf.a: No such file or directory # Let's disable parallel builds until it's fixed upstream: # https://github.com/afterstep/afterstep/issues/8 enableParallelBuilding = false; meta = { homepage = "http://www.afterstep.org/"; description = "A NEXTStep-inspired window manager"; longDescription = '' AfterStep is a window manager for the Unix X Window System. Originally based on the look and feel of the NeXTStep interface, it provides end users with a consistent, clean, and elegant desktop. The goal of AfterStep development is to provide for flexibility of desktop configuration, improving aestetics, and efficient use of system resources. ''; license = lib.licenses.gpl2Plus; maintainers = with lib.maintainers; [ AndersonTorres ]; mainProgram = "afterstep"; platforms = lib.platforms.linux; }; })