anchor.diff:      fonts.enableDefaultFonts = mkDefault true;
       programs.dconf.enable = mkDefault true;
     };
  +
  +  meta.maintainers = with lib.maintainers; [ gnidorah primeos ];
   }
  
positive.code:     environment.systemPackages = [ swayJoined ] ++ cfg.extraPackages;
      security.wrappers.sway = {
        program = "sway-setcap";
        source = "${sway}/bin/sway";
        capabilities = "cap_sys_ptrace,cap_sys_tty_config=eip";
        owner = "root";
        group = "sway";
  
negative.code: 
  let
    cfg = config.programs.sway;
    swayPackage = pkgs.sway;
  
    swayWrapped = pkgs.writeShellScriptBin "sway" ''
      if [[ "$#" -ge 1 ]]; then
        exec sway-setcap "$@"
      else
        ${cfg.extraSessionCommands}
        exec ${pkgs.dbus.dbus-launch} --exit-with-session sway-setcap
      fi
    '';
    swayJoined = pkgs.symlinkJoin {
      name = "sway-joined";
      paths = [ swayWrapped swayPackage ];
    };
  in {
    options.programs.sway = {
      enable = mkEnableOption ''
        the tiling Wayland compositor Sway. After adding yourself to the "sway"
        group you can manually launch Sway by executing "sway" from a terminal.
        If you call "sway" with any parameters the extraSessionCommands won't be
        executed and Sway won't be launched with dbus-launch'';
  
      extraSessionCommands = mkOption {
        type = types.lines;
        default = "";
        example = ''
          # Define a keymap (US QWERTY is the default)
          export XKB_DEFAULT_LAYOUT=de,us
          export XKB_DEFAULT_VARIANT=nodeadkeys
          export XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle,caps:escape
          # Change the Keyboard repeat delay and rate
          export WLC_REPEAT_DELAY=660
          export WLC_REPEAT_RATE=25
        '';
        description = ''
          Shell commands executed just before Sway is started.
        '';
      };
  
  