diff --git a/nixos/modules/hardware/keyboard/teck.nix b/nixos/modules/hardware/keyboard/teck.nix new file mode 100644 index 000000000000..091ddb81962e --- /dev/null +++ b/nixos/modules/hardware/keyboard/teck.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.hardware.keyboard.teck; +in +{ + options.hardware.keyboard.teck = { + enable = mkEnableOption "non-root access to the firmware of TECK keyboards"; + }; + + config = mkIf cfg.enable { + services.udev.packages = [ pkgs.teck-udev-rules ]; + }; +} + diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 67f852ca3f47..a767c5fd685b 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -49,6 +49,7 @@ ./hardware/i2c.nix ./hardware/sensor/hddtemp.nix ./hardware/sensor/iio.nix + ./hardware/keyboard/teck.nix ./hardware/keyboard/zsa.nix ./hardware/ksm.nix ./hardware/ledger.nix diff --git a/pkgs/development/node-packages/default.nix b/pkgs/development/node-packages/default.nix index b0bd2afd148b..8d00e3595fec 100644 --- a/pkgs/development/node-packages/default.nix +++ b/pkgs/development/node-packages/default.nix @@ -241,6 +241,10 @@ let ''; }; + teck-programmer = super.teck-programmer.override { + buildInputs = [ pkgs.libusb ]; + }; + vega-cli = super.vega-cli.override { nativeBuildInputs = [ pkgs.pkg-config ]; buildInputs = with pkgs; [ diff --git a/pkgs/development/node-packages/node-packages.json b/pkgs/development/node-packages/node-packages.json index af2d937f3711..d8b98ea14428 100644 --- a/pkgs/development/node-packages/node-packages.json +++ b/pkgs/development/node-packages/node-packages.json @@ -221,6 +221,7 @@ , "svgo" , "swagger" , {"tedicross": "git+https://github.com/TediCross/TediCross.git#v0.8.7"} +, "teck-programmer" , "tern" , "textlint" , "textlint-plugin-latex" diff --git a/pkgs/development/node-packages/node-packages.nix b/pkgs/development/node-packages/node-packages.nix index 80e08eb0668e..366e04440f98 100644 --- a/pkgs/development/node-packages/node-packages.nix +++ b/pkgs/development/node-packages/node-packages.nix @@ -40385,6 +40385,15 @@ let sha512 = "Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA=="; }; }; + "node-addon-api-3.0.2" = { + name = "node-addon-api"; + packageName = "node-addon-api"; + version = "3.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz"; + sha512 = "+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg=="; + }; + }; "node-addon-api-3.1.0" = { name = "node-addon-api"; packageName = "node-addon-api"; @@ -45797,6 +45806,15 @@ let sha512 = "aaLVANlj4HgZweKttFNUVNRxDukytuIuxeK2boIMHjagNJCiVKWFsKF4tCE3ql3GbrD2tExPQ7/pwtEJcHNZeg=="; }; }; + "prebuild-install-5.3.6" = { + name = "prebuild-install"; + packageName = "prebuild-install"; + version = "5.3.6"; + src = fetchurl { + url = "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz"; + sha512 = "s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg=="; + }; + }; "prebuild-install-6.1.1" = { name = "prebuild-install"; packageName = "prebuild-install"; @@ -59820,6 +59838,15 @@ let sha1 = "23f89069a6c62f46cf3a1d3b00169cefb90be0c6"; }; }; + "usb-1.7.0" = { + name = "usb"; + packageName = "usb"; + version = "1.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/usb/-/usb-1.7.0.tgz"; + sha512 = "LHm9d389NCzZSMd0DnilxT5Lord4P2E3ETwP1LeuJcEBmI5uLJv8Sd18z/9bairUMbDnnNqX+Hi5Xkl93Kvdmw=="; + }; + }; "use-3.1.1" = { name = "use"; packageName = "use"; @@ -109988,6 +110015,96 @@ in bypassCache = true; reconstructLock = true; }; + teck-programmer = nodeEnv.buildNodePackage { + name = "teck-programmer"; + packageName = "teck-programmer"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/teck-programmer/-/teck-programmer-1.1.1.tgz"; + sha1 = "bd2b3b1e3b88ad3c7471bdc8a5244255564b69e1"; + }; + dependencies = [ + sources."ansi-regex-2.1.1" + sources."aproba-1.2.0" + sources."are-we-there-yet-1.1.5" + sources."base64-js-1.5.1" + sources."bindings-1.5.0" + (sources."bl-4.1.0" // { + dependencies = [ + sources."readable-stream-3.6.0" + ]; + }) + sources."buffer-5.7.1" + sources."chownr-1.1.4" + sources."code-point-at-1.1.0" + sources."console-control-strings-1.1.0" + sources."core-util-is-1.0.2" + sources."decompress-response-4.2.1" + sources."deep-extend-0.6.0" + sources."delegates-1.0.0" + sources."detect-libc-1.0.3" + sources."end-of-stream-1.4.4" + sources."expand-template-2.0.3" + sources."file-uri-to-path-1.0.0" + sources."fs-constants-1.0.0" + sources."gauge-2.7.4" + sources."github-from-package-0.0.0" + sources."has-unicode-2.0.1" + sources."ieee754-1.2.1" + sources."inherits-2.0.4" + sources."ini-1.3.8" + sources."is-fullwidth-code-point-1.0.0" + sources."isarray-1.0.0" + sources."mimic-response-2.1.0" + sources."minimist-1.2.5" + sources."mkdirp-classic-0.5.3" + sources."napi-build-utils-1.0.2" + sources."node-abi-2.21.0" + sources."node-addon-api-3.0.2" + sources."noop-logger-0.1.1" + sources."npmlog-4.1.2" + sources."number-is-nan-1.0.1" + sources."object-assign-4.1.1" + sources."once-1.4.0" + sources."prebuild-install-5.3.6" + sources."process-nextick-args-2.0.1" + sources."pump-3.0.0" + sources."q-1.5.1" + sources."rc-1.2.8" + sources."readable-stream-2.3.7" + sources."safe-buffer-5.1.2" + sources."semver-5.7.1" + sources."set-blocking-2.0.0" + sources."signal-exit-3.0.3" + sources."simple-concat-1.0.1" + sources."simple-get-3.1.0" + sources."string-width-1.0.2" + sources."string_decoder-1.1.1" + sources."strip-ansi-3.0.1" + sources."strip-json-comments-2.0.1" + sources."tar-fs-2.1.1" + (sources."tar-stream-2.2.0" // { + dependencies = [ + sources."readable-stream-3.6.0" + ]; + }) + sources."tunnel-agent-0.6.0" + sources."usb-1.7.0" + sources."util-deprecate-1.0.2" + sources."which-pm-runs-1.0.0" + sources."wide-align-1.1.3" + sources."wrappy-1.0.2" + ]; + buildInputs = globalBuildInputs; + meta = { + description = "Programmer for TECK keyboards."; + homepage = "https://github.com/m-ou-se/teck-programmer"; + license = "GPL-3.0+"; + }; + production = true; + bypassCache = true; + reconstructLock = true; + }; tern = nodeEnv.buildNodePackage { name = "tern"; packageName = "tern"; diff --git a/pkgs/os-specific/linux/teck-udev-rules/default.nix b/pkgs/os-specific/linux/teck-udev-rules/default.nix new file mode 100644 index 000000000000..eec5eac344ef --- /dev/null +++ b/pkgs/os-specific/linux/teck-udev-rules/default.nix @@ -0,0 +1,22 @@ +{ lib, stdenv, teck-programmer }: + +stdenv.mkDerivation { + pname = "teck-udev-rules"; + version = lib.getVersion teck-programmer; + + inherit (teck-programmer) src; + + dontBuild = true; + + installPhase = '' + runHook preInstall + install 40-teck.rules -D -t $out/etc/udev/rules.d/ + runHook postInstall + ''; + + meta = { + description = "udev rules for TECK keyboards"; + inherit (teck-programmer.meta) license; + maintainers = [ lib.maintainers.lourkeur ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 74aac662d8e1..5cf60e2c3c84 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8673,6 +8673,8 @@ in tea = callPackage ../tools/misc/tea { }; + inherit (nodePackages) teck-programmer; + ted = callPackage ../tools/typesetting/ted { }; teamviewer = libsForQt514.callPackage ../applications/networking/remote/teamviewer { }; @@ -20777,6 +20779,8 @@ in # FIXME: `tcp-wrapper' is actually not OS-specific. tcp_wrappers = callPackage ../os-specific/linux/tcp-wrappers { }; + teck-udev-rules = callPackage ../os-specific/linux/teck-udev-rules { }; + tiptop = callPackage ../os-specific/linux/tiptop { }; tpacpi-bat = callPackage ../os-specific/linux/tpacpi-bat { };