sxmo: get gesture support working
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
# this work derives from noneucat's sxmo service/packages, found via NUR
|
# this work derives from noneucat's sxmo service/packages, found via NUR
|
||||||
# - <repo:nix-community/nur-combined:repos/noneucat/modules/pinephone/sxmo.nix>
|
# - <repo:nix-community/nur-combined:repos/noneucat/modules/pinephone/sxmo.nix>
|
||||||
|
# other nix works:
|
||||||
|
# - <https://github.com/wentam/sxmo-nix>
|
||||||
|
# - <https://github.com/chuangzhu/nixpkgs-sxmo>
|
||||||
#
|
#
|
||||||
# sxmo documentation:
|
# sxmo documentation:
|
||||||
# - <repo:anjan/sxmo-docs-next>
|
# - <repo:anjan/sxmo-docs-next>
|
||||||
@@ -15,10 +18,14 @@
|
|||||||
# - list available daemons: `sxmo_daemons.sh list`
|
# - list available daemons: `sxmo_daemons.sh list`
|
||||||
# - query if a daemon is active: `sxmo_daemons.sh running <my-daemon>`
|
# - query if a daemon is active: `sxmo_daemons.sh running <my-daemon>`
|
||||||
# - start daemon: `sxmo_daemons.sh start <my-daemon>`
|
# - start daemon: `sxmo_daemons.sh start <my-daemon>`
|
||||||
|
# - managable by `superctl`
|
||||||
|
# - `superctl status`
|
||||||
# - user hooks:
|
# - user hooks:
|
||||||
# - live in ~/.config/sxmo/hooks/
|
# - live in ~/.config/sxmo/hooks/
|
||||||
# - logs:
|
# - logs:
|
||||||
# - live in ~/.local/state/sxmo.log
|
# - live in ~/.local/state/sxmo.log
|
||||||
|
# - ~/.local/state/superd.log
|
||||||
|
# - ~/.local/state/superd/logs/<daemon>.log
|
||||||
# - `journalctl --user --boot` (lightm redirects the sxmo session stdout => systemd)
|
# - `journalctl --user --boot` (lightm redirects the sxmo session stdout => systemd)
|
||||||
#
|
#
|
||||||
# - default components:
|
# - default components:
|
||||||
@@ -31,7 +38,7 @@
|
|||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.sane.gui.phosh;
|
cfg = config.sane.gui.sxmo;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
@@ -39,6 +46,38 @@ in
|
|||||||
default = false;
|
default = false;
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
};
|
};
|
||||||
|
sane.gui.sxmo.hooks = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.runCommand "sxmo-hooks" { } ''
|
||||||
|
mkdir -p $out
|
||||||
|
ln -s ${pkgs.sxmo-utils}/share/sxmo/default_hooks $out/bin
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
hooks to make visible to sxmo.
|
||||||
|
a hook is a script generally of the name sxmo_hook_<thing>.sh
|
||||||
|
which is called by sxmo at key moments to proide user programmability.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
sane.gui.sxmo.deviceHooks = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.runCommand "sxmo-device-hooks" { } ''
|
||||||
|
mkdir -p $out
|
||||||
|
ln -s ${pkgs.sxmo-utils}/share/sxmo/default_hooks/unknown $out/bin
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
device-specific hooks to make visible to sxmo.
|
||||||
|
this package supplies things like `sxmo_hook_inputhandler.sh`.
|
||||||
|
a hook is a script generally of the name sxmo_hook_<thing>.sh
|
||||||
|
which is called by sxmo at key moments to proide user programmability.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
sane.gui.sxmo.terminal = mkOption {
|
||||||
|
type = types.nullOr (types.enum [ "foot" "st" "vte" ]);
|
||||||
|
default = "st";
|
||||||
|
description = ''
|
||||||
|
name of terminal to use for sxmo_terminal.sh
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkMerge [
|
config = mkMerge [
|
||||||
@@ -51,7 +90,7 @@ in
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
(mkIf config.sane.gui.sxmo.enable {
|
(mkIf cfg.enable {
|
||||||
sane.programs.sxmoApps.enableFor.user.colin = true;
|
sane.programs.sxmoApps.enableFor.user.colin = true;
|
||||||
|
|
||||||
# TODO: probably need to enable pipewire
|
# TODO: probably need to enable pipewire
|
||||||
@@ -101,15 +140,37 @@ in
|
|||||||
inotify-tools
|
inotify-tools
|
||||||
libnotify
|
libnotify
|
||||||
lisgd
|
lisgd
|
||||||
|
mako
|
||||||
superd
|
superd
|
||||||
sway
|
sway
|
||||||
sxmo-utils
|
sxmo-utils
|
||||||
|
cfg.deviceHooks
|
||||||
|
cfg.hooks
|
||||||
xdg-user-dirs
|
xdg-user-dirs
|
||||||
];
|
] ++ lib.optionals (cfg.terminal != null) [ pkgs."${cfg.terminal}" ];
|
||||||
environment.sessionVariables.XDG_DATA_DIRS = [
|
environment.sessionVariables = {
|
||||||
|
XDG_DATA_DIRS = [
|
||||||
# TODO: only need the share/sxmo directly linked
|
# TODO: only need the share/sxmo directly linked
|
||||||
"${pkgs.sxmo-utils}/share"
|
"${pkgs.sxmo-utils}/share"
|
||||||
];
|
];
|
||||||
|
# XXX: make sure the user is part of the `input` group!
|
||||||
|
SXMO_LISGD_INPUT_DEVICE = "/dev/input/by-id/usb-Wacom_Co._Ltd._Pen_and_multitouch_sensor-event-if00";
|
||||||
|
# sxmo tries to determine device type from /proc/device-tree/compatible,
|
||||||
|
# but that doesn't seem to exist on NixOS? (or maybe it just doesn't exist
|
||||||
|
# on non-aarch64 builds).
|
||||||
|
# the device type informs (at least):
|
||||||
|
# - SXMO_WIFI_MODULE
|
||||||
|
# - SXMO_RTW_SCAN_INTERVAL
|
||||||
|
# - SXMO_SYS_FILES
|
||||||
|
# - SXMO_TOUCHSCREEN_ID
|
||||||
|
# - SXMO_MONITOR
|
||||||
|
# - SXMO_ALSA_CONTROL_NAME
|
||||||
|
# - SXMO_SWAY_SCALE
|
||||||
|
# see <repo:mil/sxmo-utils:scripts/deviceprofiles>
|
||||||
|
# SXMO_DEVICE_NAME = "pine64,pinephone-1.2";
|
||||||
|
} // lib.optionalAttrs (cfg.terminal != null) {
|
||||||
|
TERMCMD = lib.mkDefault (if cfg.terminal == "vte" then "vte-2.91" else cfg.terminal);
|
||||||
|
};
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user