diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-10-10 13:28:20 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-10-10 13:28:20 +0200 |
commit | 5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010 (patch) | |
tree | a6c0f605be6de3f372ae69905b331f9f75452da7 /nixos/modules/services/x11/window-managers | |
parent | 6070bc016bd2fd945b04347e25cfd3738622d2ac (diff) | |
download | nixlib-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar nixlib-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar.gz nixlib-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar.bz2 nixlib-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar.lz nixlib-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar.xz nixlib-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar.zst nixlib-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.zip |
Move all of NixOS to nixos/ in preparation of the repository merge
Diffstat (limited to 'nixos/modules/services/x11/window-managers')
12 files changed, 485 insertions, 0 deletions
diff --git a/nixos/modules/services/x11/window-managers/awesome.nix b/nixos/modules/services/x11/window-managers/awesome.nix new file mode 100644 index 000000000000..880ebf1eca6a --- /dev/null +++ b/nixos/modules/services/x11/window-managers/awesome.nix @@ -0,0 +1,42 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + + cfg = config.services.xserver.windowManager.awesome; + +in + +{ + + ###### interface + + options = { + + services.xserver.windowManager.awesome.enable = mkOption { + default = false; + description = "Enable the Awesome window manager."; + }; + + }; + + + ###### implementation + + config = mkIf cfg.enable { + + services.xserver.windowManager.session = singleton + { name = "awesome"; + start = + '' + ${pkgs.awesome}/bin/awesome & + waitPID=$! + ''; + }; + + environment.x11Packages = [ pkgs.awesome ]; + + }; + +} diff --git a/nixos/modules/services/x11/window-managers/compiz.nix b/nixos/modules/services/x11/window-managers/compiz.nix new file mode 100644 index 000000000000..209401f26468 --- /dev/null +++ b/nixos/modules/services/x11/window-managers/compiz.nix @@ -0,0 +1,63 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + + cfg = config.services.xserver.windowManager.compiz; + xorg = config.services.xserver.package; + +in + +{ + + options = { + + services.xserver.windowManager.compiz = { + + enable = mkOption { + default = false; + description = "Enable the Compiz window manager."; + }; + + renderingFlag = mkOption { + default = ""; + example = "--indirect-rendering"; + description = "Pass the <option>--indirect-rendering</option> flag to Compiz."; + }; + + }; + + }; + + + config = mkIf cfg.enable { + + services.xserver.windowManager.session = singleton + { name = "compiz"; + start = + '' + # Start Compiz using the flat-file configuration backend + # (ccp). + export COMPIZ_PLUGINDIR=${config.system.path}/lib/compiz + export COMPIZ_METADATADIR=${config.system.path}/share/compiz + ${pkgs.compiz}/bin/compiz ccp ${cfg.renderingFlag} & + + # Start GTK-style window decorator. + ${pkgs.compiz}/bin/gtk-window-decorator & + ''; + }; + + environment.systemPackages = + [ pkgs.compiz + pkgs.compiz_ccsm + pkgs.compiz_plugins_main + pkgs.compiz_plugins_extra + pkgs.libcompizconfig # for the "ccp" plugin + ]; + + environment.pathsToLink = [ "/lib/compiz" "/share/compiz" ]; + + }; + +} diff --git a/nixos/modules/services/x11/window-managers/default.nix b/nixos/modules/services/x11/window-managers/default.nix new file mode 100644 index 000000000000..c201b789ae48 --- /dev/null +++ b/nixos/modules/services/x11/window-managers/default.nix @@ -0,0 +1,61 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + cfg = config.services.xserver.windowManager; +in + +{ + imports = + [ ./compiz.nix + ./openbox.nix + ./metacity.nix + ./none.nix + ./twm.nix + ./wmii.nix + ./xmonad.nix + ./i3.nix + ./xbmc.nix + ]; + + options = { + + services.xserver.windowManager = { + + session = mkOption { + default = []; + example = [{ + name = "wmii"; + start = "..."; + }]; + description = '' + Internal option used to add some common line to window manager + scripts before forwarding the value to the + <varname>displayManager</varname>. + ''; + apply = map (d: d // { + manage = "window"; + }); + }; + + default = mkOption { + default = "none"; + example = "wmii"; + description = "Default window manager loaded if none have been chosen."; + merge = mergeOneOption; + apply = defaultWM: + if any (w: w.name == defaultWM) cfg.session then + defaultWM + else + throw "Default window manager (${defaultWM}) not found."; + }; + + }; + + }; + + config = { + services.xserver.displayManager.session = cfg.session; + }; +} diff --git a/nixos/modules/services/x11/window-managers/i3.nix b/nixos/modules/services/x11/window-managers/i3.nix new file mode 100644 index 000000000000..6777a95ddc8c --- /dev/null +++ b/nixos/modules/services/x11/window-managers/i3.nix @@ -0,0 +1,43 @@ +{ pkgs, config, ... }: + +with pkgs.lib; + +let + cfg = config.services.xserver.windowManager.i3; +in + +{ + options = { + services.xserver.windowManager.i3 = { + enable = mkOption { + default = false; + example = true; + description = "Enable the i3 tiling window manager."; + }; + + configFile = mkOption { + default = null; + type = types.nullOr types.path; + description = '' + Path to the i3 configuration file. + If left at the default value, $HOME/.i3/config will be used. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + services.xserver.windowManager = { + session = [{ + name = "i3"; + start = " + ${pkgs.i3}/bin/i3 ${optionalString (cfg.configFile != null) + "-c \"${cfg.configFile}\"" + } & + waitPID=$! + "; + }]; + }; + environment.x11Packages = [ pkgs.i3 ]; + }; +} diff --git a/nixos/modules/services/x11/window-managers/icewm.nix b/nixos/modules/services/x11/window-managers/icewm.nix new file mode 100644 index 000000000000..9da4a415fad1 --- /dev/null +++ b/nixos/modules/services/x11/window-managers/icewm.nix @@ -0,0 +1,42 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + + cfg = config.services.xserver.windowManager.icewm; + +in + +{ + + ###### interface + + options = { + + services.xserver.windowManager.icewm.enable = mkOption { + default = false; + description = "Enable the IceWM window manager."; + }; + + }; + + + ###### implementation + + config = mkIf cfg.enable { + + services.xserver.windowManager.session = singleton + { name = "icewm"; + start = + '' + ${pkgs.icewm}/bin/icewm & + waitPID=$! + ''; + }; + + environment.x11Packages = [ pkgs.icewm ]; + + }; + +} diff --git a/nixos/modules/services/x11/window-managers/metacity.nix b/nixos/modules/services/x11/window-managers/metacity.nix new file mode 100644 index 000000000000..712e2038594e --- /dev/null +++ b/nixos/modules/services/x11/window-managers/metacity.nix @@ -0,0 +1,42 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + + cfg = config.services.xserver.windowManager.metacity; + xorg = config.services.xserver.package; + gnome = pkgs.gnome; + +in + +{ + options = { + + services.xserver.windowManager.metacity.enable = mkOption { + default = false; + example = true; + description = "Enable the metacity window manager."; + }; + + }; + + config = mkIf cfg.enable { + + services.xserver.windowManager.session = singleton + { name = "metacity"; + start = '' + env LD_LIBRARY_PATH=${xorg.libX11}/lib:${xorg.libXext}/lib:/usr/lib/ + # !!! Hack: load the schemas for Metacity. + GCONF_CONFIG_SOURCE=xml::~/.gconf ${gnome.GConf}/bin/gconftool-2 \ + --makefile-install-rule ${gnome.metacity}/etc/gconf/schemas/*.schemas # */ + ${gnome.metacity}/bin/metacity & + waitPID=$! + ''; + }; + + environment.systemPackages = [ gnome.metacity ]; + + }; + +} diff --git a/nixos/modules/services/x11/window-managers/none.nix b/nixos/modules/services/x11/window-managers/none.nix new file mode 100644 index 000000000000..84cf1d770776 --- /dev/null +++ b/nixos/modules/services/x11/window-managers/none.nix @@ -0,0 +1,12 @@ +{ + services = { + xserver = { + windowManager = { + session = [{ + name = "none"; + start = ""; + }]; + }; + }; + }; +} diff --git a/nixos/modules/services/x11/window-managers/openbox.nix b/nixos/modules/services/x11/window-managers/openbox.nix new file mode 100644 index 000000000000..ae34a938c4a0 --- /dev/null +++ b/nixos/modules/services/x11/window-managers/openbox.nix @@ -0,0 +1,30 @@ +{pkgs, config, ...}: + +let + inherit (pkgs.lib) mkOption mkIf; + cfg = config.services.xserver.windowManager.openbox; +in + +{ + options = { + services.xserver.windowManager.openbox = { + enable = mkOption { + default = false; + example = true; + description = "Enable the Openbox window manager."; + }; + }; + }; + + config = mkIf cfg.enable { + services.xserver.windowManager = { + session = [{ + name = "openbox"; + start = " + ${pkgs.openbox}/bin/openbox-session + "; + }]; + }; + environment.x11Packages = [ pkgs.openbox ]; + }; +} diff --git a/nixos/modules/services/x11/window-managers/twm.nix b/nixos/modules/services/x11/window-managers/twm.nix new file mode 100644 index 000000000000..c1a99b97566f --- /dev/null +++ b/nixos/modules/services/x11/window-managers/twm.nix @@ -0,0 +1,42 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + + cfg = config.services.xserver.windowManager.twm; + +in + +{ + + ###### interface + + options = { + + services.xserver.windowManager.twm.enable = mkOption { + default = false; + description = "Enable the twm window manager."; + }; + + }; + + + ###### implementation + + config = mkIf cfg.enable { + + services.xserver.windowManager.session = singleton + { name = "twm"; + start = + '' + ${pkgs.xorg.twm}/bin/twm & + waitPID=$! + ''; + }; + + environment.x11Packages = [ pkgs.xorg.twm ]; + + }; + +} diff --git a/nixos/modules/services/x11/window-managers/wmii.nix b/nixos/modules/services/x11/window-managers/wmii.nix new file mode 100644 index 000000000000..b61521274fba --- /dev/null +++ b/nixos/modules/services/x11/window-managers/wmii.nix @@ -0,0 +1,47 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + + cfg = config.services.xserver.windowManager.wmii; + +in + +{ + options = { + + services.xserver.windowManager.wmii.enable = mkOption { + default = false; + example = true; + description = "Enable the wmii window manager."; + }; + + }; + + config = mkIf cfg.enable { + + services.xserver.windowManager.session = singleton + # stop wmii by + # $wmiir xwrite /ctl quit + # this will cause wmii exiting with exit code 0 + # + # why this loop? + # wmii crashes once a month here. That doesn't matter that much + # wmii can recover very well. However without loop the x session terminates and then your workspace setup is + # lost and all applications running on X will terminate. + # Another use case is kill -9 wmii; after rotating screen. + # Note: we don't like kill for that purpose. But it works (-> subject "wmii and xrandr" on mailinglist) + { name = "wmii"; + start = '' + while :; do + ${pkgs.wmiiSnap}/bin/wmii && break + done + ''; + }; + + environment.systemPackages = [ pkgs.wmiiSnap ]; + + }; + +} diff --git a/nixos/modules/services/x11/window-managers/xbmc.nix b/nixos/modules/services/x11/window-managers/xbmc.nix new file mode 100644 index 000000000000..46494202b404 --- /dev/null +++ b/nixos/modules/services/x11/window-managers/xbmc.nix @@ -0,0 +1,31 @@ +{pkgs, config, ...}: + +let + inherit (pkgs.lib) mkOption mkIf; + cfg = config.services.xserver.windowManager.xbmc; +in + +{ + options = { + services.xserver.windowManager.xbmc = { + enable = mkOption { + default = false; + example = true; + description = "Enable the xbmc multimedia center."; + }; + }; + }; + + config = mkIf cfg.enable { + services.xserver.windowManager = { + session = [{ + name = "xbmc"; + start = " + ${pkgs.xbmc}/bin/xbmc --lircdev /var/run/lirc/lircd --standalone & + waitPID=$! + "; + }]; + }; + environment.systemPackages = [ pkgs.xbmc ]; + }; +} diff --git a/nixos/modules/services/x11/window-managers/xmonad.nix b/nixos/modules/services/x11/window-managers/xmonad.nix new file mode 100644 index 000000000000..2cbb5002d6cf --- /dev/null +++ b/nixos/modules/services/x11/window-managers/xmonad.nix @@ -0,0 +1,30 @@ +{pkgs, config, ...}: + +let + inherit (pkgs.lib) mkOption mkIf; + cfg = config.services.xserver.windowManager.xmonad; +in + +{ + options = { + services.xserver.windowManager.xmonad = { + enable = mkOption { + default = false; + example = true; + description = "Enable the xmonad window manager."; + }; + }; + }; + + config = { + services.xserver.windowManager = { + session = mkIf cfg.enable [{ + name = "xmonad"; + start = " + ${pkgs.haskellPackages.xmonad}/bin/xmonad & + waitPID=$! + "; + }]; + }; + }; +} |