Merge pull request #13698 from puffnfresh/feature/window-manager/emacs-exwm

exwm service: init (Emacs X Window Manager)
This commit is contained in:
Arseniy Seroka 2016-03-06 10:54:48 +03:00
commit 4b934ec3af
3 changed files with 135 additions and 39 deletions

View File

@ -13,6 +13,7 @@ in
./clfswm.nix
./compiz.nix
./dwm.nix
./exwm.nix
./fluxbox.nix
./herbstluftwm.nix
./i3.nix

View File

@ -0,0 +1,55 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.xserver.windowManager.exwm;
loadScript = pkgs.writeText "emacs-exwm-load" ''
(require 'exwm)
${optionalString cfg.enableDefaultConfig ''
(require 'exwm-config)
(exwm-config-default)
''}
'';
packages = epkgs: cfg.extraPackages epkgs ++ [ epkgs.exwm ];
exwm-emacs = pkgs.emacsWithPackages packages;
in
{
options = {
services.xserver.windowManager.exwm = {
enable = mkEnableOption "exwm";
enableDefaultConfig = mkOption {
default = true;
example = false;
type = lib.types.bool;
description = "Enable an uncustomised exwm configuration.";
};
extraPackages = mkOption {
default = self: [];
example = literalExample ''
epkgs: [
epkgs.emms
epkgs.magit
epkgs.proofgeneral
]
'';
description = ''
Extra packages available to Emacs. The value must be a
function which receives the attrset defined in
<varname>emacsPackages</varname> as the sole argument.
'';
};
};
};
config = mkIf cfg.enable {
services.xserver.windowManager.session = singleton {
name = "exwm";
start = ''
${exwm-emacs}/bin/emacs -l ${loadScript}
'';
};
environment.systemPackages = [ exwm-emacs ];
};
}

View File

@ -132,6 +132,19 @@
license = lib.licenses.free;
};
}) {};
arbitools = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "arbitools";
version = "0.51";
src = fetchurl {
url = "http://elpa.gnu.org/packages/arbitools-0.51.el";
sha256 = "1pwps73s885i1777wlmqhkmfgj564bkb6rkpc964v0vcqia6fpag";
};
packageRequires = [];
meta = {
homepage = "http://elpa.gnu.org/packages/arbitools.html";
license = lib.licenses.free;
};
}) {};
ascii-art-to-unicode = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "ascii-art-to-unicode";
@ -322,10 +335,10 @@
company-math = callPackage ({ company, elpaBuild, fetchurl, lib, math-symbol-lists }:
elpaBuild {
pname = "company-math";
version = "1.0.1";
version = "1.1";
src = fetchurl {
url = "http://elpa.gnu.org/packages/company-math-1.0.1.el";
sha256 = "1lkj9cqhmdf3h5zvr94hszkz1251i2rq2mycnhscsnzrk5ll3gck";
url = "http://elpa.gnu.org/packages/company-math-1.1.tar";
sha256 = "10yi5jmv7njcaansgy2aw7wm1j3acch1j9x6lfg9mxk0j21zvgwp";
};
packageRequires = [ company math-symbol-lists ];
meta = {
@ -350,10 +363,10 @@
context-coloring = callPackage ({ elpaBuild, emacs, fetchurl, js2-mode, lib }:
elpaBuild {
pname = "context-coloring";
version = "7.2.0";
version = "7.2.1";
src = fetchurl {
url = "http://elpa.gnu.org/packages/context-coloring-7.2.0.el";
sha256 = "0l7mzmnhqh6sri1fhhv51khi0fnpfp51drzy725s6zfmpbrcn7vn";
url = "http://elpa.gnu.org/packages/context-coloring-7.2.1.el";
sha256 = "1lh2p3fsym73h0dcj1gqg1xsw3lcikmcskbx8y3j0ds30l4xs13d";
};
packageRequires = [ emacs js2-mode ];
meta = {
@ -628,12 +641,26 @@
license = lib.licenses.free;
};
}) {};
excorporate = callPackage ({ elpaBuild, emacs, fetchurl, fsm, lib, soap-client, url-http-ntlm }:
elpaBuild {
pname = "excorporate";
version = "0.7.1";
src = fetchurl {
url = "http://elpa.gnu.org/packages/excorporate-0.7.1.tar";
sha256 = "1flvhk39yymskzazpwh95j2nj8kg4b02hsg7b8msnqi3q5lpqs54";
};
packageRequires = [ emacs fsm soap-client url-http-ntlm ];
meta = {
homepage = "http://elpa.gnu.org/packages/excorporate.html";
license = lib.licenses.free;
};
}) {};
exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild {
pname = "exwm";
version = "0.2";
version = "0.4";
src = fetchurl {
url = "http://elpa.gnu.org/packages/exwm-0.2.tar";
sha256 = "0z96zz6h5r880nbhclbxs2r0zfkg771lg0fjghigqxz8ai0hh1ll";
url = "http://elpa.gnu.org/packages/exwm-0.4.tar";
sha256 = "1qlplx88mk8c5sahlymxxh46bzf6bxnsqk92wliv5ji4ai5373fb";
};
packageRequires = [ xelb ];
meta = {
@ -767,10 +794,10 @@
hydra = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "hydra";
version = "0.13.4";
version = "0.13.5";
src = fetchurl {
url = "http://elpa.gnu.org/packages/hydra-0.13.4.tar";
sha256 = "11msy6n075iv00c2r9f85bzx3srnj403rhlga1rgsl6vsryf21fj";
url = "http://elpa.gnu.org/packages/hydra-0.13.5.tar";
sha256 = "0vq1pjyq6ddbikbh0vzdigbs0zlldgwad0192s7v9npg8qlwi668";
};
packageRequires = [ cl-lib ];
meta = {
@ -978,10 +1005,10 @@
}) {};
math-symbol-lists = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "math-symbol-lists";
version = "1.0";
version = "1.1";
src = fetchurl {
url = "http://elpa.gnu.org/packages/math-symbol-lists-1.0.el";
sha256 = "1rry9x4pl7i0sij051i76zp1ypvnj1qbwm40a7bs462c74q4jlwn";
url = "http://elpa.gnu.org/packages/math-symbol-lists-1.1.tar";
sha256 = "06klvnqipz0n9slw72fxmhrydrw6bi9fs9vnn8hrja8gsqf8inlz";
};
packageRequires = [];
meta = {
@ -1005,10 +1032,10 @@
metar = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "metar";
version = "0.1";
version = "0.2";
src = fetchurl {
url = "http://elpa.gnu.org/packages/metar-0.1.el";
sha256 = "0s9zyzps022h5xax574bwsvsyp893x5w74kznnhfm63sxrifbi18";
url = "http://elpa.gnu.org/packages/metar-0.2.el";
sha256 = "0rfzq79llh6ixw02kjpn8s2shxrabvfvsq48pagwak1jl2s0askf";
};
packageRequires = [ cl-lib ];
meta = {
@ -1215,10 +1242,10 @@
}) {};
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "org";
version = "20160215";
version = "20160229";
src = fetchurl {
url = "http://elpa.gnu.org/packages/org-20160215.tar";
sha256 = "0w2686rza4xdknq3sy87s04zvlmjxyr6wrj9y9ydcv8hbzws3bhd";
url = "http://elpa.gnu.org/packages/org-20160229.tar";
sha256 = "15zrkw33ma8q079sb518rmcj97n35rnjv16p6zfw52m9xfdwxgi9";
};
packageRequires = [];
meta = {
@ -1411,6 +1438,19 @@
license = lib.licenses.free;
};
}) {};
sed-mode = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "sed-mode";
version = "1.0";
src = fetchurl {
url = "http://elpa.gnu.org/packages/sed-mode-1.0.el";
sha256 = "1zpdai5k9zhy5hw0a5zx7qv3rcf8cn29hncfjnhk9k6sjq0302lg";
};
packageRequires = [];
meta = {
homepage = "http://elpa.gnu.org/packages/sed-mode.html";
license = lib.licenses.free;
};
}) {};
seq = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "seq";
version = "1.11";
@ -1439,10 +1479,10 @@
}) {};
sisu-mode = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "sisu-mode";
version = "3.0.3";
version = "7.1.8";
src = fetchurl {
url = "http://elpa.gnu.org/packages/sisu-mode-3.0.3.el";
sha256 = "0ay9hfix3x53f39my02071dzxrw69d4zx5zirxwmmmyxmkaays3r";
url = "http://elpa.gnu.org/packages/sisu-mode-7.1.8.el";
sha256 = "12zs6y4rzng1d7djl9wh3wc0f9fj0bqb7h754rvixvndlr5c10nj";
};
packageRequires = [];
meta = {
@ -1492,10 +1532,10 @@
}) {};
sotlisp = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
pname = "sotlisp";
version = "1.4.1";
version = "1.5.1";
src = fetchurl {
url = "http://elpa.gnu.org/packages/sotlisp-1.4.1.el";
sha256 = "1v99pcj5lp1xxavghwv03apwpc589y7wb8vv6w3kai7483p13z5j";
url = "http://elpa.gnu.org/packages/sotlisp-1.5.1.el";
sha256 = "1dm2pl4i091gi5lljl68s6v3l3904jj38v56qjblm160wjiahgkm";
};
packageRequires = [ emacs ];
meta = {
@ -1518,10 +1558,10 @@
}) {};
stream = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
pname = "stream";
version = "2.1.0";
version = "2.2.0";
src = fetchurl {
url = "http://elpa.gnu.org/packages/stream-2.1.0.el";
sha256 = "05fihjd8gm5w4xbdcvah1g9srcgmk87ymk3i7wwa6961w5s01d5y";
url = "http://elpa.gnu.org/packages/stream-2.2.0.el";
sha256 = "0i6vwih61a0z0q05v9wyp9nj5h68snlb9n52nmrv1k0hhzsjmlrs";
};
packageRequires = [ emacs ];
meta = {
@ -1598,10 +1638,10 @@
test-simple = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "test-simple";
version = "1.1";
version = "1.2.0";
src = fetchurl {
url = "http://elpa.gnu.org/packages/test-simple-1.1.el";
sha256 = "0s8r6kr0a6n1c20fraif2ngis436a7d3gsj351s6icx6bbcjdalw";
url = "http://elpa.gnu.org/packages/test-simple-1.2.0.el";
sha256 = "1j97qrwi3i2kihszsxf3y2cby2bzp8g0zf6jlpdix3dinav8xa3b";
};
packageRequires = [ cl-lib ];
meta = {
@ -1704,10 +1744,10 @@
url-http-ntlm = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib, ntlm ? null }:
elpaBuild {
pname = "url-http-ntlm";
version = "2.0.1";
version = "2.0.2";
src = fetchurl {
url = "http://elpa.gnu.org/packages/url-http-ntlm-2.0.1.tar";
sha256 = "0h6xsm1x7v69kb4shyvv1p4f6sxgcqs5ap6ylqydz10mbcx7aq0w";
url = "http://elpa.gnu.org/packages/url-http-ntlm-2.0.2.el";
sha256 = "0jci5cl31hw4dj0j9ljq0iplg530wnwbw7b63crrwn3mza5cb2wf";
};
packageRequires = [ cl-lib ntlm ];
meta = {
@ -1849,10 +1889,10 @@
xelb = callPackage ({ cl-generic, elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "xelb";
version = "0.5";
version = "0.6";
src = fetchurl {
url = "http://elpa.gnu.org/packages/xelb-0.5.tar";
sha256 = "1wypffg492r2a3h136c6mphsbgimxcipsarm971z56kpy3lwi4sb";
url = "http://elpa.gnu.org/packages/xelb-0.6.tar";
sha256 = "1m91af5srxq8zs9w4gb44kl4bgka8fq7k33h7f2yn213h23kvvvh";
};
packageRequires = [ cl-generic emacs ];
meta = {