46 lines
1.3 KiB
Nix
46 lines
1.3 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
# https://github.com/michalrus/dotfiles/blob/d943be3089aa436e07cea5f22d829402936a9229/.nixos-config.symlink/modules/sane-extra-config.nix
|
|
# via https://github.com/NixOS/nixpkgs/issues/17411
|
|
# via https://unix.stackexchange.com/questions/321954/install-epson-v39-on-nixos
|
|
with lib;
|
|
|
|
let
|
|
|
|
cfg = config.hardware.sane;
|
|
|
|
pkg = if cfg.snapshot
|
|
then pkgs.sane-backends-git
|
|
else pkgs.sane-backends;
|
|
|
|
backends = [ pkg ] ++ cfg.extraBackends;
|
|
|
|
saneConfig = pkgs.mkSaneConfig { paths = backends; };
|
|
|
|
saneExtraConfig = pkgs.runCommand "sane-extra-config" {} ''
|
|
cp -Lr '${pkgs.mkSaneConfig { paths = [ pkgs.sane-backends ]; }}'/etc/sane.d $out
|
|
chmod +w $out
|
|
${concatMapStrings (c: ''
|
|
f="$out/${c.name}.conf"
|
|
[ ! -e "$f" ] || chmod +w "$f"
|
|
cat ${builtins.toFile "" (c.value + "\n")} >>"$f"
|
|
chmod -w "$f"
|
|
'') (mapAttrsToList nameValuePair cfg.extraConfig)}
|
|
chmod -w $out
|
|
'';
|
|
|
|
in
|
|
|
|
{
|
|
options = {
|
|
hardware.sane.extraConfig = mkOption {
|
|
type = types.attrsOf types.lines;
|
|
default = {};
|
|
example = { "some-backend" = "# some lines to add to its .conf"; };
|
|
};
|
|
};
|
|
|
|
config = mkIf (cfg.enable && cfg.extraConfig != {}) {
|
|
hardware.sane.configDir = saneExtraConfig.outPath;
|
|
};
|
|
}
|