sway: validate configuration at build time

PR #1579
This commit is contained in:
Nicolas Berbiche 2020-11-15 17:58:54 -05:00 committed by Robert Helgesson
parent 964f698095
commit 99b75f99df
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
6 changed files with 23 additions and 11 deletions

View file

@ -290,6 +290,21 @@ let
'' else
"") + cfg.extraConfig);
# Validates the Sway configuration
checkSwayConfig =
pkgs.runCommandLocal "sway-config" { buildInputs = [ cfg.package ]; } ''
# We have to make sure the wrapper does not start a dbus session
export DBUS_SESSION_BUS_ADDRESS=1
# A zero exit code means Sway succesfully validated the configuration
sway --config ${configFile} --validate --debug || {
echo "Sway configuration validation failed"
echo "For a verbose log of the failure, run 'sway --config ${configFile} --validate --debug'"
exit 1
};
cp ${configFile} $out
'';
defaultSwayPackage = pkgs.sway.override {
extraSessionCommands = cfg.extraSessionCommands;
extraOptions = cfg.extraOptions;
@ -394,7 +409,7 @@ in {
home.packages = optional (cfg.package != null) cfg.package
++ optional cfg.xwayland pkgs.xwayland;
xdg.configFile."sway/config" = {
source = configFile;
source = checkSwayConfig;
onChange = ''
swaySocket=''${XDG_RUNTIME_DIR:-/run/user/$UID}/sway-ipc.$UID.$(${pkgs.procps}/bin/pgrep -x sway || ${pkgs.coreutils}/bin/true).sock
if [ -S $swaySocket ]; then

View file

@ -92,7 +92,7 @@ bar {
hidden_state hide
position bottom
status_command @i3status@/bin/i3status
swaybar_command @sway/bin/swaybar
swaybar_command @sway@/bin/swaybar
workspace_buttons yes
strip_workspace_numbers no
tray_output primary

View file

@ -10,7 +10,8 @@ in {
config = {
wayland.windowManager.sway = {
enable = true;
package = dummy-package // { outPath = "@sway"; };
package = pkgs.writeScriptBin "sway" "" // { outPath = "@sway@"; };
# overriding findutils causes issues
config.menu = "${pkgs.dmenu}/bin/dmenu_run";
};

View file

@ -10,7 +10,7 @@ in {
config = {
wayland.windowManager.sway = {
enable = true;
package = dummy-package // { outPath = "@sway"; };
package = pkgs.writeScriptBin "sway" "";
config = {
focus.followMouse = false;
@ -26,10 +26,6 @@ in {
outPath = "@rxvt-unicode-unwrapped@";
};
sway = dummy-package // { outPath = "@sway@"; };
sway-unwrapped = dummy-package // {
outPath = "@sway-unwrapped@";
version = "1";
};
swaybg = dummy-package // { outPath = "@swaybg@"; };
xwayland = dummy-package // { outPath = "@xwayland@"; };
})

View file

@ -10,7 +10,7 @@ in {
config = {
wayland.windowManager.sway = {
enable = true;
package = dummy-package // { outPath = "@sway"; };
package = pkgs.writeScriptBin "sway" "" // { outPath = "@sway@"; };
config = {
focus.followMouse = "always";
@ -26,7 +26,6 @@ in {
outPath = "@rxvt-unicode-unwrapped@";
};
sway = dummy-package // { outPath = "@sway@"; };
sway-unwrapped = dummy-package // { version = "1"; };
swaybg = dummy-package // { outPath = "@swaybg@"; };
xwayland = dummy-package // { outPath = "@xwayland@"; };
})

View file

@ -12,7 +12,8 @@ in {
wayland.windowManager.sway = {
enable = true;
package = dummy-package // { outPath = "@sway"; };
package = pkgs.writeScriptBin "sway" "" // { outPath = "@sway@"; };
# overriding findutils causes issues
config.menu = "${pkgs.dmenu}/bin/dmenu_run";
};