diff options
author | Florian Klink <flokli@flokli.de> | 2023-08-30 10:34:12 +0300 |
---|---|---|
committer | Florian Klink <flokli@flokli.de> | 2023-09-12 16:55:15 +0200 |
commit | 8606f6c8e182cb56e1c7c54fd6361f7ca1870be6 (patch) | |
tree | c29210efd45601c4f53b69436baa421e77985d66 /nixos/modules/services | |
parent | 0bfc763df22be1085ab2c5d953436e9c1b1da965 (diff) | |
download | nixlib-8606f6c8e182cb56e1c7c54fd6361f7ca1870be6.tar nixlib-8606f6c8e182cb56e1c7c54fd6361f7ca1870be6.tar.gz nixlib-8606f6c8e182cb56e1c7c54fd6361f7ca1870be6.tar.bz2 nixlib-8606f6c8e182cb56e1c7c54fd6361f7ca1870be6.tar.lz nixlib-8606f6c8e182cb56e1c7c54fd6361f7ca1870be6.tar.xz nixlib-8606f6c8e182cb56e1c7c54fd6361f7ca1870be6.tar.zst nixlib-8606f6c8e182cb56e1c7c54fd6361f7ca1870be6.zip |
nixos/modemmanager: support additional FCC unlock scripts
This commit introduces a `networking.networkmanager.fccUnlockScripts` option, which allows specifying additional, usually vendor-provided unlock scripts. networking.networkmanager.enableBundledFccUnlockScripts is refactored to make use of the same mechanism internally.
Diffstat (limited to 'nixos/modules/services')
-rw-r--r-- | nixos/modules/services/networking/networkmanager.nix | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix index f41a0b015348..04e43ba49e98 100644 --- a/nixos/modules/services/networking/networkmanager.nix +++ b/nixos/modules/services/networking/networkmanager.nix @@ -381,6 +381,27 @@ in for more details. ''; }; + + fccUnlockScripts = mkOption { + type = types.listOf (types.submodule { + options = { + id = mkOption { + type = types.str; + description = lib.mdDoc "vid:pid of either the PCI or USB vendor and product ID"; + }; + path = mkOption { + type = types.path; + description = lib.mdDoc "Path to the unlock script"; + }; + }; + }); + default = [ ]; + example = literalExpression ''[{ name = "03f0:4e1d"; script = "''${pkgs.modemmanager}/share/ModemManager/fcc-unlock.available.d/03f0:4e1d"; }]''; + description = lib.mdDoc '' + List of FCC unlock scripts to enable on the system, behaving as described in + https://modemmanager.org/docs/modemmanager/fcc-unlock/#integration-with-third-party-fcc-unlock-tools. + ''; + }; }; }; @@ -425,11 +446,11 @@ in source = "${pkg}/lib/NetworkManager/${pkg.networkManagerPlugin}"; }) cfg.plugins) - // optionalAttrs cfg.enableBundledFccUnlockScripts - { - "ModemManager/fcc-unlock.d".source = - "${pkgs.modemmanager}/share/ModemManager/fcc-unlock.available.d/*"; - } + // builtins.listToAttrs (map + (e: nameValuePair "ModemManager/fcc-unlock.d/${e.id}" { + source = e.path; + }) + cfg.fccUnlockScripts) // optionalAttrs (cfg.appendNameservers != [ ] || cfg.insertNameservers != [ ]) { "NetworkManager/dispatcher.d/02overridedns".source = overrideNameserversScript; @@ -518,6 +539,16 @@ in ]; } + # if cfg.enableBundledFccUnlockScripts is set, populate + # networking.networkmanager.fccUnlockScripts with the values from + # pkgs.modemmanager.passthru.fccUnlockScripts. + (mkIf cfg.enableBundledFccUnlockScripts { + networkmanager.fccUnlockScripts = lib.optionals cfg.enableBundledFccUnlockScripts + lib.mapAttrsToList + (id: path: { inherit id path; }) + pkgs.modemmanager.passthru.fccUnlockScripts; + }) + (mkIf cfg.enableStrongSwan { networkmanager.plugins = [ pkgs.networkmanager_strongswan ]; }) |