uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
37
nixos/modules/services/x11/window-managers/2bwm.nix
Normal file
37
nixos/modules/services/x11/window-managers/2bwm.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.xserver.windowManager."2bwm";
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
services.xserver.windowManager."2bwm".enable = mkEnableOption "2bwm";
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.xserver.windowManager.session = singleton
|
||||
{ name = "2bwm";
|
||||
start =
|
||||
''
|
||||
${pkgs._2bwm}/bin/2bwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs._2bwm ];
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/afterstep.nix
Normal file
25
nixos/modules/services/x11/window-managers/afterstep.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.afterstep;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.afterstep.enable = mkEnableOption "afterstep";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "afterstep";
|
||||
start = ''
|
||||
${pkgs.afterstep}/bin/afterstep &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.afterstep ];
|
||||
};
|
||||
}
|
||||
66
nixos/modules/services/x11/window-managers/awesome.nix
Normal file
66
nixos/modules/services/x11/window-managers/awesome.nix
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.xserver.windowManager.awesome;
|
||||
awesome = cfg.package;
|
||||
getLuaPath = lib : dir : "${lib}/${dir}/lua/${pkgs.luaPackages.lua.luaversion}";
|
||||
makeSearchPath = lib.concatMapStrings (path:
|
||||
" --search " + (getLuaPath path "share") +
|
||||
" --search " + (getLuaPath path "lib")
|
||||
);
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.xserver.windowManager.awesome = {
|
||||
|
||||
enable = mkEnableOption "Awesome window manager";
|
||||
|
||||
luaModules = mkOption {
|
||||
default = [];
|
||||
type = types.listOf types.package;
|
||||
description = "List of lua packages available for being used in the Awesome configuration.";
|
||||
example = literalExpression "[ pkgs.luaPackages.vicious ]";
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
default = null;
|
||||
type = types.nullOr types.package;
|
||||
description = "Package to use for running the Awesome WM.";
|
||||
apply = pkg: if pkg == null then pkgs.awesome else pkg;
|
||||
};
|
||||
|
||||
noArgb = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = "Disable client transparency support, which can be greatly detrimental to performance in some setups";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.xserver.windowManager.session = singleton
|
||||
{ name = "awesome";
|
||||
start =
|
||||
''
|
||||
${awesome}/bin/awesome ${lib.optionalString cfg.noArgb "--no-argb"} ${makeSearchPath cfg.luaModules} &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ awesome ];
|
||||
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/berry.nix
Normal file
25
nixos/modules/services/x11/window-managers/berry.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.berry;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.berry.enable = mkEnableOption "berry";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "berry";
|
||||
start = ''
|
||||
${pkgs.berry}/bin/berry &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.berry ];
|
||||
};
|
||||
}
|
||||
77
nixos/modules/services/x11/window-managers/bspwm.nix
Normal file
77
nixos/modules/services/x11/window-managers/bspwm.nix
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.bspwm;
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.bspwm = {
|
||||
enable = mkEnableOption "bspwm";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.bspwm;
|
||||
defaultText = literalExpression "pkgs.bspwm";
|
||||
example = literalExpression "pkgs.bspwm-unstable";
|
||||
description = ''
|
||||
bspwm package to use.
|
||||
'';
|
||||
};
|
||||
configFile = mkOption {
|
||||
type = with types; nullOr path;
|
||||
example = literalExpression ''"''${pkgs.bspwm}/share/doc/bspwm/examples/bspwmrc"'';
|
||||
default = null;
|
||||
description = ''
|
||||
Path to the bspwm configuration file.
|
||||
If null, $HOME/.config/bspwm/bspwmrc will be used.
|
||||
'';
|
||||
};
|
||||
|
||||
sxhkd = {
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.sxhkd;
|
||||
defaultText = literalExpression "pkgs.sxhkd";
|
||||
example = literalExpression "pkgs.sxhkd-unstable";
|
||||
description = ''
|
||||
sxhkd package to use.
|
||||
'';
|
||||
};
|
||||
configFile = mkOption {
|
||||
type = with types; nullOr path;
|
||||
example = literalExpression ''"''${pkgs.bspwm}/share/doc/bspwm/examples/sxhkdrc"'';
|
||||
default = null;
|
||||
description = ''
|
||||
Path to the sxhkd configuration file.
|
||||
If null, $HOME/.config/sxhkd/sxhkdrc will be used.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "bspwm";
|
||||
start = ''
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
SXHKD_SHELL=/bin/sh ${cfg.sxhkd.package}/bin/sxhkd ${optionalString (cfg.sxhkd.configFile != null) "-c \"${cfg.sxhkd.configFile}\""} &
|
||||
${cfg.package}/bin/bspwm ${optionalString (cfg.configFile != null) "-c \"${cfg.configFile}\""} &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "xserver" "windowManager" "bspwm-unstable" "enable" ]
|
||||
"Use services.xserver.windowManager.bspwm.enable and set services.xserver.windowManager.bspwm.package to pkgs.bspwm-unstable to use the unstable version of bspwm.")
|
||||
(mkRemovedOptionModule [ "services" "xserver" "windowManager" "bspwm" "startThroughSession" ]
|
||||
"bspwm package does not provide bspwm-session anymore.")
|
||||
(mkRemovedOptionModule [ "services" "xserver" "windowManager" "bspwm" "sessionScript" ]
|
||||
"bspwm package does not provide bspwm-session anymore.")
|
||||
];
|
||||
}
|
||||
34
nixos/modules/services/x11/window-managers/clfswm.nix
Normal file
34
nixos/modules/services/x11/window-managers/clfswm.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.clfswm;
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.clfswm = {
|
||||
enable = mkEnableOption "clfswm";
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.lispPackages.clfswm;
|
||||
defaultText = literalExpression "pkgs.lispPackages.clfswm";
|
||||
description = ''
|
||||
clfswm package to use.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "clfswm";
|
||||
start = ''
|
||||
${cfg.package}/bin/clfswm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
};
|
||||
}
|
||||
23
nixos/modules/services/x11/window-managers/cwm.nix
Normal file
23
nixos/modules/services/x11/window-managers/cwm.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.cwm;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.cwm.enable = mkEnableOption "cwm";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton
|
||||
{ name = "cwm";
|
||||
start =
|
||||
''
|
||||
cwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.cwm ];
|
||||
};
|
||||
}
|
||||
88
nixos/modules/services/x11/window-managers/default.nix
Normal file
88
nixos/modules/services/x11/window-managers/default.nix
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager;
|
||||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
./2bwm.nix
|
||||
./afterstep.nix
|
||||
./berry.nix
|
||||
./bspwm.nix
|
||||
./cwm.nix
|
||||
./clfswm.nix
|
||||
./dwm.nix
|
||||
./e16.nix
|
||||
./evilwm.nix
|
||||
./exwm.nix
|
||||
./fluxbox.nix
|
||||
./fvwm.nix
|
||||
./herbstluftwm.nix
|
||||
./i3.nix
|
||||
./jwm.nix
|
||||
./leftwm.nix
|
||||
./lwm.nix
|
||||
./metacity.nix
|
||||
./mlvwm.nix
|
||||
./mwm.nix
|
||||
./openbox.nix
|
||||
./pekwm.nix
|
||||
./notion.nix
|
||||
./ratpoison.nix
|
||||
./sawfish.nix
|
||||
./smallwm.nix
|
||||
./stumpwm.nix
|
||||
./spectrwm.nix
|
||||
./tinywm.nix
|
||||
./twm.nix
|
||||
./windowmaker.nix
|
||||
./wmderland.nix
|
||||
./wmii.nix
|
||||
./xmonad.nix
|
||||
./yeahwm.nix
|
||||
./qtile.nix
|
||||
./none.nix ];
|
||||
|
||||
options = {
|
||||
|
||||
services.xserver.windowManager = {
|
||||
|
||||
session = mkOption {
|
||||
internal = true;
|
||||
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 {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "wmii";
|
||||
description = ''
|
||||
<emphasis role="strong">Deprecated</emphasis>, please use <xref linkend="opt-services.xserver.displayManager.defaultSession"/> instead.
|
||||
|
||||
Default window manager loaded if none have been chosen.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = {
|
||||
services.xserver.displayManager.session = cfg.session;
|
||||
};
|
||||
}
|
||||
37
nixos/modules/services/x11/window-managers/dwm.nix
Normal file
37
nixos/modules/services/x11/window-managers/dwm.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.xserver.windowManager.dwm;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
services.xserver.windowManager.dwm.enable = mkEnableOption "dwm";
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.xserver.windowManager.session = singleton
|
||||
{ name = "dwm";
|
||||
start =
|
||||
''
|
||||
dwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.dwm ];
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
26
nixos/modules/services/x11/window-managers/e16.nix
Normal file
26
nixos/modules/services/x11/window-managers/e16.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{ config , lib , pkgs , ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.e16;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.e16.enable = mkEnableOption "e16";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "E16";
|
||||
start = ''
|
||||
${pkgs.e16}/bin/e16 &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.e16 ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/evilwm.nix
Normal file
25
nixos/modules/services/x11/window-managers/evilwm.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.evilwm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.evilwm.enable = mkEnableOption "evilwm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "evilwm";
|
||||
start = ''
|
||||
${pkgs.evilwm}/bin/evilwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.evilwm ];
|
||||
};
|
||||
}
|
||||
69
nixos/modules/services/x11/window-managers/exwm.nix
Normal file
69
nixos/modules/services/x11/window-managers/exwm.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.exwm;
|
||||
loadScript = pkgs.writeText "emacs-exwm-load" ''
|
||||
${cfg.loadScript}
|
||||
${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";
|
||||
loadScript = mkOption {
|
||||
default = "(require 'exwm)";
|
||||
type = types.lines;
|
||||
example = ''
|
||||
(require 'exwm)
|
||||
(exwm-enable)
|
||||
'';
|
||||
description = ''
|
||||
Emacs lisp code to be run after loading the user's init
|
||||
file. If enableDefaultConfig is true, this will be run
|
||||
before loading the default config.
|
||||
'';
|
||||
};
|
||||
enableDefaultConfig = mkOption {
|
||||
default = true;
|
||||
type = lib.types.bool;
|
||||
description = "Enable an uncustomised exwm configuration.";
|
||||
};
|
||||
extraPackages = mkOption {
|
||||
type = types.functionTo (types.listOf types.package);
|
||||
default = epkgs: [];
|
||||
defaultText = literalExpression "epkgs: []";
|
||||
example = literalExpression ''
|
||||
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>emacs.pkgs</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 ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/fluxbox.nix
Normal file
25
nixos/modules/services/x11/window-managers/fluxbox.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.fluxbox;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.fluxbox.enable = mkEnableOption "fluxbox";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "fluxbox";
|
||||
start = ''
|
||||
${pkgs.fluxbox}/bin/startfluxbox &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.fluxbox ];
|
||||
};
|
||||
}
|
||||
41
nixos/modules/services/x11/window-managers/fvwm.nix
Normal file
41
nixos/modules/services/x11/window-managers/fvwm.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.fvwm;
|
||||
fvwm = pkgs.fvwm.override { enableGestures = cfg.gestures; };
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
services.xserver.windowManager.fvwm = {
|
||||
enable = mkEnableOption "Fvwm window manager";
|
||||
|
||||
gestures = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = "Whether or not to enable libstroke for gesture support";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton
|
||||
{ name = "fvwm";
|
||||
start =
|
||||
''
|
||||
${fvwm}/bin/fvwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ fvwm ];
|
||||
};
|
||||
}
|
||||
47
nixos/modules/services/x11/window-managers/herbstluftwm.nix
Normal file
47
nixos/modules/services/x11/window-managers/herbstluftwm.nix
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.herbstluftwm;
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.herbstluftwm = {
|
||||
enable = mkEnableOption "herbstluftwm";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.herbstluftwm;
|
||||
defaultText = literalExpression "pkgs.herbstluftwm";
|
||||
description = ''
|
||||
Herbstluftwm package to use.
|
||||
'';
|
||||
};
|
||||
|
||||
configFile = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr path;
|
||||
description = ''
|
||||
Path to the herbstluftwm configuration file. If left at the
|
||||
default value, $XDG_CONFIG_HOME/herbstluftwm/autostart will
|
||||
be used.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "herbstluftwm";
|
||||
start =
|
||||
let configFileClause = optionalString
|
||||
(cfg.configFile != null)
|
||||
''-c "${cfg.configFile}"''
|
||||
;
|
||||
in "${cfg.package}/bin/herbstluftwm ${configFileClause}";
|
||||
};
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
};
|
||||
}
|
||||
78
nixos/modules/services/x11/window-managers/i3.nix
Normal file
78
nixos/modules/services/x11/window-managers/i3.nix
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.i3;
|
||||
in
|
||||
|
||||
{
|
||||
options.services.xserver.windowManager.i3 = {
|
||||
enable = mkEnableOption "i3 window manager";
|
||||
|
||||
configFile = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr path;
|
||||
description = ''
|
||||
Path to the i3 configuration file.
|
||||
If left at the default value, $HOME/.i3/config will be used.
|
||||
'';
|
||||
};
|
||||
|
||||
extraSessionCommands = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Shell commands executed just before i3 is started.
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.i3;
|
||||
defaultText = literalExpression "pkgs.i3";
|
||||
example = literalExpression "pkgs.i3-gaps";
|
||||
description = ''
|
||||
i3 package to use.
|
||||
'';
|
||||
};
|
||||
|
||||
extraPackages = mkOption {
|
||||
type = with types; listOf package;
|
||||
default = with pkgs; [ dmenu i3status i3lock ];
|
||||
defaultText = literalExpression ''
|
||||
with pkgs; [
|
||||
dmenu
|
||||
i3status
|
||||
i3lock
|
||||
]
|
||||
'';
|
||||
description = ''
|
||||
Extra packages to be installed system wide.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = [{
|
||||
name = "i3";
|
||||
start = ''
|
||||
${cfg.extraSessionCommands}
|
||||
|
||||
${cfg.package}/bin/i3 ${optionalString (cfg.configFile != null)
|
||||
"-c /etc/i3/config"
|
||||
} &
|
||||
waitPID=$!
|
||||
'';
|
||||
}];
|
||||
environment.systemPackages = [ cfg.package ] ++ cfg.extraPackages;
|
||||
environment.etc."i3/config" = mkIf (cfg.configFile != null) {
|
||||
source = cfg.configFile;
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "xserver" "windowManager" "i3-gaps" "enable" ]
|
||||
"Use services.xserver.windowManager.i3.enable and set services.xserver.windowManager.i3.package to pkgs.i3-gaps to use i3-gaps.")
|
||||
];
|
||||
}
|
||||
27
nixos/modules/services/x11/window-managers/icewm.nix
Normal file
27
nixos/modules/services/x11/window-managers/icewm.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.icewm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.icewm.enable = mkEnableOption "icewm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton
|
||||
{ name = "icewm";
|
||||
start =
|
||||
''
|
||||
${pkgs.icewm}/bin/icewm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.icewm ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/jwm.nix
Normal file
25
nixos/modules/services/x11/window-managers/jwm.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.jwm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.jwm.enable = mkEnableOption "jwm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "jwm";
|
||||
start = ''
|
||||
${pkgs.jwm}/bin/jwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.jwm ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/leftwm.nix
Normal file
25
nixos/modules/services/x11/window-managers/leftwm.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.leftwm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.leftwm.enable = mkEnableOption "leftwm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "leftwm";
|
||||
start = ''
|
||||
${pkgs.leftwm}/bin/leftwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.leftwm ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/lwm.nix
Normal file
25
nixos/modules/services/x11/window-managers/lwm.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.lwm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.lwm.enable = mkEnableOption "lwm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "lwm";
|
||||
start = ''
|
||||
${pkgs.lwm}/bin/lwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.lwm ];
|
||||
};
|
||||
}
|
||||
30
nixos/modules/services/x11/window-managers/metacity.nix
Normal file
30
nixos/modules/services/x11/window-managers/metacity.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.xserver.windowManager.metacity;
|
||||
inherit (pkgs) gnome;
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.metacity.enable = mkEnableOption "metacity";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.xserver.windowManager.session = singleton
|
||||
{ name = "metacity";
|
||||
start = ''
|
||||
${gnome.metacity}/bin/metacity &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ gnome.metacity ];
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
41
nixos/modules/services/x11/window-managers/mlvwm.nix
Normal file
41
nixos/modules/services/x11/window-managers/mlvwm.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let cfg = config.services.xserver.windowManager.mlvwm;
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
options.services.xserver.windowManager.mlvwm = {
|
||||
enable = mkEnableOption "Macintosh-like Virtual Window Manager";
|
||||
|
||||
configFile = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr path;
|
||||
description = ''
|
||||
Path to the mlvwm configuration file.
|
||||
If left at the default value, $HOME/.mlvwmrc will be used.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.xserver.windowManager.session = [{
|
||||
name = "mlvwm";
|
||||
start = ''
|
||||
${pkgs.mlvwm}/bin/mlvwm ${optionalString (cfg.configFile != null)
|
||||
"-f /etc/mlvwm/mlvwmrc"
|
||||
} &
|
||||
waitPID=$!
|
||||
'';
|
||||
}];
|
||||
|
||||
environment.etc."mlvwm/mlvwmrc" = mkIf (cfg.configFile != null) {
|
||||
source = cfg.configFile;
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.mlvwm ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/mwm.nix
Normal file
25
nixos/modules/services/x11/window-managers/mwm.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.mwm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.mwm.enable = mkEnableOption "mwm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "mwm";
|
||||
start = ''
|
||||
${pkgs.motif}/bin/mwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.motif ];
|
||||
};
|
||||
}
|
||||
12
nixos/modules/services/x11/window-managers/none.nix
Normal file
12
nixos/modules/services/x11/window-managers/none.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
services = {
|
||||
xserver = {
|
||||
windowManager = {
|
||||
session = [{
|
||||
name = "none";
|
||||
start = "";
|
||||
}];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
26
nixos/modules/services/x11/window-managers/notion.nix
Normal file
26
nixos/modules/services/x11/window-managers/notion.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.notion;
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.notion.enable = mkEnableOption "notion";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager = {
|
||||
session = [{
|
||||
name = "notion";
|
||||
start = ''
|
||||
${pkgs.notion}/bin/notion &
|
||||
waitPID=$!
|
||||
'';
|
||||
}];
|
||||
};
|
||||
environment.systemPackages = [ pkgs.notion ];
|
||||
};
|
||||
}
|
||||
24
nixos/modules/services/x11/window-managers/openbox.nix
Normal file
24
nixos/modules/services/x11/window-managers/openbox.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{lib, pkgs, config, ...}:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.openbox;
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.openbox.enable = mkEnableOption "openbox";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager = {
|
||||
session = [{
|
||||
name = "openbox";
|
||||
start = "
|
||||
${pkgs.openbox}/bin/openbox-session
|
||||
";
|
||||
}];
|
||||
};
|
||||
environment.systemPackages = [ pkgs.openbox ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/oroborus.nix
Normal file
25
nixos/modules/services/x11/window-managers/oroborus.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.oroborus;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.oroborus.enable = mkEnableOption "oroborus";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "oroborus";
|
||||
start = ''
|
||||
${pkgs.oroborus}/bin/oroborus &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.oroborus ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/pekwm.nix
Normal file
25
nixos/modules/services/x11/window-managers/pekwm.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.pekwm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.pekwm.enable = mkEnableOption "pekwm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "pekwm";
|
||||
start = ''
|
||||
${pkgs.pekwm}/bin/pekwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.pekwm ];
|
||||
};
|
||||
}
|
||||
32
nixos/modules/services/x11/window-managers/qtile.nix
Normal file
32
nixos/modules/services/x11/window-managers/qtile.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.qtile;
|
||||
in
|
||||
|
||||
{
|
||||
options.services.xserver.windowManager.qtile = {
|
||||
enable = mkEnableOption "qtile";
|
||||
|
||||
package = mkPackageOption pkgs "qtile" { };
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = [{
|
||||
name = "qtile";
|
||||
start = ''
|
||||
${cfg.package}/bin/qtile start &
|
||||
waitPID=$!
|
||||
'';
|
||||
}];
|
||||
|
||||
environment.systemPackages = [
|
||||
# pkgs.qtile is currently a buildenv of qtile and its dependencies.
|
||||
# For userland commands, we want the underlying package so that
|
||||
# packages such as python don't bleed into userland and overwrite intended behavior.
|
||||
(cfg.package.unwrapped or cfg.package)
|
||||
];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/ratpoison.nix
Normal file
25
nixos/modules/services/x11/window-managers/ratpoison.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.ratpoison;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.ratpoison.enable = mkEnableOption "ratpoison";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "ratpoison";
|
||||
start = ''
|
||||
${pkgs.ratpoison}/bin/ratpoison &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.ratpoison ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/sawfish.nix
Normal file
25
nixos/modules/services/x11/window-managers/sawfish.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.sawfish;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.sawfish.enable = mkEnableOption "sawfish";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "sawfish";
|
||||
start = ''
|
||||
${pkgs.sawfish}/bin/sawfish &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.sawfish ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/smallwm.nix
Normal file
25
nixos/modules/services/x11/window-managers/smallwm.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.smallwm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.smallwm.enable = mkEnableOption "smallwm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "smallwm";
|
||||
start = ''
|
||||
${pkgs.smallwm}/bin/smallwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.smallwm ];
|
||||
};
|
||||
}
|
||||
27
nixos/modules/services/x11/window-managers/spectrwm.nix
Normal file
27
nixos/modules/services/x11/window-managers/spectrwm.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.spectrwm;
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.spectrwm.enable = mkEnableOption "spectrwm";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager = {
|
||||
session = [{
|
||||
name = "spectrwm";
|
||||
start = ''
|
||||
${pkgs.spectrwm}/bin/spectrwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
}];
|
||||
};
|
||||
environment.systemPackages = [ pkgs.spectrwm ];
|
||||
};
|
||||
}
|
||||
24
nixos/modules/services/x11/window-managers/stumpwm.nix
Normal file
24
nixos/modules/services/x11/window-managers/stumpwm.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.stumpwm;
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.stumpwm.enable = mkEnableOption "stumpwm";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "stumpwm";
|
||||
start = ''
|
||||
${pkgs.lispPackages.stumpwm}/bin/stumpwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.lispPackages.stumpwm ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/tinywm.nix
Normal file
25
nixos/modules/services/x11/window-managers/tinywm.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.tinywm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.tinywm.enable = mkEnableOption "tinywm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "tinywm";
|
||||
start = ''
|
||||
${pkgs.tinywm}/bin/tinywm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.tinywm ];
|
||||
};
|
||||
}
|
||||
37
nixos/modules/services/x11/window-managers/twm.nix
Normal file
37
nixos/modules/services/x11/window-managers/twm.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.xserver.windowManager.twm;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
services.xserver.windowManager.twm.enable = mkEnableOption "twm";
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.xserver.windowManager.session = singleton
|
||||
{ name = "twm";
|
||||
start =
|
||||
''
|
||||
${pkgs.xorg.twm}/bin/twm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.xorg.twm ];
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
22
nixos/modules/services/x11/window-managers/windowlab.nix
Normal file
22
nixos/modules/services/x11/window-managers/windowlab.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{lib, pkgs, config, ...}:
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.windowlab;
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.windowlab.enable =
|
||||
lib.mkEnableOption "windowlab";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.xserver.windowManager = {
|
||||
session =
|
||||
[{ name = "windowlab";
|
||||
start = "${pkgs.windowlab}/bin/windowlab";
|
||||
}];
|
||||
};
|
||||
environment.systemPackages = [ pkgs.windowlab ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/windowmaker.nix
Normal file
25
nixos/modules/services/x11/window-managers/windowmaker.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.windowmaker;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.windowmaker.enable = mkEnableOption "windowmaker";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "windowmaker";
|
||||
start = ''
|
||||
${pkgs.windowmaker}/bin/wmaker &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.windowmaker ];
|
||||
};
|
||||
}
|
||||
61
nixos/modules/services/x11/window-managers/wmderland.nix
Normal file
61
nixos/modules/services/x11/window-managers/wmderland.nix
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.wmderland;
|
||||
in
|
||||
|
||||
{
|
||||
options.services.xserver.windowManager.wmderland = {
|
||||
enable = mkEnableOption "wmderland";
|
||||
|
||||
extraSessionCommands = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Shell commands executed just before wmderland is started.
|
||||
'';
|
||||
};
|
||||
|
||||
extraPackages = mkOption {
|
||||
type = with types; listOf package;
|
||||
default = with pkgs; [
|
||||
rofi
|
||||
dunst
|
||||
light
|
||||
hsetroot
|
||||
feh
|
||||
rxvt-unicode
|
||||
];
|
||||
defaultText = literalExpression ''
|
||||
with pkgs; [
|
||||
rofi
|
||||
dunst
|
||||
light
|
||||
hsetroot
|
||||
feh
|
||||
rxvt-unicode
|
||||
]
|
||||
'';
|
||||
description = ''
|
||||
Extra packages to be installed system wide.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "wmderland";
|
||||
start = ''
|
||||
${cfg.extraSessionCommands}
|
||||
|
||||
${pkgs.wmderland}/bin/wmderland &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [
|
||||
pkgs.wmderland pkgs.wmderlandc
|
||||
] ++ cfg.extraPackages;
|
||||
};
|
||||
}
|
||||
39
nixos/modules/services/x11/window-managers/wmii.nix
Normal file
39
nixos/modules/services/x11/window-managers/wmii.nix
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.wmii;
|
||||
wmii = pkgs.wmii_hg;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.xserver.windowManager.wmii.enable = mkEnableOption "wmii";
|
||||
};
|
||||
|
||||
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
|
||||
# (or "mod+a quit", which is bound to do the same thing in wmiirc
|
||||
# by default)
|
||||
#
|
||||
# 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
|
||||
${wmii}/bin/wmii && break
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [ wmii ];
|
||||
};
|
||||
}
|
||||
204
nixos/modules/services/x11/window-managers/xmonad.nix
Normal file
204
nixos/modules/services/x11/window-managers/xmonad.nix
Normal file
|
|
@ -0,0 +1,204 @@
|
|||
{pkgs, lib, config, ...}:
|
||||
|
||||
with lib;
|
||||
let
|
||||
inherit (lib) mkOption mkIf optionals literalExpression optionalString;
|
||||
cfg = config.services.xserver.windowManager.xmonad;
|
||||
|
||||
ghcWithPackages = cfg.haskellPackages.ghcWithPackages;
|
||||
packages = self: cfg.extraPackages self ++
|
||||
optionals cfg.enableContribAndExtras
|
||||
[ self.xmonad-contrib self.xmonad-extras ];
|
||||
|
||||
xmonad-vanilla = pkgs.xmonad-with-packages.override {
|
||||
inherit ghcWithPackages packages;
|
||||
};
|
||||
|
||||
xmonad-config =
|
||||
let
|
||||
xmonadAndPackages = self: [ self.xmonad ] ++ packages self;
|
||||
xmonadEnv = ghcWithPackages xmonadAndPackages;
|
||||
configured = pkgs.writers.writeHaskellBin "xmonad" {
|
||||
ghc = cfg.haskellPackages.ghc;
|
||||
libraries = xmonadAndPackages cfg.haskellPackages;
|
||||
inherit (cfg) ghcArgs;
|
||||
} cfg.config;
|
||||
in
|
||||
pkgs.runCommandLocal "xmonad" {
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
} (''
|
||||
install -D ${xmonadEnv}/share/man/man1/xmonad.1.gz $out/share/man/man1/xmonad.1.gz
|
||||
makeWrapper ${configured}/bin/xmonad $out/bin/xmonad \
|
||||
'' + optionalString cfg.enableConfiguredRecompile ''
|
||||
--set NIX_GHC "${xmonadEnv}/bin/ghc" \
|
||||
'' + ''
|
||||
--set XMONAD_XMESSAGE "${pkgs.xorg.xmessage}/bin/xmessage"
|
||||
'');
|
||||
|
||||
xmonad = if (cfg.config != null) then xmonad-config else xmonad-vanilla;
|
||||
in {
|
||||
meta.maintainers = with maintainers; [ lassulus xaverdh ivanbrennan ];
|
||||
|
||||
options = {
|
||||
services.xserver.windowManager.xmonad = {
|
||||
enable = mkEnableOption "xmonad";
|
||||
|
||||
haskellPackages = mkOption {
|
||||
default = pkgs.haskellPackages;
|
||||
defaultText = literalExpression "pkgs.haskellPackages";
|
||||
example = literalExpression "pkgs.haskell.packages.ghc784";
|
||||
type = types.attrs;
|
||||
description = ''
|
||||
haskellPackages used to build Xmonad and other packages.
|
||||
This can be used to change the GHC version used to build
|
||||
Xmonad and the packages listed in
|
||||
<varname>extraPackages</varname>.
|
||||
'';
|
||||
};
|
||||
|
||||
extraPackages = mkOption {
|
||||
type = types.functionTo (types.listOf types.package);
|
||||
default = self: [];
|
||||
defaultText = literalExpression "self: []";
|
||||
example = literalExpression ''
|
||||
haskellPackages: [
|
||||
haskellPackages.xmonad-contrib
|
||||
haskellPackages.monad-logger
|
||||
]
|
||||
'';
|
||||
description = ''
|
||||
Extra packages available to ghc when rebuilding Xmonad. The
|
||||
value must be a function which receives the attrset defined
|
||||
in <varname>haskellPackages</varname> as the sole argument.
|
||||
'';
|
||||
};
|
||||
|
||||
enableContribAndExtras = mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
description = "Enable xmonad-{contrib,extras} in Xmonad.";
|
||||
};
|
||||
|
||||
config = mkOption {
|
||||
default = null;
|
||||
type = with lib.types; nullOr (either path str);
|
||||
description = ''
|
||||
Configuration from which XMonad gets compiled. If no value is
|
||||
specified, a vanilla xmonad binary is put in PATH, which will
|
||||
attempt to recompile and exec your xmonad config from $HOME/.xmonad.
|
||||
This setup is then analogous to other (non-NixOS) linux distributions.
|
||||
|
||||
If you do set this option, you likely want to use "launch" as your
|
||||
entry point for xmonad (as in the example), to avoid xmonad's
|
||||
recompilation logic on startup. Doing so will render the default
|
||||
"mod+q" restart key binding dysfunctional though, because that attempts
|
||||
to call your binary with the "--restart" command line option, unless
|
||||
you implement that yourself. You way mant to bind "mod+q" to
|
||||
<literal>(restart "xmonad" True)</literal> instead, which will just restart
|
||||
xmonad from PATH. This allows e.g. switching to the new xmonad binary
|
||||
after rebuilding your system with nixos-rebuild.
|
||||
For the same reason, ghc is not added to the environment when this
|
||||
option is set, unless <option>enableConfiguredRecompile</option> is
|
||||
set to <literal>true</literal>.
|
||||
|
||||
If you actually want to run xmonad with a config specified here, but
|
||||
also be able to recompile and restart it from a copy of that source in
|
||||
$HOME/.xmonad on the fly, set <option>enableConfiguredRecompile</option>
|
||||
to <literal>true</literal> and implement something like "compileRestart"
|
||||
from the example.
|
||||
This should allow you to switch at will between the local xmonad and
|
||||
the one NixOS puts in your PATH.
|
||||
'';
|
||||
example = ''
|
||||
import XMonad
|
||||
import XMonad.Util.EZConfig (additionalKeys)
|
||||
import Control.Monad (when)
|
||||
import Text.Printf (printf)
|
||||
import System.Posix.Process (executeFile)
|
||||
import System.Info (arch,os)
|
||||
import System.Environment (getArgs)
|
||||
import System.FilePath ((</>))
|
||||
|
||||
compiledConfig = printf "xmonad-%s-%s" arch os
|
||||
|
||||
myConfig = defaultConfig
|
||||
{ modMask = mod4Mask -- Use Super instead of Alt
|
||||
, terminal = "urxvt" }
|
||||
`additionalKeys`
|
||||
[ ( (mod4Mask,xK_r), compileRestart True)
|
||||
, ( (mod4Mask,xK_q), restart "xmonad" True ) ]
|
||||
|
||||
compileRestart resume = do
|
||||
dirs <- asks directories
|
||||
whenX (recompile dirs True) $ do
|
||||
when resume writeStateToFile
|
||||
catchIO
|
||||
( do
|
||||
args <- getArgs
|
||||
executeFile (cacheDir dirs </> compiledConfig) False args Nothing
|
||||
)
|
||||
|
||||
main = getDirectories >>= launch myConfig
|
||||
|
||||
--------------------------------------------
|
||||
{- For versions before 0.17.0 use this instead -}
|
||||
--------------------------------------------
|
||||
-- compileRestart resume =
|
||||
-- whenX (recompile True) $
|
||||
-- when resume writeStateToFile
|
||||
-- *> catchIO
|
||||
-- ( do
|
||||
-- dir <- getXMonadDataDir
|
||||
-- args <- getArgs
|
||||
-- executeFile (dir </> compiledConfig) False args Nothing
|
||||
-- )
|
||||
--
|
||||
-- main = launch myConfig
|
||||
--------------------------------------------
|
||||
|
||||
'';
|
||||
};
|
||||
|
||||
enableConfiguredRecompile = mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Enable recompilation even if <option>config</option> is set to a
|
||||
non-null value. This adds the necessary Haskell dependencies (GHC with
|
||||
packages) to the xmonad binary's environment.
|
||||
'';
|
||||
};
|
||||
|
||||
xmonadCliArgs = mkOption {
|
||||
default = [];
|
||||
type = with lib.types; listOf str;
|
||||
description = ''
|
||||
Command line arguments passed to the xmonad binary.
|
||||
'';
|
||||
};
|
||||
|
||||
ghcArgs = mkOption {
|
||||
default = [];
|
||||
type = with lib.types; listOf str;
|
||||
description = ''
|
||||
Command line arguments passed to the compiler (ghc)
|
||||
invocation when xmonad.config is set.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager = {
|
||||
session = [{
|
||||
name = "xmonad";
|
||||
start = ''
|
||||
systemd-cat -t xmonad -- ${xmonad}/bin/xmonad ${lib.escapeShellArgs cfg.xmonadCliArgs} &
|
||||
waitPID=$!
|
||||
'';
|
||||
}];
|
||||
};
|
||||
|
||||
environment.systemPackages = [ xmonad ];
|
||||
};
|
||||
}
|
||||
25
nixos/modules/services/x11/window-managers/yeahwm.nix
Normal file
25
nixos/modules/services/x11/window-managers/yeahwm.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.yeahwm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.yeahwm.enable = mkEnableOption "yeahwm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "yeahwm";
|
||||
start = ''
|
||||
${pkgs.yeahwm}/bin/yeahwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.yeahwm ];
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue