diff --git a/merge/net-misc/.calculate_directory b/merge/net-misc/.calculate_directory
new file mode 100644
index 0000000..8e3df7f
--- /dev/null
+++ b/merge/net-misc/.calculate_directory
@@ -0,0 +1 @@
+{% calculate append = 'skip' %}
diff --git a/merge/net-misc/dhcp/.calculate_directory b/merge/net-misc/dhcp/.calculate_directory
new file mode 100644
index 0000000..c583cbe
--- /dev/null
+++ b/merge/net-misc/dhcp/.calculate_directory
@@ -0,0 +1 @@
+{% calculate path='/etc', package='net-misc/dhcp' %}
diff --git a/merge/net-misc/dhcp/dhclient.conf b/merge/net-misc/dhcp/dhclient.conf
new file mode 100644
index 0000000..ba46d3b
--- /dev/null
+++ b/merge/net-misc/dhcp/dhclient.conf
@@ -0,0 +1,14 @@
+{% calculate format='regex', dotall, comment='#' %}
+(?:(?:
+#--- Start block generated by Calculate Utilities ---
+.*
+#--- End block generated by Calculate Utilities ---)|(?:
+$))(.*$)
+
+#--- Start block generated by Calculate Utilities ---
+# передавать dhcp серверу hostname
+send host-name = pick-first-value(gethostname(), "ISC-dhclient");
+# запрашивать у dhcp сервера в дополнение к стандартным параметрам domain-search
+request subnet-mask, broadcast-address, time-offset, routers,
+ domain-name, domain-name-servers, host-name, domain-search;
+#--- End block generated by Calculate Utilities ---\1
diff --git a/merge/net-misc/modem-manager-gui/.calculate_directory b/merge/net-misc/modem-manager-gui/.calculate_directory
new file mode 100644
index 0000000..e628c7d
--- /dev/null
+++ b/merge/net-misc/modem-manager-gui/.calculate_directory
@@ -0,0 +1 @@
+{% calculate path='/usr/share', name='applications', package='net-misc/modem-manager-gui' %}
diff --git a/merge/net-misc/modem-manager-gui/modem-manager-gui-gnome.png b/merge/net-misc/modem-manager-gui/modem-manager-gui-gnome.png
new file mode 100644
index 0000000..e3e3e70
--- /dev/null
+++ b/merge/net-misc/modem-manager-gui/modem-manager-gui-gnome.png
@@ -0,0 +1 @@
+{% calculate path='/usr/share/icons/gnome/128x128/apps' name='modem-manager-gui.png' source='/usr/share/pixmaps/modem-manager-gui.png', mirror %}
diff --git a/merge/net-misc/modem-manager-gui/modem-manager-gui-hicolor.png b/merge/net-misc/modem-manager-gui/modem-manager-gui-hicolor.png
new file mode 100644
index 0000000..3645d40
--- /dev/null
+++ b/merge/net-misc/modem-manager-gui/modem-manager-gui-hicolor.png
@@ -0,0 +1 @@
+{% calculate path='/usr/share/icons/hicolor/128x128/apps' name='modem-manager-gui.png' source='/usr/share/pixmaps/modem-manager-gui.png', mirror %}
diff --git a/merge/net-misc/modem-manager-gui/modem-manager-gui.desktop b/merge/net-misc/modem-manager-gui/modem-manager-gui.desktop
new file mode 100644
index 0000000..e0ff159
--- /dev/null
+++ b/merge/net-misc/modem-manager-gui/modem-manager-gui.desktop
@@ -0,0 +1,3 @@
+{% calculate format='kde' %}
+[Desktop Entry]
+Icon=modem-manager-gui
diff --git a/merge/net-misc/modemmanager/.calculate_directory b/merge/net-misc/modemmanager/.calculate_directory
new file mode 100644
index 0000000..2469c2c
--- /dev/null
+++ b/merge/net-misc/modemmanager/.calculate_directory
@@ -0,0 +1,2 @@
+{% calculater append='skip', package='net-misc/modemmanager' %}
+
diff --git a/merge/net-misc/modemmanager/fix_systemd_binding/.calculate_directory b/merge/net-misc/modemmanager/fix_systemd_binding/.calculate_directory
new file mode 100644
index 0000000..c2a50bf
--- /dev/null
+++ b/merge/net-misc/modemmanager/fix_systemd_binding/.calculate_directory
@@ -0,0 +1 @@
+{% calculate path='/usr/share/dbus-1' name='system-services', exists('/usr/share/dbus-1/system-services/org.freedesktop.ModemManager1.service') %}
diff --git a/merge/net-misc/modemmanager/fix_systemd_binding/org.freedesktop.ModemManager1.service b/merge/net-misc/modemmanager/fix_systemd_binding/org.freedesktop.ModemManager1.service
new file mode 100644
index 0000000..5fcd35c
--- /dev/null
+++ b/merge/net-misc/modemmanager/fix_systemd_binding/org.freedesktop.ModemManager1.service
@@ -0,0 +1,4 @@
+{% calculate format='kde' %}
+
+[D-BUS Service]
+Exec=/usr/sbin/ModemManager --log-level=ERR
diff --git a/merge/net-misc/netifrc/.calculate_directory b/merge/net-misc/netifrc/.calculate_directory
new file mode 100644
index 0000000..0695a4c
--- /dev/null
+++ b/merge/net-misc/netifrc/.calculate_directory
@@ -0,0 +1 @@
+{% calculate path='/etc', name='conf.d', package='net-misc/netifrc' %}
diff --git a/merge/net-misc/netifrc/01_unpack_net.example b/merge/net-misc/netifrc/01_unpack_net.example
new file mode 100644
index 0000000..df39390
--- /dev/null
+++ b/merge/net-misc/netifrc/01_unpack_net.example
@@ -0,0 +1,6 @@
+{% calculate run='/bin/bash' %}
+
+SOURCE="{{ main.cl_chroot_path }}/usr/share/doc/netifrc-*/net.example.bz2"
+DEST="{{ main.cl_chroot_path }}/etc/conf.d/net.example"
+[[ -f $SOURCE ]] && bzip2 -dc "$SOURCE" >"$DEST"
+exit 0
diff --git a/merge/net-misc/netifrc/02_link_net.example b/merge/net-misc/netifrc/02_link_net.example
new file mode 100644
index 0000000..f1b43f9
--- /dev/null
+++ b/merge/net-misc/netifrc/02_link_net.example
@@ -0,0 +1,3 @@
+{% calculate format='regex', name='net.example', exists('/etc/conf.d/net.example') %}
+QUICK-START
+QUICK-START
diff --git a/merge/net-misc/openssh/.calculate_directory b/merge/net-misc/openssh/.calculate_directory
new file mode 100644
index 0000000..dce1d9b
--- /dev/null
+++ b/merge/net-misc/openssh/.calculate_directory
@@ -0,0 +1 @@
+{% calculate name='etc', package='net-misc/openssh' %}
diff --git a/merge/net-misc/openssh/ssh/ssh_config b/merge/net-misc/openssh/ssh/ssh_config
new file mode 100644
index 0000000..da460e8
--- /dev/null
+++ b/merge/net-misc/openssh/ssh/ssh_config
@@ -0,0 +1,2 @@
+{% calculate append='after', (not grep('/etc/ssh/ssh_config', '^SendEnv LANG LC_' )) %}
+SendEnv LANG LC_*
diff --git a/merge/net-misc/openssh/ssh/sshd_config b/merge/net-misc/openssh/ssh/sshd_config
new file mode 100644
index 0000000..bee62b9
--- /dev/null
+++ b/merge/net-misc/openssh/ssh/sshd_config
@@ -0,0 +1,24 @@
+{% calculate format='regex', multiline %}
+
+([^\n])\Z
+\1\n
+{% if not grep('/etc/ssh/sshd_config', '^DenyUsers guest') %}
+\Z
+DenyUsers guest\n
+{% endif %}
+{% if not grep('/etc/ssh/sshd_config', '^Subsystem sftp.*sftp-server') %}
+\Z
+ {% if main.os.arch.machine == 'x86_64' %}
+ Subsystem sftp /usr/lib64/misc/sftp-server\n
+ {% else %}
+ Subsystem sftp /usr/lib/misc/sftp-server\n
+ {% endif %}
+{% endif %}
+\n.*[^"]PermitRootLogin.*
+
+\nUsePAM
+\nPermitRootLogin yes\nUsePAM