about summary refs log tree commit diff
path: root/pkgs/tools
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/X11/winswitch/default.nix1
-rw-r--r--pkgs/tools/admin/mycli/default.nix7
-rw-r--r--pkgs/tools/admin/mycli/fix-tests.patch446
-rw-r--r--pkgs/tools/admin/oxidized/Gemfile.lock2
-rw-r--r--pkgs/tools/admin/oxidized/gemset.nix12
-rw-r--r--pkgs/tools/backup/wal-g/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/unetbootin/default.nix4
-rw-r--r--pkgs/tools/filesystems/irods/default.nix1
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/default.nix1
-rw-r--r--pkgs/tools/filesystems/ntfs-3g/default.nix1
-rw-r--r--pkgs/tools/graphics/dpic/default.nix4
-rw-r--r--pkgs/tools/inputmethods/evdevremapkeys/default.nix31
-rw-r--r--pkgs/tools/misc/bat/default.nix10
-rw-r--r--pkgs/tools/misc/entr/default.nix2
-rw-r--r--pkgs/tools/misc/gawp/default.nix6
-rw-r--r--pkgs/tools/misc/hashit/default.nix4
-rw-r--r--pkgs/tools/misc/hebcal/default.nix4
-rw-r--r--pkgs/tools/misc/hexyl/default.nix6
-rw-r--r--pkgs/tools/misc/patdiff/default.nix4
-rw-r--r--pkgs/tools/misc/starship/default.nix6
-rw-r--r--pkgs/tools/misc/svtplay-dl/default.nix1
-rw-r--r--pkgs/tools/misc/ultrastar-creator/default.nix8
-rw-r--r--pkgs/tools/misc/ultrastar-manager/default.nix12
-rw-r--r--pkgs/tools/misc/wacomtablet/default.nix30
-rw-r--r--pkgs/tools/misc/woeusb/default.nix2
-rw-r--r--pkgs/tools/misc/woeusb/remove-workaround.patch82
-rw-r--r--pkgs/tools/networking/babeld/default.nix5
-rw-r--r--pkgs/tools/networking/http-prompt/default.nix1
-rw-r--r--pkgs/tools/networking/p2p/tahoe-lafs/default.nix1
-rw-r--r--pkgs/tools/networking/radsecproxy/default.nix4
-rw-r--r--pkgs/tools/networking/unbound/python.nix1
-rw-r--r--pkgs/tools/networking/wstunnel/default.nix47
-rw-r--r--pkgs/tools/package-management/nix/default.nix4
-rw-r--r--pkgs/tools/security/aespipe/default.nix14
-rw-r--r--pkgs/tools/security/keycard-cli/default.nix31
-rw-r--r--pkgs/tools/security/mbox/default.nix1
-rw-r--r--pkgs/tools/security/meo/default.nix1
-rw-r--r--pkgs/tools/security/sequoia/default.nix1
-rw-r--r--pkgs/tools/system/inxi/default.nix6
-rw-r--r--pkgs/tools/text/dos2unix/default.nix18
-rw-r--r--pkgs/tools/text/languagetool/default.nix4
-rw-r--r--pkgs/tools/text/poedit/default.nix4
42 files changed, 319 insertions, 512 deletions
diff --git a/pkgs/tools/X11/winswitch/default.nix b/pkgs/tools/X11/winswitch/default.nix
index e8b2be4b7837e..404cef72a3ecc 100644
--- a/pkgs/tools/X11/winswitch/default.nix
+++ b/pkgs/tools/X11/winswitch/default.nix
@@ -38,6 +38,7 @@ let
     doCheck = false;
 
     meta.platforms = stdenv.lib.platforms.linux;
