diff options
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, ... }: | ||
2 | let | ||
3 | inherit (lib) mkOption types; | ||
4 | in | ||
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, ... }: | ||
2 | let | ||
3 | inherit (lib) literalExample mkOption nameValuePair types; | ||
4 | in | ||
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.<name>.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 | ||
57 | build: | 57 | build: |
58 | $(NIXOPS_PRIV) deploy --build-only --max-jobs 1 | 58 | $(NIXOPS_PRIV) deploy --build-only --keep-going |
59 | 59 | ||
60 | upload: | 60 | upload: |
61 | $(NIXOPS_PRIV) deploy --copy-only --max-concurrent-copy 1 | 61 | $(NIXOPS_PRIV) deploy --copy-only |
62 | 62 | ||
63 | deploy: | 63 | deploy: |
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 @@ | |||
1 | self: 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 @@ | |||
1 | commit 763056828abe9716c4dfce754a47d8ecdefb3029 | ||
2 | Author: Ismaël Bouya <ismael.bouya@normalesup.org> | ||
3 | Date: 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 | |||
12 | diff --git a/index.c b/index.c | ||
13 | index 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 @@ | |||
1 | self: 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 @@ | |||
1 | self: super: { | 1 | self: 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 @@ | |||
1 | self: 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 @@ | |||
1 | self: 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 @@ | |||
1 | self: 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 }: |
2 | let | 2 | let |
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 }: |
2 | buildPerlPackage rec { | 2 | buildPerlPackage 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 }: |
2 | buildPerlPackage rec { | 2 | buildPerlPackage 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 }: |
2 | let | 2 | let |
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 | |||
3 | python3Packages.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 }: |
2 | stdenv.mkDerivation (mylibs.fetchedGithub ./telegram-cli.json // { | 2 | stdenv.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 @@ | |||
1 | diff --git a/tgl/crypto/rsa_pem_openssl.c b/tgl/crypto/rsa_pem_openssl.c | ||
2 | index 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 | ||
56 | diff --git a/tgl/mtproto-utils.c b/tgl/mtproto-utils.c | ||
57 | index 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); | ||
78 | diff --git a/tgl/tl-parser/tl-parser.c b/tgl/tl-parser/tl-parser.c | ||
79 | index 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 }: |
2 | buildPerlPackage rec { | 2 | buildPerlPackage 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 @@ | |||
3 | let | 3 | let |
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 ]; |