diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index a82cef3e076..2cdb8a900d8 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -58,6 +58,7 @@ ./programs/ssmtp.nix ./programs/venus.nix ./programs/wvdial.nix + ./programs/freetds.nix ./programs/zsh/zsh.nix ./programs/screen.nix ./rename.nix diff --git a/nixos/modules/programs/freetds.nix b/nixos/modules/programs/freetds.nix new file mode 100644 index 00000000000..398fd104363 --- /dev/null +++ b/nixos/modules/programs/freetds.nix @@ -0,0 +1,61 @@ +# Global configuration for freetds environment. + +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.environment.freetds; + +in +{ + ###### interface + + options = { + + environment.freetds = mkOption { + type = types.attrsOf types.str; + default = {}; + example = { + MYDATABASE = + '' + host = 10.0.2.100 + port = 1433 + tds version = 7.2 + ''; + }; + description = + '' + Configure freetds database entries. Each attribute denotes + a section within freetds.conf, and the value (a string) is the config + content for that section. When at least one entry is configured + the global environment variables FREETDSCONF, FREETDS and SYBASE + will be configured to allow the programs that use freetds to find the + library and config. + ''; + + }; + + }; + + ###### implementation + + config = mkIf (length (attrNames cfg) > 0) { + + environment.variables.FREETDSCONF = "/etc/freetds.conf"; + environment.variables.FREETDS = "/etc/freetds.conf"; + environment.variables.SYBASE = "${pkgs.freetds}"; + + environment.etc."freetds.conf" = { text = + (concatStrings (mapAttrsToList (name: value: + '' + [${name}] + ${value} + '' + ) cfg)); + }; + + }; + +}