+    meta.broken = true;
   };
 in stdenv.lib.overrideDerivation base (b: {
   postFixup = b.postFixup + ''
diff --git a/pkgs/tools/admin/mycli/default.nix b/pkgs/tools/admin/mycli/default.nix
index aa22e10b95da8..1783c1ae04d93 100644
--- a/pkgs/tools/admin/mycli/default.nix
+++ b/pkgs/tools/admin/mycli/default.nix
@@ -7,15 +7,13 @@ with python3.pkgs;
 
 buildPythonApplication rec {
   pname = "mycli";
-  version = "1.19.0";
+  version = "1.20.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0x5vzl4vvirqy03fnjwkamhzrqkknlajamwz1rmbnqh4bfmijh9m";
+    sha256 = "0vhwaqkx4njarm0wy8zg2hvzr2yl92y8gnwipcn7p59sazw4whfl";
   };
 
-  patches = [ ./fix-tests.patch ];
-
   propagatedBuildInputs = [
     pymysql configobj sqlparse prompt_toolkit pygments click pycrypto cli-helpers
   ];
@@ -38,5 +36,6 @@ buildPythonApplication rec {
     '';
     homepage = http://mycli.net;
     license = lib.licenses.bsd3;
+    maintainers = [ lib.maintainers.jojosch ];
   };
 }
diff --git a/pkgs/tools/admin/mycli/fix-tests.patch b/pkgs/tools/admin/mycli/fix-tests.patch
deleted file mode 100644
index e67370bc824a6..0000000000000
--- a/pkgs/tools/admin/mycli/fix-tests.patch
+++ /dev/null
@@ -1,446 +0,0 @@
-diff --git a/mycli/sqlcompleter.py b/mycli/sqlcompleter.py
-index 81ee128..2b22fa9 100644
---- a/mycli/sqlcompleter.py
-+++ b/mycli/sqlcompleter.py
-@@ -16,27 +16,32 @@ _logger = logging.getLogger(__name__)
- 
- class SQLCompleter(Completer):
-     keywords = ['ACCESS', 'ADD', 'ALL', 'ALTER TABLE', 'AND', 'ANY', 'AS',
--                'ASC', 'AUTO_INCREMENT', 'BEFORE', 'BEGIN', 'BETWEEN', 'BINARY', 'BY',
--                'CASE', 'CHAR', 'CHECK', 'COLUMN', 'COMMENT', 'COMMIT', 'CONSTRAINT',
--                'CHANGE MASTER TO', 'CHARACTER SET', 'COLLATE', 'CREATE', 'CURRENT', 'CURRENT_TIMESTAMP', 'DATABASE', 'DATE',
--                'DECIMAL', 'DEFAULT', 'DELETE FROM', 'DELIMITER', 'DESC',
--                'DESCRIBE', 'DROP', 'ELSE', 'END', 'ENGINE', 'ESCAPE', 'EXISTS',
--                'FILE', 'FLOAT', 'FOR', 'FOREIGN KEY', 'FORMAT', 'FROM', 'FULL', 'FUNCTION', 'GRANT',
--                'GROUP BY', 'HAVING', 'HOST', 'IDENTIFIED', 'IN', 'INCREMENT', 'INDEX',
--                'INSERT INTO', 'INTEGER', 'INTO', 'INTERVAL', 'IS', 'JOIN', 'KEY', 'LEFT',
--                'LEVEL', 'LIKE', 'LIMIT', 'LOCK', 'LOGS', 'LONG', 'MASTER', 'MODE',
--                'MODIFY', 'NOT', 'NULL', 'NUMBER', 'OFFSET', 'ON', 'OPTION', 'OR',
--                'ORDER BY', 'OUTER', 'OWNER', 'PASSWORD', 'PORT', 'PRIMARY',
--                'PRIVILEGES', 'PROCESSLIST', 'PURGE', 'REFERENCES', 'REGEXP', 'RENAME', 'REPAIR', 'RESET',
--                'REVOKE', 'RIGHT', 'ROLLBACK', 'ROW', 'ROWS', 'ROW_FORMAT', 'SELECT', 'SESSION', 'SET',
--                'SAVEPOINT', 'SHARE', 'SHOW', 'SLAVE', 'SMALLINT', 'START', 'STOP', 'TABLE', 'THEN',
--                'TO', 'TRANSACTION', 'TRIGGER', 'TRUNCATE', 'UNION', 'UNIQUE', 'UNSIGNED', 'UPDATE',
--                'USE', 'USER', 'USING', 'VALUES', 'VARCHAR', 'VIEW', 'WHEN', 'WHERE',
--                'WITH', 'TINYINT', 'SMALLINT', 'MEDIUMINT', 'INT', 'BIGINT']
--
--    functions = ['AVG', 'CONCAT', 'COUNT', 'DISTINCT', 'FIRST', 'FORMAT', 'LAST',
--                 'LCASE', 'LEN', 'MAX', 'MIN', 'MID', 'NOW', 'ROUND', 'SUM',
--                 'TOP', 'UCASE','FROM_UNIXTIME', 'UNIX_TIMESTAMP']
-+                'ASC', 'AUTO_INCREMENT', 'BEFORE', 'BEGIN', 'BETWEEN',
-+                'BIGINT', 'BINARY', 'BY', 'CASE', 'CHANGE MASTER TO', 'CHAR',
-+                'CHARACTER SET', 'CHECK', 'COLLATE', 'COLUMN', 'COMMENT',
-+                'COMMIT', 'CONSTRAINT', 'CREATE', 'CURRENT',
-+                'CURRENT_TIMESTAMP', 'DATABASE', 'DATE', 'DECIMAL', 'DEFAULT',
-+                'DELETE FROM', 'DELIMITER', 'DESC', 'DESCRIBE', 'DROP',
-+                'ELSE', 'END', 'ENGINE', 'ESCAPE', 'EXISTS', 'FILE', 'FLOAT',
-+                'FOR', 'FOREIGN KEY', 'FORMAT', 'FROM', 'FULL', 'FUNCTION',
-+                'GRANT', 'GROUP BY', 'HAVING', 'HOST', 'IDENTIFIED', 'IN',
-+                'INCREMENT', 'INDEX', 'INSERT INTO', 'INT', 'INTEGER',
-+                'INTERVAL', 'INTO', 'IS', 'JOIN', 'KEY', 'LEFT', 'LEVEL',
-+                'LIKE', 'LIMIT', 'LOCK', 'LOGS', 'LONG', 'MASTER',
-+                'MEDIUMINT', 'MODE', 'MODIFY', 'NOT', 'NULL', 'NUMBER',
-+                'OFFSET', 'ON', 'OPTION', 'OR', 'ORDER BY', 'OUTER', 'OWNER',
-+                'PASSWORD', 'PORT', 'PRIMARY', 'PRIVILEGES', 'PROCESSLIST',
-+                'PURGE', 'REFERENCES', 'REGEXP', 'RENAME', 'REPAIR', 'RESET',
-+                'REVOKE', 'RIGHT', 'ROLLBACK', 'ROW', 'ROWS', 'ROW_FORMAT',
-+                'SAVEPOINT', 'SELECT', 'SESSION', 'SET', 'SHARE', 'SHOW',
-+                'SLAVE', 'SMALLINT', 'SMALLINT', 'START', 'STOP', 'TABLE',
-+                'THEN', 'TINYINT', 'TO', 'TRANSACTION', 'TRIGGER', 'TRUNCATE',
-+                'UNION', 'UNIQUE', 'UNSIGNED', 'UPDATE', 'USE', 'USER',
-+                'USING', 'VALUES', 'VARCHAR', 'VIEW', 'WHEN', 'WHERE', 'WITH']
-+
-+    functions = ['AVG', 'CONCAT', 'COUNT', 'DISTINCT', 'FIRST', 'FORMAT',
-+                 'FROM_UNIXTIME', 'LAST', 'LCASE', 'LEN', 'MAX', 'MID',
-+                 'MIN', 'NOW', 'ROUND', 'SUM', 'TOP', 'UCASE', 'UNIX_TIMESTAMP']
- 
-     show_items = []
- 
-diff --git a/test/test_naive_completion.py b/test/test_naive_completion.py
-index 3282c7e..01a432d 100644
---- a/test/test_naive_completion.py
-+++ b/test/test_naive_completion.py
-@@ -19,36 +19,36 @@ def complete_event():
- def test_empty_string_completion(completer, complete_event):
-     text = ''
-     position = 0
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert result == set(map(Completion, completer.all_completions))
-+    assert result == list(map(Completion, sorted(completer.all_completions)))
- 
- 
- def test_select_keyword_completion(completer, complete_event):
-     text = 'SEL'
-     position = len('SEL')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert result == set([Completion(text='SELECT', start_position=-3)])
-+    assert result == list([Completion(text='SELECT', start_position=-3)])
- 
- 
- def test_function_name_completion(completer, complete_event):
-     text = 'SELECT MA'
-     position = len('SELECT MA')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert result == set([
--        Completion(text='MAX', start_position=-2),
--        Completion(text='MASTER', start_position=-2)])
-+    assert result == list([
-+        Completion(text='MASTER', start_position=-2),
-+        Completion(text='MAX', start_position=-2)])
- 
- 
- def test_column_name_completion(completer, complete_event):
-     text = 'SELECT  FROM users'
-     position = len('SELECT ')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert result == set(map(Completion, completer.all_completions))
-+    assert result == list(map(Completion, sorted(completer.all_completions)))
-diff --git a/test/test_smart_completion_public_schema_only.py b/test/test_smart_completion_public_schema_only.py
-index 00059bb..3c29956 100644
---- a/test/test_smart_completion_public_schema_only.py
-+++ b/test/test_smart_completion_public_schema_only.py
-@@ -42,11 +42,11 @@ def complete_event():
- def test_empty_string_completion(completer, complete_event):
-     text = ''
-     position = 0
--    result = set(
-+    result = list(
-         completer.get_completions(
-             Document(text=text, cursor_position=position),
-             complete_event))
--    assert set(map(Completion, completer.keywords)) == result
-+    assert list(map(Completion, completer.keywords)) == result
- 
- 
- def test_select_keyword_completion(completer, complete_event):
-@@ -55,7 +55,7 @@ def test_select_keyword_completion(completer, complete_event):
-     result = completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event)
--    assert set(result) == set([Completion(text='SELECT', start_position=-3)])
-+    assert list(result) == list([Completion(text='SELECT', start_position=-3)])
- 
- 
- def test_table_completion(completer, complete_event):
-@@ -63,10 +63,12 @@ def test_table_completion(completer, complete_event):
-     position = len(text)
-     result = completer.get_completions(
-         Document(text=text, cursor_position=position), complete_event)
--    assert set(result) == set([Completion(text='users', start_position=0),
--                               Completion(text='`select`', start_position=0),
--                               Completion(text='`réveillé`', start_position=0),
--                               Completion(text='orders', start_position=0)])
-+    assert list(result) == list([
-+        Completion(text='`réveillé`', start_position=0),
-+        Completion(text='`select`', start_position=0),
-+        Completion(text='orders', start_position=0),
-+        Completion(text='users', start_position=0),
-+    ])
- 
- 
- def test_function_name_completion(completer, complete_event):
-@@ -74,7 +76,7 @@ def test_function_name_completion(completer, complete_event):
-     position = len('SELECT MA')
-     result = completer.get_completions(
-         Document(text=text, cursor_position=position), complete_event)
--    assert set(result) == set([Completion(text='MAX', start_position=-2),
-+    assert list(result) == list([Completion(text='MAX', start_position=-2),
-                                Completion(text='MASTER', start_position=-2),
-                                ])
- 
-@@ -89,17 +91,18 @@ def test_suggested_column_names(completer, complete_event):
-     """
-     text = 'SELECT  from users'
-     position = len('SELECT ')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
--        Completion(text='users', start_position=0),
-+    assert result == list([
-         Completion(text='*', start_position=0),
--        Completion(text='id', start_position=0),
-         Completion(text='email', start_position=0),
-         Completion(text='first_name', start_position=0),
--        Completion(text='last_name', start_position=0)] +
-+        Completion(text='id', start_position=0),
-+        Completion(text='last_name', start_position=0),
-+    ] +
-         list(map(Completion, completer.functions)) +
-+        [Completion(text='users', start_position=0)] +
-         list(map(Completion, completer.keywords)))
- 
- 
-@@ -117,11 +120,11 @@ def test_suggested_column_names_in_function(completer, complete_event):
-     result = completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event)
--    assert set(result) == set([
-+    assert list(result) == list([
-         Completion(text='*', start_position=0),
--        Completion(text='id', start_position=0),
-         Completion(text='email', start_position=0),
-         Completion(text='first_name', start_position=0),
-+        Completion(text='id', start_position=0),
-         Completion(text='last_name', start_position=0)])
- 
- 
-@@ -135,14 +138,14 @@ def test_suggested_column_names_with_table_dot(completer, complete_event):
-     """
-     text = 'SELECT users. from users'
-     position = len('SELECT users.')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
-+    assert result == list([
-         Completion(text='*', start_position=0),
--        Completion(text='id', start_position=0),
-         Completion(text='email', start_position=0),
-         Completion(text='first_name', start_position=0),
-+        Completion(text='id', start_position=0),
-         Completion(text='last_name', start_position=0)])
- 
- 
-@@ -156,14 +159,14 @@ def test_suggested_column_names_with_alias(completer, complete_event):
-     """
-     text = 'SELECT u. from users u'
-     position = len('SELECT u.')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
-+    assert result == list([
-         Completion(text='*', start_position=0),
--        Completion(text='id', start_position=0),
-         Completion(text='email', start_position=0),
-         Completion(text='first_name', start_position=0),
-+        Completion(text='id', start_position=0),
-         Completion(text='last_name', start_position=0)])
- 
- 
-@@ -178,17 +181,17 @@ def test_suggested_multiple_column_names(completer, complete_event):
-     """
-     text = 'SELECT id,  from users u'
-     position = len('SELECT id, ')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
--        Completion(text='u', start_position=0),
-+    assert result == list([
-         Completion(text='*', start_position=0),
--        Completion(text='id', start_position=0),
-         Completion(text='email', start_position=0),
-         Completion(text='first_name', start_position=0),
-+        Completion(text='id', start_position=0),
-         Completion(text='last_name', start_position=0)] +
-         list(map(Completion, completer.functions)) +
-+        [Completion(text='u', start_position=0)] +
-         list(map(Completion, completer.keywords)))
- 
- 
-@@ -203,14 +206,14 @@ def test_suggested_multiple_column_names_with_alias(completer, complete_event):
-     """
-     text = 'SELECT u.id, u. from users u'
-     position = len('SELECT u.id, u.')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
-+    assert result == list([
-         Completion(text='*', start_position=0),
--        Completion(text='id', start_position=0),
-         Completion(text='email', start_position=0),
-         Completion(text='first_name', start_position=0),
-+        Completion(text='id', start_position=0),
-         Completion(text='last_name', start_position=0)])
- 
- 
-@@ -225,106 +228,108 @@ def test_suggested_multiple_column_names_with_dot(completer, complete_event):
-     """
-     text = 'SELECT users.id, users. from users u'
-     position = len('SELECT users.id, users.')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
-+    assert result == list([
-         Completion(text='*', start_position=0),
--        Completion(text='id', start_position=0),
-         Completion(text='email', start_position=0),
-         Completion(text='first_name', start_position=0),
-+        Completion(text='id', start_position=0),
-         Completion(text='last_name', start_position=0)])
- 
- 
- def test_suggested_aliases_after_on(completer, complete_event):
-     text = 'SELECT u.name, o.id FROM users u JOIN orders o ON '
-     position = len('SELECT u.name, o.id FROM users u JOIN orders o ON ')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
--        Completion(text='u', start_position=0),
--        Completion(text='o', start_position=0)])
-+    assert result == list([
-+        Completion(text='o', start_position=0),
-+        Completion(text='u', start_position=0)])
- 
- 
- def test_suggested_aliases_after_on_right_side(completer, complete_event):
-     text = 'SELECT u.name, o.id FROM users u JOIN orders o ON o.user_id = '
-     position = len(
-         'SELECT u.name, o.id FROM users u JOIN orders o ON o.user_id = ')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
--        Completion(text='u', start_position=0),
--        Completion(text='o', start_position=0)])
-+    assert result == list([
-+        Completion(text='o', start_position=0),
-+        Completion(text='u', start_position=0)])
- 
- 
- def test_suggested_tables_after_on(completer, complete_event):
-     text = 'SELECT users.name, orders.id FROM users JOIN orders ON '
-     position = len('SELECT users.name, orders.id FROM users JOIN orders ON ')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
--        Completion(text='users', start_position=0),
--        Completion(text='orders', start_position=0)])
-+    assert result == list([
-+        Completion(text='orders', start_position=0),
-+        Completion(text='users', start_position=0)])
- 
- 
- def test_suggested_tables_after_on_right_side(completer, complete_event):
-     text = 'SELECT users.name, orders.id FROM users JOIN orders ON orders.user_id = '
-     position = len(
-         'SELECT users.name, orders.id FROM users JOIN orders ON orders.user_id = ')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
--        Completion(text='users', start_position=0),
--        Completion(text='orders', start_position=0)])
-+    assert result == list([
-+        Completion(text='orders', start_position=0),
-+        Completion(text='users', start_position=0)])
- 
- 
- def test_table_names_after_from(completer, complete_event):
-     text = 'SELECT * FROM '
-     position = len('SELECT * FROM ')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
--        Completion(text='users', start_position=0),
--        Completion(text='orders', start_position=0),
-+    assert result == list([
-         Completion(text='`réveillé`', start_position=0),
-         Completion(text='`select`', start_position=0),
-+        Completion(text='orders', start_position=0),
-+        Completion(text='users', start_position=0),
-     ])
- 
- 
- def test_auto_escaped_col_names(completer, complete_event):
-     text = 'SELECT  from `select`'
-     position = len('SELECT ')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
--        Completion(text='`select`', start_position=0),
-+    assert result == [
-         Completion(text='*', start_position=0),
--        Completion(text='id', start_position=0),
-+        Completion(text='`ABC`', start_position=0),
-         Completion(text='`insert`', start_position=0),
--        Completion(text='`ABC`', start_position=0), ] +
--        list(map(Completion, completer.functions)) +
--        list(map(Completion, completer.keywords)))
-+        Completion(text='id', start_position=0),
-+    ] + \
-+        list(map(Completion, completer.functions)) + \
-+        [Completion(text='`select`', start_position=0)] + \
-+        list(map(Completion, completer.keywords))
- 
- 
- def test_un_escaped_table_names(completer, complete_event):
-     text = 'SELECT  from réveillé'
-     position = len('SELECT ')
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    assert set(result) == set([
--        Completion(text='réveillé', start_position=0),
-+    assert result == list([
-         Completion(text='*', start_position=0),
--        Completion(text='id', start_position=0),
-+        Completion(text='`ABC`', start_position=0),
-         Completion(text='`insert`', start_position=0),
--        Completion(text='`ABC`', start_position=0), ] +
-+        Completion(text='id', start_position=0),
-+    ] +
-         list(map(Completion, completer.functions)) +
-+        [Completion(text='réveillé', start_position=0)] +
-         list(map(Completion, completer.keywords)))
- 
- 
-@@ -349,10 +354,10 @@ def dummy_list_path(dir_name):
- 
- @patch('mycli.packages.filepaths.list_path', new=dummy_list_path)
- @pytest.mark.parametrize('text,expected', [
--    ('source ',  [('~', 0),
--                  ('/', 0),
--                  ('.', 0),
--                  ('..', 0)]),
-+    #    ('source ',  [('~', 0),
-+    #                  ('/', 0),
-+    #                  ('.', 0),
-+    #                  ('..', 0)]),
-     ('source /', [('dir1', 0),
-                   ('file1.sql', 0),
-                   ('file2.sql', 0)]),
-@@ -363,8 +368,8 @@ def dummy_list_path(dir_name):
- ])
- def test_file_name_completion(completer, complete_event, text, expected):
-     position = len(text)
--    result = set(completer.get_completions(
-+    result = list(completer.get_completions(
-         Document(text=text, cursor_position=position),
-         complete_event))
--    expected = set([Completion(txt, pos) for txt, pos in expected])
-+    expected = list((Completion(txt, pos) for txt, pos in expected))
-     assert result == expected
diff --git a/pkgs/tools/admin/oxidized/Gemfile.lock b/pkgs/tools/admin/oxidized/Gemfile.lock
index 89129ccb25f69..0832bce6d2eeb 100644
--- a/pkgs/tools/admin/oxidized/Gemfile.lock
+++ b/pkgs/tools/admin/oxidized/Gemfile.lock
@@ -7,6 +7,7 @@ GEM
     emk-sinatra-url-for (0.2.1)
       sinatra (>= 0.9.1.1)
     ffi (1.10.0)
+    git (1.5.0)
     haml (5.0.4)
       temple (>= 0.8.0)
       tilt
@@ -17,6 +18,7 @@ GEM
     net-telnet (0.1.1)
     oxidized (0.26.3)
       asetus (~> 0.1)
+      git (~> 1)
       net-ssh (~> 5)
       net-telnet (~> 0.1.1)
       rugged (~> 0.21, >= 0.21.4)
diff --git a/pkgs/tools/admin/oxidized/gemset.nix b/pkgs/tools/admin/oxidized/gemset.nix
index de7714aced8df..ff77102af12a9 100644
--- a/pkgs/tools/admin/oxidized/gemset.nix
+++ b/pkgs/tools/admin/oxidized/gemset.nix
@@ -50,6 +50,16 @@
     };
     version = "1.10.0";
   };
+  git = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bf83icwypi3p3pd97vlqbnp3hvf31ncd440m9kh9y7x6yk74wyh";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
   haml = {
     dependencies = ["temple" "tilt"];
     groups = ["default"];
@@ -112,7 +122,7 @@
     version = "0.1.1";
   };
   oxidized = {
-    dependencies = ["asetus" "net-ssh" "net-telnet" "rugged" "slop"];
+    dependencies = ["asetus" "git" "net-ssh" "net-telnet" "rugged" "slop"];
     groups = ["default"];
     platforms = [];
     source = {
diff --git a/pkgs/tools/backup/wal-g/default.nix b/pkgs/tools/backup/wal-g/default.nix
index 70cc8a425c164..c6c47ce4f16c9 100644
--- a/pkgs/tools/backup/wal-g/default.nix
+++ b/pkgs/tools/backup/wal-g/default.nix
@@ -21,5 +21,6 @@ buildGoPackage rec {
     license = stdenv.lib.licenses.asl20;
     description = "An archival restoration tool for Postgres";
     maintainers = [ stdenv.lib.maintainers.ocharles ];
+    broken = true;
   };
 }
diff --git a/pkgs/tools/cd-dvd/unetbootin/default.nix b/pkgs/tools/cd-dvd/unetbootin/default.nix
index 9495f8dac9968..a6c2885d4b468 100644
--- a/pkgs/tools/cd-dvd/unetbootin/default.nix
+++ b/pkgs/tools/cd-dvd/unetbootin/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "unetbootin";
-  version = "661";
+  version = "675";
 
   src = fetchFromGitHub {
     owner  = "unetbootin";
     repo   = "unetbootin";
     rev    = version;
-    sha256 = "0jwmmym86x9hc6yr619dxdbxdawx8x0zwld0dfrhzwxvwbqbpav5";
+    sha256 = "0b7z2amsf6i7b56a5sfs5di1vh30h6ybcqg23d5gx5zgn3w38w4a";
   };
 
   setSourceRoot = ''
diff --git a/pkgs/tools/filesystems/irods/default.nix b/pkgs/tools/filesystems/irods/default.nix
index 14790ae708703..56fc2e40ba2f4 100644
--- a/pkgs/tools/filesystems/irods/default.nix
+++ b/pkgs/tools/filesystems/irods/default.nix
@@ -87,6 +87,7 @@ in rec {
        description = common.meta.description + " CLI clients";
        longDescription = common.meta.longDescription + ''
          This package provides the CLI clients, called 'icommands'.'';
+       broken = true;
      };
   });
 }
