{ config, lib, pkgs, ... }: with lib; let cfg = config.nixfiles.modules.subversion; in { options.nixfiles.modules.subversion.enable = mkEnableOption "Subversion"; config = mkIf cfg.enable { nixfiles.modules.gnupg.enable = true; hm.home = { file = { ".subversion/config".text = generators.toINI { } { auth = { password-stores = "gpg-agent"; ssl-client-cert-file-prompt = "no"; store-passwords = "yes"; store-auth-creds = "yes"; }; helpers = { editor-cmd = getExe' config.programs.vim.package "vim"; diff-cmd = getExe pkgs.colordiff; }; miscellany = { global-ignores = with config.hm.programs.git; optionalString (ignores != [ ]) (concatStringsSep " " ignores); diff-ignore-content-type = "no"; }; working-copy = { exclusive-locking-clients = "svn"; exclusive-locking = true; busy-timeout = 10000; }; }; ".subversion/servers".text = generators.toINI { } { global = { store-auth-creds = "yes"; store-passwords = "yes"; store-plaintext-passwords = "yes"; }; }; }; packages = [ (pkgs.subversionClient.override { saslSupport = true; }) ]; }; }; }