summaryrefslogtreecommitdiffstats
path: root/makefu
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2016-10-20 20:22:29 +0200
committertv <tv@krebsco.de>2016-10-20 20:22:29 +0200
commit9329c1e47ddda0653d7e9824a01632ce3766e8f0 (patch)
tree2bfb70737a757d0bd61ca0aa895c77d740b21e73 /makefu
parent844d347ce7cf0b7646e9ecba3fbdc0b90e608501 (diff)
parent0f2a9778315c3126794c0f1ad63710d38e7a67f7 (diff)
Merge remote-tracking branch 'prism/master'
Diffstat (limited to 'makefu')
-rw-r--r--makefu/1systems/filepimp.nix5
-rw-r--r--makefu/1systems/gum.nix1
-rw-r--r--makefu/1systems/omo.nix1
-rw-r--r--makefu/1systems/wbob.nix4
-rw-r--r--makefu/1systems/wry.nix4
-rw-r--r--makefu/1systems/x.nix3
-rw-r--r--makefu/2configs/backup.nix8
-rw-r--r--makefu/2configs/base-gui.nix1
-rw-r--r--makefu/2configs/default.nix11
-rw-r--r--makefu/2configs/elchos/stats.nix96
-rw-r--r--makefu/2configs/filepimp-share.nix33
-rw-r--r--makefu/2configs/hw/tp-x220.nix2
-rw-r--r--makefu/2configs/hw/tp-x2x0.nix4
-rw-r--r--makefu/2configs/iodined.nix3
-rw-r--r--makefu/2configs/nginx/icecult.nix28
-rw-r--r--makefu/2configs/rad1o.nix2
-rw-r--r--makefu/2configs/solr.nix24
-rw-r--r--makefu/2configs/urlwatch.nix2
-rw-r--r--makefu/5pkgs/default.nix7
-rw-r--r--makefu/5pkgs/devpi/default.nix70
-rw-r--r--makefu/5pkgs/devpi/py3-fix-encoding.patch11
-rw-r--r--makefu/5pkgs/mergerfs/default.nix4
22 files changed, 282 insertions, 42 deletions
diff --git a/makefu/1systems/filepimp.nix b/makefu/1systems/filepimp.nix
index 4037f693..0fabf6d9 100644
--- a/makefu/1systems/filepimp.nix
+++ b/makefu/1systems/filepimp.nix
@@ -24,7 +24,9 @@ in {
../2configs/fs/single-partition-ext4.nix
../2configs/smart-monitor.nix
../2configs/tinc/retiolum.nix
+ ../2configs/filepimp-share.nix
];
+
krebs.build.host = config.krebs.hosts.filepimp;
# AMD N54L
boot = {
@@ -76,6 +78,9 @@ in {
(xfsmount "j2" (part1 jDisk2)) //
(xfsmount "par0" (part1 jDisk3))
;
+
+ networking.firewall.trustedInterfaces = [ primary-interface ];
+
services.wakeonlan.interfaces = [
{
interface = primary-interface;
diff --git a/makefu/1systems/gum.nix b/makefu/1systems/gum.nix
index 401ec609..20731c84 100644
--- a/makefu/1systems/gum.nix
+++ b/makefu/1systems/gum.nix
@@ -22,6 +22,7 @@ in {
../2configs/tinc/retiolum.nix
../2configs/urlwatch.nix
../2configs/torrent.nix
+ ../2configs/graphite-standalone.nix
../2configs/sabnzbd.nix
../2configs/opentracker.nix
diff --git a/makefu/1systems/omo.nix b/makefu/1systems/omo.nix
index 71fb85ff..2e09e345 100644
--- a/makefu/1systems/omo.nix
+++ b/makefu/1systems/omo.nix
@@ -44,6 +44,7 @@ in {
../2configs/fs/sda-crypto-root.nix
../2configs/zsh-user.nix
../2configs/urlwatch.nix
+ ../2configs/backup.nix
../2configs/exim-retiolum.nix
../2configs/smart-monitor.nix
../2configs/mail-client.nix
diff --git a/makefu/1systems/wbob.nix b/makefu/1systems/wbob.nix
index ff176edd..184f7414 100644
--- a/makefu/1systems/wbob.nix
+++ b/makefu/1systems/wbob.nix
@@ -55,6 +55,10 @@ in {
# rt2870 with nonfree creates wlp2s0 from wlp0s20u2
# not explicitly setting the interface results in wpa_supplicant to crash
networking.wireless.interfaces = [ "wlp2s0" ];
+ networking.interfaces.virbr1.ip4 = [{
+ address = "10.8.8.11";
+ prefixLength = 24;
+ }];
# nuc hardware
diff --git a/makefu/1systems/wry.nix b/makefu/1systems/wry.nix
index 81cd362e..238b740a 100644
--- a/makefu/1systems/wry.nix
+++ b/makefu/1systems/wry.nix
@@ -16,13 +16,15 @@ in {
../2configs/bepasty-dual.nix
../2configs/iodined.nix
-
+ ../2configs/backup.nix
# other nginx
../2configs/nginx/euer.wiki.nix
../2configs/nginx/euer.blog.nix
../2configs/nginx/euer.test.nix
+ #../2configs/elchos/stats.nix
+
# collectd
# ../2configs/collectd/collectd-base.nix
diff --git a/makefu/1systems/x.nix b/makefu/1systems/x.nix
index 0243856a..00eca87c 100644
--- a/makefu/1systems/x.nix
+++ b/makefu/1systems/x.nix
@@ -63,11 +63,10 @@
# configure pulseAudio to provide a HDMI sink as well
networking.firewall.enable = true;
- networking.firewall.allowedTCPPorts = [ 80 24800 26061 8000 ];
+ networking.firewall.allowedTCPPorts = [ 80 24800 26061 8000 3000 ];
networking.firewall.allowedUDPPorts = [ 665 26061 ];
krebs.build.host = config.krebs.hosts.x;
- krebs.hosts.omo.nets.retiolum.via.ip4.addr = "192.168.1.11";
krebs.tinc.retiolum.connectTo = [ "omo" "gum" "prism" ];
diff --git a/makefu/2configs/backup.nix b/makefu/2configs/backup.nix
index 6f79ed4f..57fd7a64 100644
--- a/makefu/2configs/backup.nix
+++ b/makefu/2configs/backup.nix
@@ -1,6 +1,10 @@
{ config, lib, ... }:
with config.krebs.lib;
let
+ # preparation:
+ # mkdir -p defaultBackupDir/host.name/src
+ # as root on omo:
+ # ssh-copy-id root@src
startAt = "0,6,12,18:00";
defaultBackupServer = config.krebs.hosts.omo;
defaultBackupDir = "/home/backup";
@@ -12,7 +16,7 @@ let
};
dst = {
host = defaultBackupServer;
- path = defaultBackupDir + src;
+ path = "${defaultBackupDir}/${host.name}${src}";
};
startAt = "0,6,12,18:00";
snapshots = {
@@ -25,6 +29,6 @@ let
};
in {
krebs.backup.plans = {
- wry-to-omo_var-www = defaultPull wry "/var/www";
+ wry-to-omo_var-www = defaultPull config.krebs.hosts.wry "/";
};
}
diff --git a/makefu/2configs/base-gui.nix b/makefu/2configs/base-gui.nix
index b039c12c..cbc3efba 100644
--- a/makefu/2configs/base-gui.nix
+++ b/makefu/2configs/base-gui.nix
@@ -82,7 +82,6 @@ in
URxvt.perl-ext: default,url-select
URxvt.keysym.M-u: perl:url-select:select_next
- #URxvt.url-select.launcher: firefox -new-tab
URxvt.url-select.launcher: chromium
URxvt.url-select.underline: true
URxvt.searchable-scrollback: CM-s
diff --git a/makefu/2configs/default.nix b/makefu/2configs/default.nix
index a7c2a983..56a87d7a 100644
--- a/makefu/2configs/default.nix
+++ b/makefu/2configs/default.nix
@@ -21,10 +21,13 @@ with config.krebs.lib;
search-domain = "retiolum";
build = {
user = config.krebs.users.makefu;
- source = let inherit (config.krebs.build) host user; in {
+ source = let
+ inherit (config.krebs.build) host user;
+ ref = "b8ede35"; # stable @ 2016-10-19
+ in {
nixpkgs = if config.makefu.full-populate || (getEnv "dummy_secrets" == "true") then
- { # stable @ 2016-07-20
- git = { url = https://github.com/nixos/nixpkgs; ref = "125ffff"; };
+ {
+ git = { url = https://github.com/nixos/nixpkgs; inherit ref; };
}
else
# TODO use http, once it is implemented
@@ -32,7 +35,7 @@ with config.krebs.lib;
## prepare so we do not have to wait for rsync:
## cd /var/src; curl https://github.com/nixos/nixpkgs/tarball/125ffff -L | tar zx && mv NixOS-nixpkgs-125ffff nixpkgs
- { file = "/home/makefu/store/125ffff";};
+ { file = "/home/makefu/store/${ref}";};
secrets.file =
if getEnv "dummy_secrets" == "true"
then toString <stockholm/makefu/6tests/data/secrets>
diff --git a/makefu/2configs/elchos/stats.nix b/makefu/2configs/elchos/stats.nix
new file mode 100644
index 00000000..0282b04c
--- /dev/null
+++ b/makefu/2configs/elchos/stats.nix
@@ -0,0 +1,96 @@
+{ config, lib, pkgs, ... }:
+
+# graphite-web on port 8080
+# carbon cache on port 2003 (tcp/udp)
+with config.krebs.lib;
+let
+ sec = toString <secrets>;
+ acmepath = "/var/lib/acme/";
+ acmechall = acmepath + "/challenges/";
+ ext-dom = "stats.nsupdate.info";
+ #ssl_cert = "${sec}/wildcard.krebsco.de.crt";
+ #ssl_key = "${sec}/wildcard.krebsco.de.key";
+ ssl_cert = "${acmepath}/${ext-dom}/fullchain.pem";
+ ssl_key = "${acmepath}/${ext-dom}/key.pem";
+in {
+ networking.firewall = {
+ allowedTCPPorts = [ 2003 80 443 ];
+ allowedUDPPorts = [ 2003 ];
+ };
+
+ services.grafana = {
+ enable = true;
+ addr = "127.0.0.1";
+ extraOptions = { "AUTH_ANONYMOUS_ENABLED" = "true"; };
+ users.allowSignUp = false;
+ users.allowOrgCreate = false;
+ users.autoAssignOrg = false;
+ security = import <secrets/grafana_security.nix>; # { AdminUser = ""; adminPassword = ""}
+ };
+ krebs.nginx = {
+ enable = true;
+ servers.elch-stats = {
+ server-names = [ ext-dom ];
+ listen = [ "80" "443 ssl" ];
+ ssl = {
+ enable = true;
+ # these certs will be needed if acme has not yet created certificates:
+ certificate = ssl_cert;
+ certificate_key = ssl_key;
+ force_encryption = true;
+ };
+
+ locations = [
+ (nameValuePair "/" ''
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_pass http://localhost:3000/;
+ '')
+ (nameValuePair "/.well-known/acme-challenge" ''
+ root ${acmechall}/${ext-dom}/;
+ '')
+ ];
+ };
+ };
+
+ security.acme.certs."${ext-dom}" = {
+ email = "acme@syntax-fehler.de";
+ webroot = "${acmechall}/${ext-dom}/";
+ group = "nginx";
+ allowKeysForGroup = true;
+ postRun = "systemctl reload nginx.service";
+ extraDomains."${ext-dom}" = null ;
+ };
+
+ services.graphite = {
+ web = {
+ enable = true;
+ host = "127.0.0.1";
+ port = 8080;
+ };
+ carbon = {
+ enableCache = true;
+ # save disk usage by restricting to 1 bulk update per second
+ config = ''
+ [cache]
+ MAX_CACHE_SIZE = inf
+ MAX_UPDATES_PER_SECOND = 1
+ MAX_CREATES_PER_MINUTE = 500
+ '';
+ storageSchemas = ''
+ [carbon]
+ pattern = ^carbon\.
+ retentions = 60:90d
+
+ [elchos]
+ patterhn = ^elchos\.
+ retention = 10s:30d,60s:1y
+
+ [default]
+ pattern = .*
+ retentions = 30s:30d,300s:1y
+ '';
+ };
+ };
+}
diff --git a/makefu/2configs/filepimp-share.nix b/makefu/2configs/filepimp-share.nix
new file mode 100644
index 00000000..23fa8da0
--- /dev/null
+++ b/makefu/2configs/filepimp-share.nix
@@ -0,0 +1,33 @@
+{ config, lib, pkgs, ... }:
+
+with config.krebs.lib;
+let
+ hostname = config.krebs.build.host.name;
+in {
+ users.users.smbguest = {
+ name = "smbguest";
+ uid = config.ids.uids.smbguest;
+ description = "smb guest user";
+ home = "/var/empty";
+ };
+ services.samba = {
+ enable = true;
+ shares = {
+ media = {
+ path = "/media/";
+ "read only" = "no";
+ browseable = "yes";
+ "guest ok" = "yes";
+ };
+ };
+ extraConfig = ''
+ guest account = smbguest
+ map to guest = bad user
+ # disable printing
+ load printers = no
+ printing = bsd
+ printcap name = /dev/null
+ disable spoolss = yes
+ '';
+ };
+}
diff --git a/makefu/2configs/hw/tp-x220.nix b/makefu/2configs/hw/tp-x220.nix
index 58390e48..2ec531e5 100644
--- a/makefu/2configs/hw/tp-x220.nix
+++ b/makefu/2configs/hw/tp-x220.nix
@@ -5,7 +5,7 @@ with config.krebs.lib;
imports = [ ./tp-x2x0.nix ];
boot = {
- kernelModules = [ "kvm-intel" "acpi_call" "tpm-rng" ];
+ kernelModules = [ "kvm-intel" "acpi_call" "tpm-rng" "tp_smapi" ];
extraModulePackages = [ config.boot.kernelPackages.tp_smapi ];
};
hardware.opengl.extraPackages = [ pkgs.vaapiIntel pkgs.vaapiVdpau ];
diff --git a/makefu/2configs/hw/tp-x2x0.nix b/makefu/2configs/hw/tp-x2x0.nix
index 9047cfb6..368465a8 100644
--- a/makefu/2configs/hw/tp-x2x0.nix
+++ b/makefu/2configs/hw/tp-x2x0.nix
@@ -38,4 +38,8 @@ with config.krebs.lib;
CPU_MIN_PERF_ON_BAT=0
CPU_MAX_PERF_ON_BAT=30
'';
+
+ powerManagement.resumeCommands = ''
+ {pkgs.rfkill}/bin/rfkill unblock all
+ '';
}
diff --git a/makefu/2configs/iodined.nix b/makefu/2configs/iodined.nix
index ca489d07..b1446eab 100644
--- a/makefu/2configs/iodined.nix
+++ b/makefu/2configs/iodined.nix
@@ -5,8 +5,9 @@ let
domain = "io.krebsco.de";
pw = import <secrets/iodinepw.nix>;
in {
+ networking.firewall.allowedUDPPorts = [ 53 ];
- services.iodined = {
+ services.iodine = {
server = {
enable = true;
domain = domain;
diff --git a/makefu/2configs/nginx/icecult.nix b/makefu/2configs/nginx/icecult.nix
new file mode 100644
index 00000000..a11f92af
--- /dev/null
+++ b/makefu/2configs/nginx/icecult.nix
@@ -0,0 +1,28 @@
+{ config, pkgs, lib, ... }:
+
+with config.krebs.lib;
+
+let
+ icecult = pkgs.fetchFromGitHub {
+ owner = "kraiz";
+ repo = "icecult";
+ rev = "1942d43381a97f30111a48725f7532c343a6f4d7";
+ sha256 = "0l8q7kw3w1kpvmy8hza9vr5liiycivbljkmwpacaifbay5y98z58";
+ };
+in{
+ krebs.nginx = {
+ enable = true;
+ servers.default = {
+ extraConfig = ''
+ root ${icecult}/app;
+ '';
+ locations = [
+ (nameValuePair "/rpc" ''
+ rewrite /rpc/(.*) /$1 break;
+ proxy_http_version 1.1;
+ proxy_pass http://10.42.22.163:3121;
+ '')
+ ];
+ };
+ };
+}
diff --git a/makefu/2configs/rad1o.nix b/makefu/2configs/rad1o.nix
index 03bb9bc7..6eca69e0 100644
--- a/makefu/2configs/rad1o.nix
+++ b/makefu/2configs/rad1o.nix
@@ -3,7 +3,7 @@
{
environment.systemPackages = with pkgs; [
- gnuradio-full
+ gnuradio-with-packages
gnuradio-osmosdr
gqrx
];
diff --git a/makefu/2configs/solr.nix b/makefu/2configs/solr.nix
new file mode 100644
index 00000000..cad9eabc
--- /dev/null
+++ b/makefu/2configs/solr.nix
@@ -0,0 +1,24 @@
+{ config, lib, pkgs, ... }:
+
+# graphite-web on port 8080
+# carbon cache on port 2003 (tcp/udp)
+with config.krebs.lib;
+let
+ solrHome = "/var/db/solr";
+in {
+ imports = [ ];
+ users.users.solr = {
+ home = solrHome;
+ uid = genid "solr";
+ createHome = true;
+ group = "solr";
+ };
+ users.groups.solr.gid = genid "solr";
+
+ services.solr = {
+ enable = true;
+ inherit solrHome;
+ user = "solr";
+ group = "solr";
+ };
+}
diff --git a/makefu/2configs/urlwatch.nix b/makefu/2configs/urlwatch.nix
index e0fbefa3..0d8f888f 100644
--- a/makefu/2configs/urlwatch.nix
+++ b/makefu/2configs/urlwatch.nix
@@ -14,6 +14,8 @@
https://pypi.python.org/simple/xstatic/
http://guest:derpi@cvs2svn.tigris.org/svn/cvs2svn/tags/
http://ftp.debian.org/debian/pool/main/a/apt-cacher-ng/
+ https://github.com/amadvance/snapraid/releases.atom
+ https://erdgeist.org/gitweb/opentracker/commit/
];
};
}
diff --git a/makefu/5pkgs/default.nix b/makefu/5pkgs/default.nix
index 6d020406..0d375a51 100644
--- a/makefu/5pkgs/default.nix
+++ b/makefu/5pkgs/default.nix
@@ -2,16 +2,9 @@
let
inherit (pkgs) callPackage;
- nixpkgs-1509 = import (pkgs.fetchFromGitHub {
- owner = "NixOS"; repo = "nixpkgs-channels";
- rev = "91371c2bb6e20fc0df7a812332d99c38b21a2bda";
- sha256 = "1as1i0j9d2n3iap9b471y4x01561r2s3vmjc5281qinirlr4al73";
- }) {};
-
in
{
nixpkgs.config.packageOverrides = rec {
- cups = nixpkgs-1509.cups;
alsa-hdspconf = callPackage ./alsa-tools { alsaToolTarget="hdspconf";};
alsa-hdspmixer = callPackage ./alsa-tools { alsaToolTarget="hdspmixer";};
alsa-hdsploader = callPackage ./alsa-tools { alsaToolTarget="hdsploader";};
diff --git a/makefu/5pkgs/devpi/default.nix b/makefu/5pkgs/devpi/default.nix
index 3ccc35c7..020b2fdc 100644
--- a/makefu/5pkgs/devpi/default.nix
+++ b/makefu/5pkgs/devpi/default.nix
@@ -1,33 +1,43 @@
{ pkgs ? import <nixpkgs> {} }:
with pkgs.stdenv.lib;
let
- execnet14 = pkgs.python3Packages.buildPythonPackage rec {
- name = "execnet-1.4.1";
+
+ readme-renderer = pkgs.python3Packages.buildPythonPackage rec {
+ name = "readme_renderer";
+ version = "0.7.0";
src = pkgs.fetchurl {
- url = "https://pypi.python.org/packages/source/e/execnet/${name}.tar.gz";
- sha256 = "1rpk1vyclhg911p3hql0m0nrpq7q7mysxnaaw6vs29cpa6kx8vgn";
- };
- doCheck = false; # http://prism:8010/builders/build-all/builds/177/steps/build-vbob/logs/stdio
- propagatedBuildInputs = with pkgs.python3Packages;
- [ setuptools_scm apipkg ];
- meta = {
- description = "rapid multi-Python deployment";
- license = licenses.gpl2;
+ url = "mirror://pypi/r/readme_renderer/readme_renderer-${version}.tar.gz";
+ sha256 = "1kh9ggff8m9sdgr631vf2n4k97h4z1871vay6qgk3ydy3rd856ak";
};
+ buildInputs = with pkgs.python3Packages; [ pytest ];
+ propagatedBuildInputs = with pkgs.python3Packages; [ docutils bleach pygments ];
+
};
+ devpi-client = pkgs.python3Packages.buildPythonPackage rec {
+ name = "devpi-client";
+ version = "2.7.0";
+ src = pkgs.fetchurl {
+ url = "mirror://pypi/d/devpi-client/devpi-client-${version}.tar.gz";
+ sha256 = "0z7vaf0a66n82mz0vx122pbynjvkhp2mjf9lskgyv09y3bxzzpj3";
+ };
+ patches = [ ./py3-fix-encoding.patch ];
+ buildInputs = with pkgs.python3Packages; [ tox check-manifest pkginfo ];
+ propagatedBuildInputs = with pkgs.python3Packages; [ devpi-common py ];
+ };
devpi-web = pkgs.python3Packages.buildPythonPackage rec {
name = "devpi-web";
- version = "3.0.0";
+ version = "3.1.1";
+
src = pkgs.fetchurl {
- url = "https://pypi.python.org/packages/source/d/devpi-web/devpi-web-${version}.tar.gz";
- sha256 = "156abxyhj17a8cg38hpyr31qkjb61mb2kggsxij4p4xvy9jwkbwi";
+ url = "mirror://pypi/d/devpi-web/devpi-web-${version}.tar.gz";
+ sha256 = "0bvqv52jmasfm4sdyccwsgvk9a663d3grj7zjw8r9x7xm7l3svqv";
};
propagatedBuildInputs = with pkgs.python3Packages;
- [ devpi-server pyramid_chameleon beautifulsoup4 Whoosh defusedxml ];
+ [ devpi-server pyramid_chameleon beautifulsoup4 defusedxml readme-renderer ];
meta = {
homepage = https://bitbucket.org/hpk42/devpi;
@@ -36,9 +46,29 @@ let
maintainers = with maintainers; [ makefu ];
};
};
+
+ devpi-common-3 = pkgs.python3Packages.buildPythonPackage rec {
+ name = "devpi-common";
+ version = "3.0.1";
+
+ src = pkgs.fetchurl {
+ url = "mirror://pypi/d/devpi-common/devpi-common-${version}.tar.gz";
+ sha256 = "0l3a7iyk596x6pvzg7604lzzi012qszr804fqn6f517zcy1xz23j";
+ };
+
+ propagatedBuildInputs = with pkgs.python3Packages; [ requests2 py ];
+
+ meta = {
+ homepage = https://bitbucket.org/hpk42/devpi;
+ description = "Utilities jointly used by devpi-server and devpi-client";
+ license = licenses.mit;
+ maintainers = with maintainers; [ lewo makefu ];
+ };
+ };
+
devpi-server = pkgs.python3Packages.buildPythonPackage rec {
name = "devpi-server";
- version = "3.0.2";
+ version = "4.1.1";
# original postFixup adds "import sys; sys.argv[0] = 'devpi-server'" to
# `.devpi-server-wrapped` which
@@ -46,12 +76,12 @@ let
postFixup = "";
src = pkgs.fetchurl {
- url = "https://pypi.python.org/packages/source/d/devpi-server/devpi-server-${version}.tar.gz";
- sha256 = "14r1024i3x2pb72khyzvi56sh9smpdswmrbc88xvjxnalmzfn99d";
+ url = "mirror://pypi/d/devpi-server/devpi-server-${version}.tar.gz";
+ sha256 = "1icbn1nw6w0sc5150fr69rlhs0j5ldnnxfzl2qabq2wi0dbar8hf";
};
propagatedBuildInputs = with pkgs.python3Packages;
- [ devpi-common execnet14 itsdangerous pluggy waitress pyramid ];
+ [ devpi-common-3 execnet itsdangerous pluggy waitress pyramid ];
buildInputs = with pkgs.python3Packages; [ pytest beautifulsoup4 webtest ];
meta = {
@@ -63,7 +93,7 @@ let
};
in {
- inherit devpi-server;
+ inherit devpi-server devpi-client;
devpi-web = pkgs.python3.buildEnv.override {
extraLibs = [ devpi-web devpi-server ];
};
diff --git a/makefu/5pkgs/devpi/py3-fix-encoding.patch b/makefu/5pkgs/devpi/py3-fix-encoding.patch
new file mode 100644
index 00000000..e5f94069
--- /dev/null
+++ b/makefu/5pkgs/devpi/py3-fix-encoding.patch
@@ -0,0 +1,11 @@
++++ a/setup.py
+--- b/setup.py
+@@ -26,7 +26,7 @@
+
+
+ def get_changelog():
+- text = open(os.path.join(here, 'CHANGELOG')).read()
++ text = open(os.path.join(here, 'CHANGELOG'),encoding='utf-8').read()
+ header_matches = list(re.finditer('^-+$', text, re.MULTILINE))
+ # until fifth header
+ text = text[:header_matches[5].start()]
diff --git a/makefu/5pkgs/mergerfs/default.nix b/makefu/5pkgs/mergerfs/default.nix
index 64e8fc67..cfb7b0ae 100644
--- a/makefu/5pkgs/mergerfs/default.nix
+++ b/makefu/5pkgs/mergerfs/default.nix
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
name = "mergerfs-${version}";
- version = "2.14.0";
+ version = "2.16.1";
# not using fetchFromGitHub because of changelog being built with git log
src = fetchgit {
url = "https://github.com/trapexit/mergerfs";
rev = "refs/tags/${version}";
- sha256 = "0j5r96xddlj5gp3n1xhfwjmr6yf861xg3hgby4p078c8zfriq5rm";
+ sha256 = "12fqgk54fnnibqiq82p4g2k6qnw3iy6dd64csmlf73yi67za5iwf";
deepClone = true;
};