From 738bcfdef8bb3bf4c4135375de8efaabe63f6eb4 Mon Sep 17 00:00:00 2001 From: Yurii Rashkovskii Date: Fri, 12 Jan 2018 10:23:05 -0800 Subject: config.hardware.onlykey configuration option By default, OnlyKey device (https://crp.to/p/) won't work on Linux (and, therefore, NixOS). This is unintuitive and requires one to search for a solution in the documentation. This change allows one to enable OnlyKey device support directly from their NixOS configuration. --- nixos/modules/hardware/onlykey.nix | 33 +++++++++++++++++++++++++++++++++ nixos/modules/hardware/onlykey.udev | 4 ++++ nixos/modules/module-list.nix | 1 + 3 files changed, 38 insertions(+) create mode 100644 nixos/modules/hardware/onlykey.nix create mode 100644 nixos/modules/hardware/onlykey.udev (limited to 'nixos') diff --git a/nixos/modules/hardware/onlykey.nix b/nixos/modules/hardware/onlykey.nix new file mode 100644 index 0000000000000..b6820fe01911f --- /dev/null +++ b/nixos/modules/hardware/onlykey.nix @@ -0,0 +1,33 @@ +{ config, lib, ... }: + +with lib; + +{ + + ####### interface + + options = { + + hardware.onlykey = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Enable OnlyKey device (https://crp.to/p/) support. + ''; + }; + }; + + }; + + ## As per OnlyKey's documentation piece (hhttps://docs.google.com/document/d/1Go_Rs218fKUx-j_JKhddbSVTqY6P0vQO831t2MKCJC8), + ## it is important to add udev rule for OnlyKey for it to work on Linux + + ####### implementation + + config = mkIf config.hardware.onlykey.enable { + services.udev.extraRules = builtin.readFile ./onlykey.udev; + }; + + +} diff --git a/nixos/modules/hardware/onlykey.udev b/nixos/modules/hardware/onlykey.udev new file mode 100644 index 0000000000000..6583530e56846 --- /dev/null +++ b/nixos/modules/hardware/onlykey.udev @@ -0,0 +1,4 @@ +ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", ENV{ID_MM_DEVICE_IGNORE}="1" +ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789A]?", ENV{MTP_NO_PROBE}="1" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789ABCD]?", GROUP+="plugdev" +KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", GROUP+="plugdev" diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 74ed92de0c090..64a109f50e379 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -41,6 +41,7 @@ ./hardware/pcmcia.nix ./hardware/raid/hpsa.nix ./hardware/usb-wwan.nix + ./hardware/onlykey.nix ./hardware/video/amdgpu.nix ./hardware/video/amdgpu-pro.nix ./hardware/video/ati.nix -- cgit 1.4.1 From 487be791d783c706369a1a0740e03a0bb60d8f1f Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Mon, 9 Apr 2018 22:24:01 +0300 Subject: nixos/make-ext4-fs: Use closureInfo exportReferencesGraph is deprecated and doesn't have the generated initial Nix database contain the SHA256 of the contents of the store paths, which breaks various things under Nix 2.0. --- nixos/lib/make-ext4-fs.nix | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'nixos') diff --git a/nixos/lib/make-ext4-fs.nix b/nixos/lib/make-ext4-fs.nix index 21c69ed560a32..986d80ff1b999 100644 --- a/nixos/lib/make-ext4-fs.nix +++ b/nixos/lib/make-ext4-fs.nix @@ -7,23 +7,22 @@ , volumeLabel }: +let + sdClosureInfo = pkgs.closureInfo { rootPaths = storePaths; }; +in + pkgs.stdenv.mkDerivation { name = "ext4-fs.img"; nativeBuildInputs = with pkgs; [e2fsprogs libfaketime perl]; - # For obtaining the closure of `storePaths'. - exportReferencesGraph = - map (x: [("closure-" + baseNameOf x) x]) storePaths; - buildCommand = '' # Add the closures of the top-level store objects. - storePaths=$(perl ${pkgs.pathsFromGraph} closure-*) + storePaths=$(cat ${sdClosureInfo}/store-paths) - # Also include a manifest of the closures in a format suitable - # for nix-store --load-db. - printRegistration=1 perl ${pkgs.pathsFromGraph} closure-* > nix-path-registration + # Also include a manifest of the closures in a format suitable for nix-store --load-db. + cp ${sdClosureInfo}/registration nix-path-registration # Make a crude approximation of the size of the target image. # If the script starts failing, increase the fudge factors here. -- cgit 1.4.1