From b322cad42bc4040b76c7e82490947aef5ac9b734 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Sat, 23 Dec 2017 17:25:19 +0100 Subject: [PATCH] nixos/rootston: Init Probably only relevant for a quick testing setup and NixOS VM tests. --- nixos/modules/module-list.nix | 1 + nixos/modules/programs/rootston.nix | 88 +++++++++++++++++++ .../development/libraries/wlroots/default.nix | 2 + 3 files changed, 91 insertions(+) create mode 100644 nixos/modules/programs/rootston.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 942a7371e88f..629c8c1bc5bb 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -91,6 +91,7 @@ ./programs/npm.nix ./programs/oblogout.nix ./programs/qt5ct.nix + ./programs/rootston.nix ./programs/screen.nix ./programs/slock.nix ./programs/shadow.nix diff --git a/nixos/modules/programs/rootston.nix b/nixos/modules/programs/rootston.nix new file mode 100644 index 000000000000..a8fe2b22be57 --- /dev/null +++ b/nixos/modules/programs/rootston.nix @@ -0,0 +1,88 @@ +{ config, pkgs, lib, ... }: + +with lib; + +let + cfg = config.programs.rootston; + + rootstonWrapped = pkgs.writeScriptBin "rootston" '' + #! ${pkgs.stdenv.shell} + if [[ "$#" -ge 1 ]]; then + exec ${pkgs.rootston}/bin/rootston "$@" + else + exec ${pkgs.rootston}/bin/rootston -C ${cfg.configFile} + fi + ''; +in { + options.programs.rootston = { + enable = mkEnableOption '' + rootston, the reference compositor for wlroots. The purpose of rootston + is to test and demonstrate the features of wlroots (if you want a real + Wayland compositor you should e.g. use Sway instead). You can manually + start the compositor by running "rootston" from a terminal''; + + extraPackages = mkOption { + type = with types; listOf package; + default = with pkgs; [ + xwayland rxvt_unicode dmenu + ]; + defaultText = literalExample '' + with pkgs; [ + xwayland dmenu rxvt_unicode + ] + ''; + example = literalExample "[ ]"; + description = '' + Extra packages to be installed system wide. + ''; + }; + + config = mkOption { + type = types.str; + default = '' + [keyboard] + meta-key = Logo + + # Sway/i3 like Keybindings + # Maps key combinations with commands to execute + # Commands include: + # - "exit" to stop the compositor + # - "exec" to execute a shell command + # - "close" to close the current view + # - "next_window" to cycle through windows + [bindings] + Logo+Shift+e = exit + Logo+q = close + Logo+m = maximize + Alt+Tab = next_window + Logo+Return = exec urxvt + # Note: Dmenu will only work properly while e.g. urxvt is running. + Logo+d = exec dmenu_run + ''; + description = '' + Default configuration for rootston (used when called without any + parameters). + ''; + }; + + configFile = mkOption { + type = types.path; + default = "/etc/rootston.ini"; + example = literalExample "${pkgs.rootston}/etc/rootston.ini"; + description = '' + Path to the default rootston configuration file (the "config" option + will have no effect if you change the path). + ''; + }; + }; + + config = mkIf cfg.enable { + environment.etc."rootston.ini".text = cfg.config; + environment.systemPackages = [ rootstonWrapped ] ++ cfg.extraPackages; + + hardware.opengl.enable = mkDefault true; + fonts.enableDefaultFonts = mkDefault true; + }; + + meta.maintainers = with lib.maintainers; [ primeos ]; +} diff --git a/pkgs/development/libraries/wlroots/default.nix b/pkgs/development/libraries/wlroots/default.nix index 8db3c466522c..c32f0a3b9384 100644 --- a/pkgs/development/libraries/wlroots/default.nix +++ b/pkgs/development/libraries/wlroots/default.nix @@ -35,6 +35,8 @@ in stdenv.mkDerivation rec { mkdir $bin/lib cp libwlroots.so $bin/lib/ patchelf --set-rpath "$bin/lib:${stdenv.lib.makeLibraryPath buildInputs}" $bin/bin/rootston + mkdir $bin/etc + cp ../rootston/rootston.ini.example $bin/etc/rootston.ini ''; meta = with stdenv.lib; {