diff --git a/pkgs/tools/filesystems/nixpart/0.4/default.nix b/pkgs/tools/filesystems/nixpart/0.4/default.nix
index 129283e83ebe3..b293b6d8146d3 100644
--- a/pkgs/tools/filesystems/nixpart/0.4/default.nix
+++ b/pkgs/tools/filesystems/nixpart/0.4/default.nix
@@ -73,5 +73,6 @@ in buildPythonApplication rec {
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.aszlig ];
     platforms = platforms.linux;
+    broken = true;
   };
 }
diff --git a/pkgs/tools/filesystems/ntfs-3g/default.nix b/pkgs/tools/filesystems/ntfs-3g/default.nix
index 3660649553d50..1d402090355f4 100644
--- a/pkgs/tools/filesystems/ntfs-3g/default.nix
+++ b/pkgs/tools/filesystems/ntfs-3g/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
     "--enable-posix-acls"
     "--enable-xattr-mappings"
     "--${if crypto then "enable" else "disable"}-crypto"
+    "--enable-extras"
   ];
 
   postInstall =
diff --git a/pkgs/tools/graphics/dpic/default.nix b/pkgs/tools/graphics/dpic/default.nix
index f21b84c152180..7a9217302d673 100644
--- a/pkgs/tools/graphics/dpic/default.nix
+++ b/pkgs/tools/graphics/dpic/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "dpic";
-  version = "2016.01.12";
+  version = "2019.08.30";
 
   src = fetchurl {
     url = "https://ece.uwaterloo.ca/~aplevich/dpic/${pname}-${version}.tar.gz";
-    sha256 = "0iwwf8shgm8n4drz8mndvk7jga93yy8plnyby3lgk8376g5ps6cz";
+    sha256 = "059m53cppw67hwygm7l03ciaxbnaldx63bqdhx1vzbx3kiwz8iw2";
   };
 
   phases = [ "unpackPhase" "buildPhase" "installPhase" ];
