nixos/sane: allow to disable enabled-by-default plugins
use case: disabling v4l plugin because I don't use my webcam as a scanner.
This commit is contained in:
parent
6b1057b452
commit
c64fb5000b
@ -32,7 +32,7 @@ let
|
|||||||
};
|
};
|
||||||
|
|
||||||
backends = [ pkg netConf ] ++ optional config.services.saned.enable sanedConf ++ config.hardware.sane.extraBackends;
|
backends = [ pkg netConf ] ++ optional config.services.saned.enable sanedConf ++ config.hardware.sane.extraBackends;
|
||||||
saneConfig = pkgs.mkSaneConfig { paths = backends; };
|
saneConfig = pkgs.mkSaneConfig { paths = backends; inherit (config.hardware.sane) disabledDefaultBackends; };
|
||||||
|
|
||||||
enabled = config.hardware.sane.enable || config.services.saned.enable;
|
enabled = config.hardware.sane.enable || config.services.saned.enable;
|
||||||
|
|
||||||
@ -75,6 +75,16 @@ in
|
|||||||
example = literalExample "[ pkgs.hplipWithPlugin ]";
|
example = literalExample "[ pkgs.hplipWithPlugin ]";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hardware.sane.disabledDefaultBackends = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
example = [ "v4l" ];
|
||||||
|
description = ''
|
||||||
|
Names of backends which are enabled by default but should be disabled.
|
||||||
|
See <literal>$SANE_CONFIG_DIR/dll.conf</literal> for the list of possible names.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
hardware.sane.configDir = mkOption {
|
hardware.sane.configDir = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
internal = true;
|
internal = true;
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
{ lib, stdenv }:
|
{ lib, stdenv }:
|
||||||
|
|
||||||
{ paths }:
|
{ paths, disabledDefaultBackends ? [] }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let installSanePath = path: ''
|
let
|
||||||
|
installSanePath = path: ''
|
||||||
if [ -e "${path}/lib/sane" ]; then
|
if [ -e "${path}/lib/sane" ]; then
|
||||||
find "${path}/lib/sane" -maxdepth 1 -not -type d | while read backend; do
|
find "${path}/lib/sane" -maxdepth 1 -not -type d | while read backend; do
|
||||||
symlink "$backend" "$out/lib/sane/$(basename "$backend")"
|
symlink "$backend" "$out/lib/sane/$(basename "$backend")"
|
||||||
@ -27,6 +28,10 @@ let installSanePath = path: ''
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
disableBackend = backend: ''
|
||||||
|
grep -q '${backend}' $out/etc/sane.d/dll.conf || { echo '${backend} is not a default plugin in $SANE_CONFIG_DIR/dll.conf'; exit 1; }
|
||||||
|
substituteInPlace $out/etc/sane.d/dll.conf --replace '${backend}' '# ${backend} disabled in nixos config'
|
||||||
|
'';
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "sane-config";
|
name = "sane-config";
|
||||||
@ -42,5 +47,7 @@ stdenv.mkDerivation {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mkdir -p $out/etc/sane.d $out/etc/sane.d/dll.d $out/lib/sane
|
mkdir -p $out/etc/sane.d $out/etc/sane.d/dll.d $out/lib/sane
|
||||||
'' + concatMapStrings installSanePath paths;
|
''
|
||||||
|
+ (concatMapStrings installSanePath paths)
|
||||||
|
+ (concatMapStrings disableBackend disabledDefaultBackends);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user