Add system.env, system.profile, system.proxy and configure proxy under system.repo
diff --git a/linux/system/repo.sls b/linux/system/repo.sls
index 555abd1..fe3f246 100644
--- a/linux/system/repo.sls
+++ b/linux/system/repo.sls
@@ -1,12 +1,51 @@
 {%- from "linux/map.jinja" import system with context %}
 {%- if system.enabled %}
 
+# global proxy setup
+{%- if system.proxy.get('pkg', {}).get('enabled', False) %}
+{%- if grains.os_family == 'Debian' %}
+
+/etc/apt/apt.conf.d/99proxies-salt:
+  file.managed:
+  - template: jinja
+  - source: salt://linux/files/apt.conf.d_proxies
+  - defaults:
+      external_host: False
+      https: {{ system.proxy.get('pkg', {}).get('https', None) | default(system.proxy.get('https', None), true) }}
+      http: {{ system.proxy.get('pkg', {}).get('http', None) | default(system.proxy.get('http', None), true) }}
+      ftp: {{ system.proxy.get('pkg', {}).get('ftp', None) | default(system.proxy.get('ftp', None), true) }}
+
+{%- else %}
+
+/etc/apt/apt.conf.d/99proxies-salt:
+  file.absent
+
+{%- endif %}
+{%- endif %}
+
 {% set default_repos = {} %}
 
 {%- for name, repo in system.repo.iteritems() %}
 
 {%- if grains.os_family == 'Debian' %}
 
+# per repository proxy setup
+{%- if repo.get('proxy', {}).get('enabled', False) %}
+{%- set external_host = repo.proxy.get('host', None) or repo.source.split('/')[2] %}
+/etc/apt/apt.conf.d/99proxies-salt-{{ name }}:
+  file.managed:
+  - template: jinja
+  - source: salt://linux/files/apt.conf.d_proxies
+  - defaults:
+      external_host: {{ external_host }}
+      https: {{ repo.proxy.get('https', None) or system.proxy.get('pkg', {}).get('https', None) | default(system.proxy.get('https', None), True) }}
+      http: {{ repo.proxy.get('http', None) or system.proxy.get('pkg', {}).get('http', None) | default(system.proxy.get('http', None), True) }}
+      ftp: {{ repo.proxy.get('ftp', None) or system.proxy.get('pkg', {}).get('ftp', None) | default(system.proxy.get('ftp', None), True) }}
+{%- else %}
+/etc/apt/apt.conf.d/99proxies-salt-{{ name }}:
+  file.absent
+{%- endif %}
+
 {%- if repo.pin is defined %}
 
 linux_repo_{{ name }}_pin:
@@ -60,6 +99,12 @@
   {%- endif %}
   - require:
     - pkg: linux_packages
+  {%- if repo.get('proxy', {}).get('enabled', False) %}
+    - file: /etc/apt/apt.conf.d/99proxies-salt-{{ name }}
+  {%- endif %}
+  {%- if system.proxy.get('pkg', {}).get('enabled', False) %}
+    - file: /etc/apt/apt.conf.d/99proxies-salt
+  {%- endif %}
 
 {%- endif %}
 
@@ -67,6 +112,11 @@
 
 {%- if grains.os_family == "RedHat" %}
 
+{%- if repo.get('proxy', {}).get('enabled', False) %}
+# PLACEHOLDER
+# TODO, implement per proxy configuration for Yum
+{%- endif %}
+
 {%- if not repo.get('default', False) %}
 
 linux_repo_{{ name }}: