Commit f19ed980 authored by AndersonTorres's avatar AndersonTorres Committed by Arseniy Seroka
Browse files

Sawfish (git): New Package

Sawfish is a versatile, Lisp-based window manager

In that commit I include all Sawfish stack:
- librep, a lisp system;
- rep-gtk, bindings for gtk
- sawfish, the window manager
parent df0016a8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ in
    ./i3.nix
    ./metacity.nix
    ./openbox.nix
    ./sawfish.nix
    ./stumpwm.nix
    ./twm.nix
    ./windowmaker.nix
+28 −0
Original line number Diff line number Diff line
{ config, lib, pkgs, ... }:

with lib;

let
  cfg = config.services.xserver.windowManager.sawfish;
in
{
  ###### interface
  options = {
    services.xserver.windowManager.sawfish.enable = mkOption {
      default = false;
      description = "Enable the Sawfish window manager.";
    };
  };

  ###### implementation
  config = mkIf cfg.enable {
    services.xserver.windowManager.session = singleton {
      name = "sawfish";
      start = ''
        ${pkgs.sawfish}/bin/sawfish &
        waitPID=$!
      '';
    };
    environment.systemPackages = [ pkgs.sawfish ];
  };
}
+42 −0
Original line number Diff line number Diff line
{ stdenv, fetchgit, pkgconfig, which, autoreconfHook, rep-gtk, pango, gdk_pixbuf, libXinerama, libXrandr, libXtst, imlib, gettext, texinfo, makeWrapper }:

with stdenv.lib;
stdenv.mkDerivation rec {

  name = "sawfish-git-2015-02-15";

  src = fetchgit {
    url = "https://github.com/SawfishWM/sawfish.git";
    rev = "44729f44017e6779b4b66a7ecdbd63a98731f668";
    sha256 = "bd3f42f1604f37ecb2515008341cac4f6965840b2d6a6639dd1f3f2459f68e73";
  };

  buildInputs = [ pkgconfig which autoreconfHook rep-gtk pango gdk_pixbuf libXinerama libXrandr libXtst imlib gettext texinfo makeWrapper ];

  patchPhase = ''
    sed -e 's|REP_DL_LOAD_PATH=|REP_DL_LOAD_PATH=$(REP_DL_LOAD_PATH):|g' -i Makedefs.in
    sed -e 's|$(repexecdir)|$(libdir)/rep|g' -i src/Makefile.in
  '';

  postInstall = ''
    for i in $out/lib/sawfish/sawfish-menu $out/bin/sawfish-about  $out/bin/sawfish-client $out/bin/sawfish-config $out/bin/sawfish; do
      wrapProgram $i \
        --prefix REP_DL_LOAD_PATH "$out/lib/rep" \
	--set REP_LOAD_PATH "$out/share/sawfish/lisp"
    done
  '';
  
  meta = {
    description = "An extensible, Lisp-based window manager";
    longDescription = ''
      Sawfish is an extensible window manager using a Lisp-based scripting language.
      Its policy is very minimal compared to most window managers. Its aim is simply
      to manage windows in the most flexible and attractive manner possible.
      All high-level WM functions are implemented in Lisp for future extensibility
      or redefinition.
    '';
    homepage = http://sawfish.wikia.com;
    license = licenses.gpl2;
    maintainers = [ maintainers.AndersonTorres ];
  };
}
+42 −0
Original line number Diff line number Diff line

	{ stdenv, fetchgit
, pkgconfig, autoreconfHook
, readline, texinfo
, gdbm, gmp, libffi }:

with stdenv.lib;
stdenv.mkDerivation rec {

  name = "librep-git-2015-02-15";

  src = fetchgit {
    url = "https://github.com/SawfishWM/librep.git";
    rev = "a1f2db721aa5055e90f6a76fde625946340ed8cf";
    sha256 = "c91484d02b2408becc8961997c3d6404aefa8e1f8af4621a8b5f7622b1857fa6";
  };

  buildInputs = [ pkgconfig autoreconfHook readline texinfo ];
  propagatedBuildInputs = [ gdbm gmp libffi ];

  configureFlags = [
    "--disable-static"
  ];

  setupHook = ./setup-hook.sh;

  meta = {
    description = "Lisp system for Sawfish";
    longDescription = ''
      This is librep, a Lisp system for UNIX, needed by Sawfish window manager.
      It contains a Lisp interpreter, byte-code compiler and virtual machine.
      Applications may use the Lisp interpreter as an extension language,
      or it may be used for stand-alone scripts.

      The Lisp dialect was originally inspired by Emacs Lisp, but with the worst
      features removed. It also borrows many ideas from Scheme.
    '';
    homepage = http://sawfish.wikia.com;
    license = licenses.gpl2;
    maintainers = [ maintainers.AndersonTorres ];
  };
}
+5 −0
Original line number Diff line number Diff line
addRepDLLoadPath () {
    addToSearchPath REP_DL_LOAD_PATH $1/lib/rep
}

envHooks+=(addRepDLLoadPath)
Loading