feat(home): Install/configure kanata on non-NixOS systems
This commit is contained in:
parent
fe773b64cb
commit
8ee65af888
3 changed files with 78 additions and 6 deletions
|
@ -2,14 +2,12 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
inherit (lib.marleyos) enabled;
|
inherit (lib.marleyos) enabled;
|
||||||
in
|
in {
|
||||||
{
|
imports = [./autorandr.nix];
|
||||||
imports = [ ./autorandr.nix ];
|
|
||||||
|
|
||||||
home.keyboard.options = [ "apple:alupckeys" ];
|
home.keyboard.options = ["apple:alupckeys"];
|
||||||
|
|
||||||
# FIXME: Remove once we are on NixOS
|
# FIXME: Remove once we are on NixOS
|
||||||
targets.genericLinux = enabled;
|
targets.genericLinux = enabled;
|
||||||
|
@ -72,6 +70,7 @@ in
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
clipboard = enabled;
|
clipboard = enabled;
|
||||||
|
kanata = enabled;
|
||||||
syncthing = enabled;
|
syncthing = enabled;
|
||||||
};
|
};
|
||||||
xorg = {
|
xorg = {
|
||||||
|
|
30
modules/home/services/kanata/config.kbd
Normal file
30
modules/home/services/kanata/config.kbd
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
;; vim: ft=commonlisp
|
||||||
|
|
||||||
|
(defcfg
|
||||||
|
process-unmapped-keys yes
|
||||||
|
)
|
||||||
|
|
||||||
|
(defsrc
|
||||||
|
caps a s d f j k l ;
|
||||||
|
)
|
||||||
|
|
||||||
|
(defvar
|
||||||
|
tap-time 150
|
||||||
|
hold-time 200
|
||||||
|
)
|
||||||
|
|
||||||
|
(defalias
|
||||||
|
escctrl (tap-hold 100 100 esc caps)
|
||||||
|
a (tap-hold $tap-time $hold-time a lmet)
|
||||||
|
s (tap-hold $tap-time $hold-time s lalt)
|
||||||
|
d (tap-hold $tap-time $hold-time d lsft)
|
||||||
|
f (tap-hold $tap-time $hold-time f lctl)
|
||||||
|
j (tap-hold $tap-time $hold-time j rctl)
|
||||||
|
k (tap-hold $tap-time $hold-time k rsft)
|
||||||
|
l (tap-hold $tap-time $hold-time l ralt)
|
||||||
|
; (tap-hold $tap-time $hold-time ; rmet)
|
||||||
|
)
|
||||||
|
|
||||||
|
(deflayer base
|
||||||
|
@escctrl @a @s @d @f @j @k @l @;
|
||||||
|
)
|
43
modules/home/services/kanata/default.nix
Normal file
43
modules/home/services/kanata/default.nix
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf getExe' getExe;
|
||||||
|
inherit (lib.snowfall.system) is-darwin;
|
||||||
|
|
||||||
|
cfg = config.marleyos.services.kanata;
|
||||||
|
isGenericLinux = config.targets.genericLinux.enable;
|
||||||
|
isNotNixOS = isGenericLinux || (is-darwin system);
|
||||||
|
in {
|
||||||
|
options.marleyos.services.kanata.enable = mkEnableOption "kanata";
|
||||||
|
|
||||||
|
# Kanata is available as a module for nixOS and that should be preferred when
|
||||||
|
# possible.
|
||||||
|
config = mkIf (cfg.enable && isNotNixOS) {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
kanata
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.user.services.kanata = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Kanata keyboard remapper";
|
||||||
|
Documentation = "https://github.com/jtroo/kanata";
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
Environment = [
|
||||||
|
"PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin"
|
||||||
|
"DISPLAY=:0"
|
||||||
|
];
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = "${getExe' pkgs.klibc "sh"} -c 'exec ${getExe pkgs.kanata} --cfg ${./config.kbd}'";
|
||||||
|
Restart = "no";
|
||||||
|
};
|
||||||
|
|
||||||
|
Install.WantedBy = ["default.target"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue