aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2020-04-05 15:57:20 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2020-04-06 00:25:00 +0200
commit258dd18bac4bf5dd03cf1098ffa35cb954f9e015 (patch)
tree03ca447495573f6745b701096d8b31283ce30466
parente7b890d0999fe54a99f84fe92d625d9d488358dc (diff)
downloadNix-258dd18bac4bf5dd03cf1098ffa35cb954f9e015.tar.gz
Nix-258dd18bac4bf5dd03cf1098ffa35cb954f9e015.tar.zst
Nix-258dd18bac4bf5dd03cf1098ffa35cb954f9e015.zip
Upgrade to nixos-unstable
-rw-r--r--modules/naemon/default.nix18
-rw-r--r--modules/opendmarc.nix14
-rw-r--r--modules/private/certificates.nix12
-rw-r--r--modules/private/databases/mariadb.nix39
-rw-r--r--modules/private/databases/openldap/default.nix1
-rw-r--r--modules/private/databases/postgresql.nix15
-rw-r--r--modules/private/ftp.nix17
-rw-r--r--modules/private/monitoring/status.nix6
-rw-r--r--modules/private/system.nix21
-rw-r--r--modules/private/system/backup-2.nix6
-rw-r--r--modules/private/system/dilion.nix4
-rw-r--r--modules/private/tasks/default.nix1
-rw-r--r--modules/webapps/diaspora.nix28
-rw-r--r--modules/webapps/mastodon.nix26
-rw-r--r--modules/webapps/mediagoblin.nix26
-rw-r--r--modules/webapps/peertube.nix26
-rw-r--r--modules/websites/httpd-service-builder.nix2
-rw-r--r--modules/websites/location-options.nix54
-rw-r--r--modules/websites/vhost-options.nix275
-rw-r--r--nix/sources.json16
-rw-r--r--nixops/Makefile4
-rw-r--r--overlays/bonfire/default.nix24
-rw-r--r--overlays/databases/mysql/default.nix11
-rw-r--r--overlays/default.nix5
-rw-r--r--overlays/neomutt/commands.patch87
-rw-r--r--overlays/neomutt/default.nix18
-rw-r--r--overlays/pelican/default.nix3
-rw-r--r--overlays/pelican/pelican.json15
-rw-r--r--overlays/profanity/default.nix20
-rw-r--r--overlays/simp_le/default.nix3
-rw-r--r--overlays/vit/default.nix8
-rw-r--r--overlays/vit/vit.json15
-rw-r--r--overlays/weechat/default.nix4
-rw-r--r--pkgs/crypto/cardano-cli/default.nix2
-rw-r--r--pkgs/crypto/iota-cli-app/default.nix4
-rw-r--r--pkgs/mtop/default.nix2
-rw-r--r--pkgs/note/default.nix5
-rw-r--r--pkgs/private/webapps/aten/default.nix2
-rw-r--r--pkgs/python-packages/buildbot/plugins/buildslist/default.nix4
-rw-r--r--pkgs/python-packages/wokkel.nix2
-rw-r--r--pkgs/simp_le/default.nix32
-rw-r--r--pkgs/telegram-cli/default.nix3
-rw-r--r--pkgs/telegram-cli/telegram-cli.json10
-rw-r--r--pkgs/telegram-cli/telegram-cli.patch90
-rw-r--r--pkgs/terminal-velocity/default.nix4
-rw-r--r--pkgs/tiv/default.nix2
-rw-r--r--pkgs/webapps/mediagoblin/default.nix2
-rw-r--r--pkgs/webapps/peertube/default.nix2
48 files changed, 191 insertions, 799 deletions
diff --git a/modules/naemon/default.nix b/modules/naemon/default.nix
index 38e99a9..976de69 100644
--- a/modules/naemon/default.nix
+++ b/modules/naemon/default.nix
@@ -137,18 +137,18 @@ in
137 } 137 }
138 ]; 138 ];
139 139
140 users.users = optionalAttrs (cfg.user == "naemon") (singleton 140 users.users = optionalAttrs (cfg.user == "naemon") {
141 { 141 naemon = {
142 name = "naemon";
143 group = cfg.group; 142 group = cfg.group;
144 uid = config.ids.uids.nagios; 143 uid = config.ids.uids.nagios;
145 extraGroups = [ "keys" ]; 144 extraGroups = [ "keys" ];
146 }); 145 };
147 users.groups = optionalAttrs (cfg.user == "naemon") (singleton 146 };
148 { 147 users.groups = optionalAttrs (cfg.user == "naemon") {
149 name = "naemon"; 148 naemon = {
150 gid = config.ids.gids.nagios; 149 gid = config.ids.gids.nagios;
151 }); 150 };
151 };
152 152
153 services.filesWatcher.naemon = { 153 services.filesWatcher.naemon = {
154 paths = [ config.secrets.fullPaths."naemon/resources.cfg" ]; 154 paths = [ config.secrets.fullPaths."naemon/resources.cfg" ];
diff --git a/modules/opendmarc.nix b/modules/opendmarc.nix
index e18ec82..6137d10 100644
--- a/modules/opendmarc.nix
+++ b/modules/opendmarc.nix
@@ -59,16 +59,18 @@ in {
59 59
60 config = mkIf cfg.enable { 60 config = mkIf cfg.enable {
61 61
62 users.users = optionalAttrs (cfg.user == "opendmarc") (singleton 62 users.users = optionalAttrs (cfg.user == "opendmarc") {
63 { name = "opendmarc"; 63 opendmarc = {
64 group = cfg.group; 64 group = cfg.group;
65 uid = config.ids.uids.opendmarc; 65 uid = config.ids.uids.opendmarc;
66 }); 66 };
67 };
67 68
68 users.groups = optionalAttrs (cfg.group == "opendmarc") (singleton 69 users.groups = optionalAttrs (cfg.group == "opendmarc") {
69 { name = "opendmarc"; 70 opendmarc = {
70 gid = config.ids.gids.opendmarc; 71 gid = config.ids.gids.opendmarc;
71 }); 72 };
73 };
72 74
73 environment.systemPackages = [ pkgs.opendmarc ]; 75 environment.systemPackages = [ pkgs.opendmarc ];
74 76
diff --git a/modules/private/certificates.nix b/modules/private/certificates.nix
index 2bf2730..82ff52f 100644
--- a/modules/private/certificates.nix
+++ b/modules/private/certificates.nix
@@ -12,7 +12,6 @@
12 (lib.optionalString config.services.httpd.Inte.enable "systemctl reload httpdInte.service") 12 (lib.optionalString config.services.httpd.Inte.enable "systemctl reload httpdInte.service")
13 (lib.optionalString config.services.nginx.enable "systemctl reload nginx.service") 13 (lib.optionalString config.services.nginx.enable "systemctl reload nginx.service")
14 ]; 14 ];
15 plugins = [ "cert.pem" "chain.pem" "fullchain.pem" "full.pem" "key.pem" "account_key.json" "account_reg.json"];
16 }; 15 };
17 description = "Default configuration for certificates"; 16 description = "Default configuration for certificates";
18 }; 17 };
@@ -30,6 +29,7 @@
30 myServices.databasesCerts = config.myServices.certificates.certConfig; 29 myServices.databasesCerts = config.myServices.certificates.certConfig;
31 myServices.ircCerts = config.myServices.certificates.certConfig; 30 myServices.ircCerts = config.myServices.certificates.certConfig;
32 31
32 security.acme.acceptTerms = true;
33 security.acme.preliminarySelfsigned = true; 33 security.acme.preliminarySelfsigned = true;
34 34
35 security.acme.certs = { 35 security.acme.certs = {
@@ -39,18 +39,16 @@
39 }; 39 };
40 40
41 systemd.services = lib.attrsets.mapAttrs' (k: v: 41 systemd.services = lib.attrsets.mapAttrs' (k: v:
42 lib.attrsets.nameValuePair "acme-selfsigned-${k}" (lib.mkBefore { script = 42 lib.attrsets.nameValuePair "acme-selfsigned-${k}" { script = lib.mkBefore ''
43 (lib.optionalString (builtins.elem "cert.pem" v.plugins) ''
44 cp $workdir/server.crt ${config.security.acme.certs."${k}".directory}/cert.pem 43 cp $workdir/server.crt ${config.security.acme.certs."${k}".directory}/cert.pem
45 chown '${v.user}:${v.group}' ${config.security.acme.certs."${k}".directory}/cert.pem 44 chown '${v.user}:${v.group}' ${config.security.acme.certs."${k}".directory}/cert.pem
46 chmod ${if v.allowKeysForGroup then "750" else "700"} ${config.security.acme.certs."${k}".directory}/cert.pem 45 chmod ${if v.allowKeysForGroup then "750" else "700"} ${config.security.acme.certs."${k}".directory}/cert.pem
47 '') + 46
48 (lib.optionalString (builtins.elem "chain.pem" v.plugins) ''
49 cp $workdir/ca.crt ${config.security.acme.certs."${k}".directory}/chain.pem 47 cp $workdir/ca.crt ${config.security.acme.certs."${k}".directory}/chain.pem
50 chown '${v.user}:${v.group}' ${config.security.acme.certs."${k}".directory}/chain.pem 48 chown '${v.user}:${v.group}' ${config.security.acme.certs."${k}".directory}/chain.pem
51 chmod ${if v.allowKeysForGroup then "750" else "700"} ${config.security.acme.certs."${k}".directory}/chain.pem 49 chmod ${if v.allowKeysForGroup then "750" else "700"} ${config.security.acme.certs."${k}".directory}/chain.pem
52 '') 50 '';
53 ; }) 51 }
54 ) config.security.acme.certs // 52 ) config.security.acme.certs //
55 lib.attrsets.mapAttrs' (k: data: 53 lib.attrsets.mapAttrs' (k: data:
56 lib.attrsets.nameValuePair "acme-${k}" { 54 lib.attrsets.nameValuePair "acme-${k}" {
diff --git a/modules/private/databases/mariadb.nix b/modules/private/databases/mariadb.nix
index 04e4bd6..36edaeb 100644
--- a/modules/private/databases/mariadb.nix
+++ b/modules/private/databases/mariadb.nix
@@ -94,26 +94,27 @@ in {
94 enable = true; 94 enable = true;
95 package = cfg.package; 95 package = cfg.package;
96 dataDir = cfg.dataDir; 96 dataDir = cfg.dataDir;
97 extraOptions = '' 97 settings = {
98 ssl_ca = ${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt 98 mysqld = {
99 ssl_key = ${config.security.acme.certs.mysql.directory}/key.pem 99 ssl_ca = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
100 ssl_cert = ${config.security.acme.certs.mysql.directory}/fullchain.pem 100 ssl_key = "${config.security.acme.certs.mysql.directory}/key.pem";
101 ssl_cert = "${config.security.acme.certs.mysql.directory}/fullchain.pem";
101 102
102 # for replication 103 # for replication
103 log-bin=mariadb-bin 104 log-bin = "mariadb-bin";
104 server-id=1 105 server-id = "1";
105 106
106 # this introduces a small delay before storing on disk, but 107 # this introduces a small delay before storing on disk, but
107 # makes it order of magnitudes quicker 108 # makes it order of magnitudes quicker
108 innodb_flush_log_at_trx_commit = 0 109 innodb_flush_log_at_trx_commit = "0";
109 ''; 110 };
111 };
110 }; 112 };
111 113
112 users.users.mysql.extraGroups = [ "keys" ]; 114 users.users.mysql.extraGroups = [ "keys" ];
113 security.acme.certs."mysql" = config.myServices.databasesCerts // { 115 security.acme.certs."mysql" = config.myServices.databasesCerts // {
114 user = "mysql"; 116 user = "mysql";
115 group = "mysql"; 117 group = "mysql";
116 plugins = [ "fullchain.pem" "key.pem" "account_key.json" "account_reg.json" ];
117 domain = "db-1.immae.eu"; 118 domain = "db-1.immae.eu";
118 postRun = '' 119 postRun = ''
119 systemctl restart mysql.service 120 systemctl restart mysql.service
@@ -164,23 +165,21 @@ in {
164 165
165 security.pam.services = let 166 security.pam.services = let
166 pam_ldap = "${pkgs.pam_ldap}/lib/security/pam_ldap.so"; 167 pam_ldap = "${pkgs.pam_ldap}/lib/security/pam_ldap.so";
167 in [ 168 in {
168 { 169 mysql = {
169 name = "mysql";
170 text = '' 170 text = ''
171 # https://mariadb.com/kb/en/mariadb/pam-authentication-plugin/ 171 # https://mariadb.com/kb/en/mariadb/pam-authentication-plugin/
172 auth required ${pam_ldap} config=${config.secrets.location}/mysql/pam 172 auth required ${pam_ldap} config=${config.secrets.location}/mysql/pam
173 account required ${pam_ldap} config=${config.secrets.location}/mysql/pam 173 account required ${pam_ldap} config=${config.secrets.location}/mysql/pam
174 ''; 174 '';
175 } 175 };
176 { 176 mysql_replication = {
177 name = "mysql_replication";
178 text = '' 177 text = ''
179 auth required ${pam_ldap} config=${config.secrets.location}/mysql/pam_replication 178 auth required ${pam_ldap} config=${config.secrets.location}/mysql/pam_replication
180 account required ${pam_ldap} config=${config.secrets.location}/mysql/pam_replication 179 account required ${pam_ldap} config=${config.secrets.location}/mysql/pam_replication
181 ''; 180 '';
182 } 181 };
183 ]; 182 };
184 183
185 }; 184 };
186} 185}
diff --git a/modules/private/databases/openldap/default.nix b/modules/private/databases/openldap/default.nix
index efe9379..302aa04 100644
--- a/modules/private/databases/openldap/default.nix
+++ b/modules/private/databases/openldap/default.nix
@@ -107,7 +107,6 @@ in
107 security.acme.certs."ldap" = config.myServices.databasesCerts // { 107 security.acme.certs."ldap" = config.myServices.databasesCerts // {
108 user = "openldap"; 108 user = "openldap";
109 group = "openldap"; 109 group = "openldap";
110 plugins = [ "fullchain.pem" "key.pem" "cert.pem" "account_key.json" "account_reg.json" ];
111 domain = "ldap.immae.eu"; 110 domain = "ldap.immae.eu";
112 postRun = '' 111 postRun = ''
113 systemctl restart openldap.service 112 systemctl restart openldap.service
diff --git a/modules/private/databases/postgresql.nix b/modules/private/databases/postgresql.nix
index d0b1a75..c442a63 100644
--- a/modules/private/databases/postgresql.nix
+++ b/modules/private/databases/postgresql.nix
@@ -100,7 +100,6 @@ in {
100 security.acme.certs."postgresql" = config.myServices.databasesCerts // { 100 security.acme.certs."postgresql" = config.myServices.databasesCerts // {
101 user = "postgres"; 101 user = "postgres";
102 group = "postgres"; 102 group = "postgres";
103 plugins = [ "fullchain.pem" "key.pem" "account_key.json" "account_reg.json" ];
104 domain = "db-1.immae.eu"; 103 domain = "db-1.immae.eu";
105 postRun = '' 104 postRun = ''
106 systemctl reload postgresql.service 105 systemctl reload postgresql.service
@@ -212,22 +211,20 @@ in {
212 211
213 security.pam.services = let 212 security.pam.services = let
214 pam_ldap = "${pkgs.pam_ldap}/lib/security/pam_ldap.so"; 213 pam_ldap = "${pkgs.pam_ldap}/lib/security/pam_ldap.so";
215 in [ 214 in {
216 { 215 postgresql = {
217 name = "postgresql";
218 text = '' 216 text = ''
219 auth required ${pam_ldap} config=${config.secrets.location}/postgresql/pam 217 auth required ${pam_ldap} config=${config.secrets.location}/postgresql/pam
220 account required ${pam_ldap} config=${config.secrets.location}/postgresql/pam 218 account required ${pam_ldap} config=${config.secrets.location}/postgresql/pam
221 ''; 219 '';
222 } 220 };
223 { 221 postgresql_replication = {
224 name = "postgresql_replication";
225 text = '' 222 text = ''
226 auth required ${pam_ldap} config=${config.secrets.location}/postgresql/pam_replication 223 auth required ${pam_ldap} config=${config.secrets.location}/postgresql/pam_replication
227 account required ${pam_ldap} config=${config.secrets.location}/postgresql/pam_replication 224 account required ${pam_ldap} config=${config.secrets.location}/postgresql/pam_replication
228 ''; 225 '';
229 } 226 };
230 ]; 227 };
231 }; 228 };
232} 229}
233 230
diff --git a/modules/private/ftp.nix b/modules/private/ftp.nix
index 417af87..8ae4e65 100644
--- a/modules/private/ftp.nix
+++ b/modules/private/ftp.nix
@@ -32,16 +32,13 @@ in
32 }; 32 };
33 }; 33 };
34 34
35 users.users = [ 35 users.users.ftp = {
36 { 36 uid = config.ids.uids.ftp; # 8
37 name = "ftp"; 37 group = "ftp";
38 uid = config.ids.uids.ftp; # 8 38 description = "Anonymous FTP user";
39 group = "ftp"; 39 home = "/homeless-shelter";
40 description = "Anonymous FTP user"; 40 extraGroups = [ "keys" ];
41 home = "/homeless-shelter"; 41 };
42 extraGroups = [ "keys" ];
43 }
44 ];
45 42
46 users.groups.ftp.gid = config.ids.gids.ftp; 43 users.groups.ftp.gid = config.ids.gids.ftp;
47 44
diff --git a/modules/private/monitoring/status.nix b/modules/private/monitoring/status.nix
index d25d934..7810a1f 100644
--- a/modules/private/monitoring/status.nix
+++ b/modules/private/monitoring/status.nix
@@ -34,7 +34,11 @@
34 locations."/".proxyPass = "http://unix:/run/naemon-status/socket.sock:/"; 34 locations."/".proxyPass = "http://unix:/run/naemon-status/socket.sock:/";
35 }; 35 };
36 }; 36 };
37 security.acme.certs."${name}".extraDomains."status.immae.eu" = null; 37 security.acme.certs."${name}" = {
38 extraDomains."status.immae.eu" = null;
39 user = config.services.nginx.user;
40 group = config.services.nginx.group;
41 };
38 42
39 myServices.certificates.enable = true; 43 myServices.certificates.enable = true;
40 networking.firewall.allowedTCPPorts = [ 80 443 ]; 44 networking.firewall.allowedTCPPorts = [ 80 443 ];
diff --git a/modules/private/system.nix b/modules/private/system.nix
index 64fc2d9..70b74d0 100644
--- a/modules/private/system.nix
+++ b/modules/private/system.nix
@@ -65,21 +65,10 @@
65 users.mutableUsers = false; 65 users.mutableUsers = false;
66 66
67 environment.etc.cnagios.source = "${pkgs.cnagios}/share/doc/cnagios"; 67 environment.etc.cnagios.source = "${pkgs.cnagios}/share/doc/cnagios";
68 environment.systemPackages = 68 environment.systemPackages = [
69 let 69 pkgs.git
70 home-manager = builtins.fetchGit { 70 pkgs.vim
71 url = "https://github.com/rycee/home-manager.git"; 71 ] ++
72 rev = "ef64bc598f28818d56c86629dad98b468af9c071"; 72 (lib.optional (builtins.length (config.hostEnv.users pkgs) > 0) pkgs.home-manager);
73 ref = "release-19.03";
74 };
75 in
76 [
77 pkgs.git
78 pkgs.vim
79 ] ++
80 (lib.optional
81 (builtins.length (config.hostEnv.users pkgs) > 0)
82 ((pkgs.callPackage home-manager {}).home-manager)
83 );
84 }; 73 };
85} 74}
diff --git a/modules/private/system/backup-2.nix b/modules/private/system/backup-2.nix
index 4e24c12..6829f1b 100644
--- a/modules/private/system/backup-2.nix
+++ b/modules/private/system/backup-2.nix
@@ -1,5 +1,5 @@
1{ privateFiles }: 1{ privateFiles }:
2{ config, pkgs, resources, ... }: 2{ config, pkgs, resources, name, ... }:
3{ 3{
4 boot.kernelPackages = pkgs.linuxPackages_latest; 4 boot.kernelPackages = pkgs.linuxPackages_latest;
5 myEnv = import "${privateFiles}/environment.nix" // { inherit privateFiles; }; 5 myEnv = import "${privateFiles}/environment.nix" // { inherit privateFiles; };
@@ -35,6 +35,10 @@
35 }; 35 };
36 36
37 myServices.certificates.enable = true; 37 myServices.certificates.enable = true;
38 security.acme.certs."${name}" = {
39 user = config.services.nginx.user;
40 group = config.services.nginx.group;
41 };
38 services.nginx = { 42 services.nginx = {
39 enable = true; 43 enable = true;
40 recommendedOptimisation = true; 44 recommendedOptimisation = true;
diff --git a/modules/private/system/dilion.nix b/modules/private/system/dilion.nix
index 788c2dc..911c76d 100644
--- a/modules/private/system/dilion.nix
+++ b/modules/private/system/dilion.nix
@@ -101,8 +101,8 @@
101 101
102 # This is equivalent to setting environment.sessionVariables.NIX_PATH 102 # This is equivalent to setting environment.sessionVariables.NIX_PATH
103 nix.nixPath = [ 103 nix.nixPath = [
104 "home-manager=https://github.com/rycee/home-manager/archive/release-19.03.tar.gz" 104 "home-manager=https://github.com/rycee/home-manager/archive/master.tar.gz"
105 "nixpkgs=https://nixos.org/channels/nixos-19.03/nixexprs.tar.xz" 105 "nixpkgs=https://nixos.org/channels/nixos-unstable/nixexprs.tar.xz"
106 ]; 106 ];
107 nix.binaryCaches = [ "https://hydra.iohk.io" "https://cache.nixos.org" ]; 107 nix.binaryCaches = [ "https://hydra.iohk.io" "https://cache.nixos.org" ];
108 nix.binaryCachePublicKeys = [ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" ]; 108 nix.binaryCachePublicKeys = [ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" ];
diff --git a/modules/private/tasks/default.nix b/modules/private/tasks/default.nix
index 42cc8d2..43d40d6 100644
--- a/modules/private/tasks/default.nix
+++ b/modules/private/tasks/default.nix
@@ -197,7 +197,6 @@ in {
197 197
198 security.acme.certs."task" = config.myServices.certificates.certConfig // { 198 security.acme.certs."task" = config.myServices.certificates.certConfig // {
199 inherit user group; 199 inherit user group;
200 plugins = [ "fullchain.pem" "key.pem" "cert.pem" "account_key.json" "account_reg.json" ];
201 domain = fqdn; 200 domain = fqdn;
202 postRun = '' 201 postRun = ''
203 systemctl restart taskserver.service 202 systemctl restart taskserver.service
diff --git a/modules/webapps/diaspora.nix b/modules/webapps/diaspora.nix
index 65599b7..d9e9989 100644
--- a/modules/webapps/diaspora.nix
+++ b/modules/webapps/diaspora.nix
@@ -108,19 +108,21 @@ in
108 }; 108 };
109 109
110 config = lib.mkIf cfg.enable { 110 config = lib.mkIf cfg.enable {
111 users.users = lib.optionalAttrs (cfg.user == name) (lib.singleton { 111 users.users = lib.optionalAttrs (cfg.user == name) {
112 inherit name; 112 "${name}" = {
113 inherit uid; 113 inherit uid;
114 group = cfg.group; 114 group = cfg.group;
115 description = "Diaspora user"; 115 description = "Diaspora user";
116 home = cfg.dataDir; 116 home = cfg.dataDir;
117 packages = [ cfg.workdir.gems pkgs.nodejs cfg.workdir.gems.ruby ]; 117 packages = [ cfg.workdir.gems pkgs.nodejs cfg.workdir.gems.ruby ];
118 useDefaultShell = true; 118 useDefaultShell = true;
119 }); 119 };
120 users.groups = lib.optionalAttrs (cfg.group == name) (lib.singleton { 120 };
121 inherit name; 121 users.groups = lib.optionalAttrs (cfg.group == name) {
122 inherit gid; 122 "${name}" = {
123 }); 123 inherit gid;
124 };
125 };
124 126
125 systemd.services.diaspora = { 127 systemd.services.diaspora = {
126 description = "Diaspora"; 128 description = "Diaspora";
diff --git a/modules/webapps/mastodon.nix b/modules/webapps/mastodon.nix
index 68531cf..cd550c0 100644
--- a/modules/webapps/mastodon.nix
+++ b/modules/webapps/mastodon.nix
@@ -96,18 +96,20 @@ in
96 }; 96 };
97 97
98 config = lib.mkIf cfg.enable { 98 config = lib.mkIf cfg.enable {
99 users.users = lib.optionalAttrs (cfg.user == name) (lib.singleton { 99 users.users = lib.optionalAttrs (cfg.user == name) {
100 inherit name; 100 "${name}" = {
101 inherit uid; 101 inherit uid;
102 group = cfg.group; 102 group = cfg.group;
103 description = "Mastodon user"; 103 description = "Mastodon user";
104 home = cfg.dataDir; 104 home = cfg.dataDir;
105 useDefaultShell = true; 105 useDefaultShell = true;
106 }); 106 };
107 users.groups = lib.optionalAttrs (cfg.group == name) (lib.singleton { 107 };
108 inherit name; 108 users.groups = lib.optionalAttrs (cfg.group == name) {
109 inherit gid; 109 "${name}" = {
110 }); 110 inherit gid;
111 };
112 };
111 113
112 systemd.services.mastodon-streaming = { 114 systemd.services.mastodon-streaming = {
113 description = "Mastodon Streaming"; 115 description = "Mastodon Streaming";
diff --git a/modules/webapps/mediagoblin.nix b/modules/webapps/mediagoblin.nix
index 78bbef6..dbc4c2b 100644
--- a/modules/webapps/mediagoblin.nix
+++ b/modules/webapps/mediagoblin.nix
@@ -151,18 +151,20 @@ in
151 }; 151 };
152 152
153 config = lib.mkIf cfg.enable { 153 config = lib.mkIf cfg.enable {
154 users.users = lib.optionalAttrs (cfg.user == name) (lib.singleton { 154 users.users = lib.optionalAttrs (cfg.user == name) {
155 inherit name; 155 "${name}" = {
156 inherit uid; 156 inherit uid;
157 group = cfg.group; 157 group = cfg.group;
158 description = "Mediagoblin user"; 158 description = "Mediagoblin user";
159 home = cfg.dataDir; 159 home = cfg.dataDir;
160 useDefaultShell = true; 160 useDefaultShell = true;
161 }); 161 };
162 users.groups = lib.optionalAttrs (cfg.group == name) (lib.singleton { 162 };
163 inherit name; 163 users.groups = lib.optionalAttrs (cfg.group == name) {
164 inherit gid; 164 "${name}" = {
165 }); 165 inherit gid;
166 };
167 };
166 168
167 systemd.services.mediagoblin-web = { 169 systemd.services.mediagoblin-web = {
168 description = "Mediagoblin service"; 170 description = "Mediagoblin service";
diff --git a/modules/webapps/peertube.nix b/modules/webapps/peertube.nix
index 89dcc67..281ff8b 100644
--- a/modules/webapps/peertube.nix
+++ b/modules/webapps/peertube.nix
@@ -53,18 +53,20 @@ in
53 }; 53 };
54 54
55 config = lib.mkIf cfg.enable { 55 config = lib.mkIf cfg.enable {
56 users.users = lib.optionalAttrs (cfg.user == name) (lib.singleton { 56 users.users = lib.optionalAttrs (cfg.user == name) {
57 inherit name; 57 "${name}" = {
58 inherit uid; 58 inherit uid;
59 group = cfg.group; 59 group = cfg.group;
60 description = "Peertube user"; 60 description = "Peertube user";
61 home = cfg.dataDir; 61 home = cfg.dataDir;
62 useDefaultShell = true; 62 useDefaultShell = true;
63 }); 63 };
64 users.groups = lib.optionalAttrs (cfg.group == name) (lib.singleton { 64 };
65 inherit name; 65 users.groups = lib.optionalAttrs (cfg.group == name) {
66 inherit gid; 66 "${name}" = {
67 }); 67 inherit gid;
68 };
69 };
68 70
69 systemd.services.peertube = { 71 systemd.services.peertube = {
70 description = "Peertube"; 72 description = "Peertube";
diff --git a/modules/websites/httpd-service-builder.nix b/modules/websites/httpd-service-builder.nix
index ec79a90..c5f72f9 100644
--- a/modules/websites/httpd-service-builder.nix
+++ b/modules/websites/httpd-service-builder.nix
@@ -470,7 +470,7 @@ in
470 }; 470 };
471 471
472 virtualHosts = mkOption { 472 virtualHosts = mkOption {
473 type = with types; attrsOf (submodule (import ./vhost-options.nix)); 473 type = with types; attrsOf (submodule (import <nixpkgs/nixos/modules/services/web-servers/apache-httpd/vhost-options.nix>));
474 default = { 474 default = {
475 localhost = { 475 localhost = {
476 documentRoot = "${pkg}/htdocs"; 476 documentRoot = "${pkg}/htdocs";
diff --git a/modules/websites/location-options.nix b/modules/websites/location-options.nix
deleted file mode 100644
index 8ea88f9..0000000
--- a/modules/websites/location-options.nix
+++ /dev/null
@@ -1,54 +0,0 @@
1{ config, lib, name, ... }:
2let
3 inherit (lib) mkOption types;
4in
5{
6 options = {
7
8 proxyPass = mkOption {
9 type = with types; nullOr str;
10 default = null;
11 example = "http://www.example.org/";
12 description = ''
13 Sets up a simple reverse proxy as described by <link xlink:href="https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html#simple" />.
14 '';
15 };
16
17 index = mkOption {
18 type = with types; nullOr str;
19 default = null;
20 example = "index.php index.html";
21 description = ''
22 Adds DirectoryIndex directive. See <link xlink:href="https://httpd.apache.org/docs/2.4/mod/mod_dir.html#directoryindex" />.
23 '';
24 };
25
26 alias = mkOption {
27 type = with types; nullOr path;
28 default = null;
29 example = "/your/alias/directory";
30 description = ''
31 Alias directory for requests. See <link xlink:href="https://httpd.apache.org/docs/2.4/mod/mod_alias.html#alias" />.
32 '';
33 };
34
35 extraConfig = mkOption {
36 type = types.lines;
37 default = "";
38 description = ''
39 These lines go to the end of the location verbatim.
40 '';
41 };
42
43 priority = mkOption {
44 type = types.int;
45 default = 1000;
46 description = ''
47 Order of this location block in relation to the others in the vhost.
48 The semantics are the same as with `lib.mkOrder`. Smaller values have
49 a greater priority.
50 '';
51 };
52
53 };
54}
diff --git a/modules/websites/vhost-options.nix b/modules/websites/vhost-options.nix
deleted file mode 100644
index 263980a..0000000
--- a/modules/websites/vhost-options.nix
+++ /dev/null
@@ -1,275 +0,0 @@
1{ config, lib, name, ... }:
2let
3 inherit (lib) literalExample mkOption nameValuePair types;
4in
5{
6 options = {
7
8 hostName = mkOption {
9 type = types.str;
10 default = name;
11 description = "Canonical hostname for the server.";
12 };
13
14 serverAliases = mkOption {
15 type = types.listOf types.str;
16 default = [];
17 example = ["www.example.org" "www.example.org:8080" "example.org"];
18 description = ''
19 Additional names of virtual hosts served by this virtual host configuration.
20 '';
21 };
22
23 listen = mkOption {
24 type = with types; listOf (submodule ({
25 options = {
26 port = mkOption {
27 type = types.port;
28 description = "Port to listen on";
29 };
30 ip = mkOption {
31 type = types.str;
32 default = "*";
33 description = "IP to listen on. 0.0.0.0 for IPv4 only, * for all.";
34 };
35 ssl = mkOption {
36 type = types.bool;
37 default = false;
38 description = "Whether to enable SSL (https) support.";
39 };
40 };
41 }));
42 default = [];
43 example = [
44 { ip = "195.154.1.1"; port = 443; ssl = true;}
45 { ip = "192.154.1.1"; port = 80; }
46 { ip = "*"; port = 8080; }
47 ];
48 description = ''
49 Listen addresses and ports for this virtual host.
50 <note><para>
51 This option overrides <literal>addSSL</literal>, <literal>forceSSL</literal> and <literal>onlySSL</literal>.
52 </para></note>
53 '';
54 };
55
56 enableSSL = mkOption {
57 type = types.bool;
58 visible = false;
59 default = false;
60 };
61
62 addSSL = mkOption {
63 type = types.bool;
64 default = false;
65 description = ''
66 Whether to enable HTTPS in addition to plain HTTP. This will set defaults for
67 <literal>listen</literal> to listen on all interfaces on the respective default
68 ports (80, 443).
69 '';
70 };
71
72 onlySSL = mkOption {
73 type = types.bool;
74 default = false;
75 description = ''
76 Whether to enable HTTPS and reject plain HTTP connections. This will set
77 defaults for <literal>listen</literal> to listen on all interfaces on port 443.
78 '';
79 };
80
81 forceSSL = mkOption {
82 type = types.bool;
83 default = false;
84 description = ''
85 Whether to add a separate nginx server block that permanently redirects (301)
86 all plain HTTP traffic to HTTPS. This will set defaults for
87 <literal>listen</literal> to listen on all interfaces on the respective default
88 ports (80, 443), where the non-SSL listens are used for the redirect vhosts.
89 '';
90 };
91
92 enableACME = mkOption {
93 type = types.bool;
94 default = false;
95 description = ''
96 Whether to ask Let's Encrypt to sign a certificate for this vhost.
97 Alternately, you can use an existing certificate through <option>useACMEHost</option>.
98 '';
99 };
100
101 useACMEHost = mkOption {
102 type = types.nullOr types.str;
103 default = null;
104 description = ''
105 A host of an existing Let's Encrypt certificate to use.
106 This is useful if you have many subdomains and want to avoid hitting the
107 <link xlink:href="https://letsencrypt.org/docs/rate-limits/">rate limit</link>.
108 Alternately, you can generate a certificate through <option>enableACME</option>.
109 <emphasis>Note that this option does not create any certificates, nor it does add subdomains to existing ones – you will need to create them manually using <xref linkend="opt-security.acme.certs"/>.</emphasis>
110 '';
111 };
112
113 acmeRoot = mkOption {
114 type = types.str;
115 default = "/var/lib/acme/acme-challenges";
116 description = "Directory for the acme challenge which is PUBLIC, don't put certs or keys in here";
117 };
118
119 sslServerCert = mkOption {
120 type = types.path;
121 example = "/var/host.cert";
122 description = "Path to server SSL certificate.";
123 };
124
125 sslServerKey = mkOption {
126 type = types.path;
127 example = "/var/host.key";
128 description = "Path to server SSL certificate key.";
129 };
130
131 sslServerChain = mkOption {
132 type = types.nullOr types.path;
133 default = null;
134 example = "/var/ca.pem";
135 description = "Path to server SSL chain file.";
136 };
137
138 http2 = mkOption {
139 type = types.bool;
140 default = false;
141 description = ''
142 Whether to enable HTTP 2. HTTP/2 is supported in all multi-processing modules that come with httpd. <emphasis>However, if you use the prefork mpm, there will
143 be severe restrictions.</emphasis> Refer to <link xlink:href="https://httpd.apache.org/docs/2.4/howto/http2.html#mpm-config"/> for details.
144 '';
145 };
146
147 adminAddr = mkOption {
148 type = types.nullOr types.str;
149 default = null;
150 example = "admin@example.org";
151 description = "E-mail address of the server administrator.";
152 };
153
154 documentRoot = mkOption {
155 type = types.nullOr types.path;
156 default = null;
157 example = "/data/webserver/docs";
158 description = ''
159 The path of Apache's document root directory. If left undefined,
160 an empty directory in the Nix store will be used as root.
161 '';
162 };
163
164 servedDirs = mkOption {
165 type = types.listOf types.attrs;
166 default = [];
167 example = [
168 { urlPath = "/nix";
169 dir = "/home/eelco/Dev/nix-homepage";
170 }
171 ];
172 description = ''
173 This option provides a simple way to serve static directories.
174 '';
175 };
176
177 servedFiles = mkOption {
178 type = types.listOf types.attrs;
179 default = [];
180 example = [
181 { urlPath = "/foo/bar.png";
182 file = "/home/eelco/some-file.png";
183 }
184 ];
185 description = ''
186 This option provides a simple way to serve individual, static files.
187
188 <note><para>
189 This option has been deprecated and will be removed in a future
190 version of NixOS. You can achieve the same result by making use of
191 the <literal>locations.&lt;name&gt;.alias</literal> option.
192 </para></note>
193 '';
194 };
195
196 extraConfig = mkOption {
197 type = types.lines;
198 default = "";
199 example = ''
200 <Directory /home>
201 Options FollowSymlinks
202 AllowOverride All
203 </Directory>
204 '';
205 description = ''
206 These lines go to httpd.conf verbatim. They will go after
207 directories and directory aliases defined by default.
208 '';
209 };
210
211 enableUserDir = mkOption {
212 type = types.bool;
213 default = false;
214 description = ''
215 Whether to enable serving <filename>~/public_html</filename> as
216 <literal>/~<replaceable>username</replaceable></literal>.
217 '';
218 };
219
220 globalRedirect = mkOption {
221 type = types.nullOr types.str;
222 default = null;
223 example = http://newserver.example.org/;
224 description = ''
225 If set, all requests for this host are redirected permanently to
226 the given URL.
227 '';
228 };
229
230 logFormat = mkOption {
231 type = types.str;
232 default = "common";
233 example = "combined";
234 description = ''
235 Log format for Apache's log files. Possible values are: combined, common, referer, agent.
236 '';
237 };
238
239 robotsEntries = mkOption {
240 type = types.lines;
241 default = "";
242 example = "Disallow: /foo/";
243 description = ''
244 Specification of pages to be ignored by web crawlers. See <link
245 xlink:href='http://www.robotstxt.org/'/> for details.
246 '';
247 };
248
249 locations = mkOption {
250 type = with types; attrsOf (submodule (import ./location-options.nix));
251 default = {};
252 example = literalExample ''
253 {
254 "/" = {
255 proxyPass = "http://localhost:3000";
256 };
257 "/foo/bar.png" = {
258 alias = "/home/eelco/some-file.png";
259 };
260 };
261 '';
262 description = ''
263 Declarative location config. See <link
264 xlink:href="https://httpd.apache.org/docs/2.4/mod/core.html#location"/> for details.
265 '';
266 };
267
268 };
269
270 config = {
271
272 locations = builtins.listToAttrs (map (elem: nameValuePair elem.urlPath { alias = elem.file; }) config.servedFiles);
273
274 };
275}
diff --git a/nix/sources.json b/nix/sources.json
index 7c306c9..09c4455 100644
--- a/nix/sources.json
+++ b/nix/sources.json
@@ -18,27 +18,27 @@
18 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz" 18 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
19 }, 19 },
20 "nixpkgs": { 20 "nixpkgs": {
21 "branch": "nixos-19.03", 21 "branch": "nixos-unstable",
22 "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to", 22 "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
23 "homepage": "https://github.com/NixOS/nixpkgs", 23 "homepage": "https://github.com/NixOS/nixpkgs",
24 "owner": "NixOS", 24 "owner": "NixOS",
25 "repo": "nixpkgs-channels", 25 "repo": "nixpkgs-channels",
26 "rev": "34c7eb7545d155cc5b6f499b23a7cb1c96ab4d59", 26 "rev": "ae6bdcc53584aaf20211ce1814bea97ece08a248",
27 "sha256": "11z6ajj108fy2q5g8y4higlcaqncrbjm3dnv17pvif6avagw4mcb", 27 "sha256": "0hjhznns1cxgl3hww2d5si6vhy36pnm53hms9h338v6r633dcy77",
28 "type": "tarball", 28 "type": "tarball",
29 "url": "https://github.com/NixOS/nixpkgs-channels/archive/34c7eb7545d155cc5b6f499b23a7cb1c96ab4d59.tar.gz", 29 "url": "https://github.com/NixOS/nixpkgs-channels/archive/ae6bdcc53584aaf20211ce1814bea97ece08a248.tar.gz",
30 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz" 30 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
31 }, 31 },
32 "nixpkgs-nixops": { 32 "nixpkgs-nixops": {
33 "branch": "nixos-19.09", 33 "branch": "nixos-unstable",
34 "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to", 34 "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
35 "homepage": "https://github.com/NixOS/nixpkgs", 35 "homepage": "https://github.com/NixOS/nixpkgs",
36 "owner": "NixOS", 36 "owner": "NixOS",
37 "repo": "nixpkgs-channels", 37 "repo": "nixpkgs-channels",
38 "rev": "856dbd1a5c7fd826cf3668ff12a7389be0686f41", 38 "rev": "ae6bdcc53584aaf20211ce1814bea97ece08a248",
39 "sha256": "1d895i1lc25d2akniaqg2n1jrg2rcd1gih8rpmhyrlv4lpggfmsx", 39 "sha256": "0hjhznns1cxgl3hww2d5si6vhy36pnm53hms9h338v6r633dcy77",
40 "type": "tarball", 40 "type": "tarball",
41 "url": "https://github.com/NixOS/nixpkgs-channels/archive/856dbd1a5c7fd826cf3668ff12a7389be0686f41.tar.gz", 41 "url": "https://github.com/NixOS/nixpkgs-channels/archive/ae6bdcc53584aaf20211ce1814bea97ece08a248.tar.gz",
42 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz" 42 "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
43 }, 43 },
44 "nixpkgs-nixops-next": { 44 "nixpkgs-nixops-next": {
diff --git a/nixops/Makefile b/nixops/Makefile
index 8caf8b1..3cbf50b 100644
--- a/nixops/Makefile
+++ b/nixops/Makefile
@@ -55,10 +55,10 @@ dry-run:
55 $(NIXOPS_PRIV) deploy --dry-run 55 $(NIXOPS_PRIV) deploy --dry-run
56 56
57build: 57build:
58 $(NIXOPS_PRIV) deploy --build-only --max-jobs 1 58 $(NIXOPS_PRIV) deploy --build-only --keep-going
59 59
60upload: 60upload:
61 $(NIXOPS_PRIV) deploy --copy-only --max-concurrent-copy 1 61 $(NIXOPS_PRIV) deploy --copy-only
62 62
63deploy: 63deploy:
64 $(NIXOPS_PRIV) deploy 64 $(NIXOPS_PRIV) deploy
diff --git a/overlays/bonfire/default.nix b/overlays/bonfire/default.nix
new file mode 100644
index 0000000..68bde20
--- /dev/null
+++ b/overlays/bonfire/default.nix
@@ -0,0 +1,24 @@
1self: super: {
2 bonfire = let
3 click = self.python3Packages.click.overridePythonAttrs(old: rec {
4 version = "6.7";
5 src = self.python3Packages.fetchPypi {
6 pname = "click";
7 inherit version;
8 sha256 = "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi";
9 };
10 });
11 in
12 super.bonfire.overridePythonAttrs(old: {
13 version = "0.0.8";
14 src = self.fetchFromGitHub {
15 owner = "blue-yonder";
16 repo = "bonfire";
17 rev = "0a0f18469d484aba6871fa7421bbb2c00ccefcb0";
18 sha256 = "1y2r537ibghhmk6jngw0zwvh1vn2bihqcvji50ffh1j0qc6q3x6x";
19 };
20 postPatch = "";
21 propagatedBuildInputs = self.lib.remove self.python3Packages.click old.propagatedBuildInputs ++ [ click ];
22 meta.broken = false;
23 });
24}
diff --git a/overlays/databases/mysql/default.nix b/overlays/databases/mysql/default.nix
index 797332b..24bad1b 100644
--- a/overlays/databases/mysql/default.nix
+++ b/overlays/databases/mysql/default.nix
@@ -3,16 +3,5 @@ self: super: rec {
3 mariadbPAM = super.mariadb.overrideAttrs(old: { 3 mariadbPAM = super.mariadb.overrideAttrs(old: {
4 cmakeFlags = old.cmakeFlags ++ [ "-DWITH_AUTHENTICATION_PAM=ON" ]; 4 cmakeFlags = old.cmakeFlags ++ [ "-DWITH_AUTHENTICATION_PAM=ON" ];
5 buildInputs = old.buildInputs ++ [ self.pam ]; 5 buildInputs = old.buildInputs ++ [ self.pam ];
6 postInstall = old.postInstall + ''
7 # FIXME: hack because mariadb cannot find dialog.so
8 # fixed in 20.03: https://github.com/NixOS/nixpkgs/pull/80768
9 ln -s /nix $out/nix
10 cp "$dev"/lib/mysql/plugin/{caching_sha2_password.so,dialog.so,mysql_clear_password.so,sha256_password.so} "$out"/lib/mysql/plugin
11 '';
12 }) // (with super.mariadb; {
13 inherit client;
14 servier = super.mariadb;
15 inherit connector-c;
16 inherit galera;
17 }); 6 });
18} 7}
diff --git a/overlays/default.nix b/overlays/default.nix
index b488fd7..881083d 100644
--- a/overlays/default.nix
+++ b/overlays/default.nix
@@ -4,6 +4,7 @@
4 4
5 bitlbee = import ./bitlbee; 5 bitlbee = import ./bitlbee;
6 bitlbee-discord = import ./bitlbee-discord; 6 bitlbee-discord = import ./bitlbee-discord;
7 bonfire = import ./bonfire;
7 bundix = import ./bundix; 8 bundix = import ./bundix;
8 dwm = import ./dwm; 9 dwm = import ./dwm;
9 elinks = import ./elinks; 10 elinks = import ./elinks;
@@ -13,24 +14,20 @@
13 ldapvi = import ./ldapvi; 14 ldapvi = import ./ldapvi;
14 lesspipe = import ./lesspipe; 15 lesspipe = import ./lesspipe;
15 mysql = import ./databases/mysql; 16 mysql = import ./databases/mysql;
16 neomutt = import ./neomutt;
17 nixops = import ./nixops; 17 nixops = import ./nixops;
18 pass = import ./pass; 18 pass = import ./pass;
19 pelican = import ./pelican; 19 pelican = import ./pelican;
20 postgresql = import ./databases/postgresql; 20 postgresql = import ./databases/postgresql;
21 profanity = import ./profanity;
22 s6 = import ./s6; 21 s6 = import ./s6;
23 sc-im = import ./sc-im; 22 sc-im = import ./sc-im;
24 shaarli = import ./shaarli; 23 shaarli = import ./shaarli;
25 slrn = import ./slrn; 24 slrn = import ./slrn;
26 taskwarrior = import ./taskwarrior; 25 taskwarrior = import ./taskwarrior;
27 vcsh = import ./vcsh; 26 vcsh = import ./vcsh;
28 vit = import ./vit;
29 weboob = import ./weboob; 27 weboob = import ./weboob;
30 weechat = import ./weechat; 28 weechat = import ./weechat;
31 ympd = import ./ympd; 29 ympd = import ./ympd;
32 doing = import ./doing; 30 doing = import ./doing;
33 xmr-stak = import ./xmr-stak; 31 xmr-stak = import ./xmr-stak;
34 simp_le = import ./simp_le;
35} 32}
36// import ./python-packages 33// import ./python-packages
diff --git a/overlays/neomutt/commands.patch b/overlays/neomutt/commands.patch
deleted file mode 100644
index 6c910cf..0000000
--- a/overlays/neomutt/commands.patch
+++ /dev/null
@@ -1,87 +0,0 @@
1commit 763056828abe9716c4dfce754a47d8ecdefb3029
2Author: Ismaël Bouya <ismael.bouya@normalesup.org>
3Date: Mon Feb 10 16:13:33 2020 +0100
4
5 Fix commands that don’t need to have a non-empty mailbox to be valid
6
7 Some commands act on the whole mailbox (tag-pattern, delete-pattern,
8 search), and even though they don’t do anything when the mailbox is
9 empty, there is no reason to fail when it happens. This commit removes
10 the check that the mailbox is non-empty before doing said actions.
11
12diff --git a/index.c b/index.c
13index 0f4b9f99f..0adfc19f1 100644
14--- a/index.c
15+++ b/index.c
16@@ -1642,7 +1642,7 @@ int mutt_index_menu(struct MuttWindow *dlg)
17 case OP_JUMP:
18 {
19 int msg_num = 0;
20- if (!prereq(Context, menu, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE))
21+ if (!prereq(Context, menu, CHECK_IN_MAILBOX))
22 break;
23 if (isdigit(LastKey))
24 mutt_unget_event(LastKey, 0);
25@@ -1687,7 +1687,7 @@ int mutt_index_menu(struct MuttWindow *dlg)
26
27 case OP_MAIN_DELETE_PATTERN:
28 if (!prereq(Context, menu,
29- CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE | CHECK_READONLY | CHECK_ATTACH))
30+ CHECK_IN_MAILBOX | CHECK_READONLY | CHECK_ATTACH))
31 {
32 break;
33 }
34@@ -1852,12 +1852,17 @@ int mutt_index_menu(struct MuttWindow *dlg)
35 menu->redraw = REDRAW_FULL;
36 break;
37
38- case OP_SEARCH:
39+ // Initiating a search can happen on an empty mailbox, but
40+ // searching for next/previous/... needs to be on a message and
41+ // thus a non-empty mailbox
42 case OP_SEARCH_REVERSE:
43 case OP_SEARCH_NEXT:
44 case OP_SEARCH_OPPOSITE:
45 if (!prereq(Context, menu, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE))
46 break;
47+ case OP_SEARCH:
48+ if (!prereq(Context, menu, CHECK_IN_MAILBOX))
49+ break;
50 menu->current = mutt_search_command(menu->current, op);
51 if (menu->current == -1)
52 menu->current = menu->oldcurrent;
53@@ -1926,14 +1931,14 @@ int mutt_index_menu(struct MuttWindow *dlg)
54 }
55
56 case OP_MAIN_TAG_PATTERN:
57- if (!prereq(Context, menu, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE))
58+ if (!prereq(Context, menu, CHECK_IN_MAILBOX))
59 break;
60 mutt_pattern_func(MUTT_TAG, _("Tag messages matching: "));
61 menu->redraw |= REDRAW_INDEX | REDRAW_STATUS;
62 break;
63
64 case OP_MAIN_UNDELETE_PATTERN:
65- if (!prereq(Context, menu, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE | CHECK_READONLY))
66+ if (!prereq(Context, menu, CHECK_IN_MAILBOX | CHECK_READONLY))
67 break;
68 /* L10N: CHECK_ACL */
69 /* L10N: Due to the implementation details we do not know whether we
70@@ -1950,7 +1955,7 @@ int mutt_index_menu(struct MuttWindow *dlg)
71 break;
72
73 case OP_MAIN_UNTAG_PATTERN:
74- if (!prereq(Context, menu, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE))
75+ if (!prereq(Context, menu, CHECK_IN_MAILBOX))
76 break;
77 if (mutt_pattern_func(MUTT_UNTAG, _("Untag messages matching: ")) == 0)
78 menu->redraw |= REDRAW_INDEX | REDRAW_STATUS;
79@@ -3189,7 +3194,7 @@ int mutt_index_menu(struct MuttWindow *dlg)
80 }
81
82 case OP_MAIN_COLLAPSE_ALL:
83- if (!prereq(Context, menu, CHECK_IN_MAILBOX | CHECK_MSGCOUNT | CHECK_VISIBLE))
84+ if (!prereq(Context, menu, CHECK_IN_MAILBOX))
85 break;
86
87 if ((C_Sort & SORT_MASK) != SORT_THREADS)
diff --git a/overlays/neomutt/default.nix b/overlays/neomutt/default.nix
deleted file mode 100644
index 0b23734..0000000
--- a/overlays/neomutt/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
1self: super: {
2 neomutt = super.neomutt.overrideAttrs (old:
3 rec {
4 name = "neomutt-${version}";
5 version = "20191207";
6 src = self.fetchFromGitHub {
7 owner = "neomutt";
8 repo = "neomutt";
9 rev = version;
10 sha256 = "16xr7wdmjw0i72xbnyyh098wx4cr0m8w2cr1szdi1b14p4kpgr67";
11 };
12 patches = old.patches or [] ++ [ ./commands.patch ];
13 buildInputs = old.buildInputs ++ [ self.gdbm ];
14 configureFlags = old.configureFlags ++ [ "--gdbm" ];
15 doCheck = false;
16 }
17 );
18}
diff --git a/overlays/pelican/default.nix b/overlays/pelican/default.nix
index 5a487aa..4f8aece 100644
--- a/overlays/pelican/default.nix
+++ b/overlays/pelican/default.nix
@@ -1,6 +1,7 @@
1self: super: { 1self: super: {
2 pelican = with self.python3Packages; 2 pelican = with self.python3Packages;
3 pelican.overrideAttrs(old: self.mylibs.fetchedGithub ./pelican.json // { 3 pelican.overrideAttrs(old: {
4 propagatedBuildInputs = old.propagatedBuildInputs ++ [ pyyaml markdown ]; 4 propagatedBuildInputs = old.propagatedBuildInputs ++ [ pyyaml markdown ];
5 doInstallCheck = false;
5 }); 6 });
6} 7}
diff --git a/overlays/pelican/pelican.json b/overlays/pelican/pelican.json
deleted file mode 100644
index d8f4425..0000000
--- a/overlays/pelican/pelican.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "4.0.1",
3 "meta": {
4 "name": "pelican",
5 "url": "https://github.com/getpelican/pelican",
6 "branch": "refs/tags/4.0.1"
7 },
8 "github": {
9 "owner": "getpelican",
10 "repo": "pelican",
11 "rev": "24d6efa9fda4ad45649ddf88c1c596193d589bf8",
12 "sha256": "09fcwnnfln0cl5v0qpxzrllj27znrg6dbhaksxrl0192c3mbyjvl",
13 "fetchSubmodules": true
14 }
15}
diff --git a/overlays/profanity/default.nix b/overlays/profanity/default.nix
deleted file mode 100644
index 64fae49..0000000
--- a/overlays/profanity/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
1self: super: {
2 profanity = (super.profanity.override {
3 notifySupport = true;
4 inherit (self) libnotify gpgme gdk_pixbuf;
5 python = self.python3;
6 }).overrideAttrs (old: rec {
7 version = "0.7.1";
8 pname = "profanity";
9 name = "profanity-0.7.1";
10 src = self.fetchFromGitHub {
11 owner = "profanity-im";
12 repo = "profanity";
13 rev = version;
14 sha256 = "1mcgr86wqyzqx7mqxfkk2jwx6cgnvrky3zi4v1ww0lh6j05wj9gf";
15 };
16 patches = builtins.tail old.patches;
17 buildInputs = old.buildInputs ++ [ self.libsignal-protocol-c self.libgcrypt ];
18 configureFlags = old.configureFlags ++ [ "--enable-plugins" "--enable-omemo" ];
19 });
20}
diff --git a/overlays/simp_le/default.nix b/overlays/simp_le/default.nix
deleted file mode 100644
index 76891ed..0000000
--- a/overlays/simp_le/default.nix
+++ /dev/null
@@ -1,3 +0,0 @@
1self: super: {
2 simp_le = self.simp_le_0_17;
3}
diff --git a/overlays/vit/default.nix b/overlays/vit/default.nix
deleted file mode 100644
index 4624284..0000000
--- a/overlays/vit/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
1self: super:
2{
3 vit = (super.vit.override { inherit (self) taskwarrior; }).overrideAttrs (old:
4 self.mylibs.fetchedGithub ./vit.json // {
5 buildInputs = old.buildInputs ++ (with self.perlPackages; [ TryTiny TextCharWidth ]);
6 }
7 );
8}
diff --git a/overlays/vit/vit.json b/overlays/vit/vit.json
deleted file mode 100644
index d062f68..0000000
--- a/overlays/vit/vit.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "dbacada-1.3",
3 "meta": {
4 "name": "vit",
5 "url": "https://github.com/scottkosty/vit",
6 "branch": "1.3"
7 },
8 "github": {
9 "owner": "scottkosty",
10 "repo": "vit",
11 "rev": "dbacada5867b238fdf35dbf00a3ca0daf7703038",
12 "sha256": "1wlk62cv6dc0dqv8265xcx2l7ydzg40xf6l4qbrf6h5156ncc90l",
13 "fetchSubmodules": true
14 }
15}
diff --git a/overlays/weechat/default.nix b/overlays/weechat/default.nix
index 17faa0e..e8cc792 100644
--- a/overlays/weechat/default.nix
+++ b/overlays/weechat/default.nix
@@ -2,9 +2,7 @@ self: super: {
2 weechat = super.weechat.override { 2 weechat = super.weechat.override {
3 configure = { availablePlugins, ... }: { 3 configure = { availablePlugins, ... }: {
4 plugins = with self; with availablePlugins; [ 4 plugins = with self; with availablePlugins; [
5 # Make sure websocket_client is not 0.55.0, it provokes 5 (python.withPackages (ps: with ps; [websocket_client emoji]))
6 # regular crashes
7 (python.withPackages (ps: with ps; assert websocket_client.version == "0.54.0"; [websocket_client emoji]))
8 perl 6 perl
9 ruby 7 ruby
10 ]; 8 ];
diff --git a/pkgs/crypto/cardano-cli/default.nix b/pkgs/crypto/cardano-cli/default.nix
index 4bd18d9..3cd5a4c 100644
--- a/pkgs/crypto/cardano-cli/default.nix
+++ b/pkgs/crypto/cardano-cli/default.nix
@@ -11,6 +11,6 @@ rustPlatform.buildRustPackage rec {
11 fetchSubmodules = true; 11 fetchSubmodules = true;
12 }; 12 };
13 13
14 cargoSha256 = "1jra0635inm95xp7vg8l7s7ybijcy28956cd6jl8qw2p8bw0z1p3"; 14 cargoSha256 = "0j68dsqahvgpa9ms62149530lbfa55lmpd56rgdxkrh2z32lshs8";
15 verifyCargoDeps = true; 15 verifyCargoDeps = true;
16} 16}
diff --git a/pkgs/crypto/iota-cli-app/default.nix b/pkgs/crypto/iota-cli-app/default.nix
index 1a9d3ed..17d7714 100644
--- a/pkgs/crypto/iota-cli-app/default.nix
+++ b/pkgs/crypto/iota-cli-app/default.nix
@@ -1,6 +1,6 @@
1{ stdenv, mylibs, fetchurl, fetchgit, callPackage, nodePackages, nodejs-8_x }: 1{ stdenv, mylibs, fetchurl, fetchgit, callPackage, nodePackages, nodejs-10_x }:
2let 2let
3 nodeEnv = callPackage mylibs.nodeEnv { nodejs = nodejs-8_x; }; 3 nodeEnv = callPackage mylibs.nodeEnv { nodejs = nodejs-10_x; };
4 # built using node2nix -8 -l package-lock.json 4 # built using node2nix -8 -l package-lock.json
5 # and changing "./." to "src" 5 # and changing "./." to "src"
6 packageEnv = import ./node-packages.nix { 6 packageEnv = import ./node-packages.nix {
diff --git a/pkgs/mtop/default.nix b/pkgs/mtop/default.nix
index 4a89430..3f6b6bc 100644
--- a/pkgs/mtop/default.nix
+++ b/pkgs/mtop/default.nix
@@ -1,6 +1,6 @@
1{ buildPerlPackage, fetchurl, perlPackages, lib }: 1{ buildPerlPackage, fetchurl, perlPackages, lib }:
2buildPerlPackage rec { 2buildPerlPackage rec {
3 name = "mtop-${version}"; 3 pname = "mtop";
4 version = "0.6.6"; 4 version = "0.6.6";
5 src = fetchurl { 5 src = fetchurl {
6 url = "http://downloads.sourceforge.net/project/mtop/mtop/v${version}/mtop-${version}.tar.gz"; 6 url = "http://downloads.sourceforge.net/project/mtop/mtop/v${version}/mtop-${version}.tar.gz";
diff --git a/pkgs/note/default.nix b/pkgs/note/default.nix
index 0c422bc..d5fcccd 100644
--- a/pkgs/note/default.nix
+++ b/pkgs/note/default.nix
@@ -1,8 +1,9 @@
1{ lib, buildPerlPackage, fetchurl, perlPackages }: 1{ lib, buildPerlPackage, fetchurl, perlPackages }:
2buildPerlPackage rec { 2buildPerlPackage rec {
3 name = "note-1.3.26"; 3 pname = "note";
4 version = "1.3.26";
4 src = fetchurl { 5 src = fetchurl {
5 url = "mirror://cpan/authors/id/T/TL/TLINDEN/${name}.tar.gz"; 6 url = "mirror://cpan/authors/id/T/TL/TLINDEN/${pname}-${version}.tar.gz";
6 sha256 = "1h645rnb5vpms48fcyzvp7cwwcbf9k5xq49w2bpniyzzgk2brjrq"; 7 sha256 = "1h645rnb5vpms48fcyzvp7cwwcbf9k5xq49w2bpniyzzgk2brjrq";
7 }; 8 };
8 outputs = ["out" "man"]; 9 outputs = ["out" "man"];
diff --git a/pkgs/private/webapps/aten/default.nix b/pkgs/private/webapps/aten/default.nix
index 5a726e9..9c4e29f 100644
--- a/pkgs/private/webapps/aten/default.nix
+++ b/pkgs/private/webapps/aten/default.nix
@@ -22,7 +22,7 @@ let
22 postInstall = let 22 postInstall = let
23 nodeHeaders = fetchurl { 23 nodeHeaders = fetchurl {
24 url = "https://nodejs.org/download/release/v${nodejs.version}/node-v${nodejs.version}-headers.tar.gz"; 24 url = "https://nodejs.org/download/release/v${nodejs.version}/node-v${nodejs.version}-headers.tar.gz";
25 sha256 = "1g6zi96k8sbim8wa8rzskxy44mgpcv1mn2bs8p4mq36w3kwglwyj"; 25 sha256 = "1df3yhlwlvai0m9kvjyknjg11hnw0kj0rnhyzbwvsfjnmr6z8r76";
26 }; 26 };
27 in 27 in
28 '' 28 ''
diff --git a/pkgs/python-packages/buildbot/plugins/buildslist/default.nix b/pkgs/python-packages/buildbot/plugins/buildslist/default.nix
index e5087e4..dc6104e 100644
--- a/pkgs/python-packages/buildbot/plugins/buildslist/default.nix
+++ b/pkgs/python-packages/buildbot/plugins/buildslist/default.nix
@@ -1,4 +1,4 @@
1{ mylibs, stdenv, runCommand, writeScriptBin, buildBowerComponents, pythonPackages, libsass, python, python2, fetchurl, jq, yarn, nodejs }: 1{ mylibs, stdenv, runCommand, writeScriptBin, buildBowerComponents, pythonPackages, libsass, python, fetchurl, jq, yarn, nodejs }:
2let 2let
3 buildslist_src = mylibs.fetchedGit ./buildslist.json; 3 buildslist_src = mylibs.fetchedGit ./buildslist.json;
4 packagejson = runCommand "package.json" { buildInputs = [ jq ]; } '' 4 packagejson = runCommand "package.json" { buildInputs = [ jq ]; } ''
@@ -6,7 +6,7 @@ let
6 ''; 6 '';
7 nodeHeaders = fetchurl { 7 nodeHeaders = fetchurl {
8 url = "https://nodejs.org/download/release/v${nodejs.version}/node-v${nodejs.version}-headers.tar.gz"; 8 url = "https://nodejs.org/download/release/v${nodejs.version}/node-v${nodejs.version}-headers.tar.gz";
9 sha256 = "1g6zi96k8sbim8wa8rzskxy44mgpcv1mn2bs8p4mq36w3kwglwyj"; 9 sha256 = "1df3yhlwlvai0m9kvjyknjg11hnw0kj0rnhyzbwvsfjnmr6z8r76";
10 }; 10 };
11 buildslist_yarn = mylibs.yarn2nixPackage.mkYarnModules rec { 11 buildslist_yarn = mylibs.yarn2nixPackage.mkYarnModules rec {
12 name = "buildslist-yarn-modules"; 12 name = "buildslist-yarn-modules";
diff --git a/pkgs/python-packages/wokkel.nix b/pkgs/python-packages/wokkel.nix
index b34caec..3237f2b 100644
--- a/pkgs/python-packages/wokkel.nix
+++ b/pkgs/python-packages/wokkel.nix
@@ -7,5 +7,5 @@ buildPythonPackage rec {
7 sha256 = "1spq44gg8gsviqx1dvlmjpgfc0wk0jpyx4ap01y2pad1ai9cw016"; 7 sha256 = "1spq44gg8gsviqx1dvlmjpgfc0wk0jpyx4ap01y2pad1ai9cw016";
8 }; 8 };
9 propagatedBuildInputs = [ twisted.extras.tls twisted incremental dateutil ]; 9 propagatedBuildInputs = [ twisted.extras.tls twisted incremental dateutil ];
10 doChecks = false; 10 doCheck = false;
11} 11}
diff --git a/pkgs/simp_le/default.nix b/pkgs/simp_le/default.nix
deleted file mode 100644
index eaefba3..0000000
--- a/pkgs/simp_le/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
1{ stdenv, python3Packages, bash }:
2
3python3Packages.buildPythonApplication rec {
4 pname = "simp_le-client";
5 version = "0.17.0";
6
7 src = python3Packages.fetchPypi {
8 inherit pname version;
9 sha256 = "0m1jynar4calaffp2zdxr5yy9vnhw2qf2hsfxwzfwf8fqb5h7bjb";
10 };
11
12 postPatch = ''
13 # drop upper bound of idna requirement
14 sed -ri "s/'(idna)<[^']+'/'\1'/" setup.py
15 substituteInPlace simp_le.py \
16 --replace "/bin/sh" "${bash}/bin/sh"
17 '';
18
19 checkPhase = ''
20 $out/bin/simp_le --test
21 '';
22
23 propagatedBuildInputs = with python3Packages; [ acme setuptools_scm josepy idna ];
24
25 meta = with stdenv.lib; {
26 homepage = https://github.com/zenhack/simp_le;
27 description = "Simple Let's Encrypt client";
28 license = licenses.gpl3;
29 maintainers = with maintainers; [ gebner makefu ];
30 platforms = platforms.linux;
31 };
32}
diff --git a/pkgs/telegram-cli/default.nix b/pkgs/telegram-cli/default.nix
index 6987748..87c93e5 100644
--- a/pkgs/telegram-cli/default.nix
+++ b/pkgs/telegram-cli/default.nix
@@ -1,8 +1,5 @@
1{ stdenv, mylibs, pkgconfig, libevent, lua, jansson, openssl, readline, zlib, libconfig }: 1{ stdenv, mylibs, pkgconfig, libevent, lua, jansson, openssl, readline, zlib, libconfig }:
2stdenv.mkDerivation (mylibs.fetchedGithub ./telegram-cli.json // { 2stdenv.mkDerivation (mylibs.fetchedGithub ./telegram-cli.json // {
3 patches = [
4 ./telegram-cli.patch
5 ];
6 buildInputs = [ pkgconfig libevent lua jansson openssl readline zlib libconfig ]; 3 buildInputs = [ pkgconfig libevent lua jansson openssl readline zlib libconfig ];
7 preBuild = '' 4 preBuild = ''
8 sed -i -e 's@"/etc/" PROG_NAME "/server.pub"@"'$out'/etc/server.pub"@' main.c 5 sed -i -e 's@"/etc/" PROG_NAME "/server.pub"@"'$out'/etc/server.pub"@' main.c
diff --git a/pkgs/telegram-cli/telegram-cli.json b/pkgs/telegram-cli/telegram-cli.json
index 53e0a7b..2e7ed9a 100644
--- a/pkgs/telegram-cli/telegram-cli.json
+++ b/pkgs/telegram-cli/telegram-cli.json
@@ -1,15 +1,15 @@
1{ 1{
2 "tag": "6547c0b-master", 2 "tag": "3da0e4a-master",
3 "meta": { 3 "meta": {
4 "name": "telegram-cli", 4 "name": "telegram-cli",
5 "url": "https://github.com/vysheng/tg", 5 "url": "https://github.com/kenorb-contrib/tg/",
6 "branch": "master" 6 "branch": "master"
7 }, 7 },
8 "github": { 8 "github": {
9 "owner": "vysheng", 9 "owner": "kenorb-contrib",
10 "repo": "tg", 10 "repo": "tg",
11 "rev": "6547c0b21b977b327b3c5e8142963f4bc246187a", 11 "rev": "3da0e4a54c3a63cee11aae3c23f2077adfc4949d",
12 "sha256": "07sss5cnw2ygd7mp8f5532lmj7qm6ywqf4cjaq5g13i8igzqzwzj", 12 "sha256": "0pvswzajipzkk1x5cyf10dw18ka9jalar0aa2i7y23ifm4ddnif4",
13 "fetchSubmodules": true 13 "fetchSubmodules": true
14 } 14 }
15} 15}
diff --git a/pkgs/telegram-cli/telegram-cli.patch b/pkgs/telegram-cli/telegram-cli.patch
deleted file mode 100644
index 2d2b7b0..0000000
--- a/pkgs/telegram-cli/telegram-cli.patch
+++ /dev/null
@@ -1,90 +0,0 @@
1diff --git a/tgl/crypto/rsa_pem_openssl.c b/tgl/crypto/rsa_pem_openssl.c
2index db653f2..5e6a697 100644
3--- a/tgl/crypto/rsa_pem_openssl.c
4+++ b/tgl/crypto/rsa_pem_openssl.c
5@@ -36,6 +36,12 @@ TGLC_WRAPPER_ASSOC(rsa,RSA)
6 // TODO: Refactor crucial struct-identity into its own header.
7 TGLC_WRAPPER_ASSOC(bn,BIGNUM)
8
9+/*
10+ * Since OpenSSL version 1.1.0 the RSA struct (rsa_st) is opaque,
11+ * see also https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes
12+ */
13+#if (OPENSSL_VERSION_NUMBER < 0x10100000L)
14+
15 TGLC_rsa *TGLC_rsa_new (unsigned long e, int n_bytes, const unsigned char *n) {
16 RSA *ret = RSA_new ();
17 ret->e = unwrap_bn (TGLC_bn_new ());
18@@ -47,7 +53,30 @@ TGLC_rsa *TGLC_rsa_new (unsigned long e, int n_bytes, const unsigned char *n) {
19 #define RSA_GETTER(M) \
20 TGLC_bn *TGLC_rsa_ ## M (TGLC_rsa *key) { \
21 return wrap_bn (unwrap_rsa (key)->M); \
22- } \
23+ }
24+
25+#else // OPENSSL_VERSION_NUMBER
26+
27+TGLC_rsa *TGLC_rsa_new (unsigned long e, int n_bytes, const unsigned char *n) {
28+ RSA *ret = RSA_new ();
29+ BIGNUM *ret_e = unwrap_bn (TGLC_bn_new ());
30+ BIGNUM *ret_n = unwrap_bn (TGLC_bn_bin2bn (n, n_bytes, NULL));
31+ RSA_set0_key (ret, ret_n, ret_e, NULL);
32+ TGLC_bn_set_word (wrap_bn (ret_e), e);
33+ return wrap_rsa (ret);
34+}
35+
36+#define RSA_GETTER(M) \
37+TGLC_bn *TGLC_rsa_ ## M (TGLC_rsa *key) { \
38+ BIGNUM *rsa_n, *rsa_e, *rsa_d; \
39+ RSA_get0_key(unwrap_rsa (key), \
40+ (const BIGNUM **) &rsa_n, \
41+ (const BIGNUM **) &rsa_e, \
42+ (const BIGNUM **) &rsa_d); \
43+ return wrap_bn (rsa_ ## M); \
44+}
45+
46+#endif // OPENSSL_VERSION_NUMBER
47
48 RSA_GETTER(n);
49 RSA_GETTER(e);
50@@ -60,4 +89,4 @@ TGLC_rsa *TGLC_pem_read_RSAPublicKey (FILE *fp) {
51 return wrap_rsa (PEM_read_RSAPublicKey (fp, NULL, NULL, NULL));
52 }
53
54-#endif
55+#endif // TGL_AVOID_OPENSSL
56diff --git a/tgl/mtproto-utils.c b/tgl/mtproto-utils.c
57index 0948bc8..cfdb216 100644
58--- a/tgl/mtproto-utils.c
59+++ b/tgl/mtproto-utils.c
60@@ -98,7 +98,7 @@ static unsigned long long BN2ull (TGLC_bn *b) {
61 if (sizeof (unsigned long) == 8) {
62 return TGLC_bn_get_word (b);
63 } else if (sizeof (unsigned long long) == 8) {
64- assert (0); // As long as nobody ever uses this code, assume it is broken.
65+// assert (0); // As long as nobody ever uses this code, assume it is broken.
66 unsigned long long tmp;
67 /* Here be dragons, but it should be okay due to be64toh */
68 TGLC_bn_bn2bin (b, (unsigned char *) &tmp);
69@@ -112,7 +112,7 @@ static void ull2BN (TGLC_bn *b, unsigned long long val) {
70 if (sizeof (unsigned long) == 8 || val < (1ll << 32)) {
71 TGLC_bn_set_word (b, val);
72 } else if (sizeof (unsigned long long) == 8) {
73- assert (0); // As long as nobody ever uses this code, assume it is broken.
74+// assert (0); // As long as nobody ever uses this code, assume it is broken.
75 htobe64(val);
76 /* Here be dragons, but it should be okay due to htobe64 */
77 TGLC_bn_bin2bn ((unsigned char *) &val, 8, b);
78diff --git a/tgl/tl-parser/tl-parser.c b/tgl/tl-parser/tl-parser.c
79index 524b196..aeadbd2 100644
80--- a/tgl/tl-parser/tl-parser.c
81+++ b/tgl/tl-parser/tl-parser.c
82@@ -1903,7 +1903,7 @@ struct tl_combinator_tree *tl_parse_args134 (struct tree *T) {
83 //assert (S->data);
84 char *name = S->data;
85 if (!name) {
86- static char s[20];
87+ static char s[21];
88 sprintf (s, "%lld", lrand48 () * (1ll << 32) + lrand48 ());
89 name = s;
90 }
diff --git a/pkgs/terminal-velocity/default.nix b/pkgs/terminal-velocity/default.nix
index 9e79dee..1a015c0 100644
--- a/pkgs/terminal-velocity/default.nix
+++ b/pkgs/terminal-velocity/default.nix
@@ -15,6 +15,10 @@ buildPythonApplication rec {
15 ./fix_build.patch 15 ./fix_build.patch
16 ]; 16 ];
17 17
18 preCheck = ''
19 # Needed for urwid test
20 export LC_ALL=en_US.UTF-8
21 '';
18 propagatedBuildInputs = [ 22 propagatedBuildInputs = [
19 chardet 23 chardet
20 urwid 24 urwid
diff --git a/pkgs/tiv/default.nix b/pkgs/tiv/default.nix
index c03aabe..3e7a56c 100644
--- a/pkgs/tiv/default.nix
+++ b/pkgs/tiv/default.nix
@@ -1,6 +1,6 @@
1{ buildPerlPackage, fetchurl, perlPackages }: 1{ buildPerlPackage, fetchurl, perlPackages }:
2buildPerlPackage rec { 2buildPerlPackage rec {
3 name = "tiv-${version}"; 3 pname = "tiv";
4 version = "2015"; 4 version = "2015";
5 src = fetchurl { 5 src = fetchurl {
6 url = "http://xyne.archlinux.ca/projects/tiv/src/tiv-${version}.tar.xz"; 6 url = "http://xyne.archlinux.ca/projects/tiv/src/tiv-${version}.tar.xz";
diff --git a/pkgs/webapps/mediagoblin/default.nix b/pkgs/webapps/mediagoblin/default.nix
index f6393fe..c20bcb4 100644
--- a/pkgs/webapps/mediagoblin/default.nix
+++ b/pkgs/webapps/mediagoblin/default.nix
@@ -28,6 +28,8 @@ let
28 inherit (old) pname; 28 inherit (old) pname;
29 sha256 = "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9"; 29 sha256 = "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9";
30 }; 30 };
31 doCheck = false;
32 doInstallCheck = false;
31 }); 33 });
32 amqp = super.amqp.overridePythonAttrs(old: rec { 34 amqp = super.amqp.overridePythonAttrs(old: rec {
33 version = "1.4.9"; 35 version = "1.4.9";
diff --git a/pkgs/webapps/peertube/default.nix b/pkgs/webapps/peertube/default.nix
index 8995419..9929106 100644
--- a/pkgs/webapps/peertube/default.nix
+++ b/pkgs/webapps/peertube/default.nix
@@ -3,7 +3,7 @@
3let 3let
4 nodeHeaders = fetchurl { 4 nodeHeaders = fetchurl {
5 url = "https://nodejs.org/download/release/v${nodejs.version}/node-v${nodejs.version}-headers.tar.gz"; 5 url = "https://nodejs.org/download/release/v${nodejs.version}/node-v${nodejs.version}-headers.tar.gz";
6 sha256 = "1g6zi96k8sbim8wa8rzskxy44mgpcv1mn2bs8p4mq36w3kwglwyj"; 6 sha256 = "1df3yhlwlvai0m9kvjyknjg11hnw0kj0rnhyzbwvsfjnmr6z8r76";
7 }; 7 };
8 patchedPackages = stdenv.mkDerivation (mylibs.fetchedGithub ./peertube.json // rec { 8 patchedPackages = stdenv.mkDerivation (mylibs.fetchedGithub ./peertube.json // rec {
9 patches = if ldap then [ ./ldap.patch ././yarn_fix_bluebird_ldap.patch ] else [ ./yarn_fix_bluebird.patch ]; 9 patches = if ldap then [ ./ldap.patch ././yarn_fix_bluebird_ldap.patch ] else [ ./yarn_fix_bluebird.patch ];