diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index ed52433994f9..a4ef5a985e9e 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -534,6 +534,7 @@ ./services/x11/window-managers/fluxbox.nix ./services/x11/window-managers/icewm.nix ./services/x11/window-managers/bspwm.nix + ./services/x11/window-managers/bspwm-unstable.nix ./services/x11/window-managers/metacity.nix ./services/x11/window-managers/none.nix ./services/x11/window-managers/twm.nix diff --git a/nixos/modules/services/x11/window-managers/bspwm-unstable.nix b/nixos/modules/services/x11/window-managers/bspwm-unstable.nix new file mode 100644 index 000000000000..3282e0d0851f --- /dev/null +++ b/nixos/modules/services/x11/window-managers/bspwm-unstable.nix @@ -0,0 +1,48 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xserver.windowManager.bspwm-unstable; +in + +{ + options = { + services.xserver.windowManager.bspwm-unstable = { + enable = mkEnableOption "bspwm-unstable"; + startThroughSession = mkOption { + type = with types; bool; + default = false; + description = " + Start the window manager through the script defined in + sessionScript. Defaults to the the bspwm-session script + provided by bspwm + "; + }; + sessionScript = mkOption { + default = "${pkgs.bspwm-unstable}/bin/bspwm-session"; + defaultText = "(pkgs.bspwm-unstable)/bin/bspwm-session"; + description = " + The start-session script to use. Defaults to the + provided bspwm-session script from the bspwm package. + + Does nothing unless `bspwm.startThroughSession` is enabled + "; + }; + }; + }; + + config = mkIf cfg.enable { + services.xserver.windowManager.session = singleton { + name = "bspwm-unstable"; + start = if cfg.startThroughSession + then cfg.sessionScript + else '' + export _JAVA_AWT_WM_NONREPARENTING=1 + SXHKD_SHELL=/bin/sh ${pkgs.sxhkd-unstable}/bin/sxhkd -f 100 & + ${pkgs.bspwm-unstable}/bin/bspwm + ''; + }; + environment.systemPackages = [ pkgs.bspwm-unstable ]; + }; +} diff --git a/nixos/modules/services/x11/window-managers/default.nix b/nixos/modules/services/x11/window-managers/default.nix index f005decfa33c..dabe2c26a72f 100644 --- a/nixos/modules/services/x11/window-managers/default.nix +++ b/nixos/modules/services/x11/window-managers/default.nix @@ -10,6 +10,7 @@ in imports = [ ./afterstep.nix ./bspwm.nix + ./bspwm-unstable.nix ./compiz.nix ./dwm.nix ./exwm.nix diff --git a/pkgs/applications/window-managers/bspwm/unstable.nix b/pkgs/applications/window-managers/bspwm/unstable.nix new file mode 100644 index 000000000000..7b31c63128a7 --- /dev/null +++ b/pkgs/applications/window-managers/bspwm/unstable.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, libxcb, libXinerama, sxhkd, xcbutil, xcbutilkeysyms, xcbutilwm }: + +stdenv.mkDerivation rec { + name = "bspwm-unstable-2016-09-30"; + + + src = fetchFromGitHub { + owner = "baskerville"; + repo = "bspwm"; + rev = "8664c007e44de162c1597fd7e163635b274fb747"; + sha256 = "0clvpz32z38i8kr10hqlifa661szpfn93c63m2aq2h4dwmr44slz"; + }; + + buildInputs = [ libxcb libXinerama xcbutil xcbutilkeysyms xcbutilwm ]; + + buildPhase = '' + make PREFIX=$out + ''; + + installPhase = '' + make PREFIX=$out install + ''; + + meta = { + description = "A tiling window manager based on binary space partitioning (git version)"; + homepage = https://github.com/baskerville/bspwm; + maintainers = [ stdenv.lib.maintainers.meisternu stdenv.lib.maintainers.epitrochoid ]; + license = stdenv.lib.licenses.bsd2; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d629c71cefa3..d075fd4be5c0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12173,6 +12173,8 @@ in bspwm = callPackage ../applications/window-managers/bspwm { }; + bspwm-unstable = callPackage ../applications/window-managers/bspwm/unstable.nix { }; + bvi = callPackage ../applications/editors/bvi { }; bviplus = callPackage ../applications/editors/bviplus { };