Radix cross Linux 3pp sources

RcL sources – is a tree of Third Party and Radix source tarballs

343 Commits   0 Branches   0 Tags
author: kx <kx@radix.pro> 2023-04-09 23:18:24 +0300 committer: kx <kx@radix.pro> 2023-04-09 23:18:24 +0300 commit: 8b7e76c7ad2445c0920e9d056728f7b6baaa0c43 parent: 3dd1914515dc5c714451bc4148f0abb51672ed06
Commit Summary:
network packages
Diffstat:
210 files changed, 7879 insertions, 0 deletions
diff --git a/packages/Makefile b/packages/Makefile
index 891d63d..70a1471 100644
--- a/packages/Makefile
+++ b/packages/Makefile
@@ -9,6 +9,7 @@ SUBDIRS := b \
            j \
            l \
            m \
+           n \
            s \
            x \
            y
diff --git a/packages/n/Makefile b/packages/n/Makefile
new file mode 100644
index 0000000..530e744
--- /dev/null
+++ b/packages/n/Makefile
@@ -0,0 +1,204 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := ModemManager           \
+           alpine                 \
+           arptables              \
+           autofs                 \
+           avahi                  \
+           biff+comsat            \
+           bind                   \
+           bluez                  \
+           bluez-firmware         \
+           bluez-hcidump          \
+           bootp                  \
+           bootp-debian           \
+           bridge-utils           \
+           bsd-finger             \
+           ca-certificates        \
+           cifs-utils             \
+           conntrack-tools        \
+           crda                   \
+           curl                   \
+           cyrus-imapd            \
+           cyrus-sasl             \
+           dhcp                   \
+           dhcpcd                 \
+           dhcpdump               \
+           dirmngr                \
+           dnsmasq                \
+           ebtables               \
+           egd                    \
+           elm                    \
+           epic5                  \
+           ethtool                \
+           fetchmail              \
+           firmware               \
+           freeradius-client      \
+           getmail                \
+           gnupg                  \
+           gnupg2                 \
+           gnutls                 \
+           gpa                    \
+           gpgme                  \
+           htdig                  \
+           httpd                  \
+           icmpinfo               \
+           idnkit                 \
+           iftop                  \
+           imap                   \
+           inetd                  \
+           iperf3                 \
+           iproute2               \
+           ipset                  \
+           iptables               \
+           iptraf-ng              \
+           iputils                \
+           irssi                  \
+           iw                     \
+           kerberos               \
+           lftp                   \
+           libassuan              \
+           libgcrypt              \
+           libgpg-error           \
+           libksba                \
+           libmbim                \
+           libmnl                 \
+           libndp                 \
+           libnetfilter_acct      \
+           libnetfilter_conntrack \
+           libnetfilter_cthelper  \
+           libnetfilter_cttimeout \
+           libnetfilter_log       \
+           libnetfilter_queue     \
+           libnfnetlink           \
+           libnftnl               \
+           libnl                  \
+           libnl3                 \
+           libnsl                 \
+           libpcap                \
+           libproxy               \
+           libqmi                 \
+           libtirpc               \
+           links                  \
+           lynx                   \
+           mailx                  \
+           maxmind                \
+           mcabber                \
+           metamail               \
+           mozilla-nspr           \
+           mozilla-nss            \
+           mtr                    \
+           mutt                   \
+           nc                     \
+           ncftp                  \
+           net-snmp               \
+           net-tools              \
+           netatalk               \
+           netdate                \
+           netkit-base            \
+           netkit-bootparamd      \
+           netkit-combo           \
+           netkit-ftp             \
+           netkit-ntalk           \
+           netkit-routed          \
+           netkit-rpc             \
+           netkit-rsh             \
+           netkit-rusers          \
+           netkit-rwall           \
+           netkit-rwho            \
+           netkit-telnet          \
+           netkit-tftp            \
+           netkit-timed           \
+           netpipes               \
+           nettle                 \
+           netwatch               \
+           netwrite               \
+           newspost               \
+           nfacct                 \
+           nfs-utils              \
+           nftables               \
+           nghttp2                \
+           nginx                  \
+           nmap                   \
+           nn                     \
+           npth                   \
+           nss-pam-ldapd          \
+           ntbtls                 \
+           ntp                    \
+           obex-data-server       \
+           obexfs                 \
+           obexftp                \
+           opendkim               \
+           openldap               \
+           openobex               \
+           openssh                \
+           openssl                \
+           openssl10              \
+           openvpn                \
+           p11-kit                \
+           pam-krb5               \
+           php                    \
+           pidentd                \
+           pinentry               \
+           pinepgp                \
+           popa3d                 \
+           portmap                \
+           postfix                \
+           ppp                    \
+           pppsetup               \
+           procmail               \
+           proftpd                \
+           pssh                   \
+           radius                 \
+           radiusclient           \
+           rdist                  \
+           rfkill                 \
+           rp-pppoe               \
+           rpcbind                \
+           rpcsvc-proto           \
+           rsync                  \
+           samba                  \
+           scute                  \
+           sendmail               \
+           slrn                   \
+           snownews               \
+           stunnel                \
+           tcp_wrappers           \
+           tcpdump                \
+           telnet-OpenBSD         \
+           tftp-hpa               \
+           tin                    \
+           traceroute             \
+           trn                    \
+           trn4                   \
+           ulogd                  \
+           uwsgi                  \
+           vlan                   \
+           vsftpd                 \
+           whois                  \
+           wireless-regdb         \
+           wireless-tools         \
+           wpa_supplicant         \
+           yp                     \
+           ytalk
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/n/ModemManager/Makefile b/packages/n/ModemManager/Makefile
new file mode 100644
index 0000000..c3a0db4
--- /dev/null
+++ b/packages/n/ModemManager/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.freedesktop.org/wiki/Software/ModemManager
+#
+# Downloads:
+# =========
+# https://www.freedesktop.org/software/ModemManager
+#
+
+url         = https://www.freedesktop.org/software/ModemManager
+
+versions    = 1.0.0 1.4.4 1.4.12 1.10.8 1.16.2 1.16.4 1.18.12
+
+pkgname     = ModemManager
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/alpine/Makefile b/packages/n/alpine/Makefile
new file mode 100644
index 0000000..a321225
--- /dev/null
+++ b/packages/n/alpine/Makefile
@@ -0,0 +1,25 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := alpine        \
+           maildir-patch
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/n/alpine/alpine/Makefile b/packages/n/alpine/alpine/Makefile
new file mode 100644
index 0000000..b79dbc1
--- /dev/null
+++ b/packages/n/alpine/alpine/Makefile
@@ -0,0 +1,67 @@
+#
+# Project Home:
+# ============
+#   http://patches.freeiz.com/alpine
+#
+# Git:
+# ===
+#   https://repo.or.cz/alpine.git
+#
+# Downloads:
+# =========
+#   http://patches.freeiz.com/alpine/release
+#   http://alpine.x10host.com/alpine/release/src
+#
+
+url        = https://repo.or.cz
+
+repo_name  = alpine
+pkg_name   = alpine
+suffix     = tar.xz
+
+versions   = 2.25 2.25.1 2.26
+
+# List of tags to be extracted:
+TAGS       = $(addprefix v, $(versions))
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/alpine/maildir-patch/Makefile b/packages/n/alpine/maildir-patch/Makefile
new file mode 100644
index 0000000..fbbc78a
--- /dev/null
+++ b/packages/n/alpine/maildir-patch/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+#   https://alpineapp.email/alpine/info/maildir.html
+#
+# Downloads:
+# =========
+#   https://alpineapp.email/alpine/patches/alpine-${VERSION}/maildir.patch.gz
+#
+
+url         = https://alpineapp.email/alpine/patches
+
+versions    = 2.25 2.26
+pkgname     = maildir.patch
+suffix      = gz
+
+tarballs    = $(addsuffix -$(pkgname).$(suffix), $(addprefix alpine-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/alpine-$$version/$(pkgname).$(suffix) ; \
+	  mv $(pkgname).$(suffix) alpine-$${version}-$(pkgname).$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/arptables/Makefile b/packages/n/arptables/Makefile
new file mode 100644
index 0000000..0cf0da9
--- /dev/null
+++ b/packages/n/arptables/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/arptables/
+#
+
+url         = https://www.netfilter.org/pub/arptables
+
+versions    = 0.0.5
+
+pkgname     = arptables
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/autofs/Makefile b/packages/n/autofs/Makefile
new file mode 100644
index 0000000..8501139
--- /dev/null
+++ b/packages/n/autofs/Makefile
@@ -0,0 +1,44 @@
+#
+# Downloads:
+# =========
+# ftp://ftp.kernel.org/pub/linux/daemons/autofs/v5
+# https://mirrors.edge.kernel.org/pub/linux/daemons/autofs/v5
+#
+
+
+url       = https://www.kernel.org/pub/linux/daemons
+
+versions  = 5.0.7 5.1.0 5.1.1 5.1.6 5.1.7 5.1.8
+
+pkg_name  = autofs
+arch_type = tar.xz
+suffixes  = $(arch_type) tar.sign
+
+files     = $(foreach suffix, $(suffixes), $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions))))
+
+tarballs  = $(addsuffix .$(arch_type), $(addprefix $(pkg_name)-, $(versions)))
+sha1s     = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(files) $(sha1s)
+
+
+.PHONY: downloads_clean
+
+$(files):
+	@echo -e "\n======= Downloading '$(pkg_name)' sourses =======\n"
+	@for version in $(versions) ; do \
+	  major_minor=`echo $$version | sed 's/\([0-9]*\)\([\.].*\)/\1/'` ; \
+	  for suffix in $(suffixes) ; do \
+	    wget -N $(url)/$(pkg_name)/v$$major_minor/$(pkg_name)-$$version.$$suffix ;  \
+	  done ; \
+	done
+
+$(sha1s): %.$(arch_type).sha1sum : %.$(arch_type)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -f $(files) $(sha1s)
diff --git a/packages/n/avahi/Makefile b/packages/n/avahi/Makefile
new file mode 100644
index 0000000..1c66645
--- /dev/null
+++ b/packages/n/avahi/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.avahi.org
+#
+# Downloads:
+# =========
+# https://avahi.org/download
+#
+
+url         = https://avahi.org/download
+
+versions    = 0.6.31 0.6.32 0.7 0.8
+
+pkgname     = avahi
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/biff+comsat/Makefile b/packages/n/biff+comsat/Makefile
new file mode 100644
index 0000000..b0c512a
--- /dev/null
+++ b/packages/n/biff+comsat/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/mail/biffs
+# https://www.ibiblio.org/pub/linux/system/mail/biffs
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/mail/biffs
+
+versions    = 0.17
+
+pkgname     = biff+comsat
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/bind/Makefile b/packages/n/bind/Makefile
new file mode 100644
index 0000000..b549046
--- /dev/null
+++ b/packages/n/bind/Makefile
@@ -0,0 +1,44 @@
+#
+# Project Home:
+# ============
+# https://www.isc.org/bind
+# https://www.isc.org/download
+#
+# Downloads:
+# =========
+# ftp://ftp.isc.org/isc/bind9/$(VERSION)
+# https://ftp.isc.org/isc/bind9/$(VERSION)
+#
+
+url         = https://ftp.isc.org/isc/bind9
+
+versions    = 9.16.11 9.16.13 9.16.39
+versions   += 9.17.11
+versions   += 9.18.13
+versions   += 9.19.11
+
+pkgname     = bind
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$$version/$(pkgname)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/bluez-firmware/Makefile b/packages/n/bluez-firmware/Makefile
new file mode 100644
index 0000000..2bdf1c8
--- /dev/null
+++ b/packages/n/bluez-firmware/Makefile
@@ -0,0 +1,43 @@
+#
+# Project Home:
+# ============
+# http://www.bluez.org
+#
+# NOTE:
+#   moved to deprecated category.
+#   This package needed for Broadcom BCM203x and STLC2300 Bluetooth chips.
+#
+# Downloads:
+# =========
+# http://www.bluez.org/download
+#
+
+url         = http://bluez.sf.net/download
+
+versions    = 1.2
+
+pkgname     = bluez-firmware
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/bluez-hcidump/Makefile b/packages/n/bluez-hcidump/Makefile
new file mode 100644
index 0000000..19ea636
--- /dev/null
+++ b/packages/n/bluez-hcidump/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# http://www.bluez.org
+#
+# Downloads:
+# =========
+# ftp://ftp.kernel.org/pub/linux/bluetooth
+# https://mirrors.edge.kernel.org/pub/linux/bluetooth
+#
+
+
+url       = https://www.kernel.org/pub/linux/bluetooth
+
+versions  = 2.4 2.5
+
+pkg_name  = bluez-hcidump
+arch_type = tar.xz
+suffixes  = $(arch_type) tar.sign
+
+files     = $(foreach suffix, $(suffixes), $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions))))
+
+tarballs  = $(addsuffix .$(arch_type), $(addprefix $(pkg_name)-, $(versions)))
+sha1s     = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(files) $(sha1s)
+
+
+.PHONY: downloads_clean
+
+$(files):
+	@echo -e "\n======= Downloading '$(pkg_name)' sourses =======\n"
+	@for version in $(versions) ; do \
+	  for suffix in $(suffixes) ; do \
+	    wget -N $(url)/$(pkg_name)-$$version.$$suffix ;  \
+	  done ; \
+	done
+
+$(sha1s): %.$(arch_type).sha1sum : %.$(arch_type)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -f $(files) $(sha1s)
diff --git a/packages/n/bluez/Makefile b/packages/n/bluez/Makefile
new file mode 100644
index 0000000..8308efc
--- /dev/null
+++ b/packages/n/bluez/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# http://www.bluez.org
+#
+# Downloads:
+# =========
+# ftp://ftp.kernel.org/pub/linux/bluetooth
+# https://mirrors.edge.kernel.org/pub/linux/bluetooth
+#
+
+
+url       = https://www.kernel.org/pub/linux/bluetooth
+
+versions  = 4.99 5.24 5.37 5.42 5.52 5.56 5.62 5.66
+
+pkg_name  = bluez
+arch_type = tar.xz
+suffixes  = $(arch_type) tar.sign
+
+files     = $(foreach suffix, $(suffixes), $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions))))
+
+tarballs  = $(addsuffix .$(arch_type), $(addprefix $(pkg_name)-, $(versions)))
+sha1s     = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(files) $(sha1s)
+
+
+.PHONY: downloads_clean
+
+$(files):
+	@echo -e "\n======= Downloading '$(pkg_name)' sourses =======\n"
+	@for version in $(versions) ; do \
+	  for suffix in $(suffixes) ; do \
+	    wget -N $(url)/$(pkg_name)-$$version.$$suffix ;  \
+	  done ; \
+	done
+
+$(sha1s): %.$(arch_type).sha1sum : %.$(arch_type)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -f $(files) $(sha1s)
diff --git a/packages/n/bootp-debian/Makefile b/packages/n/bootp-debian/Makefile
new file mode 100644
index 0000000..0706cd1
--- /dev/null
+++ b/packages/n/bootp-debian/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://www.ietf.org/rfc/rfc951.txt
+# ftp://ftp.ntplx.net/pub/networking/bootp
+#
+# Downloads:
+# =========
+# ftp://ftp.debian.org/debian/pool/main/b/bootp
+# https://deb.debian.org/debian/pool/main/b/bootp
+#
+
+url         = https://deb.debian.org/debian/pool/main/b/bootp
+
+version     = 2.4.3
+pkgname     = bootp
+suffix      = orig.tar.gz
+
+tarball     = $(addsuffix .$(suffix), $(addprefix $(pkgname)_, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarball))
+patch       = $(addsuffix -18.diff.gz, $(addprefix $(pkgname)_, $(version)))
+description = $(addsuffix -18.dsc, $(addprefix $(pkgname)_, $(version)))
+
+files       = $(patch) $(description)
+
+all: $(tarball) $(files) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarball):
+	@echo -e "\n======= Downloading source tarball =======\n"
+	wget -N $(url)/$(tarball)
+
+$(files): $(tarball)
+	@echo -e "\n======= Downloading patch and description =======\n"
+	@for file in $(files) ; do \
+	  wget -N $(url)/$$file ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarball) $(files) $(sha1s)
diff --git a/packages/n/bootp/Makefile b/packages/n/bootp/Makefile
new file mode 100644
index 0000000..0463e65
--- /dev/null
+++ b/packages/n/bootp/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.ietf.org/rfc/rfc951.txt
+#
+# Downloads:
+# =========
+# ftp://ftp.ntplx.net/pub/networking/bootp
+#
+
+url         = ftp://ftp.ntplx.net/pub/networking/bootp
+
+versions    = 2.4.3
+
+pkgname     = bootp
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/bridge-utils/Makefile b/packages/n/bridge-utils/Makefile
new file mode 100644
index 0000000..3f9af12
--- /dev/null
+++ b/packages/n/bridge-utils/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge
+# http://sourceforge.net/projects/bridge
+#
+# Downloads:
+# =========
+# https://mirrors.edge.kernel.org/pub/linux/utils/net/bridge-utils
+#
+
+url         = https://mirrors.edge.kernel.org/pub/linux/utils/net/bridge-utils
+
+versions    = 1.6 1.7.1
+
+pkgname     = bridge-utils
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/bsd-finger/Makefile b/packages/n/bsd-finger/Makefile
new file mode 100644
index 0000000..5af6977
--- /dev/null
+++ b/packages/n/bsd-finger/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/finger
+# https://www.ibiblio.org/pub/linux/system/network/finger
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/finger
+
+versions    = 0.17
+
+pkgname     = bsd-finger
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/ca-certificates/Makefile b/packages/n/ca-certificates/Makefile
new file mode 100644
index 0000000..6a08622
--- /dev/null
+++ b/packages/n/ca-certificates/Makefile
@@ -0,0 +1,27 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := cacert.org   \
+           debian       \
+           mozilla      \
+           spi-inc.org
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/n/ca-certificates/cacert.org/Makefile b/packages/n/ca-certificates/cacert.org/Makefile
new file mode 100644
index 0000000..b3a5f1d
--- /dev/null
+++ b/packages/n/ca-certificates/cacert.org/Makefile
@@ -0,0 +1,46 @@
+
+cacert_home     = http://www.cacert.org/index.php?id=3
+cacert_url      = http://www.cacert.org/certs
+cacert_files    = root class3
+cacert_suffixes = crt der txt
+cacert_asc      = cacert.asc
+
+ID              = 65D0FD58
+signatures      = sign/cacert-fingerprint.txt sign/cacert-gpg-fingerprint.txt
+
+tarball         = cacert.tar.xz
+suffix          = $(shell echo $(tarball) | cut -f 2,3 -d '.')
+sha1s           = $(addsuffix .sha1sum, $(tarball))
+
+files  = $(foreach sfx, $(cacert_suffixes), $(addsuffix .$(sfx),$(cacert_files)))
+files += $(cacert_asc)
+
+all: $(tarball) $(sha1s)
+
+.PHONY: verify downloads_clean
+
+
+$(files):
+	@echo -e "\n======= Downloading cacert.org certificates =======\n"
+	@for file in $(files) ; do \
+	   wget -N $(cacert_url)/$$file ; \
+	 done
+
+$(tarball): $(files)
+	@( directory=`echo $(tarball) | cut -f 1 -d '.'`    ; \
+	   mkdir -p $$directory                             ; \
+	   cp -a sign $$directory                           ; \
+	   cp -a README *.crt *.der *.txt *.asc $$directory ; \
+	   tar cJvf $(tarball) $$directory                  ; \
+	   rm -rf $$directory                               ; \
+	   rm -f *.crt *.der *.txt *.asc                    ; \
+	 )
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	   echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	   sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	 done
+
+downloads_clean:
+	@rm -f $(tarball) $(sha1s) *.crt *.der *.txt *.asc *.gpg
diff --git a/packages/n/ca-certificates/cacert.org/README b/packages/n/ca-certificates/cacert.org/README
new file mode 100644
index 0000000..196fc7e
--- /dev/null
+++ b/packages/n/ca-certificates/cacert.org/README
@@ -0,0 +1,31 @@
+
+Confirmed the certificate fingerprint:
+=====================================
+
+$ openssl x509 -in root.crt -fingerprint -noout -sha1
+SHA1 Fingerprint=13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33
+
+$ openssl x509 -in root.crt -fingerprint -noout -md5
+MD5 Fingerprint=A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B
+
+
+$ openssl x509 -in class3.crt -fingerprint -noout -sha1
+SHA1 Fingerprint=AD:7C:3F:64:FC:44:39:FE:F4:E9:0B:E8:F4:7C:6C:FA:8A:AD:FD:CE
+
+$ openssl x509 -in class3.crt -fingerprint -noout -md5
+MD5 Fingerprint=F7:25:12:82:4E:67:B5:D0:8D:92:B7:7C:0B:86:7A:42
+
+
+$ LANG=C gpg --verify sign/cacert-fingerprint.txt
+gpg: Signature made Thu Sep  4 00:57:45 2003 CDT using DSA key ID 65D0FD58
+gpg: Good signature from "CA Cert Signing Authority (Root CA) <gpg@cacert.org>"
+gpg: WARNING: This key is not certified with a trusted signature!
+gpg:          There is no indication that the signature belongs to the owner.
+Primary key fingerprint: A31D 4F81 EF4E BD07 B456  FA04 D2BB 0D01 65D0 FD58
+
+$ LANG=C gpg --verify sign/cacert-gpg-fingerprint.txt
+gpg: Signature made Sun Feb 13 23:10:37 2005 CST using DSA key ID 65D0FD58
+gpg: Good signature from "CA Cert Signing Authority (Root CA) <gpg@cacert.org>"
+gpg: WARNING: This key is not certified with a trusted signature!
+gpg:          There is no indication that the signature belongs to the owner.
+Primary key fingerprint: A31D 4F81 EF4E BD07 B456  FA04 D2BB 0D01 65D0 FD58
diff --git a/packages/n/ca-certificates/cacert.org/sign/README b/packages/n/ca-certificates/cacert.org/sign/README
new file mode 100644
index 0000000..cb4529f
--- /dev/null
+++ b/packages/n/ca-certificates/cacert.org/sign/README
@@ -0,0 +1,40 @@
+
+Signatures 'cacert-fingerprint.asc' and 'cacert-gpg-fingerprint.asc'
+are taken from http://www.cacert.org/index.php?id=3 WEB page:
+============================================================
+
+GPG Key ID: 0x65D0FD58
+Fingerprint: A31D 4F81 EF4E BD07 B456 FA04 D2BB 0D01 65D0 FD58
+
+PKI fingerprint signed by the CAcert GPG Key
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+For most software, the fingerprint is reported as:
+A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B
+
+Under MSIE the thumbprint is reported as:
+135C EC36 F49C B8E9 3B1A B270 CD80 8846 76CE 8F33
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.2.2 (GNU/Linux)
+
+iD8DBQE/VtRZ0rsNAWXQ/VgRAphfAJ9jh6TKBDexG0NTTUHvdNuf6O9RuQCdE5kD
+Mch2LMZhK4h/SBIft5ROzVU=
+=R/pJ
+-----END PGP SIGNATURE-----
+
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+pub  1024D/65D0FD58 2003-07-11 CA Cert Signing Authority (Root CA)
+     Key fingerprint = A31D 4F81 EF4E BD07 B456  FA04 D2BB 0D01 65D0 FD58
+sub  2048g/113ED0F2 2003-07-11 [expires: 2033-07-03]
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.2.5 (GNU/Linux)
+
+iD8DBQFCEDLN0rsNAWXQ/VgRArhhAJ9EY1TJOzsVVuy2lL98CoKL0vnJjQCfbdBk
+TG1yj+lkktROGGyn0hJ5SbM=
+=tXoj
+-----END PGP SIGNATURE-----
diff --git a/packages/n/ca-certificates/cacert.org/sign/cacert-fingerprint.txt b/packages/n/ca-certificates/cacert.org/sign/cacert-fingerprint.txt
new file mode 100644
index 0000000..5b0a358
--- /dev/null
+++ b/packages/n/ca-certificates/cacert.org/sign/cacert-fingerprint.txt
@@ -0,0 +1,15 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+For most software, the fingerprint is reported as:
+A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B
+
+Under MSIE the thumbprint is reported as:
+135C EC36 F49C B8E9 3B1A B270 CD80 8846 76CE 8F33
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.2.2 (GNU/Linux)
+
+iD8DBQE/VtRZ0rsNAWXQ/VgRAphfAJ9jh6TKBDexG0NTTUHvdNuf6O9RuQCdE5kD
+Mch2LMZhK4h/SBIft5ROzVU=
+=R/pJ
+-----END PGP SIGNATURE-----
diff --git a/packages/n/ca-certificates/cacert.org/sign/cacert-gpg-fingerprint.txt b/packages/n/ca-certificates/cacert.org/sign/cacert-gpg-fingerprint.txt
new file mode 100644
index 0000000..33d2868
--- /dev/null
+++ b/packages/n/ca-certificates/cacert.org/sign/cacert-gpg-fingerprint.txt
@@ -0,0 +1,13 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+pub  1024D/65D0FD58 2003-07-11 CA Cert Signing Authority (Root CA)
+     Key fingerprint = A31D 4F81 EF4E BD07 B456  FA04 D2BB 0D01 65D0 FD58
+sub  2048g/113ED0F2 2003-07-11 [expires: 2033-07-03]
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.2.5 (GNU/Linux)
+
+iD8DBQFCEDLN0rsNAWXQ/VgRArhhAJ9EY1TJOzsVVuy2lL98CoKL0vnJjQCfbdBk
+TG1yj+lkktROGGyn0hJ5SbM=
+=tXoj
+-----END PGP SIGNATURE-----
diff --git a/packages/n/ca-certificates/debian/Makefile b/packages/n/ca-certificates/debian/Makefile
new file mode 100644
index 0000000..293f041
--- /dev/null
+++ b/packages/n/ca-certificates/debian/Makefile
@@ -0,0 +1,56 @@
+#
+# Project Home:
+# ============
+# https://packages.debian.org/sid/ca-certificates
+#
+# Downloads:
+# =========
+# https://deb.debian.org/debian/pool/main/c/ca-certificates
+# https://ftp.debian.org/debian/pool/main/c/ca-certificates/
+#
+
+url          = https://ftp.debian.org/debian/pool/main/c/ca-certificates
+
+versions     = 20190110 20210119 20211016
+
+pkgname      = ca-certificates
+suffix       = tar.xz
+
+tarballs     = $(addsuffix .$(suffix), $(addprefix $(pkgname)_, $(versions)))
+sha1s        = $(addsuffix .sha1sum, $(tarballs))
+descriptions = $(addsuffix .dsc, $(addprefix $(pkgname)_, $(versions)))
+
+files       = $(descriptions)
+
+all: $(tarballs) $(files) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarball =======\n"
+	@for tarball in $(tarballs) ; do \
+	   wget -N $(url)/$${tarball} ; \
+	   version=`echo $${tarball} | sed 's,$(pkgname)_,,' | sed 's,\.$(suffix),,'` ; \
+	   if [ "$${version}" -ge "20210119" ] ; then \
+	     tar xJf $(pkgname)_$${version}.$(suffix) ; \
+	     mv work $(pkgname)-$${version} ; \
+	     tar cJf $(pkgname)_$${version}.$(suffix) $(pkgname)-$${version} ; \
+	     rm -rf $(pkgname)-$${version} ; \
+	   fi ; \
+	 done
+
+$(files): $(tarballs)
+	@echo -e "\n======= Downloading patch and description =======\n"
+	@for file in $(files) ; do \
+	  wget -N $(url)/$${file} ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$${tarball}' sha1sum =======\n" ; \
+	  sha1sum --binary $${tarball} > $${tarball}.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(files) $(sha1s)
diff --git a/packages/n/ca-certificates/mozilla/Makefile b/packages/n/ca-certificates/mozilla/Makefile
new file mode 100644
index 0000000..2fe8690
--- /dev/null
+++ b/packages/n/ca-certificates/mozilla/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# Repo: https://hg.mozilla.org/mozilla-central/file
+# Path: https://hg.mozilla.org/mozilla-central/file/tip/security/nss/lib/ckfw/builtins
+#
+# Downloads:
+# =========
+# https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt
+# https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/nssckbi.h
+#
+
+url         = https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins
+
+version     = $(shell echo `date +%Y%m%d`)
+pkgname     = mozilla-certs
+suffix      = tar.xz
+
+tarball     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarball))
+
+
+all: $(tarball) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarball):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@wget -N $(url)/certdata.txt
+	@wget -N $(url)/nssckbi.h
+	@tar cJvf $(tarball) certdata.txt nssckbi.h
+	@rm -f certdata.txt nssckbi.h
+
+$(sha1s): $(tarball)
+	@echo -e "\n======= Calculation the '$(tarball)' sha1sum =======\n"
+	@sha1sum --binary $(tarball) > $(tarball).sha1sum ; \
+
+downloads_clean:
+	@rm -rf $(pkgname)-*$(suffix) $(pkgname)-*$(suffix).sha1sum
diff --git a/packages/n/ca-certificates/spi-inc.org/Makefile b/packages/n/ca-certificates/spi-inc.org/Makefile
new file mode 100644
index 0000000..a2ca1ae
--- /dev/null
+++ b/packages/n/ca-certificates/spi-inc.org/Makefile
@@ -0,0 +1,41 @@
+
+cacert_home     = http://www.spi-inc.org/ca
+cacert_url      = http://www.spi-inc.org/ca
+cacert_files    = spi-cacert.crt
+
+signature       = spi-cacert.fingerprint.txt
+
+tarball         = spi-inc.tar.xz
+suffix          = $(shell echo $(tarball) | cut -f 2,3 -d '.')
+sha1s           = $(addsuffix .sha1sum, $(tarball))
+
+files  = $(cacert_files) $(signature)
+
+all: $(tarball) $(sha1s)
+
+.PHONY: verify downloads_clean
+
+
+$(files):
+	@echo -e "\n======= Downloading cacert.org certificates =======\n"
+	@for file in $(files) ; do \
+	   wget -N $(cacert_url)/$$file ; \
+	 done
+
+$(tarball): $(files)
+	@( directory=`echo $(tarball) | cut -f 1 -d '.'` ; \
+	   mkdir -p $$directory                          ; \
+	   cp -a *.crt *.txt $$directory                 ; \
+	   tar cJvf $(tarball) $$directory               ; \
+	   rm -rf $$directory                            ; \
+	   rm -f *.crt *.txt                             ; \
+	 )
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	   echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	   sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	 done
+
+downloads_clean:
+	@rm -f $(tarball) $(sha1s) *.crt *.txt
diff --git a/packages/n/cifs-utils/Makefile b/packages/n/cifs-utils/Makefile
new file mode 100644
index 0000000..29e3745
--- /dev/null
+++ b/packages/n/cifs-utils/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://wiki.samba.org/index.php/LinuxCIFS_utils
+#
+# Downloads:
+# =========
+# ftp://ftp.samba.org/pub/linux-cifs/cifs-utils
+# https://download.samba.org/pub/linux-cifs/cifs-utils
+#
+
+
+url       = https://download.samba.org/pub/linux-cifs/cifs-utils
+
+versions  = 5.5 6.4 6.9 6.12 6.15 7.0
+
+pkg_name  = cifs-utils
+arch_type = tar.bz2
+suffixes  = $(arch_type) $(arch_type).asc
+
+files     = $(foreach suffix, $(suffixes), $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions))))
+
+tarballs  = $(addsuffix .$(arch_type), $(addprefix $(pkg_name)-, $(versions)))
+sha1s     = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(files) $(sha1s)
+
+
+.PHONY: downloads_clean
+
+$(files):
+	@echo -e "\n======= Downloading '$(pkg_name)' sourses =======\n"
+	@for version in $(versions) ; do \
+	  for suffix in $(suffixes) ; do \
+	    wget -N $(url)/$(pkg_name)-$$version.$$suffix ;  \
+	  done ; \
+	done
+
+$(sha1s): %.$(arch_type).sha1sum : %.$(arch_type)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -f $(files) $(sha1s)
diff --git a/packages/n/conntrack-tools/Makefile b/packages/n/conntrack-tools/Makefile
new file mode 100644
index 0000000..411cde5
--- /dev/null
+++ b/packages/n/conntrack-tools/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org/projects/conntrack-tools
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/conntrack-tools/
+#
+
+url         = https://www.netfilter.org/pub/conntrack-tools/
+
+versions    = 1.4.2 1.4.3 1.4.5 1.4.6 1.4.7
+
+pkgname     = conntrack-tools
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/crda/Makefile b/packages/n/crda/Makefile
new file mode 100644
index 0000000..07f7cce
--- /dev/null
+++ b/packages/n/crda/Makefile
@@ -0,0 +1,60 @@
+#
+# Project Home:
+# ============
+# https://wireless.wiki.kernel.org/en/developers/Regulatory/CRDA
+#
+# Git:
+# ===
+# https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/crda.git
+#
+
+url         = https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/crda.git
+
+repo_name   = crda
+
+versions    = 3.18 4.14 4.15
+
+pkgname     = crda
+suffix      = tar.xz
+
+git_repo    = .git_clone
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url) $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=`echo v$$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$tag | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/curl/Makefile b/packages/n/curl/Makefile
new file mode 100644
index 0000000..25b2b76
--- /dev/null
+++ b/packages/n/curl/Makefile
@@ -0,0 +1,57 @@
+#
+# Project Home:
+# ============
+# https://curl.se
+#
+# Downloads:
+# =========
+# https://curl.se/download.html
+#
+# cacert download:
+# ===============
+# http://curl.haxx.se/docs/caextract.html
+#
+
+url         = https://curl.se/download
+cacert_url  = https://curl.se/ca
+
+versions    = 7.66.0 7.75.0 7.86.0
+versions   += 8.0.1
+
+pkgname     = curl
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .asc, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+cacert      = cacert.pem.bz2
+
+all: $(tarballs) $(signatures) $(sha1s) $(cacert)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).asc : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(cacert):
+	@echo -e "\n======= Downloading $(cacert) tarball =======\n"
+	@wget -N $(cacert_url)/cacert.pem ; xz -9 cacert.pem ; rm -f cacert.pem
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s) $(cacert)
diff --git a/packages/n/cyrus-imapd/Makefile b/packages/n/cyrus-imapd/Makefile
new file mode 100644
index 0000000..2e71bf7
--- /dev/null
+++ b/packages/n/cyrus-imapd/Makefile
@@ -0,0 +1,52 @@
+#
+#
+# Project Home:
+# ============
+#   https://www.cyrusimap.org
+#
+# Github:
+# ======
+#   git clone https://github.com/cyrusimap/cyrus-imapd.git
+#
+# Downloads:
+# =========
+#   https://github.com/cyrusimap/cyrus-imapd/releases
+#   https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-3.4.2/cyrus-imapd-3.4.2.tar.gz
+#
+# NOTE:
+#   Git snapshot doesn't contains man pages.
+#
+
+url        = https://github.com/cyrusimap/cyrus-imapd/releases/download
+
+
+versions   = 3.0.15 3.2.6 3.4.2 3.4.4 3.4.5 3.6.1
+
+pkg_name   = cyrus-imapd
+suffix     = tar.xz
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkg_name)-$$version/$(pkg_name)-$$version.tar.gz ;  \
+	  tar xzf $(pkg_name)-$$version.tar.gz ; \
+	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	  rm -rf $(pkg_name)-$$version $(pkg_name)-$$version.tar.gz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/cyrus-sasl/Makefile b/packages/n/cyrus-sasl/Makefile
new file mode 100644
index 0000000..2856052
--- /dev/null
+++ b/packages/n/cyrus-sasl/Makefile
@@ -0,0 +1,52 @@
+#
+#
+# Project Home:
+# ============
+#   https://www.cyrusimap.org/sasl
+#
+# Github:
+# ======
+#   git clone https://github.com/cyrusimap/cyrus-sasl
+#
+# Downloads:
+# =========
+#   https://github.com/cyrusimap/cyrus-sasl/releases
+#   https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-2.1.27/cyrus-sasl-2.1.27.tar.gz
+#
+# NOTE:
+#   Git snapshot doesn't contains man pages.
+#
+
+url        = https://github.com/cyrusimap/cyrus-sasl/releases/download
+
+
+versions   = 2.1.26 2.1.27 2.1.28
+
+pkg_name   = cyrus-sasl
+suffix     = tar.xz
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkg_name)-$$version/$(pkg_name)-$$version.tar.gz ;  \
+	  tar xzf $(pkg_name)-$$version.tar.gz ; \
+	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	  rm -rf $(pkg_name)-$$version $(pkg_name)-$$version.tar.gz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/dhcp/Makefile b/packages/n/dhcp/Makefile
new file mode 100644
index 0000000..879bf72
--- /dev/null
+++ b/packages/n/dhcp/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://isc.org/dhcp
+#
+# Downloads:
+# =========
+# https://ftp.isc.org/isc/dhcp/$(VERSION)
+# https://downloads.isc.org/isc/dhcp/$(VERSION)
+#
+
+url         = https://ftp.isc.org/isc/dhcp
+
+versions    = 4.2.5-P1 4.3.1 4.3.3 4.3.4 4.4.1 4.4.2 4.4.3 4.4.3-P1
+
+pkgname     = dhcp
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$$version/$(pkgname)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/dhcpcd/Makefile b/packages/n/dhcpcd/Makefile
new file mode 100644
index 0000000..801b993
--- /dev/null
+++ b/packages/n/dhcpcd/Makefile
@@ -0,0 +1,53 @@
+#
+# Project Home:
+# ============
+# http://roy.marples.name/blog
+# http://roy.marples.name/blog/categories/5-dhcpcd
+#
+# Downloads:
+# =========
+# https://roy.marples.name/downloads/dhcpcd
+#
+
+url          = https://roy.marples.name/downloads/dhcpcd
+
+old_versions = 6.0.5 6.4.2
+old_suffix   = tar.bz2
+
+new_versions = 6.10.1 8.1.1 9.4.0 9.4.1
+new_suffix   = tar.xz
+
+pkgname      = dhcpcd
+
+old_tarballs = $(addsuffix .$(old_suffix), $(addprefix $(pkgname)-, $(old_versions)))
+old_sha1s    = $(addsuffix .sha1sum, $(old_tarballs))
+
+new_tarballs = $(addsuffix .$(new_suffix), $(addprefix $(pkgname)-, $(new_versions)))
+new_sha1s    = $(addsuffix .sha1sum, $(new_tarballs))
+
+tarballs     = $(new_tarballs) $(old_tarballs)
+
+all: $(tarballs) $(new_sha1s) $(old_sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(new_sha1s): %.$(new_suffix).sha1sum : %.$(new_suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(old_sha1s): %.$(old_suffix).sha1sum : %.$(old_suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(new_sha1s) $(old_sha1s)
diff --git a/packages/n/dhcpdump/Makefile b/packages/n/dhcpdump/Makefile
new file mode 100644
index 0000000..63f28e0
--- /dev/null
+++ b/packages/n/dhcpdump/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# http://www.mavetju.org/unix/general.php
+#
+# Downloads:
+# =========
+# http://www.mavetju.org/download
+#
+
+url          = http://www.mavetju.org/download
+
+versions    = 1.8
+
+pkgname     = dhcpdump
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/dirmngr/Makefile b/packages/n/dirmngr/Makefile
new file mode 100644
index 0000000..c5a0524
--- /dev/null
+++ b/packages/n/dirmngr/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/dirmngr
+# https://gnupg.org/ftp/gcrypt/dirmngr
+#
+
+url         = https://gnupg.org/ftp/gcrypt/dirmngr
+
+versions    = 1.1.0 1.1.1
+pkgname     = dirmngr
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/dnsmasq/Makefile b/packages/n/dnsmasq/Makefile
new file mode 100644
index 0000000..09f0e3a
--- /dev/null
+++ b/packages/n/dnsmasq/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://thekelleys.org.uk/dnsmasq/doc.html
+#
+# Downloads:
+# =========
+# https://www.thekelleys.org.uk/dnsmasq
+#
+
+url         = https://www.thekelleys.org.uk/dnsmasq
+
+versions    = 2.80 2.84 2.85 2.89
+pkgname     = dnsmasq
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/ebtables/Makefile b/packages/n/ebtables/Makefile
new file mode 100644
index 0000000..fae81fe
--- /dev/null
+++ b/packages/n/ebtables/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/ebtables/
+#
+
+url         = https://www.netfilter.org/pub/ebtables
+
+versions    = 2.0.11
+
+pkgname     = ebtables
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/egd/Makefile b/packages/n/egd/Makefile
new file mode 100644
index 0000000..81c1172
--- /dev/null
+++ b/packages/n/egd/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# http://gnupg.org
+#
+# Downloads:
+# =========
+# https://gnupg.org/ftp/gcrypt/egd
+#
+
+url         = https://gnupg.org/ftp/gcrypt/egd
+
+versions    = 0.8
+
+pkgname     = egd
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/elm/Makefile b/packages/n/elm/Makefile
new file mode 100644
index 0000000..c87c554
--- /dev/null
+++ b/packages/n/elm/Makefile
@@ -0,0 +1,40 @@
+#
+# Downloads:
+# =========
+# ftp://ftp.netbsd.org/pub/pkgsrc/distfiles
+# https://ftp.netbsd.org/pub/pkgsrc/distfiles
+#
+
+url          = https://ftp.netbsd.org/pub/pkgsrc/distfiles
+
+versions     = 2.5.8
+
+pkgname      = elm
+suffix       = tar.gz
+
+tarballs     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s        = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)$$version.$(suffix) ; \
+	  tar xzf $(pkgname)$$version.$(suffix) ; \
+	  mv $(pkgname)$$version $(pkgname)-$$version ; \
+	  tar czf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version $(pkgname)$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/epic5/Makefile b/packages/n/epic5/Makefile
new file mode 100644
index 0000000..94b2d55
--- /dev/null
+++ b/packages/n/epic5/Makefile
@@ -0,0 +1,68 @@
+#
+# Project Home:
+# ============
+# http://www.epicsol.org
+#
+# Downloads:
+# =========
+# ftp://ftp.epicsol.org/pub/epic/EPIC5-PRODUCTION
+#
+
+url         = http://ftp.epicsol.org/pub/epic/EPIC5-PRODUCTION
+help_url    = http://ftp.epicsol.org/pub/epic/help
+
+pkgname     = epic5
+
+old_versions    = 1.1.6 1.1.9 1.1.10 1.1.11
+old_suffix      = tar.bz2
+
+old_tarballs    = $(addsuffix .$(old_suffix), $(addprefix $(pkgname)-, $(old_versions)))
+old_sha1s       = $(addsuffix .sha1sum, $(old_tarballs))
+
+new_versions    = 1.4 1.6 1.8 2.1.1 2.1.2 2.1.12
+new_suffix      = tar.xz
+
+new_tarballs    = $(addsuffix .$(new_suffix), $(addprefix $(pkgname)-, $(new_versions)))
+new_sha1s       = $(addsuffix .sha1sum, $(new_tarballs))
+
+help            = epic-help-current.tar.gz
+help_sha1s     += epic-help-current.tar.gz.sha1sum
+
+tarballs        = $(new_tarballs) $(old_tarballs)
+
+
+all: $(tarballs) $(old_sha1s) $(new_sha1s) $(help) $(help_sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(old_sha1s): %.$(old_suffix).sha1sum : %.$(old_suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(new_sha1s): %.$(new_suffix).sha1sum : %.$(new_suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+
+$(help): $(tarballs)
+	@echo -e "\n======= Downloading help tarball =======\n"
+	@wget -N --retr-symlinks $(help_url)/$(help)
+	@rm -f index.html
+
+$(help_sha1s): $(help)
+	@echo -e "\n======= Calculation the '$(help)' sha1sum =======\n"
+	@sha1sum --binary $(help) > $(help_sha1s)
+
+
+downloads_clean:
+	@rm -rf $(tarballs) $(old_sha1s) $(new_sha1s) $(help) $(help_sha1s)
diff --git a/packages/n/ethtool/Makefile b/packages/n/ethtool/Makefile
new file mode 100644
index 0000000..5edb4c6
--- /dev/null
+++ b/packages/n/ethtool/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.kernel.org/pub/software/network/ethtool
+#
+# Downloads:
+# =========
+# https://mirrors.edge.kernel.org/pub/software/network/ethtool
+#
+
+url         = https://www.kernel.org/pub/software/network/ethtool
+
+versions    = 2.6.36 3.0 3.4 3.5 3.8 3.9 3.10 3.11 3.12 3.18 4.5 5.3 5.10 5.19 6.2
+
+pkgname     = ethtool
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/fetchmail/Makefile b/packages/n/fetchmail/Makefile
new file mode 100644
index 0000000..e8f7668
--- /dev/null
+++ b/packages/n/fetchmail/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://www.fetchmail.info/
+# https://sourceforge.net/projects/fetchmail
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/fetchmail
+#
+
+url         = https://downloads.sourceforge.net/fetchmail
+
+versions    = 6.4.1 6.4.17 6.4.37
+
+pkg_name    = fetchmail
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  major_minor=`echo $$version | sed 's/\([0-9][.][0-9]*\)\([\.].*\)/\1/'` ; \
+	  wget -N $(url)/branch_$${major_minor}/$(pkg_name)-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/firmware/Makefile b/packages/n/firmware/Makefile
new file mode 100644
index 0000000..153f85a
--- /dev/null
+++ b/packages/n/firmware/Makefile
@@ -0,0 +1,26 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := ipw2100 \
+           ipw2200 \
+           zd1211
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/n/firmware/ipw2100/Makefile b/packages/n/firmware/ipw2100/Makefile
new file mode 100644
index 0000000..88571f2
--- /dev/null
+++ b/packages/n/firmware/ipw2100/Makefile
@@ -0,0 +1,46 @@
+#
+# Project Home:
+# ============
+# ... this is a very old product ...
+#
+# Info:
+# ====
+# http://wireless.kernel.org/en/users/Drivers/iwlwifi#Firmware
+#
+# Downloads:
+# =========
+# http://firmware.openbsd.org/firmware-dist
+#
+
+url         = http://firmware.openbsd.org/firmware-dist
+
+versions    = 1.3
+pkgname     = ipw2100-fw
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.tgz ; \
+	  mkdir -p $(pkgname)-$$version ; \
+	  tar xzf $(pkgname)-$$version.tgz -C $(pkgname)-$$version ; \
+	  tar cJf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version $(pkgname)-$$version.tgz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/firmware/ipw2200/Makefile b/packages/n/firmware/ipw2200/Makefile
new file mode 100644
index 0000000..f4753c3
--- /dev/null
+++ b/packages/n/firmware/ipw2200/Makefile
@@ -0,0 +1,45 @@
+#
+# Project Home:
+# ============
+# ... this is a very old product ...
+#
+# Info:
+# ====
+# http://wireless.kernel.org/en/users/Drivers/iwlwifi#Firmware
+#
+# Downloads:
+# =========
+# http://firmware.openbsd.org/firmware-dist
+#
+
+url         = http://firmware.openbsd.org/firmware-dist
+
+versions    = 3.1
+pkgname     = ipw2200-fw
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.tgz ; \
+	  tar xzf $(pkgname)-$$version.tgz ; \
+	  tar cJf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version $(pkgname)-$$version.tgz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/firmware/zd1211/Makefile b/packages/n/firmware/zd1211/Makefile
new file mode 100644
index 0000000..a8bd336
--- /dev/null
+++ b/packages/n/firmware/zd1211/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/zd1211
+#
+# Info:
+# ====
+# https://wireless.kernel.org/en/users/Drivers/zd1211rw
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/project/zd1211/zd1211-firmware/${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/zd1211/zd1211-firmware
+
+versions    = 1.4 1.5
+pkgname     = zd1211-firmware
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$$version/$(pkgname)-$$version.$(suffix) ; \
+	  tar xjf $(pkgname)-$$version.$(suffix) ; \
+	  rm -f $(pkgname)-$$version.$(suffix) ; \
+	  mv $(pkgname) $(pkgname)-$$version ; \
+	  tar cjf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/freeradius-client/Makefile b/packages/n/freeradius-client/Makefile
new file mode 100644
index 0000000..22f74e4
--- /dev/null
+++ b/packages/n/freeradius-client/Makefile
@@ -0,0 +1,72 @@
+#
+# Project Home:
+# ============
+# https://github.com/FreeRADIUS/freeradius-client
+#
+# GitHub:
+# ======
+# https://github.com/FreeRADIUS/freeradius-client
+#
+# Clone:
+# =====
+# https://github.com/FreeRADIUS/freeradius-client.git
+#
+
+url        = https://github.com/FreeRADIUS
+
+repo_name  = freeradius-client
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 932713f33a5334cfc5693d4c0a728bce25d11188:1.1.7
+revisions += c7d94ca0b59f8f618fddd8a73e0876bdbc441dc8:1.1.8
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/getmail/Makefile b/packages/n/getmail/Makefile
new file mode 100644
index 0000000..77d4436
--- /dev/null
+++ b/packages/n/getmail/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://pyropus.ca./software/getmail
+#
+# Downloads:
+# =========
+# https://pyropus.ca/software/getmail/old-versions
+#
+
+url         = https://pyropus.ca/software/getmail/old-versions
+
+versions    = 4.30.1 4.46.0 4.49.0 4.54.0 5.14 5.15 5.16
+
+pkgname     = getmail
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/gnupg/Makefile b/packages/n/gnupg/Makefile
new file mode 100644
index 0000000..12a555b
--- /dev/null
+++ b/packages/n/gnupg/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/gnupg
+# https://gnupg.org/ftp/gcrypt/gnupg
+#
+
+url         = https://gnupg.org/ftp/gcrypt/gnupg
+
+versions    = 1.4.15 1.4.16 1.4.18 1.4.20 1.4.23
+
+pkgname     = gnupg
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/gnupg2/Makefile b/packages/n/gnupg2/Makefile
new file mode 100644
index 0000000..9c077d1
--- /dev/null
+++ b/packages/n/gnupg2/Makefile
@@ -0,0 +1,50 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/gnupg
+# https://gnupg.org/ftp/gcrypt/gnupg
+#
+
+url         = https://gnupg.org/ftp/gcrypt/gnupg
+
+versions    = 2.0.21 2.0.22 2.0.26 2.0.29 2.1.11 2.1.12 2.2.17 2.2.27 2.2.41
+versions   += 2.3.8
+versions   += 2.4.0
+
+pkgname     = gnupg
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/gnutls/Makefile b/packages/n/gnutls/Makefile
new file mode 100644
index 0000000..9e59b26
--- /dev/null
+++ b/packages/n/gnutls/Makefile
@@ -0,0 +1,51 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/gnutls
+# https://gnupg.org/ftp/gcrypt/gnutls
+#
+
+url         = https://gnupg.org/ftp/gcrypt/gnutls
+
+versions    = 3.1.16 3.1.22 3.4.8 3.6.10 3.7.1 3.7.9
+versions   += 3.8.0
+
+pkgname     = gnutls
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  major_minor=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.0-9][0-9]*\)\([\.].*\)/\2/'` ; \
+	  wget -N $(url)/v$$major_minor/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  major_minor=`echo $$signature | sed 's/\([a-zA-Z-]*\)\([0-9][.0-9][0-9]*\)\([\.].*\)/\2/'` ; \
+	  wget -N $(url)/v$$major_minor/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/gpa/Makefile b/packages/n/gpa/Makefile
new file mode 100644
index 0000000..f49d892
--- /dev/null
+++ b/packages/n/gpa/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/gpa
+# https://gnupg.org/ftp/gcrypt/gpa
+#
+
+url         = https://gnupg.org/ftp/gcrypt/gpa
+
+versions    = 0.9.4 0.9.5 0.9.9 0.10.0
+
+pkgname     = gpa
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/gpgme/Makefile b/packages/n/gpgme/Makefile
new file mode 100644
index 0000000..3c67468
--- /dev/null
+++ b/packages/n/gpgme/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/gpgme
+# https://gnupg.org/ftp/gcrypt/gpgme
+#
+
+url         = https://gnupg.org/ftp/gcrypt/gpgme
+
+versions    = 1.4.1 1.4.2 1.4.3 1.5.1 1.6.0 1.13.1 1.15.1 1.16.0 1.19.0
+
+pkgname     = gpgme
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/htdig/Makefile b/packages/n/htdig/Makefile
new file mode 100644
index 0000000..885fa8c
--- /dev/null
+++ b/packages/n/htdig/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/htdig
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/htdig/files/htdig/3.2.0b6
+#
+
+url         = https://downloads.sourceforge.net/project/htdig/htdig
+
+versions    = 3.2.0b5 3.2.0b6
+
+pkg_name    = htdig
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$$version/$(pkg_name)-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/httpd/Makefile b/packages/n/httpd/Makefile
new file mode 100644
index 0000000..edee382
--- /dev/null
+++ b/packages/n/httpd/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://www.apache.org
+#
+# Downloads:
+# =========
+# https://httpd.apache.org/download.cgi
+# https://archive.apache.org/dist/httpd
+#
+
+url         = https://archive.apache.org/dist/httpd
+
+versions    = 2.4.6 2.4.10 2.4.18 2.4.41 2.4.46 2.4.51 2.4.57
+
+pkgname     = httpd
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .asc, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).asc : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/icmpinfo/Makefile b/packages/n/icmpinfo/Makefile
new file mode 100644
index 0000000..cee2fe1
--- /dev/null
+++ b/packages/n/icmpinfo/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/admin
+# https://www.ibiblio.org/pub/linux/system/network/admin
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/admin
+
+versions    = 1.11
+
+pkgname     = icmpinfo
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/idnkit/Makefile b/packages/n/idnkit/Makefile
new file mode 100644
index 0000000..0678be3
--- /dev/null
+++ b/packages/n/idnkit/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.nic.ad.jp/ja/idn/idnkit/download
+#
+# Downloads:
+# =========
+# https://www.nic.ad.jp/ja/idn/idnkit/download/sources
+#
+
+url         = https://www.nic.ad.jp/ja/idn/idnkit/download/sources
+
+versions    = 1.0
+
+pkgname     = idnkit
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(addsuffix -src, $(versions))))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/iftop/Makefile b/packages/n/iftop/Makefile
new file mode 100644
index 0000000..9f71a5c
--- /dev/null
+++ b/packages/n/iftop/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.ex-parrot.com/~pdw/iftop/
+#
+# Downloads:
+# =========
+# https://www.ex-parrot.com/~pdw/iftop/download
+#
+
+url          = https://www.ex-parrot.com/~pdw/iftop/download
+
+versions     = 0.17 1.0pre2 1.0pre4
+
+pkgname      = iftop
+suffix       = tar.gz
+
+tarballs     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s        = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/imap/Makefile b/packages/n/imap/Makefile
new file mode 100644
index 0000000..bcff46c
--- /dev/null
+++ b/packages/n/imap/Makefile
@@ -0,0 +1,68 @@
+#
+# Project Home:
+# ============
+#   https://github.com/uw-imap/imap
+#
+# GitHub:
+# ======
+#   git clone https://github.com/uw-imap/imap.git
+#
+
+url        = https://github.com/uw-imap
+
+repo_name  = imap
+pkg_name   = imap
+suffix     = tar.xz
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash |  tag  | tag name
+#            ----------------------------------------+-------+----------------
+revisions  = b4cecc531513cbb7506668f02f2144eae6e03511:2007.15:patches-FD29-RPM
+
+git_repo   = .git_clone
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/inetd/Makefile b/packages/n/inetd/Makefile
new file mode 100644
index 0000000..a22ccbd
--- /dev/null
+++ b/packages/n/inetd/Makefile
@@ -0,0 +1,45 @@
+#
+# Project Home:
+# ============
+# https://slackware.com
+#
+# Downloads:
+# =========
+# https://mirrors.slackware.com/slackware/slackware-14.2/source/n/inetd
+#
+
+url         = https://mirrors.slackware.com/slackware/slackware-14.2/source/n/inetd
+
+version     = 1.79
+pkgname     = inetd-OpenBSD
+suffix      = tar.gz
+
+tarball     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarball))
+patches     = $(addsuffix .diff.gz, $(addprefix $(pkgname)-, $(version)))
+patches    += $(addsuffix .diff.gz, inetd.loopingdos)
+
+
+all: $(tarball) $(patches) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarball):
+	@echo -e "\n======= Downloading source tarball =======\n"
+	wget -N $(url)/$(tarball)
+
+$(patches): $(tarball)
+	@echo -e "\n======= Downloading patch and description =======\n"
+	@for file in $(patches) ; do \
+	  wget -N $(url)/$$file ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarball) $(patches) $(sha1s)
diff --git a/packages/n/iperf3/Makefile b/packages/n/iperf3/Makefile
new file mode 100644
index 0000000..8759c7f
--- /dev/null
+++ b/packages/n/iperf3/Makefile
@@ -0,0 +1,75 @@
+#
+# Project Home:
+# ============
+# https://iperf.fr
+#
+# GitHub:
+# ======
+# https://github.com/esnet/iperf
+#
+# Clone:
+# =====
+# https://github.com/esnet/iperf.git
+#
+
+url        = https://github.com/esnet
+
+repo_name  = iperf
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 274eaed5b17f664e4ac6c79f1ba854b55f15a3a3:3.1.3
+revisions += dfcea9f6a09ead01089a3c9d20c7032f2c0af2c1:3.7
+revisions += 1f8fb13297f3e3e40169ebcd12e171167e394473:3.9
+revisions += e61aaf8c95df956cefbc54fab7b3d78914664180:3.12
+revisions += f48e7fa92b8932814f3d92f36986d51be9efe6e0:3.13
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/iproute2/Makefile b/packages/n/iproute2/Makefile
new file mode 100644
index 0000000..68de27a
--- /dev/null
+++ b/packages/n/iproute2/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://wiki.linuxfoundation.org/networking/iproute2
+#
+# Downloads:
+# =========
+# https://www.kernel.org/pub/linux/utils/net/iproute2
+#
+
+url         = https://www.kernel.org/pub/linux/utils/net/iproute2
+
+versions    = 3.4.0 3.5.0 3.8.0 3.9.0 3.10.0 3.11.0 3.12.0 3.14.0 3.15.0 3.16.0
+versions   += 4.4.0 4.5.0 5.3.0 5.9.0 5.11.0 5.19.0
+
+pkgname     = iproute2
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/ipset/Makefile b/packages/n/ipset/Makefile
new file mode 100644
index 0000000..a756438
--- /dev/null
+++ b/packages/n/ipset/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/ipset
+#
+
+url         = https://www.netfilter.org/pub/ipset
+
+versions    = 6.20 6.21 6.27 6.29 6.38 7.4 7.9 7.11 7.17
+
+pkgname     = ipset
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/iptables/Makefile b/packages/n/iptables/Makefile
new file mode 100644
index 0000000..50d5c0c
--- /dev/null
+++ b/packages/n/iptables/Makefile
@@ -0,0 +1,70 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/iptables
+#
+
+url             = https://www.netfilter.org/pub/iptables
+
+old_versions    = 1.4.20 1.4.21 1.6.0 1.8.3 1.8.7
+old_suffix      = tar.bz2
+
+new_versions    = 1.8.9
+new_suffix      = tar.xz
+
+pkgname         = iptables
+
+old_tarballs    = $(addsuffix .$(old_suffix), $(addprefix $(pkgname)-, $(old_versions)))
+old_signatures  = $(addsuffix .sig, $(old_tarballs))
+old_sha1s       = $(addsuffix .sha1sum, $(old_tarballs))
+
+new_tarballs    = $(addsuffix .$(new_suffix), $(addprefix $(pkgname)-, $(new_versions)))
+new_signatures  = $(addsuffix .sig, $(new_tarballs))
+new_sha1s       = $(addsuffix .sha1sum, $(new_tarballs))
+
+tarballs        = $(new_tarballs) $(old_tarballs)
+signatures      = $(new_signatures) $(old_signatures)
+sha1s           = $(new_sha1s) $(old_sha1s)
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(new_signatures): %.$(new_suffix).sig : %.$(new_suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(old_signatures): %.$(old_suffix).sig : %.$(old_suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(new_sha1s): %.$(new_suffix).sha1sum : %.$(new_suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(old_sha1s): %.$(old_suffix).sha1sum : %.$(old_suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/iptraf-ng/Makefile b/packages/n/iptraf-ng/Makefile
new file mode 100644
index 0000000..ab2855c
--- /dev/null
+++ b/packages/n/iptraf-ng/Makefile
@@ -0,0 +1,63 @@
+#
+# Project Home:
+# ============
+# https://github.com/iptraf-ng/iptraf-ng
+#
+# GitHub:
+# ======
+# git clone https://github.com/iptraf-ng/iptraf-ng.git
+#
+# Downloads:
+# =========
+# https://github.com/iptraf-ng/iptraf-ng/releases
+#
+
+url        = https://github.com/iptraf-ng
+
+repo_name  = iptraf-ng
+pkg_name   = iptraf-ng
+suffix     = tar.xz
+
+versions   = 1.2.0 1.2.1
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/iputils/Makefile b/packages/n/iputils/Makefile
new file mode 100644
index 0000000..975eb6d
--- /dev/null
+++ b/packages/n/iputils/Makefile
@@ -0,0 +1,74 @@
+#
+# Project Home:
+# ============
+# https://github.com/iputils/iputils
+#
+# GitHub:
+# ======
+# https://github.com/iputils/iputils
+#
+# Clone:
+# =====
+# https://github.com/iputils/iputils.git
+#
+
+url        = https://github.com/iputils
+
+repo_name  = iputils
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = cc16da6b574ce6637f3e6e9ab3c1a728663006ff:20210202
+revisions += 71bb2a6c72e9f658e90ac618c73d873a76bbaa81:20210722
+revisions += 1d1e7c43210d8af316a41cb2c53d612a4c16f34d:20211215
+revisions += 5ffabc4190cab975c7332645259e286a032e183b:20221126
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/irssi/Makefile b/packages/n/irssi/Makefile
new file mode 100644
index 0000000..895452d
--- /dev/null
+++ b/packages/n/irssi/Makefile
@@ -0,0 +1,70 @@
+#
+# Project Home:
+# ============
+# https://irssi.org
+#
+# GitHub:
+# ======
+# https://github.com/irssi/irssi
+# git clone https://github.com/irssi/irssi.git
+#
+
+url        = https://github.com/irssi
+
+repo_name  = irssi
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 42110b92e92cb40e82fd736d88b099d096483939:1.2.2
+revisions += 91dc3e4dfa1a9558c5a7fe0ea982cb9df0e2de65:1.2.3
+revisions += a09fcb90930c3f0d9e6bdf660dd01c451e817e46:1.4.4
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/iw/Makefile b/packages/n/iw/Makefile
new file mode 100644
index 0000000..b5c05d1
--- /dev/null
+++ b/packages/n/iw/Makefile
@@ -0,0 +1,49 @@
+#
+# Project Home:
+# ============
+# https://wireless.kernel.org/en/users/Documentation/iw
+#
+# Downloads:
+# =========
+# https://www.kernel.org/pub/software/network/iw
+# ftp://ftp.kernel.org/pub/software/network/iw
+# https://mirrors.edge.kernel.org/pub/software/network/iw
+#
+
+url         = https://www.kernel.org/pub/software/network/iw
+
+versions    = 3.5 3.17 4.3 4.14 5.3 5.9 5.19
+
+pkgname     = iw
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .tar.sign, $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/kerberos/Makefile b/packages/n/kerberos/Makefile
new file mode 100644
index 0000000..243d7f0
--- /dev/null
+++ b/packages/n/kerberos/Makefile
@@ -0,0 +1,42 @@
+#
+# Project Home:
+# ============
+# https://web.mit.edu/kerberos
+#
+# Downloads:
+# =========
+# https://web.mit.edu/kerberos/dist
+#
+
+url         = https://web.mit.edu/kerberos/dist/krb5
+
+
+versions    = 1.12.5 1.13.3 1.14 1.17 1.19.1 1.19.4 1.20.1
+
+pkgname     = krb5
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Getting '$(pkgname)' sourses =======\n"
+	@for tarball in $(tarballs) ; do \
+	  major_minor=`echo $$tarball | sed 's/\([a-zA-Z0-9-]*\)\([0-9]\.[0-9]*\)\(\..*\)/\2/'` ; \
+	  wget -N $(url)/$${major_minor}/$$tarball ; \
+	 done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	   echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	   sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	 done
+	@rm -f $(signed_tarballs)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/lftp/Makefile b/packages/n/lftp/Makefile
new file mode 100644
index 0000000..8dc7e91
--- /dev/null
+++ b/packages/n/lftp/Makefile
@@ -0,0 +1,70 @@
+#
+# Project Home:
+# ============
+# https://lftp.yar.ru
+#
+# Downloads:
+# =========
+# https://lftp.yar.ru/get.html
+# http://lftp.yar.ru/ftp
+#
+# Old versions (4.4.9 4.4.14 4.4.15) Downloads:
+# ============================================
+# ftp://ftp.cs.tu-berlin.de/pub/net/ftp/lftp
+#
+# MIRRORS:
+# ftp://ftp.st.ryukoku.ac.jp/pub/network/ftp/lftp   Japan
+# ftp://ftp.tuwien.ac.at/infosys/browsers/ftp/lftp  Austria
+# ftp://ftp.cs.tu-berlin.de/pub/net/ftp/lftp        Berlin, Germany
+# http://lftp.cybermirror.org                       Karlsruhe, Germany
+#
+
+url         = http://lftp.yar.ru/ftp
+
+versions    = 4.6.5 4.8.4 4.9.2
+
+pkgname     = lftp
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .asc, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+newest      = 4.6.2
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9-]*\)\([0-9][.0-9]*\)\(\.[a-z]*.*\)/\2/'` ; \
+	  if [ "$(newest)" == "`echo -e "$$version\n$(newest)" | sort -V | head -n1`" ] ; then \
+	    wget -N $(url)/$$tarball ; \
+	  else \
+	    wget -N $(url)/old/$$tarball ; \
+	  fi ; \
+	done
+
+$(signatures): %.$(suffix).asc : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  version=`echo $$signature | sed 's/\([a-zA-Z0-9-]*\)\([0-9][.0-9]*\)\(\.[a-z]*.*\)/\2/'` ; \
+	  if [ "$(newest)" == "`echo -e "$$version\n$(newest)" | sort -V | head -n1`" ] ; then \
+	    wget -N $(url)/$$signature ; \
+	    touch $$signature ; \
+	  else \
+	    wget -N $(url)/old/$$signature ; \
+	    touch $$signature ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libassuan/Makefile b/packages/n/libassuan/Makefile
new file mode 100644
index 0000000..b9bbf50
--- /dev/null
+++ b/packages/n/libassuan/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/libassuan
+# https://gnupg.org/ftp/gcrypt/libassuan
+#
+
+url         = https://gnupg.org/ftp/gcrypt/libassuan
+
+versions    = 2.1.0 2.1.1 2.1.2 2.4.2 2.5.3 2.5.4 2.5.5
+
+pkgname     = libassuan
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libgcrypt/Makefile b/packages/n/libgcrypt/Makefile
new file mode 100644
index 0000000..fb40b3c
--- /dev/null
+++ b/packages/n/libgcrypt/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/libgcrypt
+# https://gnupg.org/ftp/gcrypt/libgcrypt
+#
+
+url         = https://gnupg.org/ftp/gcrypt/libgcrypt
+
+versions    = 1.5.3 1.6.1 1.6.2 1.6.4 1.7.0 1.8.5 1.9.2 1.9.4 1.10.1 1.10.2
+
+pkgname     = libgcrypt
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libgpg-error/Makefile b/packages/n/libgpg-error/Makefile
new file mode 100644
index 0000000..0700442
--- /dev/null
+++ b/packages/n/libgpg-error/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/libgpg-error
+# https://gnupg.org/ftp/gcrypt/libgpg-error
+#
+
+url         = https://gnupg.org/ftp/gcrypt/libgpg-error
+
+versions    = 1.11 1.12 1.16 1.21 1.36 1.41 1.47
+
+pkgname     = libgpg-error
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libksba/Makefile b/packages/n/libksba/Makefile
new file mode 100644
index 0000000..071be55
--- /dev/null
+++ b/packages/n/libksba/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/libksba
+# https://gnupg.org/ftp/gcrypt/libksba
+#
+
+url         = https://gnupg.org/ftp/gcrypt/libksba
+
+versions    = 1.2.0 1.3.0 1.3.1 1.3.3 1.3.5 1.4.0 1.5.0 1.5.1 1.6.3
+
+pkgname     = libksba
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libmbim/Makefile b/packages/n/libmbim/Makefile
new file mode 100644
index 0000000..b694e55
--- /dev/null
+++ b/packages/n/libmbim/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://freedesktop.org/software/libmbim
+#
+# Downloads:
+# =========
+# https://freedesktop.org/software/libmbim
+#
+
+url         = https://freedesktop.org/software/libmbim
+
+versions    = 1.4.0 1.6.0 1.8.0 1.10.0 1.12.2 1.12.4 1.20.0 1.24.6 1.24.8 1.26.4
+
+pkgname     = libmbim
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/libmnl/Makefile b/packages/n/libmnl/Makefile
new file mode 100644
index 0000000..f32f73a
--- /dev/null
+++ b/packages/n/libmnl/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/libmnl
+#
+
+url         = https://www.netfilter.org/pub/libmnl
+
+versions    = 1.0.2 1.0.3 1.0.4 1.0.5
+
+pkgname     = libmnl
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libndp/Makefile b/packages/n/libndp/Makefile
new file mode 100644
index 0000000..be6d301
--- /dev/null
+++ b/packages/n/libndp/Makefile
@@ -0,0 +1,72 @@
+#
+# Project Home:
+# ============
+# http://libndp.org
+#
+# GitHub:
+# ======
+# https://github.com/jpirko/libndp
+#
+# Clone:
+# =====
+# https://github.com/jpirko/libndp.git
+#
+
+url        = https://github.com/jpirko
+
+repo_name  = libndp
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 96674e7d4f4d569c2c961e865cc16152dfab5f09:1.7
+revisions += 009ce9cd9b950ffa1f4f94c9436027b936850d0c:1.8
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/libnetfilter_acct/Makefile b/packages/n/libnetfilter_acct/Makefile
new file mode 100644
index 0000000..747a7fa
--- /dev/null
+++ b/packages/n/libnetfilter_acct/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/libnetfilter_acct
+#
+
+url         = https://www.netfilter.org/pub/libnetfilter_acct
+
+versions    = 1.0.1 1.0.2 1.0.3
+
+pkgname     = libnetfilter_acct
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libnetfilter_conntrack/Makefile b/packages/n/libnetfilter_conntrack/Makefile
new file mode 100644
index 0000000..347587d
--- /dev/null
+++ b/packages/n/libnetfilter_conntrack/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/libnetfilter_conntrack
+#
+
+url         = https://www.netfilter.org/pub/libnetfilter_conntrack
+
+versions    = 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9
+
+pkgname     = libnetfilter_conntrack
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libnetfilter_cthelper/Makefile b/packages/n/libnetfilter_cthelper/Makefile
new file mode 100644
index 0000000..1b13e71
--- /dev/null
+++ b/packages/n/libnetfilter_cthelper/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/libnetfilter_cthelper
+#
+
+url         = https://www.netfilter.org/pub/libnetfilter_cthelper
+
+versions    = 1.0.0 1.0.1
+
+pkgname     = libnetfilter_cthelper
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libnetfilter_cttimeout/Makefile b/packages/n/libnetfilter_cttimeout/Makefile
new file mode 100644
index 0000000..acd6754
--- /dev/null
+++ b/packages/n/libnetfilter_cttimeout/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/libnetfilter_cttimeout
+#
+
+url         = https://www.netfilter.org/pub/libnetfilter_cttimeout
+
+versions    = 1.0.0 1.0.1
+
+pkgname     = libnetfilter_cttimeout
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libnetfilter_log/Makefile b/packages/n/libnetfilter_log/Makefile
new file mode 100644
index 0000000..1d78c2c
--- /dev/null
+++ b/packages/n/libnetfilter_log/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/libnetfilter_log
+#
+
+url         = https://www.netfilter.org/pub/libnetfilter_log
+
+versions    = 1.0.1 1.0.2
+
+pkgname     = libnetfilter_log
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libnetfilter_queue/Makefile b/packages/n/libnetfilter_queue/Makefile
new file mode 100644
index 0000000..e7cb32a
--- /dev/null
+++ b/packages/n/libnetfilter_queue/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/libnetfilter_queue
+#
+
+url         = https://www.netfilter.org/pub/libnetfilter_queue
+
+versions    = 1.0.1 1.0.2 1.0.3 1.0.5
+
+pkgname     = libnetfilter_queue
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libnfnetlink/Makefile b/packages/n/libnfnetlink/Makefile
new file mode 100644
index 0000000..69e1bb7
--- /dev/null
+++ b/packages/n/libnfnetlink/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/libnfnetlink
+#
+
+url         = https://www.netfilter.org/pub/libnfnetlink
+
+versions    = 1.0.1 1.0.2
+
+pkgname     = libnfnetlink
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libnftnl/Makefile b/packages/n/libnftnl/Makefile
new file mode 100644
index 0000000..5f0dd5f
--- /dev/null
+++ b/packages/n/libnftnl/Makefile
@@ -0,0 +1,70 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/libnftnl
+#
+
+url             = https://www.netfilter.org/pub/libnftnl
+
+old_versions    = 1.0.5 1.1.4 1.1.9
+old_suffix      = tar.bz2
+
+new_versions    = 1.2.5
+new_suffix      = tar.xz
+
+pkgname         = libnftnl
+
+old_tarballs    = $(addsuffix .$(old_suffix), $(addprefix $(pkgname)-, $(old_versions)))
+old_signatures  = $(addsuffix .sig, $(old_tarballs))
+old_sha1s       = $(addsuffix .sha1sum, $(old_tarballs))
+
+new_tarballs    = $(addsuffix .$(new_suffix), $(addprefix $(pkgname)-, $(new_versions)))
+new_signatures  = $(addsuffix .sig, $(new_tarballs))
+new_sha1s       = $(addsuffix .sha1sum, $(new_tarballs))
+
+tarballs        = $(new_tarballs) $(old_tarballs)
+signatures      = $(new_signatures) $(old_signatures)
+sha1s           = $(new_sha1s) $(old_sha1s)
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(new_signatures): %.$(new_suffix).sig : %.$(new_suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(old_signatures): %.$(old_suffix).sig : %.$(old_suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(new_sha1s): %.$(new_suffix).sha1sum : %.$(new_suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(old_sha1s): %.$(old_suffix).sha1sum : %.$(old_suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libnl/Makefile b/packages/n/libnl/Makefile
new file mode 100644
index 0000000..42d2a06
--- /dev/null
+++ b/packages/n/libnl/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.infradead.org/~tgr/libnl
+#
+# Downloads:
+# =========
+# https://www.infradead.org/~tgr/libnl/files
+#
+
+url         = https://www.infradead.org/~tgr/libnl/files
+
+versions    = 1.1.4
+
+pkgname     = libnl
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/libnl3/Makefile b/packages/n/libnl3/Makefile
new file mode 100644
index 0000000..72fcecd
--- /dev/null
+++ b/packages/n/libnl3/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://www.infradead.org/~tgr/libnl
+#
+# Downloads:
+# =========
+# https://www.infradead.org/~tgr/libnl/files
+#
+
+url         = https://github.com/thom311/libnl/releases/download
+
+versions    = 3.2.25 3.2.27 3.5.0 3.7.0
+
+pkgname     = libnl
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.][0-9][.][0-9]*\)\([\.].*\)/\2/' | sed 's/\./_/g'` ; \
+	  wget -N $(url)/$(pkgname)$$version/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/libnsl/Makefile b/packages/n/libnsl/Makefile
new file mode 100644
index 0000000..591d86f
--- /dev/null
+++ b/packages/n/libnsl/Makefile
@@ -0,0 +1,73 @@
+#
+# Project Home:
+# ============
+# https://github.com/thkukuk/libnsl
+#
+# Clone:
+# =====
+# git clone https://github.com/thkukuk/libnsl.git
+#
+# Downloads:
+# =========
+# https://github.com/thkukuk/libnsl/releases
+#
+#
+
+url        = https://github.com/thkukuk
+
+repo_name  = libnsl
+pkg_name   = libnsl
+suffix     = tar.xz
+
+versions   = 1.3.0 2.0.0
+
+# List of tags to be extracted:
+TAGS       = $(addprefix v, $(versions))
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	  ( cd $(pkg_name)-$$version ; \
+	    autoreconf -vif ; \
+	    rm -rf autom4te.cache .gitignore *~ ) ; \
+	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	  rm -rf $(pkg_name)-$$version ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/libpcap/Makefile b/packages/n/libpcap/Makefile
new file mode 100644
index 0000000..2652452
--- /dev/null
+++ b/packages/n/libpcap/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.tcpdump.org
+#
+# Downloads:
+# =========
+# https://www.tcpdump.org/release
+#
+
+url         = https://www.tcpdump.org/release
+
+versions    = 1.4.0 1.5.3 1.6.2 1.7.4 1.9.1 1.10.0 1.10.4
+
+pkgname     = libpcap
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/libproxy/Makefile b/packages/n/libproxy/Makefile
new file mode 100644
index 0000000..93c8a0a
--- /dev/null
+++ b/packages/n/libproxy/Makefile
@@ -0,0 +1,76 @@
+#
+# Project Home:
+# ============
+# https://github.com/libproxy/libproxy
+#
+# Clone:
+# =====
+# git clone https://github.com/libproxy/libproxy.git
+#
+# Downloads:
+# =========
+# https://github.com/libproxy/libproxy/releases
+#
+
+url         = https://github.com/libproxy
+
+repo_name   = libproxy
+
+#
+# List of tags to be extracted:
+# ============================
+#
+#                                                hash | version
+#             ----------------------------------------+---------
+revisions   = 06a5bf2f5c212e233cdd2f63f2bd45340c3d6e2b:0.4.11
+revisions  += 88008bb028104de2669fb15f0f489beaad9c2fae:0.4.12
+revisions  += 5924d4223e2b7238607749d977c0a878fe33cdbc:0.4.15
+revisions  += e78a5ccfe0a2340f2c73e419767f8492ffc2787a:0.4.17
+revisions  += caccaf28e3df6ea612d2d4b39f781c4324019fdb:0.4.18
+
+git_repo    = .git_clone
+
+pkgname     = libproxy
+suffix      = tar.xz
+
+versions    = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(pkgname)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkgname)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkgname)-$$version/ $$hash | \
+	      xz >../$(pkgname)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/libqmi/Makefile b/packages/n/libqmi/Makefile
new file mode 100644
index 0000000..896555f
--- /dev/null
+++ b/packages/n/libqmi/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://freedesktop.org/software/libqmi
+#
+# Downloads:
+# =========
+# https://freedesktop.org/software/libqmi
+#
+
+url         = https://freedesktop.org/software/libqmi
+
+versions    = 1.4.0 1.6.0 1.8.0 1.10.0 1.10.2 1.10.4 1.12.6 1.12.10 1.14.2 1.24.0 1.28.2 1.28.8 1.30.8
+
+pkgname     = libqmi
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/libtirpc/Makefile b/packages/n/libtirpc/Makefile
new file mode 100644
index 0000000..bba7219
--- /dev/null
+++ b/packages/n/libtirpc/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/libtirpc/
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/sourceforge/libtirpc
+#
+
+url         = https://downloads.sourceforge.net/sourceforge/libtirpc
+
+versions    = 0.2.3 0.2.4 0.3.2 1.0.1 1.1.4 1.3.1 1.3.3
+
+pkg_name    = libtirpc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.0-9][0-9]*\)\([\.].*\)/\2/'` ; \
+	  wget -N $(url)/$$version/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/links/Makefile b/packages/n/links/Makefile
new file mode 100644
index 0000000..698b87d
--- /dev/null
+++ b/packages/n/links/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# http://links.twibright.com
+#
+# Downloads:
+# =========
+# http://links.twibright.com/download.php
+# http://links.twibright.com/download
+#
+
+url         = http://links.twibright.com/download
+
+versions    = 2.7 2.8 2.12 2.20.2 2.22 2.29
+
+pkgname     = links
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/lynx/Makefile b/packages/n/lynx/Makefile
new file mode 100644
index 0000000..3f560a4
--- /dev/null
+++ b/packages/n/lynx/Makefile
@@ -0,0 +1,44 @@
+#
+# Project Home:
+# ============
+# https://invisible-mirror.net/lynx/lynx.html
+#
+# Downloads:
+# =========
+# ftp://invisible-island.net/lynx/tarballs
+#
+
+url         = https://invisible-mirror.net/archives/lynx/tarballs
+
+versions    = 2.8.9.1
+pkgname     = lynx
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9]\.[0-9]*\.[0-9]*\)\.\([0-9]*\)\(\..*\)/\2/'` ; \
+	  release=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9]\.[0-9]*\.[0-9]*\)\.\([0-9]*\)\(\..*\)/\3/'` ; \
+	  wget -N $(url)/lynx$${version}rel.$$release.$(suffix) ; \
+	  tar xjf lynx$${version}rel.$$release.$(suffix) ; \
+	  mv lynx$${version}rel.$$release lynx-$$version.$$release ; \
+	  tar cjf $$tarball lynx-$$version.$$release ; \
+	  rm -rf lynx-$$version.$$release lynx$${version}rel.$$release.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/mailx/Makefile b/packages/n/mailx/Makefile
new file mode 100644
index 0000000..a5c5ee8
--- /dev/null
+++ b/packages/n/mailx/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/nail
+#
+# Downloads:
+# =========
+# https://sourceforge.net/p/nail/code
+# http://nail.cvs.sourceforge.net/viewvc/nail/nail/
+#
+
+url         = nail.cvs.sourceforge.net
+
+#         version | revision
+#        ---------+----------
+versions    = 12.5:1.212
+pkgname     = mailx
+suffix      = tar.gz
+
+tarballs    = $(foreach version, $(versions), \
+                $(addsuffix .$(suffix), \
+                  $(addprefix $(pkgname)-, $(shell echo $(version) | cut -f 1 -d ':' )))  )
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  ver=`echo $$version | cut -f 1 -d ':'` ; \
+	  rev=`echo $$version | cut -f 2 -d ':'` ; \
+	  cvs -z3 -d:pserver:anonymous@$(url):/cvsroot/nail \
+	           co -f -r $$rev -d mailx-$$ver nail > /dev/null 2>&1 ; \
+	  tar czf mailx-$$ver.$(suffix) mailx-$$ver ; \
+	  rm -rf mailx-$$ver ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/maxmind/Makefile b/packages/n/maxmind/Makefile
new file mode 100644
index 0000000..f3a07b2
--- /dev/null
+++ b/packages/n/maxmind/Makefile
@@ -0,0 +1,28 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := geoip-api-c  \
+           geoip-db     \
+           geoipupdate  \
+           libmaxminddb
+
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/n/maxmind/geoip-api-c/Makefile b/packages/n/maxmind/geoip-api-c/Makefile
new file mode 100644
index 0000000..198686d
--- /dev/null
+++ b/packages/n/maxmind/geoip-api-c/Makefile
@@ -0,0 +1,68 @@
+#
+# Project Home:
+# ============
+# https://github.com/maxmind
+#
+# GitHub:
+# ======
+# https://github.com/maxmind/geoip-api-c
+#
+#
+
+url         = https://github.com/maxmind
+
+repo_name  = geoip-api-c
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 4b526e7331ca1d692b74a0509ddcc725622ed31a:1.16.2
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/maxmind/geoip-db/Makefile b/packages/n/maxmind/geoip-db/Makefile
new file mode 100644
index 0000000..2012218
--- /dev/null
+++ b/packages/n/maxmind/geoip-db/Makefile
@@ -0,0 +1,52 @@
+#
+# Project Home:
+# ============
+# https://mailfud.org/geoip-legacy/
+#
+
+url         = https://mailfud.org/geoip-legacy
+
+date        = $(shell date +'%Y%m%d')
+suffix      = tar.xz
+pkg_name    = geoip-db-$(date)
+package     = $(addsuffix .$(suffix), $(pkg_name))
+sha1s       = $(addsuffix .sha1sum, $(package))
+
+files       = GeoIP GeoIPv6 GeoIPCity GeoIPCityv6  GeoIPASNum GeoIPASNumv6 GeoIPISP GeoIPOrg
+tarballs    = $(addprefix $(pkg_name)/, $(addsuffix .dat.gz, $(files)))
+
+script      = $(pkg_name)/geoip_update.sh
+
+TARGETS = $(package) $(sha1s)
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@mkdir -p $(pkg_name)
+	@( cd $(pkg_name) ; \
+	   for tarball in $(tarballs) ; do \
+	     wget -N $(url)/`basename $$tarball` ; \
+	   done ; \
+	 )
+
+$(script):
+	@( cd $(pkg_name) ; \
+	   wget -N $(url)/`basename $(script)` ; \
+	 )
+
+$(package): $(tarballs) $(script)
+	@echo -e "\n======= Create $(package) tarball =======\n"
+	@tar -cJvf $(package) $(pkg_name)/
+	@rm -rf $(pkg_name)/
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(package) $(sha1s)
diff --git a/packages/n/maxmind/geoipupdate/Makefile b/packages/n/maxmind/geoipupdate/Makefile
new file mode 100644
index 0000000..8297074
--- /dev/null
+++ b/packages/n/maxmind/geoipupdate/Makefile
@@ -0,0 +1,69 @@
+#
+# Project Home:
+# ============
+# https://github.com/maxmind
+#
+# GitHub:
+# ======
+# https://github.com/maxmind/geoipupdate
+#
+#
+
+url         = https://github.com/maxmind
+
+repo_name  = geoipupdate
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = b2cdea6d8d8677b5992fa9c0dede04cceec54e3c:4.7.1
+revisions += 99916e483100666e627be6b10ba178b814e3fceb:4.8.0
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/maxmind/libmaxminddb/Makefile b/packages/n/maxmind/libmaxminddb/Makefile
new file mode 100644
index 0000000..cea6eb3
--- /dev/null
+++ b/packages/n/maxmind/libmaxminddb/Makefile
@@ -0,0 +1,69 @@
+#
+# Project Home:
+# ============
+# https://github.com/maxmind
+#
+# GitHub:
+# ======
+# https://github.com/maxmind/libmaxminddb
+#
+#
+
+url         = https://github.com/maxmind
+
+repo_name  = libmaxminddb
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = d9a1a7f66918f7a8d518cfd1c120b9f73f489fc1:1.5.2
+revisions += 2d0e6b7360b88f645e67ffc5a709b2327d361ac3:1.6.0
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/mcabber/Makefile b/packages/n/mcabber/Makefile
new file mode 100644
index 0000000..3b1d0ba
--- /dev/null
+++ b/packages/n/mcabber/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.lilotux.net/~mikael/mcabber
+#
+# Downloads:
+# =========
+# https://www.lilotux.net/~mikael/mcabber/files
+#
+
+url         = https://www.lilotux.net/~mikael/mcabber/files
+
+versions    = 0.10.2 0.10.3 1.0.1 1.1.0 1.1.2
+
+pkgname     = mcabber
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/metamail/Makefile b/packages/n/metamail/Makefile
new file mode 100644
index 0000000..bd1d8a0
--- /dev/null
+++ b/packages/n/metamail/Makefile
@@ -0,0 +1,46 @@
+#
+# Project Home:
+# ============
+# https://www.ibiblio.org/pub/packages/solaris/sparc/html/metamail.2.7.html
+#
+# Downloads:
+# =========
+# https://ftp.funet.fi/pub/unix/mail/metamail
+#
+
+url         = https://ftp.funet.fi/pub/unix/mail/metamail
+
+versions    = 2.7
+
+pkgname     = metamail
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.0-9]*\)\(\..*\)/\2/'` ; \
+	  wget -N $(url)/mm$$version.tar.Z ; \
+	  uncompress -c mm$$version.tar.Z | tar xf - ; \
+	  chmod a-x mm$$version/src/metamail/*.c ; \
+	  ( cd mm$$version ; \
+	    mv src $(pkgname)-$$version ; \
+	    tar czf ../$(pkgname)-$$version.$(suffix) $(pkgname)-$$version ) ; \
+	  rm -rf mm$$version mm$$version.tar.Z ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/mozilla-nspr/Makefile b/packages/n/mozilla-nspr/Makefile
new file mode 100644
index 0000000..5ac35ab
--- /dev/null
+++ b/packages/n/mozilla-nspr/Makefile
@@ -0,0 +1,94 @@
+#
+# Project Home:
+# ============
+# https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR
+#
+# Mercurial HG:
+# ============
+# https://hg.mozilla.org/projects/nspr
+#
+# Mercurial HG clone:
+# ==================
+# hg clone https://hg.mozilla.org/projects/nspr
+#
+# Get full HASH by short:
+# ======================
+#
+#   $ hg log -rHASH --template 'node: {node}\n'
+#
+# where HASH - is a short revision, for example:
+#
+#   $ hg log -r88265db540d7 --template 'node: {node}\n'
+#
+# givs:
+#
+# node: 88265db540d75d59e12ea8dbc34031160fce9ccc
+#
+
+url        = https://hg.mozilla.org/projects
+
+repo_name  = nspr
+
+#
+# List of tags to be extracted:
+# ============================
+#
+#                                               hash | tag
+#            ----------------------------------------+--------
+revisions  = ad3ebb90bc9968055faadffb37233ad4cb956f85-NSPR_4_10_8_RTM
+revisions += 2c9a94fefea664f8a84442fc959b37db119e2e25-NSPR_4_10_9_RTM
+revisions += 21a7c4a68ca663ae2ba8ff05e12b9379f5108c5d-NSPR_4_10_10_RTM
+revisions += ebae38973a1a7241482448091e96e4e4fe5dbc27-NSPR_4_11_RTM
+revisions += 88265db540d75d59e12ea8dbc34031160fce9ccc-NSPR_4_12_RTM
+revisions += bf4cbb1cb5f2c08691773575a79e4240ea7300fc-NSPR_4_23_RTM
+revisions += 023a0ccfcb5c2745bd1d4864cc5f259784c958c6-NSPR_4_30_RTM
+revisions += b563bfc16c887c48b038b7b441fcc4e40a126d3b-NSPR_4_35_RTM
+
+
+hg_repo    = .hg_clone
+
+versions   = $(foreach tag, $(revisions), \
+               $(shell echo $(tag) | cut -f 2 -d '-' | sed 's,NSPR_,,' | sed 's,_RTM,,' | sed 's,_,\.,g'))
+
+suffix     = tar.xz
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(hg_repo):
+	@echo -e "\n======= Clone $(repo_name) repository =======\n"
+	@rm -rf $(repo_name)
+	@hg clone -b default $(url)/$(repo_name) $(repo_name)
+	@touch $@
+
+$(tarballs): $(hg_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision | cut -f 1 -d '-'` ; \
+	  version=`echo $$revision | cut -f 2 -d '-' | sed 's,NSPR_,,' | sed 's,_RTM,,' | sed 's,_,\.,g'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      hg archive --type tar --prefix $(repo_name)-$$version --rev $$hash - | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name) repository =======\n"
+	@rm -rf $(hg_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(hg_repo) $(repo_name)
diff --git a/packages/n/mozilla-nss/Makefile b/packages/n/mozilla-nss/Makefile
new file mode 100644
index 0000000..c002df1
--- /dev/null
+++ b/packages/n/mozilla-nss/Makefile
@@ -0,0 +1,96 @@
+#
+# Project Home:
+# ============
+# https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS
+#
+# Mercurial HG:
+# ============
+# https://hg.mozilla.org/projects/nss
+#
+# Mercurial HG clone:
+# ==================
+# hg clone https://hg.mozilla.org/projects/nss
+#
+# Get full HASH by short:
+# ======================
+#
+#   $ hg log -rHASH --template 'node: {node}\n'
+#
+# where HASH - is a short revision, for example:
+#
+#   $ hg log -raee88368c8c1 --template 'node: {node}\n'
+#
+# givs:
+#
+# node: aee88368c8c13ac700be24fb54b07e039c9d0796
+#
+
+url        = https://hg.mozilla.org/projects
+
+repo_name  = nss
+
+#
+# List of tags to be extracted:
+# ============================
+#
+#                                               hash | tag
+#            ----------------------------------------+--------
+revisions  = 537d7fc8624c289e4f818a4c69847eaedecceccb-NSS_3_19_1_RTM
+revisions += 97d30005dd7bb02b15bd2b8a27e2426c49d06d69-NSS_3_19_2_RTM
+revisions += 507694132f6f0706e7b8e33dac63a560a89f67fc-NSS_3_21_RTM
+revisions += ee1254aeba3e9929858d24f071bafcabea32ad4a-NSS_3_22_RTM
+revisions += aee88368c8c13ac700be24fb54b07e039c9d0796-NSS_3_23_RTM
+revisions += decbf7bd40fd57b808a42b8673d425e3f2670a89-NSS_3_46_RTM
+revisions += 7ccb4ade557739620b060c173d8660c502e53034-NSS_3_47_RTM
+revisions += 2c75831cea425ad082ab74f9993c857cdc6b4bdc-NSS_3_63_RTM
+revisions += ef126608d281cc268e204e65503e1a5b84d53241-NSS_3_64_RTM
+revisions += 4e4ebb9ad0d4391035c76c26967682c148ff0fd7-NSS_3_89_RTM
+
+
+hg_repo    = .hg_clone
+
+versions   = $(foreach tag, $(revisions), \
+               $(shell echo $(tag) | cut -f 2 -d '-' | sed 's,NSS_,,' | sed 's,_RTM,,' | sed 's,_,\.,g'))
+
+suffix     = tar.xz
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(hg_repo):
+	@echo -e "\n======= Clone $(repo_name) repository =======\n"
+	@rm -rf $(repo_name)
+	@hg clone $(url)/$(repo_name) $(repo_name)
+	@touch $@
+
+$(tarballs): $(hg_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision | cut -f 1 -d '-'` ; \
+	  version=`echo $$revision | cut -f 2 -d '-' | sed 's,NSS_,,' | sed 's,_RTM,,' | sed 's,_,\.,g'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      hg archive --type tar --prefix $(repo_name)-$$version --rev $$hash - | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name) repository =======\n"
+	@rm -rf $(hg_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(hg_repo) $(repo_name)
diff --git a/packages/n/mtr/Makefile b/packages/n/mtr/Makefile
new file mode 100644
index 0000000..190bc66
--- /dev/null
+++ b/packages/n/mtr/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://www.bitwizard.nl/mtr
+#
+# Downloads:
+# =========
+# ftp://ftp.bitwizard.nl/mtr
+# https://www.bitwizard.nl/mtr/files
+#
+
+url         = https://www.bitwizard.nl/mtr/files
+
+versions    = 0.84 0.85 0.86 0.93 0.94
+
+pkg_name    = mtr
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/mutt/Makefile b/packages/n/mutt/Makefile
new file mode 100644
index 0000000..7b1d6ab
--- /dev/null
+++ b/packages/n/mutt/Makefile
@@ -0,0 +1,49 @@
+#
+# Project Home:
+# ============
+# http://www.mutt.org
+#
+# Downloads:
+# =========
+# http://www.mutt.org/download.html
+# ftp://ftp.mutt.org/mutt
+# https://bitbucket.org/mutt/mutt/downloads
+#
+
+url         = https://bitbucket.org/mutt/mutt/downloads
+
+versions    = 1.5.22 1.5.23 1.5.24 1.12.2 1.14.7 2.0.6 2.2.10
+
+pkg_name    = mutt
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+signatures  = $(addsuffix .asc, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/nc/Makefile b/packages/n/nc/Makefile
new file mode 100644
index 0000000..42feeb4
--- /dev/null
+++ b/packages/n/nc/Makefile
@@ -0,0 +1,69 @@
+#
+# Project Home:
+# ============
+# https://nc110.sourceforge.io
+#
+# Git:
+# ===
+# git clone https://git.code.sf.net/p/nc110/git nc110-git
+#
+
+url         = https://git.code.sf.net/p/nc110/git
+
+repo_name  = netcat
+pkg_name   = netcat
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 5086ba1ade7dd8d8364e62d300aed3130c2f4896:1.10
+revisions += 607401678236b608280b291ad849a109b8d9a8f2:1.10.1
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url) $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(pkg_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$hash | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/ncftp/Makefile b/packages/n/ncftp/Makefile
new file mode 100644
index 0000000..1d0040d
--- /dev/null
+++ b/packages/n/ncftp/Makefile
@@ -0,0 +1,43 @@
+#
+# Project Home:
+# ============
+# https://www.ncftp.com
+# https://www.ncftp.com/ncftp
+#
+# Downloads:
+# =========
+# https://www.ncftp.com/download
+#
+
+url         = https://www.ncftp.com/downloads/ncftp
+
+versions    = 3.2.6
+
+pkg_name    = ncftp
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkg_name)-$$version-src.$(suffix) ; \
+	  tar xJf $(pkg_name)-$$version-src.$(suffix) ; \
+	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	  rm -rf $(pkg_name)-$$version $(pkg_name)-$$version-src.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/net-snmp/Makefile b/packages/n/net-snmp/Makefile
new file mode 100644
index 0000000..54d4362
--- /dev/null
+++ b/packages/n/net-snmp/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# http://www.net-snmp.org
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/net-snmp/files/net-snmp
+#
+
+url         = https://sourceforge.net/projects/net-snmp/files/net-snmp
+
+versions    = 5.7.2 5.7.2.1 5.7.3 5.8 5.9 5.9.1
+
+pkgname     = net-snmp
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.0-9]*[.0-9]*\)\(\..*\)/\2/'` ; \
+	  wget -N $(url)/$$version/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/net-tools/Makefile b/packages/n/net-tools/Makefile
new file mode 100644
index 0000000..99e6ae9
--- /dev/null
+++ b/packages/n/net-tools/Makefile
@@ -0,0 +1,83 @@
+#
+# Project Home:
+# ============
+#   http://www.linuxfoundation.org/collaborate/workgroups/networking/net-tools
+#   https://sourceforge.net/projects/net-tools/files/
+#
+# Downloads:
+# =========
+#   https://sourceforge.net/projects/net-tools/files/
+#
+# GitHub:
+# ======
+#    https://github.com/ecki/net-tools
+#
+# Clone:
+# =====
+#   git clone https://github.com/ecki/net-tools.git
+#
+
+url        = https://github.com/ecki
+
+repo_name  = net-tools
+
+#
+# List of tags to be extracted:
+# ============================
+#
+# Revisions from 'master' branch
+#
+# revision '68a4d784daaf5fb3449808e434e8cbb9625988e6' commited at 2014-02-18
+#
+#                                               hash | date
+#            ----------------------------------------+--------
+revisions  = 68a4d784daaf5fb3449808e434e8cbb9625988e6:20140218
+revisions += 3f170bff115303e92319791cbd56371e33dcbf6d:20160127
+revisions += 0eebece8c964e3cfa8a018f42b2e7e751a7009a0:20181103
+revisions += 2fa1514a781945f252cec8313f0c8539777906f2:20210110
+revisions += 4030929bb6f3ee6f465c76869d7a49424df45d9e:20211212
+
+git_repo   = .git_clone
+
+versions   = $(foreach tag, $(revisions), $(addprefix 1.60-, $(shell echo $(tag) | cut -f 2 -d ':')))
+
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision | cut -f 1 -d ':'` ; \
+	  date=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-1.60-$$date.tar.xz ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-1.60-$$date.tar.xz' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-1.60-$$date/ $$hash | \
+	      xz >../$(repo_name)-1.60-$$date.tar.xz ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/netatalk/Makefile b/packages/n/netatalk/Makefile
new file mode 100644
index 0000000..3161452
--- /dev/null
+++ b/packages/n/netatalk/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://netatalk.sourceforge.io
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/netatalk/files/netatalk/${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/netatalk/netatalk
+
+versions    = 2.2.3 3.1.6 3.1.8 3.1.12 3.1.14
+
+pkg_name    = netatalk
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$$version/$(pkg_name)-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netdate/Makefile b/packages/n/netdate/Makefile
new file mode 100644
index 0000000..f2f5457
--- /dev/null
+++ b/packages/n/netdate/Makefile
@@ -0,0 +1,36 @@
+#
+# Project Home:
+# ============
+# https://slackware.com
+#
+# Downloads:
+# =========
+# https://mirrors.slackware.com/slackware/slackware-14.2/source/n/netdate
+#
+
+url         = https://mirrors.slackware.com/slackware/slackware-14.2/source/n/netdate
+
+pkgname     = netdate
+suffix      = tar.gz
+
+tarball     = $(addsuffix .$(suffix), $(pkgname))
+sha1s       = $(addsuffix .sha1sum, $(tarball))
+
+
+all: $(tarball) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarball):
+	@echo -e "\n======= Downloading source tarball =======\n"
+	wget -N $(url)/$(tarball)
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarball) $(sha1s)
diff --git a/packages/n/netkit-base/Makefile b/packages/n/netkit-base/Makefile
new file mode 100644
index 0000000..d47f483
--- /dev/null
+++ b/packages/n/netkit-base/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-base
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-bootparamd/Makefile b/packages/n/netkit-bootparamd/Makefile
new file mode 100644
index 0000000..4f9b042
--- /dev/null
+++ b/packages/n/netkit-bootparamd/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-bootparamd
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-combo/Makefile b/packages/n/netkit-combo/Makefile
new file mode 100644
index 0000000..d8536be
--- /dev/null
+++ b/packages/n/netkit-combo/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-combo
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-ftp/Makefile b/packages/n/netkit-ftp/Makefile
new file mode 100644
index 0000000..0cc5f1e
--- /dev/null
+++ b/packages/n/netkit-ftp/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-ftp
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-ntalk/Makefile b/packages/n/netkit-ntalk/Makefile
new file mode 100644
index 0000000..10e9d2c
--- /dev/null
+++ b/packages/n/netkit-ntalk/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-ntalk
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-routed/Makefile b/packages/n/netkit-routed/Makefile
new file mode 100644
index 0000000..0015e0d
--- /dev/null
+++ b/packages/n/netkit-routed/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-routed
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-rpc/Makefile b/packages/n/netkit-rpc/Makefile
new file mode 100644
index 0000000..cef40cd
--- /dev/null
+++ b/packages/n/netkit-rpc/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-rpc
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-rsh/Makefile b/packages/n/netkit-rsh/Makefile
new file mode 100644
index 0000000..ca47a81
--- /dev/null
+++ b/packages/n/netkit-rsh/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-rsh
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-rusers/Makefile b/packages/n/netkit-rusers/Makefile
new file mode 100644
index 0000000..f89f7e4
--- /dev/null
+++ b/packages/n/netkit-rusers/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-rusers
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-rwall/Makefile b/packages/n/netkit-rwall/Makefile
new file mode 100644
index 0000000..bbe9c84
--- /dev/null
+++ b/packages/n/netkit-rwall/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-rwall
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-rwho/Makefile b/packages/n/netkit-rwho/Makefile
new file mode 100644
index 0000000..720eec4
--- /dev/null
+++ b/packages/n/netkit-rwho/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-rwho
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-telnet/Makefile b/packages/n/netkit-telnet/Makefile
new file mode 100644
index 0000000..09fc37e
--- /dev/null
+++ b/packages/n/netkit-telnet/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-telnet
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-tftp/Makefile b/packages/n/netkit-tftp/Makefile
new file mode 100644
index 0000000..0f22011
--- /dev/null
+++ b/packages/n/netkit-tftp/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-tftp
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netkit-timed/Makefile b/packages/n/netkit-timed/Makefile
new file mode 100644
index 0000000..0a97b73
--- /dev/null
+++ b/packages/n/netkit-timed/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network/netkit
+# https://www.ibiblio.org/pub/linux/system/network/netkit
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network/netkit
+
+versions    = 0.17
+pkgname     = netkit-timed
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netpipes/Makefile b/packages/n/netpipes/Makefile
new file mode 100644
index 0000000..7297167
--- /dev/null
+++ b/packages/n/netpipes/Makefile
@@ -0,0 +1,44 @@
+#
+# Project Home:
+# ============
+# http://freecode.com/projects/netpipes
+# http://web.purplefrog.com/~thoth/netpipes
+#
+# Downloads:
+# =========
+# http://web.purplefrog.com/~thoth/netpipes/ftp
+#
+
+url          = http://web.purplefrog.com/~thoth/netpipes/ftp
+
+versions     = 4.2
+
+pkgname      = netpipes
+suffix       = tar.gz
+
+tarballs     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s        = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version-export.$(suffix) ; \
+	  tar xzf $(pkgname)-$$version-export.$(suffix) ; \
+	  mv $(pkgname)-$$version-export $(pkgname)-$$version ; \
+	  tar czf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version $(pkgname)-$$version-export.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/nettle/Makefile b/packages/n/nettle/Makefile
new file mode 100644
index 0000000..ad6af8a
--- /dev/null
+++ b/packages/n/nettle/Makefile
@@ -0,0 +1,46 @@
+#
+# Project Home:
+# ============
+# http://www.lysator.liu.se/~nisse/nettle
+#
+# Downloads:
+# =========
+# http://www.lysator.liu.se/~nisse/archive
+#
+
+url         = http://www.lysator.liu.se/~nisse/archive
+
+versions    = 2.7.1 3.1.1 3.2 3.5.1 3.7.1 3.7.3 3.8
+pkgname     = nettle
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/netwatch/Makefile b/packages/n/netwatch/Makefile
new file mode 100644
index 0000000..9bdfcb0
--- /dev/null
+++ b/packages/n/netwatch/Makefile
@@ -0,0 +1,49 @@
+#
+# Project Home:
+# ============
+# http://www.slctech.org/~mackay/NETWATCH/netwatch.html
+#
+# Downloads:
+# =========
+# http://www.slctech.org/~mackay/NETWATCH/netwatch-1.3.0-1.tgz
+# http://www.slctech.org/~mackay/NETWATCH/netwatch-1.3.1-2.tgz
+#
+
+url          = https://p5n.pp.ru/~sergej/dl/2023
+
+versions     = 1.3.1-2
+pkgname      = netwatch
+suffix       = tar.xz
+
+tarballs     = $(foreach v,$(versions),\
+                 $(addsuffix .$(suffix), $(addprefix $(pkgname)-,\
+                   $(shell echo $(v) | cut -f 1 -d '-'))))
+sha1s        = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for v in $(versions) ; do \
+	  version=`echo $$v | cut -f 1 -d '-'` ; \
+	  release=`echo $$v | cut -f 2 -d '-'` ; \
+	  wget -N $(url)/$(pkgname)-$$version-$$release.tar.xz ; \
+	  tar xJf $(pkgname)-$$version-$$release.tar.xz ; \
+	  if [ -d $(pkgname)-$$version-$$release ] ; then \
+	    mv $(pkgname)-$$version-$$release $(pkgname)-$$version ; \
+	  fi ; \
+	  tar cJf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version $(pkgname)-$$version-$$release.tar.xz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/netwrite/Makefile b/packages/n/netwrite/Makefile
new file mode 100644
index 0000000..ee75d2a
--- /dev/null
+++ b/packages/n/netwrite/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://metalab.unc.edu/pub/Linux/system/network
+# https://www.ibiblio.org/pub/linux/system/network
+#
+
+url         = https://www.ibiblio.org/pub/linux/system/network
+
+versions    = 0.17
+pkgname     = netwrite
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/newspost/Makefile b/packages/n/newspost/Makefile
new file mode 100644
index 0000000..2b480b8
--- /dev/null
+++ b/packages/n/newspost/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# http://newspost.unixcab.org
+#
+# Downloads:
+# =========
+# http://newspost.unixcab.org/index.html#Download
+# http://newspost.unixcab.org/download/newspost-2.1.1.tar.gz
+#
+
+url          = http://newspost.unixcab.org/download
+
+versions     = 2.1.1
+pkgname      = newspost
+suffix       = tar.gz
+
+tarballs     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s        = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/nfacct/Makefile b/packages/n/nfacct/Makefile
new file mode 100644
index 0000000..a8a0539
--- /dev/null
+++ b/packages/n/nfacct/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/nfacct
+#
+
+url         = https://www.netfilter.org/pub/nfacct
+
+versions    = 1.0.1 1.0.2
+
+pkgname     = nfacct
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/nfs-utils/Makefile b/packages/n/nfs-utils/Makefile
new file mode 100644
index 0000000..c69d157
--- /dev/null
+++ b/packages/n/nfs-utils/Makefile
@@ -0,0 +1,43 @@
+#
+# Project Home:
+# ============
+# https://www.kernel.org
+#
+# Downloads:
+# =========
+# https://mirrors.edge.kernel.org/pub/linux/utils/nfs-utils/${VERSION}
+#
+
+url         = https://www.kernel.org/pub/linux/utils/nfs-utils
+
+versions    = 1.2.8 1.3.1 1.3.3 2.4.1 2.5.3 2.6.2
+
+pkg_name    = nfs-utils
+arch_type   = tar.xz
+suffixes    = $(arch_type) tar.sign
+
+files       = $(foreach suffix, $(suffixes), $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions))))
+tarballs    = $(addsuffix .$(arch_type), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(files) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(files):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  for suffix in $(suffixes) ; do \
+	    wget -N $(url)/$$version/$(pkg_name)-$$version.$$suffix ;  \
+	  done ; \
+	done
+
+$(sha1s): %.$(arch_type).sha1sum : %.$(arch_type)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(files) $(sha1s)
diff --git a/packages/n/nftables/Makefile b/packages/n/nftables/Makefile
new file mode 100644
index 0000000..1a09e4c
--- /dev/null
+++ b/packages/n/nftables/Makefile
@@ -0,0 +1,70 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/nftables
+#
+
+url             = https://www.netfilter.org/pub/nftables
+
+old_versions    = 0.9.2 0.9.8 1.0.5
+old_suffix      = tar.bz2
+
+new_versions    = 1.0.7
+new_suffix      = tar.xz
+
+pkgname         = nftables
+
+old_tarballs    = $(addsuffix .$(old_suffix), $(addprefix $(pkgname)-, $(old_versions)))
+old_signatures  = $(addsuffix .sig, $(old_tarballs))
+old_sha1s       = $(addsuffix .sha1sum, $(old_tarballs))
+
+new_tarballs    = $(addsuffix .$(new_suffix), $(addprefix $(pkgname)-, $(new_versions)))
+new_signatures  = $(addsuffix .sig, $(new_tarballs))
+new_sha1s       = $(addsuffix .sha1sum, $(new_tarballs))
+
+tarballs        = $(new_tarballs) $(old_tarballs)
+signatures      = $(new_signatures) $(old_signatures)
+sha1s           = $(new_sha1s) $(old_sha1s)
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(new_signatures): %.$(new_suffix).sig : %.$(new_suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(old_signatures): %.$(old_suffix).sig : %.$(old_suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(new_sha1s): %.$(new_suffix).sha1sum : %.$(new_suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(old_sha1s): %.$(old_suffix).sha1sum : %.$(old_suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/nghttp2/Makefile b/packages/n/nghttp2/Makefile
new file mode 100644
index 0000000..9825c0c
--- /dev/null
+++ b/packages/n/nghttp2/Makefile
@@ -0,0 +1,68 @@
+#
+# Project Home:
+# ============
+# https://nghttp2.org/
+#
+# GitHub:
+# ======
+# https://github.com/nghttp2/nghttp2
+#
+
+url         = https://github.com/nghttp2
+
+repo_name  = nghttp2
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = fb0bd22979711c89d92d98ac5db57ebc6f4fd148:1.43.0
+revisions += be0491294a63d891bd12b6b1b7e372a45a5d0ffe:1.52.0
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/nginx/Makefile b/packages/n/nginx/Makefile
new file mode 100644
index 0000000..85202d9
--- /dev/null
+++ b/packages/n/nginx/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+#   https://nginx.org
+#
+# Downloads:
+# =========
+#   https://nginx.org/en/download.html
+#   https://nginx.org/download
+#
+
+url         = https://nginx.org/download
+
+versions    = 1.12.2 1.20.2 1.22.1
+pkgname     = nginx
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/nmap/Makefile b/packages/n/nmap/Makefile
new file mode 100644
index 0000000..15d56cb
--- /dev/null
+++ b/packages/n/nmap/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://nmap.org
+#
+# Downloads:
+# =========
+# https://nmap.org/download.html
+# https://nmap.org/dist
+#
+
+url          = https://nmap.org/dist
+
+versions     = 6.40 6.47 7.01 7.80 7.91 7.93
+
+pkgname      = nmap
+suffix       = tar.bz2
+
+tarballs     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s        = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/nn/Makefile b/packages/n/nn/Makefile
new file mode 100644
index 0000000..73fa155
--- /dev/null
+++ b/packages/n/nn/Makefile
@@ -0,0 +1,42 @@
+#
+# Project Home:
+# ============
+# http://www.nndev.org
+#
+# Downloads:
+# =========
+# http://www.nndev.org/pub/nn-6.7/nn-6.7.3.tar.Z
+# ftp://ftp.openbsd.com/ports/distfiles
+#
+
+url         = http://www.nndev.org/pub/nn-6.7
+
+versions    = 6.7.3
+pkgname     = nn
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.tar.Z ; \
+	  uncompress -c $(pkgname)-$$version.tar.Z | tar xf - ; \
+	  tar cjf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version $(pkgname)-$$version.tar.Z ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/npth/Makefile b/packages/n/npth/Makefile
new file mode 100644
index 0000000..1044dbe
--- /dev/null
+++ b/packages/n/npth/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/npth
+# https://gnupg.org/ftp/gcrypt/npth
+#
+
+url         = https://gnupg.org/ftp/gcrypt/npth
+
+versions    = 1.6
+pkgname     = npth
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/nss-pam-ldapd/Makefile b/packages/n/nss-pam-ldapd/Makefile
new file mode 100644
index 0000000..8fa7048
--- /dev/null
+++ b/packages/n/nss-pam-ldapd/Makefile
@@ -0,0 +1,79 @@
+#
+# Project Home:
+# ============
+# https://arthurdejong.org/nss-pam-ldapd
+#
+# Cgit:
+# ====
+# https://arthurdejong.org/git/nss-pam-ldapd
+#
+#
+
+url        = https://arthurdejong.org/git
+
+repo_name  = nss-pam-ldapd
+pkg_name   = nss-pam-ldapd
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = d9710a242d5997c0f4abac5251a4ded44381c44b:0.9.11
+revisions += 0507f25a6237b72e4c19c8f2e8ad14a595b36fd5:0.9.12
+#
+# 0.9.11 is c4daf27eb3ec68bb9ec2a2779ed085f30e9d9b8e but we checkout latest at 2021-01-23
+#
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name) $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(pkg_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$hash | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+#	  tar xJf $(pkg_name)-$$version.$(suffix) ; \
+#	  ( cd $(pkg_name)-$$version ; \
+#	    autoreconf -vif ; rm -rf autom4te.cache .clang-format .gitignore .travis.yml ) ; \
+#	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+#	  rm -rf $(pkg_name)-$$version ; \
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/ntbtls/Makefile b/packages/n/ntbtls/Makefile
new file mode 100644
index 0000000..149f05d
--- /dev/null
+++ b/packages/n/ntbtls/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/ntbtls
+# https://gnupg.org/ftp/gcrypt/ntbtls
+#
+
+url         = https://gnupg.org/ftp/gcrypt/ntbtls
+
+versions    = 0.1.2 0.2.0 0.3.1
+
+pkgname     = ntbtls
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/ntp/Makefile b/packages/n/ntp/Makefile
new file mode 100644
index 0000000..cebbd48
--- /dev/null
+++ b/packages/n/ntp/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://ntp.org
+#
+# Downloads:
+# =========
+# https://archive.ntp.org/ntp4/ntp-4.2
+#
+
+url         = https://archive.ntp.org/ntp4/ntp-4.2
+
+versions    = 4.2.6p5 4.2.8p6 4.2.8p8 4.2.8p13 4.2.8p15
+
+pkgname     = ntp
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .md5, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).asc : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/obex-data-server/Makefile b/packages/n/obex-data-server/Makefile
new file mode 100644
index 0000000..15e8982
--- /dev/null
+++ b/packages/n/obex-data-server/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# http://wiki.muiline.com/obex-data-server
+#
+# Downloads:
+# =========
+# http://tadas.dailyda.com/software
+#
+
+url          = https://ftp.radix.pro/3pp/zero/n/obex-data-server
+
+versions     = 0.4.5 0.4.6
+
+pkgname      = obex-data-server
+suffix       = tar.gz
+
+tarballs     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s        = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/obexfs/Makefile b/packages/n/obexfs/Makefile
new file mode 100644
index 0000000..8363b6b
--- /dev/null
+++ b/packages/n/obexfs/Makefile
@@ -0,0 +1,43 @@
+#
+# Project Home:
+# ============
+# https://openobex.sourceforge.net/about.html
+#
+# Downloads:
+# =========
+# https://openobex.sourceforge.net/downloads.html
+#
+# Files:
+# =====
+# https://downloads.sourceforge.net/project/openobex/files/obexfs/${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/openobex/obexfs
+
+versions    = 0.12
+
+pkgname     = obexfs
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$$version/$(pkgname)-$${version}.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/obexftp/Makefile b/packages/n/obexftp/Makefile
new file mode 100644
index 0000000..8fadcc0
--- /dev/null
+++ b/packages/n/obexftp/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://openobex.sourceforge.net/about.html
+#
+# Downloads:
+# =========
+# https://openobex.sourceforge.net/downloads.html
+#
+# Files:
+# =====
+# https://downloads.sourceforge.net/project/openobex/files/obexftp/${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/openobex/obexftp
+
+versions    = 0.24.2
+
+pkgname     = obexftp
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$$version/$(pkgname)-$${version}-Source.$(suffix) ; \
+	  tar xzf $(pkgname)-$${version}-Source.$(suffix) ; \
+	  rm -f $(pkgname)-$${version}-Source.$(suffix) ; \
+	  mv $(pkgname)-$${version}-Source $(pkgname)-$$version ; \
+	  tar cjf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/opendkim/Makefile b/packages/n/opendkim/Makefile
new file mode 100644
index 0000000..207a3b2
--- /dev/null
+++ b/packages/n/opendkim/Makefile
@@ -0,0 +1,86 @@
+#
+# Project Home:
+# ============
+#   http://opendkim.org
+#
+# Downloads:
+# =========
+#   https://downloads.sourceforge.net/opendkim/opendkim-2.10.3.tar.gz
+#
+# GitHub:
+# ======
+#   https://github.com/trusteddomainproject/OpenDKIM
+#   git clone https://github.com/trusteddomainproject/OpenDKIM.git
+#
+#
+#
+
+url        = https://github.com/trusteddomainproject
+
+repo_name  = OpenDKIM
+pkg_name   = opendkim
+
+#
+# List of revisions to be extracted:
+# =================================
+#
+#                                               hash | version
+#            ----------------------------------------+--------
+revisions  = ba29fa57b2455143dd86973c2229d6f7b8e16d9b:2.11.0.2
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$hash | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	  ( cd $(pkg_name)-$$version ; \
+	    autoreconf -vif ; \
+	    find . -type f -name .gitignore -print -exec rm -f {} \; ; \
+	    rm -rf autom4te.cache .gitignore .gitattributes; \
+	    rm -f *~ build-aux/*~ ; \
+	  ) ; \
+	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	  rm -rf $(pkg_name)-$$version ; \
+	done
+
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/openldap/Makefile b/packages/n/openldap/Makefile
new file mode 100644
index 0000000..53833f9
--- /dev/null
+++ b/packages/n/openldap/Makefile
@@ -0,0 +1,54 @@
+#
+# Project Home:
+# ============
+# https://www.openldap.org
+#
+# Downloads:
+# =========
+# https://www.openldap.org/software/download/
+#
+# ftp:
+# ===
+# ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release
+#
+# https:
+# =====
+# https://www.openldap.org/software/download/OpenLDAP/openldap-release
+#
+
+url         = https://www.openldap.org/software/download/OpenLDAP/openldap-release
+
+versions    = 2.4.31 2.4.39 2.4.43 2.4.48 2.4.58 2.5.14
+
+pkgname     = openldap
+suffix      = tgz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .md5, $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures):
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/openobex/Makefile b/packages/n/openobex/Makefile
new file mode 100644
index 0000000..829eab3
--- /dev/null
+++ b/packages/n/openobex/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://openobex.sourceforge.net/about.html
+#
+# Downloads:
+# =========
+# https://openobex.sourceforge.net/downloads.html
+#
+# Files:
+# =====
+# https://downloads.sourceforge.net/project/openobex/files/openobex/${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/openobex/openobex
+
+versions    = 1.7.2
+
+pkgname     = openobex
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$$version/$(pkgname)-$${version}-Source.$(suffix) ; \
+	  tar xzf $(pkgname)-$${version}-Source.$(suffix) ; \
+	  rm -f $(pkgname)-$${version}-Source.$(suffix) ; \
+	  mv $(pkgname)-$${version}-Source $(pkgname)-$$version ; \
+	  tar cjf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/openssh/Makefile b/packages/n/openssh/Makefile
new file mode 100644
index 0000000..f16d614
--- /dev/null
+++ b/packages/n/openssh/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# http://www.openssh.com
+# http://www.openssh.com/portable.html - mirrors list
+#
+# Downloads:
+# =========
+# ftp://ftp.openssh.com/pub/OpenBSD/OpenSSH/portable
+#
+
+url         = https://mirror.one.com/pub/OpenBSD/OpenSSH/portable
+
+versions    = 6.3p1 6.4p1 6.5p1 6.6p1 6.9p1 7.1p2 7.2p1 8.0p1 8.1p1 8.4p1 8.5p1 9.3p1
+
+pkgname     = openssh
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .asc, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).asc : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/openssl/Makefile b/packages/n/openssl/Makefile
new file mode 100644
index 0000000..bae85e7
--- /dev/null
+++ b/packages/n/openssl/Makefile
@@ -0,0 +1,82 @@
+#
+# Project Home:
+# ============
+# http://www.openssl.org/
+#
+# Downloads:
+# =========
+# http://www.openssl.org/source
+#
+# GitHub:
+# ======
+# https://github.com/openssl
+#
+# Clone:
+# =====
+# https://github.com/openssl/openssl.git
+#
+
+url        = https://github.com/openssl
+
+repo_name  = openssl
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+------
+revisions  = 894da2fb7ed5d314ee5c2fc9fd2d9b8b74111596:1.1.1d
+revisions += 90cebd1b216e0a160fcfd8e0eddca47dad47c183:1.1.1i
+revisions += 52c587d60be67c337364b830dd3fdc15404a2f04:1.1.1j
+revisions += fb047ebc87b18bdc4cf9ddee9ee1f5ed93e56aff:1.1.1l
+revisions += fbda8a9e3b6266da377a6f57d597d657257d9cff:1.1.1r
+revisions += 129058165d195e43a0ad10111b0c2e29bdf65980:1.1.1s
+revisions += 830bf8e1e4749ad65c51b6a1d0d769ae689404ba:1.1.1t
+revisions += a92271e03a8d0dee507b6f1e7f49512568b2c7ad:3.1.0
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/openssl10/Makefile b/packages/n/openssl10/Makefile
new file mode 100644
index 0000000..e81a683
--- /dev/null
+++ b/packages/n/openssl10/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# http://www.openssl.org/
+#
+# Downloads:
+# =========
+# http://www.openssl.org/source
+# https://www.openssl.org/source/old/1.0.2/
+#
+
+url         = https://www.openssl.org/source/old/1.0.2
+
+versions    = 1.0.2d 1.0.2f 1.0.2t 1.0.2u
+
+pkgname     = openssl
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .asc, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).asc : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/openvpn/Makefile b/packages/n/openvpn/Makefile
new file mode 100644
index 0000000..ada6704
--- /dev/null
+++ b/packages/n/openvpn/Makefile
@@ -0,0 +1,72 @@
+#
+# Project Home:
+# ============
+# https://github.com/OpenVPN/openvpn
+#
+# GitHub:
+# ======
+# https://github.com/OpenVPN/openvpn
+#
+# Clone:
+# =====
+# https://github.com/OpenVPN/openvpn.git
+#
+
+url        = https://github.com/OpenVPN
+
+repo_name  = openvpn
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 23ae78e657052748be68b623ca8122e4103dc7e0:2.5.2
+revisions += 3577442530eb7830709538a2e21282b98a97d4f2:2.6.2
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/p11-kit/Makefile b/packages/n/p11-kit/Makefile
new file mode 100644
index 0000000..37dd122
--- /dev/null
+++ b/packages/n/p11-kit/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://p11-glue.github.io/p11-glue/p11-kit.html
+#
+# Downloads:
+# =========
+# https://github.com/p11-glue/p11-kit/releases
+#
+
+url         = https://github.com/p11-glue/p11-kit/releases/download
+
+versions    = 0.23.22 0.24.1
+
+pkgname     = p11-kit
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\($(pkgname)-\)\(.*\)\(.$(suffix)\)/\2/'` ; \
+	  wget -N $(url)/$$version/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/pam-krb5/Makefile b/packages/n/pam-krb5/Makefile
new file mode 100644
index 0000000..ede481e
--- /dev/null
+++ b/packages/n/pam-krb5/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://archives.eyrie.org/software/kerberos
+#
+# Downloads:
+# =========
+# https://archives.eyrie.org/software/kerberos
+#
+
+url         = https://archives.eyrie.org/software/kerberos
+
+versions    = 4.11
+
+pkgname     = pam-krb5
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/php/Makefile b/packages/n/php/Makefile
new file mode 100644
index 0000000..ca7cf05
--- /dev/null
+++ b/packages/n/php/Makefile
@@ -0,0 +1,55 @@
+#
+# Project Home:
+# ============
+# https://www.php.net
+#
+# Downloads:
+# =========
+# https://php.net/downloads.php
+# https://www.php.net/downloads.php
+#
+# wget -O php-5.6.2.tar.bz2 https://ru2.php.net/get/php-5.6.2.tar.bz2/from/this/mirror
+#
+
+url         = https://ru2.php.net/get
+
+versions    = 5.6.2 5.6.17
+versions   += 7.0.2 7.3.11 7.3.27
+versions   += 7.4.16 7.4.27
+versions   += 8.0.3 8.0.28
+versions   += 8.1.2 8.1.12 8.1.17
+versions   += 8.2.4
+
+pkgname     = php
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .asc, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -O $$tarball $(url)/$$tarball/from/this/mirror ; \
+	done
+
+$(signatures): %.$(suffix).asc : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -O $$signature $(url)/$$signature/from/this/mirror ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/pidentd/Makefile b/packages/n/pidentd/Makefile
new file mode 100644
index 0000000..34a90f7
--- /dev/null
+++ b/packages/n/pidentd/Makefile
@@ -0,0 +1,49 @@
+#
+# Project Home:
+# ============
+# https://www.lysator.liu.se/~pen/pidentd
+#
+# Downloads:
+# =========
+# ftp://ftp.lysator.liu.se/pub/unix/ident/servers
+# (ftp://ftp.stack.nl/pub/users/johans/pidentd - 3.0.19 only)
+#
+
+url         = ftp://ftp.lysator.liu.se/pub/unix/ident/servers
+
+versions    = 3.0.18 3.0.19
+
+pkgname     = pidentd
+suffix      = tar.gz
+sign_suffix = sig
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/pinentry/Makefile b/packages/n/pinentry/Makefile
new file mode 100644
index 0000000..6ee32e2
--- /dev/null
+++ b/packages/n/pinentry/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/pinentry
+# https://gnupg.org/ftp/gcrypt/pinentry
+#
+
+url         = https://gnupg.org/ftp/gcrypt/pinentry
+
+versions    = 0.8.3 0.8.4 0.9.7 1.1.0 1.1.1 1.2.1
+
+pkgname     = pinentry
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/pinepgp/Makefile b/packages/n/pinepgp/Makefile
new file mode 100644
index 0000000..a45e1f4
--- /dev/null
+++ b/packages/n/pinepgp/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://hany.sk/~hany/software/pinepgp
+#
+# Downloads:
+# =========
+# https://hany.sk/~hany/software/pinepgp/stable_body.html#download
+#
+
+url         = https://terminus.sk/~hany/_data/pinepgp
+
+versions    = 0.18.0
+
+pkgname     = pinepgp
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/popa3d/Makefile b/packages/n/popa3d/Makefile
new file mode 100644
index 0000000..c08e63f
--- /dev/null
+++ b/packages/n/popa3d/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://www.openwall.com/popa3d
+#
+# Downloads:
+# =========
+# https://www.openwall.com/popa3d
+#
+
+url         = https://www.openwall.com/popa3d
+
+versions    = 1.0.2 1.0.3
+
+pkgname     = popa3d
+suffix      = tar.gz
+sign_suffix = sign
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/portmap/Makefile b/packages/n/portmap/Makefile
new file mode 100644
index 0000000..7f9bbab
--- /dev/null
+++ b/packages/n/portmap/Makefile
@@ -0,0 +1,43 @@
+#
+# Project Home:
+# ============
+# This is an very old product 'portmap-6.0.tgz'
+#
+# Downloads:
+# =========
+# https://fossies.org/linux/misc/old/portmap-6.0.tar.xz
+#
+
+url         = https://fossies.org/linux/misc/old
+
+versions    = 6.0
+pkgname     = portmap
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ; \
+	  tar xJf $(pkgname)-$$version.$(suffix) ; \
+	  rm -f $(pkgname)-$$version.$(suffix) ; \
+	  mv $(pkgname)_$$version $(pkgname)-$$version ; \
+	  tar cJf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/postfix/Makefile b/packages/n/postfix/Makefile
new file mode 100644
index 0000000..01789b8
--- /dev/null
+++ b/packages/n/postfix/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+#   https://www.postfix.org
+#   https://de.postfix.org
+#
+# Downloads:
+# =========
+#   http://cdn.postfix.johnriley.me/mirrors/postfix-release/index.html
+#   https://de.postfix.org/ftpmirror/official/postfix-3.6.4.tar.gz
+#
+
+url         = https://de.postfix.org/ftpmirror/official
+
+versions    = 3.4.7 3.5.9 3.6.4 3.6.8 3.7.4
+
+pkgname     = postfix
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/ppp/Makefile b/packages/n/ppp/Makefile
new file mode 100644
index 0000000..1450a93
--- /dev/null
+++ b/packages/n/ppp/Makefile
@@ -0,0 +1,72 @@
+#
+# Project Home:
+# ============
+# https://github.com/ppp-project/ppp
+#
+# GitHub:
+# ======
+# https://github.com/ppp-project/ppp
+#
+# Clone:
+# =====
+# https://github.com/ppp-project/ppp.git
+#
+
+url        = https://github.com/ppp-project
+
+repo_name  = ppp
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 4fb319056f168bb8379865b91b4fd3e1ada73f1e:2.4.9
+revisions += 760ce18f82670eb81cc186fb792919339a2e2fbe:2.5.0
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$hash | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/pppsetup/Makefile b/packages/n/pppsetup/Makefile
new file mode 100644
index 0000000..e7b1dfd
--- /dev/null
+++ b/packages/n/pppsetup/Makefile
@@ -0,0 +1,37 @@
+#
+# Project Home:
+# ============
+# https://slackware.com
+#
+# Downloads:
+# =========
+# https://mirrors.slackware.com/slackware/slackware-14.1/source/n/ppp
+#
+
+url         = https://mirrors.slackware.com/slackware/slackware-14.2/source/n/ppp
+
+version     = 1.98
+pkgname     = pppsetup
+suffix      = tar.xz
+
+tarball     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarball))
+
+
+all: $(tarball) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarball):
+	@echo -e "\n======= Downloading source tarball =======\n"
+	wget -N $(url)/$(tarball)
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarball) $(sha1s)
diff --git a/packages/n/pppsetup/README.TXT b/packages/n/pppsetup/README.TXT
new file mode 100644
index 0000000..4da9312
--- /dev/null
+++ b/packages/n/pppsetup/README.TXT
@@ -0,0 +1,9 @@
+
+/*
+  ppsetup script for ppp:
+  ----------------------
+
+  Original package PPPsetup.v.1.98 made by Kent Robotti
+  is lost forever, a copy exists only in slackware sources.
+
+ */
diff --git a/packages/n/procmail/Makefile b/packages/n/procmail/Makefile
new file mode 100644
index 0000000..c08e32c
--- /dev/null
+++ b/packages/n/procmail/Makefile
@@ -0,0 +1,70 @@
+#
+# Project Home:
+# ============
+# http://www.procmail.org
+#
+# Downloads:
+# =========
+# ftp://ftp.procmail.net/pub/procmail
+#
+# MIRRORS:
+# =======
+# ftp://ftp.ucsb.edu/pub/mirrors/procmail/
+# ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/
+# ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/
+# ftp://ftp.fu-berlin.de/pub/unix/mail/smartlist/
+# ftp://ftp.net.ohio-state.edu/pub/networking/mail/procmail/
+# ftp://ftp.fdt.net/pub/unix/packages/procmail/
+# ftp://ftp.tamu.edu/pub/mirrors/procmail/
+# ftp://ftp.kfki.hu/pub/packages/mail/procmail/
+# ftp://giswitch.sggw.waw.pl/pub/unix/procmail/
+# ftp://ftp.meltzer.org/pub/procmail/
+# ftp://ftp.win.ne.jp/pub/network/mail/procmail/
+# http://www.ring.gr.jp/archives/net/mail/procmail/
+# ftp://ftp.ring.gr.jp/pub/net/mail/procmail/
+# ftp://ftp.ayamura.org/pub/procmail/
+# ftp://sunsite.cnlab-switch.ch/mirror/procmail/
+# ftp://ftp.linja.net/pub/mirrors/procmail/
+# ftp://ftp.stealth.net/pub/mirrors/ftp.procmail.org/pub/procmail/
+# ftp://ftp.mirror.ac.uk/sites/ftp.procmail.org/pub/procmail/
+# ftp://mirrors.unam.mx/pub/procmail/
+
+
+url         = ftp://ftp.fu-berlin.de/pub/unix/mail/procmail
+
+versions    = 3.21 3.22
+
+pkgname     = procmail
+suffix      = tar.gz
+sign_suffix = sig
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/proftpd/Makefile b/packages/n/proftpd/Makefile
new file mode 100644
index 0000000..a96898f
--- /dev/null
+++ b/packages/n/proftpd/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# http://www.proftpd.org
+#
+# Downloads:
+# =========
+# ftp://ftp.proftpd.org/distrib/source
+#
+
+url         = ftp://ftp.proftpd.org/distrib/source
+
+versions    = 1.3.5 1.3.5a 1.3.6b 1.3.6e 1.3.7 1.3.7a 1.3.7f 1.3.8
+
+pkgname     = proftpd
+suffix      = tar.gz
+sign_suffix = asc
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/pssh/Makefile b/packages/n/pssh/Makefile
new file mode 100644
index 0000000..4f115f5
--- /dev/null
+++ b/packages/n/pssh/Makefile
@@ -0,0 +1,70 @@
+#
+# Project Home:
+# ============
+# https://github.com/lilydjwg/pssh
+#
+# GitHub:
+# ======
+# git clone https://github.com/lilydjwg/pssh.git
+#
+# Downloads:
+# =========
+# https://github.com/lilydjwg/pssh/releases
+#
+
+url        = https://github.com/lilydjwg
+
+repo_name  = pssh
+pkg_name   = pssh
+suffix     = tar.xz
+
+versions   = 2.3.1 2.3.4 2.3.5
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+#	  tar xJf $(pkg_name)-$$version.$(suffix) ; \
+#	  ( cd $(pkg_name)-$$version ; \
+#	    autoreconf --warnings=portability -vif ; \
+#	    rm -rf autom4te.cache .github .gitignore .travis.yml ) ; \
+#	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+#	  rm -rf $(pkg_name)-$$version ; \
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/radius/Makefile b/packages/n/radius/Makefile
new file mode 100644
index 0000000..523b5ca
--- /dev/null
+++ b/packages/n/radius/Makefile
@@ -0,0 +1,26 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := freeradius        \
+           freeradius-client \
+           freeradius-server
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/n/radius/freeradius-client/Makefile b/packages/n/radius/freeradius-client/Makefile
new file mode 100644
index 0000000..f9ec854
--- /dev/null
+++ b/packages/n/radius/freeradius-client/Makefile
@@ -0,0 +1,61 @@
+#
+# Project Home:
+# ============
+# https://wiki.freeradius.org/Home
+#
+# Downloads:
+# =========
+# ftp://ftp.freeradius.org/pub/freeradius
+# https://freeradius.org/ftp/pub/freeradius
+#
+
+url         = https://freeradius.org/ftp/pub/freeradius
+
+versions    = 1.1.6 1.1.7
+
+pkgname     = freeradius-client
+suffix      = tar.gz
+sign_suffix = sig
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+newest      = 1.1.7
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9-]*\)\([0-9][.0-9]*\)\(\.[a-z]*.*\)/\2/'` ; \
+	  if [ "$(newest)" == "`echo -e "$$version\n$(newest)" | sort -V | head -n1`" ] ; then \
+	    wget -N $(url)/$$tarball ; \
+	  else \
+	    wget -N $(url)/old/$$tarball ; \
+	  fi ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  version=`echo $$signature | sed 's/\([a-zA-Z0-9-]*\)\([0-9][.0-9]*\)\(\.[a-z]*.*\)/\2/'` ; \
+	  if [ "$(newest)" == "`echo -e "$$version\n$(newest)" | sort -V | head -n1`" ] ; then \
+	    wget -N $(url)/$$signature ; \
+	    touch $$signature ; \
+	  else \
+	    wget -N $(url)/old/$$signature ; \
+	    touch $$signature ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/radius/freeradius-server/Makefile b/packages/n/radius/freeradius-server/Makefile
new file mode 100644
index 0000000..f072474
--- /dev/null
+++ b/packages/n/radius/freeradius-server/Makefile
@@ -0,0 +1,51 @@
+#
+# Project Home:
+# ============
+# https://wiki.freeradius.org/Home
+#
+# Downloads:
+# =========
+# ftp://ftp.freeradius.org/pub/freeradius
+# https://freeradius.org/ftp/pub/freeradius/
+#
+
+url         = https://freeradius.org/ftp/pub/freeradius/
+
+versions    = 2.2.10
+versions   += 3.0.19 3.0.26
+versions   += 3.2.2
+
+pkgname     = freeradius-server
+suffix      = tar.gz
+sign_suffix = sig
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/radius/freeradius/Makefile b/packages/n/radius/freeradius/Makefile
new file mode 100644
index 0000000..a940ea8
--- /dev/null
+++ b/packages/n/radius/freeradius/Makefile
@@ -0,0 +1,61 @@
+#
+# Project Home:
+# ============
+# https://wiki.freeradius.org/Home
+#
+# Downloads:
+# =========
+# ftp://ftp.freeradius.org/pub/freeradius
+# https://freeradius.org/ftp/pub/freeradius
+#
+
+url         = https://freeradius.org/ftp/pub/freeradius
+
+versions    = 1.1.8
+
+pkgname     = freeradius
+suffix      = tar.gz
+sign_suffix = sig
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+newest      = 1.1.8
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9-]*\)\([0-9][.0-9]*\)\(\.[a-z]*.*\)/\2/'` ; \
+	  if [ "$(newest)" == "`echo -e "$$version\n$(newest)" | sort -V | head -n1`" ] ; then \
+	    wget -N $(url)/$$tarball ; \
+	  else \
+	    wget -N $(url)/old/$$tarball ; \
+	  fi ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  version=`echo $$signature | sed 's/\([a-zA-Z0-9-]*\)\([0-9][.0-9]*\)\(\.[a-z]*.*\)/\2/'` ; \
+	  if [ "$(newest)" == "`echo -e "$$version\n$(newest)" | sort -V | head -n1`" ] ; then \
+	    wget -N $(url)/$$signature ; \
+	    touch $$signature ; \
+	  else \
+	    wget -N $(url)/old/$$signature ; \
+	    touch $$signature ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/radiusclient/Makefile b/packages/n/radiusclient/Makefile
new file mode 100644
index 0000000..7502156
--- /dev/null
+++ b/packages/n/radiusclient/Makefile
@@ -0,0 +1,37 @@
+#
+# Project Home:
+# ============
+# http://slackware.com
+#
+# Downloads:
+# =========
+# http://mirrors.slackware.com/slackware/slackware-14.1/source/n/ppp
+#
+
+url         = http://mirrors.slackware.com/slackware/slackware-14.1/source/n/ppp
+
+version     = 0.3.2
+pkgname     = radiusclient
+suffix      = tar.bz2
+
+tarball     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarball))
+
+
+all: $(tarball) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarball):
+	@echo -e "\n======= Downloading source tarball =======\n"
+	wget -N $(url)/$(tarball)
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarball) $(sha1s)
diff --git a/packages/n/radiusclient/README.TXT b/packages/n/radiusclient/README.TXT
new file mode 100644
index 0000000..02d00ea
--- /dev/null
+++ b/packages/n/radiusclient/README.TXT
@@ -0,0 +1,8 @@
+
+/*
+  radiusclient-0.3.2:
+  ------------------
+
+  Original package is lost forever, a copy exists only in slackware sources.
+
+ */
diff --git a/packages/n/rdist/Makefile b/packages/n/rdist/Makefile
new file mode 100644
index 0000000..9adcc3e
--- /dev/null
+++ b/packages/n/rdist/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.MagniComp.com
+#
+# Downloads:
+# =========
+# https://www.magnicomp.com/download/rdist
+#
+
+url         = https://www.magnicomp.com/download/rdist
+
+versions    = 6.1.5
+pkgname     = rdist
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/rdist/rdist-eu-license.txt b/packages/n/rdist/rdist-eu-license.txt
new file mode 100644
index 0000000..97c1bb0
--- /dev/null
+++ b/packages/n/rdist/rdist-eu-license.txt
@@ -0,0 +1,119 @@
+
+                   MagniComp - End User License Agreement
+
+                              www.MagniComp.com
+
+                             RDist Version 6.1
+
+                     Version of This Document: 19990724
+
+GRANT.
+
+MagniComp grants you a non-exclusive license to use RDist version 6.1 and
+all subsequent versions called 6.1.X software (the "Software") free of
+charge.
+
+This license does not entitle you to hard-copy documentation, support or
+telephone assistance. MagniComp reserves the right at any time to alter
+prices, features, specifications, capabilities, functions, licensing terms,
+general availability of the Software.
+
+SCOPE OF GRANT.
+
+You may:
+
+   * use the Software in any way you wish on any computer regardless of
+     ownership of said computer;
+   * redistribute the Software in any form, including source and binary, to
+     any party with or without charging a fee;
+   * copy the Software for any purpose.
+
+You may not:
+
+   * remove or alter this notice;
+   * remove or alter any proprietary notices or labels on the Software.
+
+REQUIREMENTS.
+
+   * All advertising materials mentioning features or use of this software
+     must display the following acknowledgement:
+
+          This product includes software developed by MagniComp
+          (www.MagniComp.com) and its contributors.
+
+   * Redistributions in binary form must reproduce this copyright notice,
+     this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+   * Neither name of MagniComp nor the names of its contributors may be used
+     to endorse or promote products derived from this software without
+     specific prior written permission.
+
+TITLE.
+
+Title, ownership rights, and intellectual property rights in the Software
+shall remain in MagniComp and/or its suppliers. The Software is protected by
+copyright and other intellectual property laws and by international
+treaties. Title and related rights in the content accessed through the
+Software is the property of the applicable content owner and may be
+protected by applicable law. This license gives you no rights to such
+content.
+
+TERMINATION.
+
+The license will terminate automatically if you fail to comply with the
+limitations described herein. Upon termination of this license, you agree to
+destroy all copies of the Software.
+
+DISCLAIMER OF WARRANTY.
+
+The Software is provided on an "AS IS" basis, without warranty of any kind,
+including without limitation the warranties of merchantability, fitness for
+a particular purpose and non-infringement. The entire risk as to the quality
+and performance of the Software is borne by you. Should the Software prove
+defective, you and not MagniComp or its suppliers assume the entire cost of
+any service and repair. In addition, the security mechanisms implemented by
+MagniComp software have inherent limitations, and you must determine that
+the Software sufficiently meets your requirements. This disclaimer of
+warranty constitutes an essential part of the agreement. SOME JURISDICTIONS
+DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT
+APPLY TO YOU AND YOU MAY HAVE OTHER LEGAL RIGHTS THAT VARY BY JURISDICTION.
+
+LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, OR
+OTHERWISE, SHALL MAGNICOMP OR ITS SUPPLIERS OR RESELLERS BE LIABLE TO YOU OR
+ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL
+OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL MAGNICOMP BE LIABLE FOR
+ANY DAMAGES, EVEN IF MAGNICOMP SHALL HAVE BEEN INFORMED OF THE POSSIBILITY
+OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF
+LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE
+EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME
+JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO
+YOU.
+
+HIGH RISK ACTIVITIES.
+
+The Software is not fault-tolerant and is not designed, manufactured or
+intended for use or resale as on-line control equipment in hazardous
+environments requiring fail-safe performance, such as in the operation of
+nuclear facilities, aircraft navigation or communication systems, air
+traffic control, direct life support machines, or weapons systems, in which
+the failure of the Software could lead directly to death, personal injury,
+or severe physical or environmental damage ("High Risk Activities").
+MagniComp and its suppliers specifically disclaim any express or implied
+warranty of fitness for High Risk Activities.
+
+MISCELLANEOUS.
+
+This Agreement represents the complete agreement concerning this license and
+may amended only by a writing executed by both parties. If any provision of
+this Agreement is held to be unenforceable, such provision shall be reformed
+only to the extent necessary to make it enforceable. This Agreement shall be
+governed by California law (except for conflict of law provisions). The
+application the United Nations Convention of Contracts for the International
+Sale of Goods is expressly excluded.
+
+                                    END
diff --git a/packages/n/rfkill/Makefile b/packages/n/rfkill/Makefile
new file mode 100644
index 0000000..649b43b
--- /dev/null
+++ b/packages/n/rfkill/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# http://wireless.kernel.org/en/users/Documentation/rfkill
+#
+# Downloads:
+# =========
+# https://www.kernel.org/pub/software/network/rfkill
+# ftp://ftp.kernel.org/pub/software/network/rfkill
+#
+
+
+url       = https://mirrors.edge.kernel.org/pub/software/network
+
+versions  = 0.5 1.0
+
+pkg_name  = rfkill
+arch_type = tar.xz
+suffixes  = $(arch_type) tar.sign
+
+files     = $(foreach suffix, $(suffixes), $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions))))
+
+tarballs  = $(addsuffix .$(arch_type), $(addprefix $(pkg_name)-, $(versions)))
+sha1s     = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(files) $(sha1s)
+
+
+.PHONY: downloads_clean
+
+$(files):
+	@echo -e "\n======= Downloading '$(pkg_name)' sourses =======\n"
+	@for version in $(versions) ; do \
+	  for suffix in $(suffixes) ; do \
+	    wget -N $(url)/$(pkg_name)/$(pkg_name)-$$version.$$suffix ;  \
+	  done ; \
+	done
+
+$(sha1s): %.$(arch_type).sha1sum : %.$(arch_type)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -f $(files) $(sha1s)
diff --git a/packages/n/rp-pppoe/Makefile b/packages/n/rp-pppoe/Makefile
new file mode 100644
index 0000000..9b0dd05
--- /dev/null
+++ b/packages/n/rp-pppoe/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://dianne.skoll.ca/projects/rp-pppoe
+#
+# Downloads:
+# =========
+# https://dianne.skoll.ca/projects/rp-pppoe/download
+#
+
+url         = https://dianne.skoll.ca/projects/rp-pppoe/download
+
+versions    = 3.15
+
+pkgname     = rp-pppoe
+suffix      = tar.gz
+sign_suffix = sig
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/rpcbind/Makefile b/packages/n/rpcbind/Makefile
new file mode 100644
index 0000000..bdaf0e6
--- /dev/null
+++ b/packages/n/rpcbind/Makefile
@@ -0,0 +1,44 @@
+#
+# Read First:
+# ==========
+# https://nfsv4.bullopensource.org/doc/tirpc_rpcbind.php
+#
+# Project Home:
+# ============
+# https://rpcbind.sourceforge.net
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/sourceforge/rpcbind
+#
+
+url         = https://downloads.sourceforge.net/sourceforge/rpcbind
+
+versions    = 0.2.0 0.2.1 0.2.3 1.2.5 1.2.6
+
+pkg_name    = rpcbind
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.0-9][0-9]*\)\([\.].*\)/\2/'` ; \
+	  wget -N $(url)/$$version/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/rpcsvc-proto/Makefile b/packages/n/rpcsvc-proto/Makefile
new file mode 100644
index 0000000..6a89c52
--- /dev/null
+++ b/packages/n/rpcsvc-proto/Makefile
@@ -0,0 +1,75 @@
+#
+# Project Home:
+# ============
+# https://github.com/thkukuk/rpcsvc-proto
+#
+# Clone:
+# =====
+#  git clone https://github.com/thkukuk/rpcsvc-proto.git
+#
+# Downloads:
+# =========
+# https://github.com/thkukuk/rpcsvc-proto/releases
+#
+#
+
+url        = https://github.com/thkukuk
+
+repo_name  = rpcsvc-proto
+pkg_name   = rpcsvc-proto
+suffix     = tar.xz
+
+versions   = 1.4.1 1.4.2 1.4.3
+
+# List of tags to be extracted:
+TAGS       = $(addprefix v, $(versions))
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	  ( cd $(pkg_name)-$$version ; \
+	    sed -i '/AM_GNU_GETTEXT_REQUIRE/d' configure.ac ; \
+	    ./autogen.sh ; \
+	    rm -rf autom4te.cache .github .gitignore ) ; \
+	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	  rm -rf $(pkg_name)-$$version ; \
+	done
+
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/rsync/Makefile b/packages/n/rsync/Makefile
new file mode 100644
index 0000000..57eb94e
--- /dev/null
+++ b/packages/n/rsync/Makefile
@@ -0,0 +1,49 @@
+#
+# Project Home:
+# ============
+# http://rsync.samba.org
+#
+# Downloads:
+# =========
+# ftp://ftp.samba.org/pub/rsync
+# https://download.samba.org/pub/rsync
+#
+
+url         = https://download.samba.org/pub/rsync/src
+
+versions    = 3.1.2 3.1.3 3.2.3 3.2.7
+
+pkgname     = rsync
+suffix      = tar.gz
+sign_suffix = asc
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/samba/Makefile b/packages/n/samba/Makefile
new file mode 100644
index 0000000..2aa2f26
--- /dev/null
+++ b/packages/n/samba/Makefile
@@ -0,0 +1,45 @@
+#
+# Project Home:
+# ============
+# http://www.samba.org
+#
+# Downloads:
+# =========
+# ftp://ftp.samba.org/pub/samba/stable
+# https://download.samba.org/pub/samba/stable
+#
+
+url         = https://download.samba.org/pub/samba/stable
+
+versions    = 4.1.0 4.1.12 4.1.13 4.3.4 4.11.2 4.14.0 4.18.1
+
+pkg_name    = samba
+arch_type   = tar.gz
+suffixes    = $(arch_type) tar.asc
+
+files       = $(foreach suffix, $(suffixes), $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions))))
+tarballs    = $(addsuffix .$(arch_type), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(files) $(sha1s)
+
+
+.PHONY: downloads_clean
+
+$(files):
+	@echo -e "\n======= Downloading '$(pkg_name)' sourses =======\n"
+	@for version in $(versions) ; do \
+	  for suffix in $(suffixes) ; do \
+	    wget -N $(url)/$(pkg_name)-$$version.$$suffix ;  \
+	  done ; \
+	done
+
+$(sha1s): %.$(arch_type).sha1sum : %.$(arch_type)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -f $(files) $(sha1s)
diff --git a/packages/n/scute/Makefile b/packages/n/scute/Makefile
new file mode 100644
index 0000000..2059144
--- /dev/null
+++ b/packages/n/scute/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://gnupg.org
+#
+# Downloads:
+# =========
+# ftp://ftp.gnupg.org/gcrypt/scute
+# https://gnupg.org/ftp/gcrypt/scute
+#
+
+url         = https://gnupg.org/ftp/gcrypt/scute
+
+versions    = 1.6.0 1.7.0
+
+pkgname     = scute
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/sendmail/Makefile b/packages/n/sendmail/Makefile
new file mode 100644
index 0000000..d70ab17
--- /dev/null
+++ b/packages/n/sendmail/Makefile
@@ -0,0 +1,51 @@
+#
+# Project Home:
+# ============
+# https://www.proofpoint.com/us/products/email-protection/open-source-email-solution
+#
+# Downloads:
+# =========
+# ftp://ftp.sendmail.org/pub/sendmail
+#
+
+url         = https://ftp.sendmail.org
+
+versions    = 8.14.7 8.14.8 8.14.9 8.15.2 8.16.1 8.17.1
+
+pkg_name    = sendmail
+arch_type   = tar.gz
+suffixes    = $(arch_type) $(arch_type).sig
+
+pgpkeys     = PGPKEYS
+
+files       = $(foreach suffix, $(suffixes), $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions))))
+tarballs    = $(addsuffix .$(arch_type), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(files) $(sha1s) $(pgpkeys)
+
+
+.PHONY: downloads_clean
+
+$(files):
+	@echo -e "\n======= Downloading '$(pkg_name)' sourses =======\n"
+	@for version in $(versions) ; do \
+	  for suffix in $(suffixes) ; do \
+	    wget -N $(url)/$(pkg_name).$$version.$$suffix ; \
+	    mv $(pkg_name).$$version.$$suffix $(pkg_name)-$$version.$$suffix ; \
+	  done ; \
+	done
+
+$(pgpkeys):
+	@echo -e "\n======= Downloading '$(pgpkeys)' file =======\n"
+	@wget -O $(pgpkeys).gpg $(url)/$(pgpkeys) ; \
+
+$(sha1s): %.$(arch_type).sha1sum : %.$(arch_type)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -f $(files) $(sha1s) $(pgpkeys)
diff --git a/packages/n/slrn/Makefile b/packages/n/slrn/Makefile
new file mode 100644
index 0000000..116e704
--- /dev/null
+++ b/packages/n/slrn/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://pkgsrc.se/news/slrn
+#
+# Downloads:
+# =========
+# http://jedsoft.org/releases/slrn
+#
+
+url         = http://jedsoft.org/releases/slrn
+
+versions    = 1.0.3a
+
+pkg_name    = slrn
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkg_name)-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/snownews/Makefile b/packages/n/snownews/Makefile
new file mode 100644
index 0000000..9b6e182
--- /dev/null
+++ b/packages/n/snownews/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/snownews
+#
+# Download:
+# ========
+# https://sourceforge.net/projects/snownews/files
+#
+
+url         = https://downloads.sourceforge.net/sourceforge/snownews
+
+versions    = 1.5.13 1.6.10 1.7 1.8 1.9
+
+pkgname     = snownews
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/stunnel/Makefile b/packages/n/stunnel/Makefile
new file mode 100644
index 0000000..7cf2bb2
--- /dev/null
+++ b/packages/n/stunnel/Makefile
@@ -0,0 +1,70 @@
+#
+# Project Home:
+# ============
+# https://www.stunnel.org/index.html
+#
+# Downloads:
+# =========
+# https://www.stunnel.org/downloads
+#
+# Code Repositories
+# -----------------
+#  Europe
+#    * usenix.org.uk (London, UK)
+#      http://www.usenix.org.uk/mirrors/stunnel/
+#    * NLUUG (Amsterdam, Netherlands)
+#      ftp://ftp.nluug.nl/pub/networking/stunnel
+#      http://ftp.nluug.nl/pub/networking/stunnel/
+#      rsync ftp.nluug.nl::stunnel
+#    * Names Directory (Bamberg, Germany)
+#      http://www.namesdir.com/mirrors/stunnel/
+#    * Cybermirror.org (Düsseldorf, Germany)
+#      http://stunnel.cybermirror.org/ 
+#  North America
+#    * Home site (Newark, NJ, US)
+#      ftp://ftp.stunnel.org/stunnel/
+#      rsync rsync.stunnel.org::stunnel
+#    * mirrors.zerg.biz (Columbus, OH, US)
+#      http://mirrors.zerg.biz/stunnel/ 
+#
+
+url         = ftp://ftp.nluug.nl/pub/networking/stunnel/archive
+
+versions    = 4.53 5.07 5.30 5.55 5.58 5.69
+
+pkgname     = stunnel
+suffix      = tar.gz
+sign_suffix = asc
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  major=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9]*\)\(\..*\)/\2/'` ; \
+	  wget -N $(url)/$$major.x/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  major=`echo $$signature | sed 's/\([a-zA-Z-]*\)\([0-9]*\)\(\..*\)/\2/'` ; \
+	  wget -N $(url)/$$major.x/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/tcp_wrappers/Makefile b/packages/n/tcp_wrappers/Makefile
new file mode 100644
index 0000000..c3d5d65
--- /dev/null
+++ b/packages/n/tcp_wrappers/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# http://freecode.com/projects/tcp_wrappers
+#
+# Downloads:
+# =========
+# ftp://ftp.porcupine.org/pub/security
+#
+
+url         = ftp://ftp.porcupine.org/pub/security
+
+versions    = 7.6
+
+pkgname     = tcp_wrappers
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)_, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/tcp_wrappers/tcp_wrapper.pdf b/packages/n/tcp_wrappers/tcp_wrapper.pdf
new file mode 100644
index 0000000..ecc1ed1
Binary files /dev/null and b/packages/n/tcp_wrappers/tcp_wrapper.pdf differ
diff --git a/packages/n/tcp_wrappers/tcp_wrappers.txt b/packages/n/tcp_wrappers/tcp_wrappers.txt
new file mode 100644
index 0000000..493092d
--- /dev/null
+++ b/packages/n/tcp_wrappers/tcp_wrappers.txt
@@ -0,0 +1,9 @@
+
+The tcp_wrappers package allows you to monitor and filter incoming requests
+for the SYSTAT, FINGER, FTP, TELNET, RLOGIN, RSH, EXEC, TFTP, TALK, and other
+network services. It provides tiny daemon wrapper programs that can be installed
+without any changes to existing software or to existing configuration files.
+The wrappers report the name of the client host and of the requested service.
+The wrappers do not exchange information with the client or server applications,
+and impose no overhead on the actual conversation between the client and server
+applications.
diff --git a/packages/n/tcpdump/Makefile b/packages/n/tcpdump/Makefile
new file mode 100644
index 0000000..4d39aa2
--- /dev/null
+++ b/packages/n/tcpdump/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.tcpdump.org
+#
+# Downloads:
+# =========
+# https://www.tcpdump.org/release
+#
+
+url         = https://www.tcpdump.org/release
+
+versions    = 4.4.0 4.5.1 4.6.2 4.7.4 4.9.3 4.99.0 4.99.4
+
+pkgname     = tcpdump
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/telnet-OpenBSD/Makefile b/packages/n/telnet-OpenBSD/Makefile
new file mode 100644
index 0000000..adc032b
--- /dev/null
+++ b/packages/n/telnet-OpenBSD/Makefile
@@ -0,0 +1,45 @@
+#
+# Project Home:
+# ============
+# http://slackware.com
+#
+# Downloads:
+# =========
+# http://mirrors.slackware.com/slackware/slackware-14.1/source/n/telnet
+#
+
+url         = http://mirrors.slackware.com/slackware/slackware-14.1/source/n/telnet
+
+version     = 20020321
+pkgname     = telnet-OpenBSD
+suffix      = tar.gz
+
+tarball     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarball))
+patches     = $(addsuffix .diff.gz, $(addprefix $(pkgname)-, $(version)))
+patches    += $(addsuffix .diff.gz, $(addprefix $(pkgname)-, 014_telnet))
+
+
+all: $(tarball) $(patches) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarball):
+	@echo -e "\n======= Downloading source tarball =======\n"
+	wget -N $(url)/$(tarball)
+
+$(patches): $(tarball)
+	@echo -e "\n======= Downloading patch and description =======\n"
+	@for file in $(patches) ; do \
+	  wget -N $(url)/$$file ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarball) $(patches) $(sha1s)
diff --git a/packages/n/tftp-hpa/Makefile b/packages/n/tftp-hpa/Makefile
new file mode 100644
index 0000000..463f610
--- /dev/null
+++ b/packages/n/tftp-hpa/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# 
+#
+# Downloads:
+# =========
+# ftp://ftp.kernel.org/pub/software/network/tftp/tftp-hpa
+# https://www.kernel.org/pub/software/network/tftp/tftp-hpa
+#
+
+url         = https://www.kernel.org/pub/software/network/tftp/tftp-hpa
+
+versions    = 5.1 5.2
+
+pkgname     = tftp-hpa
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/tin/Makefile b/packages/n/tin/Makefile
new file mode 100644
index 0000000..6d6b616
--- /dev/null
+++ b/packages/n/tin/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# http://www.tin.org
+#
+# Downloads:
+# =========
+# ftp://ftp.tin.org/pub/news/clients/tin
+#
+
+url         = ftp://ftp.tin.org/pub/news/clients/tin
+
+versions    = 2.1.5 2.2.1 2.3.2 2.4.3 2.4.5 2.6.2
+
+pkgname     = tin
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  major=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.][0-9]*\)\(\..*\)/\2/'` ; \
+	  wget -N $(url)/v$$major/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/traceroute/Makefile b/packages/n/traceroute/Makefile
new file mode 100644
index 0000000..c6aaece
--- /dev/null
+++ b/packages/n/traceroute/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/traceroute
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/project/traceroute/traceroute/traceroute-${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/traceroute/traceroute
+
+versions    = 2.0.19 2.0.20 2.0.21 2.1.0 2.1.2
+
+pkg_name    = traceroute
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/traceroute-$$version/$(pkg_name)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/trn/Makefile b/packages/n/trn/Makefile
new file mode 100644
index 0000000..c0c127e
--- /dev/null
+++ b/packages/n/trn/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.freshports.org/news/trn
+#
+# Downloads:
+# =========
+# ftp://ftp.funet.fi/pub/unix/news/trn
+#
+
+url         = ftp://ftp.funet.fi/pub/unix/news/trn
+
+versions    = 3.5 3.6
+
+pkgname     = trn
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/trn4/Makefile b/packages/n/trn4/Makefile
new file mode 100644
index 0000000..82af767
--- /dev/null
+++ b/packages/n/trn4/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://trn.sourceforge.net
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/project/traceroute/traceroute/traceroute-${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/trn/trn4
+
+versions    = 4.0-test77
+pkg_name    = trn
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkg_name)-$$version.$(suffix) ;  \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/ulogd/Makefile b/packages/n/ulogd/Makefile
new file mode 100644
index 0000000..5044167
--- /dev/null
+++ b/packages/n/ulogd/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.netfilter.org
+#
+# Downloads:
+# =========
+# https://www.netfilter.org/pub/ulogd
+#
+
+url         = https://www.netfilter.org/pub/ulogd
+
+versions    = 2.0.2 2.0.3 2.0.5 2.0.7 2.0.8
+
+pkgname     = ulogd
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .sig, $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).sig : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/uwsgi/Makefile b/packages/n/uwsgi/Makefile
new file mode 100644
index 0000000..b44777f
--- /dev/null
+++ b/packages/n/uwsgi/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+#   https://uwsgi-docs.readthedocs.io
+#
+# Downloads:
+# =========
+#   https://projects.unbit.it/downloads
+#
+
+url         = https://projects.unbit.it/downloads
+
+versions    = 2.0.20
+
+pkgname     = uwsgi
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/vlan/Makefile b/packages/n/vlan/Makefile
new file mode 100644
index 0000000..2d5b54b
--- /dev/null
+++ b/packages/n/vlan/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# http://www.candelatech.com/~greear/vlan.html
+#
+# Downloads:
+# =========
+# http://www.candelatech.com/~greear/vlan/vlan.1.9.tar.gz
+#
+# Downloads from fossies.org because it is old project:
+# ====================================================
+# https://fossies.org/linux/misc/old/vlan.1.9.tar.xz
+#
+
+url         = https://fossies.org/linux/misc/old
+
+versions    = 1.9
+
+pkgname     = vlan
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname).$$version.$(suffix) ; \
+	  tar xJf $(pkgname).$$version.$(suffix) ; \
+	  rm -f $(pkgname).$$version.$(suffix) ; \
+	  mv $(pkgname) $(pkgname)-$$version ; \
+	  tar cJf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/vsftpd/Makefile b/packages/n/vsftpd/Makefile
new file mode 100644
index 0000000..5e19aa6
--- /dev/null
+++ b/packages/n/vsftpd/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://security.appspot.com/vsftpd.html
+#
+# Downloads:
+# =========
+# https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz
+#
+
+url         = https://security.appspot.com/downloads
+
+versions    = 3.0.3 3.0.5
+
+pkgname     = vsftpd
+suffix      = tar.gz
+sign_suffix = asc
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/packages/n/whois/Makefile b/packages/n/whois/Makefile
new file mode 100644
index 0000000..b3e08e4
--- /dev/null
+++ b/packages/n/whois/Makefile
@@ -0,0 +1,69 @@
+#
+# Project Home:
+# ============
+# https://github.com/rfc1036/whois
+#
+# GitHub:
+# ======
+# https://github.com/rfc1036/whois
+# clone git://github.com/rfc1036/whois.git
+#
+# Old Download Link:
+# =================
+# ftp://ftp.debian.org/debian/pool/main/w/whois/whois_5.2.1.tar.xz
+#
+
+url          = https://github.com/rfc1036/whois.git
+
+repo_name    = whois
+
+versions     = 5.0.25 5.2.1 5.2.11 5.2.12 5.5.2 5.5.8 5.5.9 5.5.16
+
+pkgname      = whois
+suffix       = tar.xz
+
+git_repo     = .git_clone
+tarballs     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s        = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@if [ "$(url)" = 'git://radix.pro' ]; then \
+	   git clone $(url)/$(repo_name).git $(repo_name) ; \
+	 else \
+	   git clone $(url) $(repo_name) ; \
+	 fi
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=`echo v$$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$$version/ $$tag | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/wireless-regdb/Makefile b/packages/n/wireless-regdb/Makefile
new file mode 100644
index 0000000..605797d
--- /dev/null
+++ b/packages/n/wireless-regdb/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# http://wireless.kernel.org/en/developers/Regulatory/CRDA
+#
+# Downloads:
+# =========
+# http://wireless.kernel.org/download/crda
+# https://www.kernel.org/pub/software/network/wireless-regdb
+#
+
+url         = https://www.kernel.org/pub/software/network/wireless-regdb
+
+versions    = 2014.10.07 2014.11.07 2015.12.14 2019.06.03 2020.11.20 2021.04.21 2022.08.12 2023.02.13
+
+pkgname     = wireless-regdb
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	   wget -N $(url)/$(pkgname)-$$version.$(suffix) ;  \
+	 done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/wireless-tools/Makefile b/packages/n/wireless-tools/Makefile
new file mode 100644
index 0000000..63e8854
--- /dev/null
+++ b/packages/n/wireless-tools/Makefile
@@ -0,0 +1,56 @@
+#
+# Project Home:
+# ============
+# https://hewlettpackard.github.io/wireless-tools/Tools.html
+#
+# GitHub:
+# ======
+# https://github.com/HewlettPackard/wireless-tools
+#
+# Download:
+# ========
+# https://hewlettpackard.github.io/wireless-tools
+#
+
+url         = https://hewlettpackard.github.io/wireless-tools
+
+versions    = 28 29 30
+
+pkgname     = wireless-tools
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  if [ "$$version" -eq "30" ] ; then \
+	    wget -N $(url)/wireless_tools.$$version.pre9.tar.gz ; \
+	  else \
+	    wget -N $(url)/wireless_tools.$$version.tar.gz ; \
+	  fi ; \
+	  if [ "$$version" -eq "30" ] ; then \
+	    tar xzf wireless_tools.$$version.pre9.tar.gz ; \
+	    rm -f wireless_tools.$$version.pre9.tar.gz ; \
+	  else \
+	    tar xzf wireless_tools.$$version.tar.gz ; \
+	  fi ; \
+	  mv wireless_tools.$$version $(pkgname)-$$version ; \
+	  tar czf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version wireless_tools.$$version.tar.gz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/wpa_supplicant/Makefile b/packages/n/wpa_supplicant/Makefile
new file mode 100644
index 0000000..09e7a3b
--- /dev/null
+++ b/packages/n/wpa_supplicant/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://w1.fi/wpa_supplicant
+#
+# Downloads:
+# =========
+# https://w1.fi/releases
+#
+
+url         = https://w1.fi/releases
+
+versions    = 2.0 2.3 2.5 2.9 2.10
+
+pkgname     = wpa_supplicant
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/yp/Makefile b/packages/n/yp/Makefile
new file mode 100644
index 0000000..8826677
--- /dev/null
+++ b/packages/n/yp/Makefile
@@ -0,0 +1,26 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := yp-tools  \
+           ypbind-mt \
+           ypserv
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/packages/n/yp/yp-tools/Makefile b/packages/n/yp/yp-tools/Makefile
new file mode 100644
index 0000000..b72e9cf
--- /dev/null
+++ b/packages/n/yp/yp-tools/Makefile
@@ -0,0 +1,68 @@
+#
+# Project Home:
+# ============
+# https://github.com/thkukuk/yp-tools
+#
+# Clone:
+# =====
+# git clone https://github.com/thkukuk/yp-tools.git
+#
+
+url         = https://github.com/thkukuk
+
+repo_name  = yp-tools
+pkg_name   = yp-tools
+suffix     = tar.xz
+
+versions   = 4.2.3
+
+# List of tags to be extracted:
+TAGS       = $(addprefix v, $(versions))
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	  ( cd $(pkg_name)-$$version ; \
+	    ./autogen.sh ; \
+	    rm -rf autom4te.cache .gitignore *~ ) ; \
+	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	  rm -rf $(pkg_name)-$$version ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/packages/n/yp/ypbind-mt/Makefile b/packages/n/yp/ypbind-mt/Makefile
new file mode 100644
index 0000000..9b3c1de
--- /dev/null
+++ b/packages/n/yp/ypbind-mt/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://github.com/thkukuk/ypbind-mt
+#
+# Downloads:
+# =========
+# https://github.com/thkukuk/ypbind-mt/releases
+#
+
+url         = https://github.com/thkukuk/ypbind-mt/releases/download
+
+versions    = 2.7.2
+
+pkgname     = ypbind-mt
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\($(pkgname)-\)\(.*\)\(.$(suffix)\)/\2/'` ; \
+	  wget -N $(url)/v$$version/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/yp/ypserv/Makefile b/packages/n/yp/ypserv/Makefile
new file mode 100644
index 0000000..3397def
--- /dev/null
+++ b/packages/n/yp/ypserv/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://github.com/thkukuk/ypserv
+#
+# Downloads:
+# =========
+# https://github.com/thkukuk/ypserv/releases
+#
+
+url         = https://github.com/thkukuk/ypserv/releases/download
+
+versions    = 4.2
+
+pkgname     = ypserv
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  version=`echo $$tarball | sed 's/\($(pkgname)-\)\(.*\)\(.$(suffix)\)/\2/'` ; \
+	  wget -N $(url)/v$$version/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/n/ytalk/Makefile b/packages/n/ytalk/Makefile
new file mode 100644
index 0000000..d758fff
--- /dev/null
+++ b/packages/n/ytalk/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Note:
+# ============
+# http://directory.fsf.org/wiki/Ytalk
+# http://ytalk.ourproject.org
+#
+# Downloads:
+# =========
+# ftp://ftp.netbsd.org/pub/pkgsrc/distfiles/ytalk-3.3.0.tar.gz
+#
+
+url         = ftp://ftp.netbsd.org/pub/pkgsrc/distfiles
+
+versions    = 3.3.0
+pkgname     = ytalk
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)