at 23.11-pre 916 B view raw
1{ config, lib, pkgs, ... }: 2 3let 4 cfg = config.services.joycond; 5 kernelPackages = config.boot.kernelPackages; 6in 7 8with lib; 9 10{ 11 options.services.joycond = { 12 enable = mkEnableOption (lib.mdDoc "support for Nintendo Pro Controllers and Joycons"); 13 14 package = mkOption { 15 type = types.package; 16 default = pkgs.joycond; 17 defaultText = lib.literalExpression "pkgs.joycond"; 18 description = lib.mdDoc '' 19 The joycond package to use. 20 ''; 21 }; 22 }; 23 24 config = mkIf cfg.enable { 25 environment.systemPackages = [ cfg.package ]; 26 27 boot.extraModulePackages = optional (versionOlder kernelPackages.kernel.version "5.16") kernelPackages.hid-nintendo; 28 29 services.udev.packages = [ cfg.package ]; 30 31 systemd.packages = [ cfg.package ]; 32 33 # Workaround for https://github.com/NixOS/nixpkgs/issues/81138 34 systemd.services.joycond.wantedBy = [ "multi-user.target" ]; 35 }; 36}