diff --git a/pkgs/tools/inputmethods/evdevremapkeys/default.nix b/pkgs/tools/inputmethods/evdevremapkeys/default.nix
new file mode 100644
index 0000000000000..0dc6f67392575
--- /dev/null
+++ b/pkgs/tools/inputmethods/evdevremapkeys/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+let
+  pythonPackages = python3Packages;
+
+in pythonPackages.buildPythonPackage rec {
+  name = "${pname}-0.1.0";
+  pname = "evdevremapkeys";
+
+  src = fetchFromGitHub {
+    owner = "philipl";
+    repo = pname;
+    rev = "68fb618b8142e1b45d7a1e19ea9a5a9bbb206144";
+    sha256 = "0c9slflakm5jqd8s1zpxm7gmrrk0335m040d7m70hnsak42jvs2f";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [ 
+    pyyaml
+    pyxdg
+    python-daemon
+    evdev
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/philipl/evdevremapkeys";
+    description = "Daemon to remap events on linux input devices";
+    license = licenses.mit;
+    maintainers = [ maintainers.q3k ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/misc/bat/default.nix b/pkgs/tools/misc/bat/default.nix
index 449be0f017f62..6b62ca247cb0f 100644
--- a/pkgs/tools/misc/bat/default.nix
+++ b/pkgs/tools/misc/bat/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, rustPlatform, fetchFromGitHub, llvmPackages, pkgconfig, zlib
-, Security, libiconv
+{ stdenv, rustPlatform, fetchFromGitHub, llvmPackages, pkgconfig
+, Security, libiconv, installShellFiles
 }:
 
 rustPlatform.buildRustPackage rec {
@@ -16,15 +16,15 @@ rustPlatform.buildRustPackage rec {
 
   cargoSha256 = "0d7h0kn41w6wm4w63vjy2i7r19jkansfvfjn7vgh2gqh5m60kal2";
 
-  nativeBuildInputs = [ pkgconfig llvmPackages.libclang zlib ];
+  nativeBuildInputs = [ pkgconfig llvmPackages.libclang installShellFiles ];
 
   buildInputs = stdenv.lib.optionals stdenv.isDarwin [ Security libiconv ];
 
   LIBCLANG_PATH = "${llvmPackages.libclang}/lib";
 
   postInstall = ''
-    install -m 444 -Dt $out/share/man/man1 doc/bat.1
-    install -m 444 -Dt $out/share/fish/vendor_completions.d assets/completions/bat.fish
+    installManPage doc/bat.1
+    installShellCompletion assets/completions/bat.fish
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/misc/entr/default.nix b/pkgs/tools/misc/entr/default.nix
index 7233236216fec..735580eee5dca 100644
--- a/pkgs/tools/misc/entr/default.nix
+++ b/pkgs/tools/misc/entr/default.nix
@@ -26,6 +26,6 @@ stdenv.mkDerivation rec {
     description = "Run arbitrary commands when files change";
     license = licenses.isc;
     platforms = platforms.all;
-    maintainers = with maintainers; [ pSub ];
+    maintainers = with maintainers; [ pSub synthetica ];
   };
 }
diff --git a/pkgs/tools/misc/gawp/default.nix b/pkgs/tools/misc/gawp/default.nix
index 002853abc1d35..865ce3c440d18 100644
--- a/pkgs/tools/misc/gawp/default.nix
+++ b/pkgs/tools/misc/gawp/default.nix
@@ -16,4 +16,10 @@ buildGoPackage rec {
   };
 
   goDeps = ./deps.nix;
+
+  meta = {
+    homepage = "https://github.com/martingallagher/gawp";
+    description = "A simple, configurable, file watching, job execution tool";
+    license = stdenv.lib.licenses.asl20;
+  };
 }
diff --git a/pkgs/tools/misc/hashit/default.nix b/pkgs/tools/misc/hashit/default.nix
index 6d9285247133d..0315750c2505f 100644
--- a/pkgs/tools/misc/hashit/default.nix
+++ b/pkgs/tools/misc/hashit/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, pantheon, python3, libgee, gtk3, desktop-file-utils, wrapGAppsHook }:
+{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, vala, pantheon, python3, libgee, gtk3, desktop-file-utils, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "hashit";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     desktop-file-utils
     meson
     ninja
-    pantheon.vala
+    vala
     pkgconfig
     python3
     wrapGAppsHook
diff --git a/pkgs/tools/misc/hebcal/default.nix b/pkgs/tools/misc/hebcal/default.nix
index 39678abeba437..8b435fcef565b 100644
--- a/pkgs/tools/misc/hebcal/default.nix
+++ b/pkgs/tools/misc/hebcal/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchFromGitHub, autoreconfHook }:
 
 stdenv.mkDerivation rec {
-  version = "4.18";
+  version = "4.19";
   pname = "hebcal";
 
   src = fetchFromGitHub {
     owner = "hebcal";
     repo = "hebcal";
     rev = "v${version}";
-    sha256 = "13b3gbfl043s6vycf5kdy2lkchy3kg690vy0dpmy3si6x05nl10w";
+    sha256 = "028y2bw0bs0bx58gnxzbrg2c14a2pgkni2carf5i7kb6dg4wnkaq";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
diff --git a/pkgs/tools/misc/hexyl/default.nix b/pkgs/tools/misc/hexyl/default.nix
index f6b0649e40465..c00e47433c1aa 100644
--- a/pkgs/tools/misc/hexyl/default.nix
+++ b/pkgs/tools/misc/hexyl/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname   = "hexyl";
-  version = "0.5.1";
+  version = "0.6.0";
 
   src = fetchFromGitHub {
     owner  = "sharkdp";
     repo   = pname;
     rev    = "v${version}";
-    sha256 = "0511ikhfc0fa6cfp02n49zlzyqgwf7ymgn911y8fnjlaf6grsh67";
+    sha256 = "1n2q5a6697bxvl0askywhad2x560cajv456gxihdqqmmyq2vf63h";
   };
 
-  cargoSha256 = "126hq802hncji4yvkf7jvaq2njzw8kwzvc7fqw99nrdn4k56xig7";
+  cargoSha256 = "1wcpbqlglf9r0xhfjmyym8bnd4pgrsf9lrmb14hn1ml5zlshpd7p";
 
   meta = with stdenv.lib; {
     description = "A command-line hex viewer";
diff --git a/pkgs/tools/misc/patdiff/default.nix b/pkgs/tools/misc/patdiff/default.nix
index f67a8274443cc..1c5e5b0447414 100644
--- a/pkgs/tools/misc/patdiff/default.nix
+++ b/pkgs/tools/misc/patdiff/default.nix
@@ -4,8 +4,8 @@ with ocamlPackages;
 
 janePackage {
   pname = "patdiff";
-  hash = "02cdn5j5brbp4n2rpxprzxfakjbl7n2llixg7m632bih3ppmfcq1";
-  buildInputs = [ core_extended expect_test_helpers patience_diff ocaml_pcre ];
+  hash = "04krzn6rj2r81z55pms5ayk6bxhlxrm006cbhy0m6rc69a0h00lh";
+  buildInputs = [ core_extended expect_test_helpers patience_diff ocaml_pcre shell ];
   meta = {
     description = "File Diff using the Patience Diff algorithm";
   };
diff --git a/pkgs/tools/misc/starship/default.nix b/pkgs/tools/misc/starship/default.nix
index b2a5ded346a78..8335c04c3d2fe 100644
--- a/pkgs/tools/misc/starship/default.nix
+++ b/pkgs/tools/misc/starship/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, libiconv, darwin }:
+{ stdenv, fetchFromGitHub, rustPlatform, libiconv, darwin }:
 
 rustPlatform.buildRustPackage rec {
   pname = "starship";
-  version = "0.20.2";
+  version = "0.21.0";
 
   src = fetchFromGitHub {
     owner = "starship";
     repo = "starship";
     rev = "v${version}";
-    sha256 = "0nyka4w7vzx3n93y44vblc9pjqaymd867fmp0yd8kk2v56cyf4vd";
+    sha256 = "07f502xrh8pkh02xkb79g64qcwxdlipypwn6x35zq8hdrw07xhw3";
   };
 
   buildInputs = stdenv.lib.optionals stdenv.isDarwin [ libiconv darwin.apple_sdk.frameworks.Security ];
diff --git a/pkgs/tools/misc/svtplay-dl/default.nix b/pkgs/tools/misc/svtplay-dl/default.nix
index b530193258c9e..b516a6c268dfe 100644
--- a/pkgs/tools/misc/svtplay-dl/default.nix
+++ b/pkgs/tools/misc/svtplay-dl/default.nix
@@ -44,5 +44,6 @@ in stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = stdenv.lib.platforms.linux;
     maintainers = [ maintainers.rycee ];
+    broken = true;
   };
 }
diff --git a/pkgs/tools/misc/ultrastar-creator/default.nix b/pkgs/tools/misc/ultrastar-creator/default.nix
index d70fded5e3e44..dd9742293ac78 100644
--- a/pkgs/tools/misc/ultrastar-creator/default.nix
+++ b/pkgs/tools/misc/ultrastar-creator/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub
+{ lib, mkDerivation, fetchFromGitHub
 , qmake, qtbase, pkgconfig, taglib, libbass, libbass_fx }:
 
 # TODO: get rid of (unfree) libbass
@@ -6,7 +6,7 @@
 # there’s a WIP branch here:
 # https://github.com/UltraStar-Deluxe/UltraStar-Creator/commits/BASS_removed
 
-stdenv.mkDerivation {
+mkDerivation {
   pname = "ultrastar-creator";
   version = "2019-04-23";
 
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
     sha256 = "1rzz04l7s7pxj74xam0cxlq569lfpgig35kpbsplq531d4007pc9";
   };
 
-  postPatch = with stdenv.lib; ''
+  postPatch = with lib; ''
     # we don’t want prebuild binaries checked into version control!
     rm -rf lib include
     sed -e "s|DESTDIR =.*$|DESTDIR = $out/bin|" \
@@ -36,7 +36,7 @@ stdenv.mkDerivation {
   nativeBuildInputs = [ qmake pkgconfig ];
   buildInputs = [ qtbase taglib libbass libbass_fx ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Ultrastar karaoke song creation tool";
     homepage = https://github.com/UltraStar-Deluxe/UltraStar-Creator;
     license = licenses.gpl2;
diff --git a/pkgs/tools/misc/ultrastar-manager/default.nix b/pkgs/tools/misc/ultrastar-manager/default.nix
index 0a3bb19d14b97..19d126d98f64f 100644
--- a/pkgs/tools/misc/ultrastar-manager/default.nix
+++ b/pkgs/tools/misc/ultrastar-manager/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, symlinkJoin, qmake, diffPlugins
+{ lib, mkDerivation, fetchFromGitHub, pkgconfig, symlinkJoin, qmake, diffPlugins
 , qtbase, qtmultimedia, taglib, libmediainfo, libzen, libbass }:
 
 let
@@ -24,12 +24,12 @@ let
       repo = "UltraStar-Manager";
       inherit rev sha256;
     };
-    in stdenv.mkDerivation {
+    in mkDerivation {
       name = "${src.name}-patched";
       inherit src;
       phases = [ "unpackPhase" "patchPhase" ];
 
-      patchPhase = with stdenv.lib; ''
+      patchPhase = with lib; ''
         # we don’t want prebuild binaries checked into version control!
         rm -rf lib include
 
@@ -55,7 +55,7 @@ let
     sed -e "s|QCore.*applicationDirPath()|QString(\"${path}\")|" -i "${file}"
   '';
 
-  buildPlugin = name: stdenv.mkDerivation {
+  buildPlugin = name: mkDerivation {
     name = "ultrastar-manager-${name}-plugin-${version}";
     src = patchedSrc;
 
@@ -82,7 +82,7 @@ let
       paths = map buildPlugin plugins;
     };
 
-in stdenv.mkDerivation {
+in mkDerivation {
   pname = "ultrastar-manager";
   inherit version;
   src = patchedSrc;
@@ -112,7 +112,7 @@ in stdenv.mkDerivation {
   nativeBuildInputs = [ pkgconfig ];
   inherit buildInputs;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Ultrastar karaoke song manager";
     homepage = https://github.com/UltraStar-Deluxe/UltraStar-Manager;
     license = licenses.gpl2;
diff --git a/pkgs/tools/misc/wacomtablet/default.nix b/pkgs/tools/misc/wacomtablet/default.nix
new file mode 100644
index 0000000000000..d0fbcecf0270a
--- /dev/null
+++ b/pkgs/tools/misc/wacomtablet/default.nix
@@ -0,0 +1,30 @@
+{ lib, mkDerivation, fetchurl, extra-cmake-modules, qtx11extras,
+  plasma-workspace, libwacom, xf86_input_wacom
+}:
+
+mkDerivation rec {
+  pname = "wacomtablet";
+  version = "3.2.0";
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/${pname}-${version}.tar.xz";
+    sha256 = "197pwpl87gqlnza36bp68jvw8ww25znk08acmi8bpz7n84xfc368";
+  };
+
+  nativeBuildInputs = [ extra-cmake-modules ];
+  buildInputs = [
+    qtx11extras plasma-workspace
+    libwacom xf86_input_wacom
+  ];
+
+  meta = {
+    description = "KDE Configuration Module for Wacom Graphics Tablets";
+    longDescription = ''
+      This module implements a GUI for the Wacom Linux Drivers and extends it
+      with profile support to handle different button / pen layouts per profile.
+    '';
+    homepage = https://cgit.kde.org/wacomtablet.git/about/;
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.Thra11 ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/misc/woeusb/default.nix b/pkgs/tools/misc/woeusb/default.nix
index f25034dd8cda2..cc53b26e23882 100644
--- a/pkgs/tools/misc/woeusb/default.nix
+++ b/pkgs/tools/misc/woeusb/default.nix
@@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
     sha256 = "1w3m3qbjn0igydsbpf22w29lzf1pkxv7dlny5mbyrb6j0q6wlx0b";
   };
 
+  patches = [ ./remove-workaround.patch ];
+
   nativeBuildInputs = [ autoreconfHook makeWrapper ];
   buildInputs = [ wxGTK30 ];
 
diff --git a/pkgs/tools/misc/woeusb/remove-workaround.patch b/pkgs/tools/misc/woeusb/remove-workaround.patch
new file mode 100644
index 0000000000000..094da2cb2bc1d
--- /dev/null
+++ b/pkgs/tools/misc/woeusb/remove-workaround.patch
@@ -0,0 +1,82 @@
+From 3cf93fd595bd3fca98c98a0bdc8fc86b36ee1403 Mon Sep 17 00:00:00 2001
+From: Michael Hoang <enzime@users.noreply.github.com>
+Date: Wed, 9 Oct 2019 12:42:53 +1100
+Subject: [PATCH] Remove writeback buffering workaround
+
+---
+ src/woeusb | 45 ---------------------------------------------
+ 1 file changed, 45 deletions(-)
+
+diff --git a/src/woeusb b/src/woeusb
+index 3284259..0d3ea20 100755
+--- a/src/woeusb
++++ b/src/woeusb
+@@ -308,9 +308,6 @@ init(){
+ 
+ 	current_state=copying-filesystem
+ 
+-	workaround_linux_make_writeback_buffering_not_suck \
+-		apply
+-
+ 	copy_filesystem_files \
+ 		"${source_fs_mountpoint}" \
+ 		"${target_fs_mountpoint}" \
+@@ -1650,41 +1647,6 @@ workaround_support_windows_7_uefi_boot(){
+ 		> "${efi_boot_directory}/bootx64.efi"
+ }; declare -fr workaround_support_windows_7_uefi_boot
+ 
+-## Currently WoeUSB indirectly causes severely unresponsive system on 64-bit architecture with large primary memory during file copy process due to a flaw of the writeback buffer size handling in Linux kernel, workaround it before it is fixed
+-## Refer: 
+-## - System lagging while copying data · Issue #113 · slacka/WoeUSB <https://github.com/slacka/WoeUSB/issues/113>
+-## - The pernicious USB-stick stall problem [LWN.net] <https://lwn.net/Articles/572911/>
+-workaround_linux_make_writeback_buffering_not_suck(){
+-	util_check_function_parameters_quantity 1 "${#}"
+-	local -r mode="${1}"
+-
+-	local -ir VM_DIRTY_BACKGROUND_BYTES=$((16*1024*1024)) # 16MiB
+-	local -ir VM_DIRTY_BYTES=$((48*1024*1024)) # 48MiB
+-
+-	case "${mode}" in
+-		apply)
+-			echo_with_color \
+-				yellow \
+-				'Applying workaround to prevent 64-bit systems with big primary memory from being unresponsive during copying files.'
+-			echo "${VM_DIRTY_BACKGROUND_BYTES}" > /proc/sys/vm/dirty_background_bytes
+-			echo "${VM_DIRTY_BYTES}" > /proc/sys/vm/dirty_bytes
+-		;;
+-		reset)
+-			echo_with_color \
+-				yellow \
+-				'Resetting workaround to prevent 64-bit systems with big primary memory from being unresponsive during copying files.'
+-			echo 0 > /proc/sys/vm/dirty_background_bytes
+-			echo 0 > /proc/sys/vm/dirty_bytes
+-		;;
+-		*)
+-			printf_with_color \
+-				red \
+-				'Fatal: %s: Unexpected *mode* encountered, please report bug.\n' \
+-				"${FUNCNAME[0]}"
+-		;;
+-	esac
+-}; declare -fr workaround_linux_make_writeback_buffering_not_suck
+-
+ install_legacy_pc_bootloader_grub(){
+ 	util_check_function_parameters_quantity 3 "${#}"
+ 	local -r target_fs_mountpoint="${1}"; shift 1
+@@ -1836,13 +1798,6 @@ trap_exit(){
+ 		off \
+ 		"${global_only_for_gui}"
+ 
+-	case "${current_state}" in
+-		copying-filesystem|finished)
+-			workaround_linux_make_writeback_buffering_not_suck \
+-				reset
+-		;;
+-	esac
+-
+ 	if util_is_parameter_set_and_not_empty \
+ 		source_fs_mountpoint; then
+ 		if ! cleanup_mountpoint  \
+-- 
+2.23.0
+
diff --git a/pkgs/tools/networking/babeld/default.nix b/pkgs/tools/networking/babeld/default.nix
index 60b79220628cf..12d2d169a2305 100644
--- a/pkgs/tools/networking/babeld/default.nix
+++ b/pkgs/tools/networking/babeld/default.nix
@@ -1,10 +1,11 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "babeld-1.9.1";
+  pname = "babeld";
+  version = "1.9.1";
 
   src = fetchurl {
-    url = "http://www.pps.univ-paris-diderot.fr/~jch/software/files/${name}.tar.gz";
+    url = "http://www.pps.univ-paris-diderot.fr/~jch/software/files/${pname}-${version}.tar.gz";
     sha256 = "1d503igqv9s5pgrhvxp1czjy2xfsjhagyyh2iny7g4cjvl0kq6qy";
   };
 
diff --git a/pkgs/tools/networking/http-prompt/default.nix b/pkgs/tools/networking/http-prompt/default.nix
index bcaca9ef0ce5b..049fb7a1a6e67 100644
--- a/pkgs/tools/networking/http-prompt/default.nix
+++ b/pkgs/tools/networking/http-prompt/default.nix
@@ -30,5 +30,6 @@ pythonPackages.buildPythonApplication rec {
     license = licenses.mit;
     maintainers = with maintainers; [ matthiasbeyer ];
     platforms = platforms.linux ++ platforms.darwin;
+    broken = true;
   };
 }
diff --git a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
index a5305acdf5975..e8a4261ed12e3 100644
--- a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
+++ b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
@@ -90,5 +90,6 @@ pythonPackages.buildPythonApplication rec {
     license = [ lib.licenses.gpl2Plus /* or */ "TGPPLv1+" ];
     maintainers = with lib.maintainers; [ MostAwesomeDude ];
     platforms = lib.platforms.gnu ++ lib.platforms.linux;
+    broken = true;
   };
 }
diff --git a/pkgs/tools/networking/radsecproxy/default.nix b/pkgs/tools/networking/radsecproxy/default.nix
index 9901194f3c629..5460bf80a07e0 100644
--- a/pkgs/tools/networking/radsecproxy/default.nix
+++ b/pkgs/tools/networking/radsecproxy/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "radsecproxy";
-  version = "1.8.0";
+  version = "1.8.1";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "1268lbysa82b6h0101jzs0v6ixvmy3x0d0a8hw37sy95filsjmia";
+    sha256 = "12pvwd7v3iswki3riycxaiiqxingg4bqnkwc5ay3j4n2kzynr1qg";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
diff --git a/pkgs/tools/networking/unbound/python.nix b/pkgs/tools/networking/unbound/python.nix
index fdd110e14b3cc..c118620410496 100644
--- a/pkgs/tools/networking/unbound/python.nix
+++ b/pkgs/tools/networking/unbound/python.nix
@@ -60,5 +60,6 @@ in stdenv.mkDerivation rec {
     homepage = http://www.unbound.net;
     maintainers = with maintainers; [ leenaars ];
     platforms = stdenv.lib.platforms.unix;
+    broken = true;
   };
 }
diff --git a/pkgs/tools/networking/wstunnel/default.nix b/pkgs/tools/networking/wstunnel/default.nix
new file mode 100644
index 0000000000000..2488d874e6db6
--- /dev/null
+++ b/pkgs/tools/networking/wstunnel/default.nix
@@ -0,0 +1,47 @@
+{ mkDerivation, async, base, base64-bytestring, binary, bytestring
+, classy-prelude, cmdargs, connection, hslogger, mtl, network
+, network-conduit-tls, stdenv, streaming-commons, text
+, unordered-containers, websockets
+, lib, fetchFromGitHub, fetchpatch
+}:
+
+mkDerivation rec {
+  pname = "wstunnel";
+  version = "unstable-2019-01-28";
+
+  src = fetchFromGitHub {
+    owner = "erebe";
+    repo = pname;
+    rev = "78cc5a5f1aa4dbcb25fa9b0efc9cfef3640672e4";
+    sha256 = "17y3yn7qg1h7jx9xs041sw63g51vyns236f60d2m2mghi49lm9i2";
+  };
+
+  patches = [
+    # Support GHC 8.6   https://github.com/erebe/wstunnel/pull/18
+    (fetchpatch {
+      url = "https://github.com/erebe/wstunnel/commit/8f348fea4dbf75874d5d930334377843763335ab.patch";
+      sha256 = "0a66jx7k97j3iyr7j5npbyq1lkhzz74r81mkas4nig7z3hny1gn9";
+    })
+  ];
+
+  isLibrary = false;
+  isExecutable = true;
+
+  libraryHaskellDepends = [
+    async base base64-bytestring binary bytestring classy-prelude
+    connection hslogger mtl network network-conduit-tls
+    streaming-commons text unordered-containers websockets
+  ];
+
+  executableHaskellDepends = [
+    base bytestring classy-prelude cmdargs hslogger text
+  ];
+
+  testHaskellDepends = [ base text ];
+
+  homepage = "https://github.com/erebe/wstunnel";
+  description = "UDP and TCP tunnelling over WebSocket";
+  maintainers = with lib.maintainers; [ gebner ];
+  license = lib.licenses.bsd3;
+
+}
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix
index 518c1baad5ada..269d72615366d 100644
--- a/pkgs/tools/package-management/nix/default.nix
+++ b/pkgs/tools/package-management/nix/default.nix
@@ -174,10 +174,10 @@ in rec {
   };
 
   nixStable = callPackage common (rec {
-    name = "nix-2.3";
+    name = "nix-2.3.1";
     src = fetchurl {
       url = "http://nixos.org/releases/nix/${name}/${name}.tar.xz";
-      sha256 = "b1d1b4d87390941fc64b19776f1ed9e3871231d38f5a1f295dd13925acd3a98d";
+      sha256 = "bb6578e9f20eebab6d78469ecc59c450ac54f276e5a86a882015d98fecb1bc7b";
     };
 
     inherit storeDir stateDir confDir boehmgc;
diff --git a/pkgs/tools/security/aespipe/default.nix b/pkgs/tools/security/aespipe/default.nix
index 22fb8848eb917..69bef27258e8c 100644
--- a/pkgs/tools/security/aespipe/default.nix
+++ b/pkgs/tools/security/aespipe/default.nix
@@ -2,18 +2,20 @@
 
 stdenv.mkDerivation rec {
   pname = "aespipe";
-  version = "2.4e";
+  version = "2.4f";
 
   src = fetchurl {
     url = "mirror://sourceforge/loop-aes/aespipe/aespipe-v${version}.tar.bz2";
-    sha256 = "0fmr0vk408bf13jydhdmcdhqw31yc9qk329bs9i60alccywapmds";
+    sha256 = "15pg9j27mjzl78mpzkdqd84kdafj0g6j72f8wgjrpp2qkxjy2ddi";
   };
 
-  meta = {
+  configureFlags = [ "--enable-padlock" "--enable-intelaes" ];
+
+  meta = with stdenv.lib; {
     description = "AES encrypting or decrypting pipe";
     homepage = http://loop-aes.sourceforge.net/aespipe.README;
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.goibhniu ];
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl2;
+    maintainers = [ maintainers.goibhniu ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/security/keycard-cli/default.nix b/pkgs/tools/security/keycard-cli/default.nix
new file mode 100644
index 0000000000000..a76c102b2bb90
--- /dev/null
+++ b/pkgs/tools/security/keycard-cli/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildGoPackage, fetchFromGitHub, pkgconfig, pcsclite }:
+
+buildGoPackage rec {
+  pname = "keycard-cli";
+  version = "0.0.12";
+
+  goPackagePath = "github.com/status-im/keycard-cli";
+  subPackages = [ "." ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pcsclite ];
+
+  src = fetchFromGitHub {
+    owner = "status-im";
+    repo = pname;
+    rev = version;
+    sha256 = "1jnbaq57i6i9bad1hcvd28mxfqq6v8rv806c6l74vlb79ff4v1wb";
+  };
+
+  buildFlagsArray = [
+    "-ldflags="
+    "-X main.version=${version}"
+  ];
+
+  meta = with lib; {
+    description = "A command line tool and shell to manage keycards";
+    homepage = "https://keycard.status.im";
+    license = licenses.mpl20;
+    maintainers = [ maintainers.zimbatm ];
+  };
+}
diff --git a/pkgs/tools/security/mbox/default.nix b/pkgs/tools/security/mbox/default.nix
index 24a7ea51a82c6..1ef282b8b6eba 100644
--- a/pkgs/tools/security/mbox/default.nix
+++ b/pkgs/tools/security/mbox/default.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation {
       maintainers = with maintainers; [ ehmry ];
       license = licenses.bsd3;
       platforms = [ "x86_64-linux" ];
+      broken = true;
     };
 
 }
diff --git a/pkgs/tools/security/meo/default.nix b/pkgs/tools/security/meo/default.nix
index 308b94231e76d..19f51775ff241 100644
--- a/pkgs/tools/security/meo/default.nix
+++ b/pkgs/tools/security/meo/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation {
     license = stdenv.lib.licenses.agpl3Plus;
     maintainers = with stdenv.lib.maintainers; [viric];
     platforms = with stdenv.lib.platforms; linux;
+    broken = true;
   };
 }
diff --git a/pkgs/tools/security/sequoia/default.nix b/pkgs/tools/security/sequoia/default.nix
index 9d6928abf86ff..554ed93f0934e 100644
--- a/pkgs/tools/security/sequoia/default.nix
+++ b/pkgs/tools/security/sequoia/default.nix
@@ -87,5 +87,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ minijackson doronbehar ];
     platforms = platforms.all;
+    broken = true;
   };
 }
diff --git a/pkgs/tools/system/inxi/default.nix b/pkgs/tools/system/inxi/default.nix
index 3c1e3e798623b..a896a57b08069 100644
--- a/pkgs/tools/system/inxi/default.nix
+++ b/pkgs/tools/system/inxi/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, perl }:
+{ stdenv, fetchFromGitHub, perl, perlPackages, makeWrapper }:
 
 stdenv.mkDerivation rec {
   pname = "inxi";
@@ -11,11 +11,13 @@ stdenv.mkDerivation rec {
     sha256 = "04134l323vwd0g2bffj11rnpw2jgs9la6aqrmv8vh7w9mq5nd57y";
   };
 
-  buildInputs = [ perl ];
+  buildInputs = [ perl makeWrapper ];
 
   installPhase = ''
     mkdir -p $out/bin
     cp inxi $out/bin/
+    wrapProgram $out/bin/inxi \
+      --set PERL5LIB "${perlPackages.makePerlPath (with perlPackages; [ CpanelJSONXS ])}"
     mkdir -p $out/share/man/man1
     cp inxi.1 $out/share/man/man1/
   '';
diff --git a/pkgs/tools/text/dos2unix/default.nix b/pkgs/tools/text/dos2unix/default.nix
index bd72ec9471438..146338df91630 100644
--- a/pkgs/tools/text/dos2unix/default.nix
+++ b/pkgs/tools/text/dos2unix/default.nix
@@ -2,25 +2,21 @@
 
 stdenv.mkDerivation rec {
   pname = "dos2unix";
-  version = "7.4.0";
+  version = "7.4.1";
 
   src = fetchurl {
     url = "https://waterlan.home.xs4all.nl/dos2unix/${pname}-${version}.tar.gz";
-    sha256 = "12h4c61g376bhq03y5g2xszkrkrj5hwd928rly3xsp6rvfmnbixs";
+    sha256 = "08w6yywzirsxq8bh87jycvvw922ybhc2l426j2iqzliyn1h8mm8w";
   };
 
-  configurePhase = ''
-    substituteInPlace Makefile \
-    --replace /usr $out
-    '';
-
   nativeBuildInputs = [ perl gettext ];
+  makeFlags = [ "prefix=${placeholder "out"}" ];
 
   meta = with stdenv.lib; {
-    homepage = http://waterlan.home.xs4all.nl/dos2unix.html;
-    description = "Tools to transform text files from dos to unix formats and vicervesa";
+    description = "Convert text files with DOS or Mac line breaks to Unix line breaks and vice versa";
+    homepage = "https://waterlan.home.xs4all.nl/dos2unix.html";
+    changelog = "https://sourceforge.net/p/dos2unix/dos2unix/ci/dos2unix-${version}/tree/dos2unix/NEWS.txt?format=raw";
     license = licenses.bsd2;
-    maintainers = with maintainers; [ndowens ];
-
+    maintainers = with maintainers; [ c0bw3b ndowens ];
   };
 }
diff --git a/pkgs/tools/text/languagetool/default.nix b/pkgs/tools/text/languagetool/default.nix
index f75099e630db7..f6ca3a7d760f0 100644
--- a/pkgs/tools/text/languagetool/default.nix
+++ b/pkgs/tools/text/languagetool/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "LanguageTool";
-  version = "4.6";
+  version = "4.7";
 
   src = fetchzip {
     url = "https://www.languagetool.org/download/${pname}-${version}.zip";
-    sha256 = "1z3i6kz1dz7dw2ykyk1yamrv8h5h330sfyl037hhyy9hw6p30rhg";
+    sha256 = "08200f9vk157jv27lmm89rsf9r05sb6jxcmnphrpz1hxykixd294";
   };
   nativeBuildInputs = [ makeWrapper ];
   buildInputs = [ jre ];
diff --git a/pkgs/tools/text/poedit/default.nix b/pkgs/tools/text/poedit/default.nix
index e1ac2248d2242..4d29c380483d5 100644
--- a/pkgs/tools/text/poedit/default.nix
+++ b/pkgs/tools/text/poedit/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "poedit";
-  version = "2.2.1";
+  version = "2.2.4";
 
   src = fetchurl {
     url = "https://github.com/vslavik/poedit/archive/v${version}-oss.tar.gz";
-    sha256 = "0brj6ysisxng2xn8l9ii2rngsj5b4rk27hzfjbp3zwb2caagd3vq";
+    sha256 = "1k5ql41g635z01s1i9bchvf72ynwsvg54gs3s40f07f9dihb23gd";
   };
 
   nativeBuildInputs = [ autoconf automake asciidoc wrapGAppsHook