{ 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 = "${config.programs.vim.package}/bin/vim"; diff-cmd = "${pkgs.colordiff}/bin/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;})]; }; }; }