···313313314314## Option collision
315315checkConfigError \
316316- 'The option .set. in module .*/declare-set.nix. would be a parent of the following options, but its type .attribute set of signed integers. does not support nested options.\n\s*- option[(]s[)] with prefix .set.enable. in module .*/declare-enable-nested.nix.' \
316316+ 'The option .set. in module .*/declare-set.nix. would be a parent of the following options, but its type .attribute set of signed integer. does not support nested options.\n\s*- option[(]s[)] with prefix .set.enable. in module .*/declare-enable-nested.nix.' \
317317 config.set \
318318 ./declare-set.nix ./declare-enable-nested.nix
319319
+3-3
lib/types.nix
···397397398398 listOf = elemType: mkOptionType rec {
399399 name = "listOf";
400400- description = "list of ${elemType.description}s";
400400+ description = "list of ${elemType.description}";
401401 check = isList;
402402 merge = loc: defs:
403403 map (x: x.value) (filter (x: x ? value) (concatLists (imap1 (n: def:
···426426427427 attrsOf = elemType: mkOptionType rec {
428428 name = "attrsOf";
429429- description = "attribute set of ${elemType.description}s";
429429+ description = "attribute set of ${elemType.description}";
430430 check = isAttrs;
431431 merge = loc: defs:
432432 mapAttrs (n: v: v.value) (filterAttrs (n: v: v ? value) (zipAttrsWith (name: defs:
···449449 # error that it's not defined. Use only if conditional definitions don't make sense.
450450 lazyAttrsOf = elemType: mkOptionType rec {
451451 name = "lazyAttrsOf";
452452- description = "lazy attribute set of ${elemType.description}s";
452452+ description = "lazy attribute set of ${elemType.description}";
453453 check = isAttrs;
454454 merge = loc: defs:
455455 zipAttrsWith (name: defs:
+21-17
nixos/modules/security/wrappers/wrapper.c
···22#include <stdio.h>
33#include <string.h>
44#include <unistd.h>
55+#include <stdnoreturn.h>
56#include <sys/types.h>
67#include <sys/stat.h>
78#include <sys/xattr.h>
89#include <fcntl.h>
910#include <dirent.h>
1010-#include <assert.h>
1111#include <errno.h>
1212#include <linux/capability.h>
1313#include <sys/prctl.h>
···1616#include <syscall.h>
1717#include <byteswap.h>
18181919-// Make sure assertions are not compiled out, we use them to codify
2020-// invariants about this program and we want it to fail fast and
2121-// loudly if they are violated.
2222-#undef NDEBUG
1919+#define ASSERT(expr) ((expr) ? (void) 0 : assert_failure(#expr))
23202421extern char **environ;
2522···3734#else
3835#define LE32_TO_H(x) (x)
3936#endif
3737+3838+static noreturn void assert_failure(const char *assertion) {
3939+ fprintf(stderr, "Assertion `%s` in NixOS's wrapper.c failed.\n", assertion);
4040+ fflush(stderr);
4141+ abort();
4242+}
40434144int get_last_cap(unsigned *last_cap) {
4245 FILE* file = fopen("/proc/sys/kernel/cap_last_cap", "r");
···167170}
168171169172int main(int argc, char **argv) {
173173+ ASSERT(argc >= 1);
170174 char *self_path = NULL;
171175 int self_path_size = readlink_malloc("/proc/self/exe", &self_path);
172176 if (self_path_size < 0) {
···181185 int len = strlen(wrapper_dir);
182186 if (len > 0 && '/' == wrapper_dir[len - 1])
183187 --len;
184184- assert(!strncmp(self_path, wrapper_dir, len));
185185- assert('/' == wrapper_dir[0]);
186186- assert('/' == self_path[len]);
188188+ ASSERT(!strncmp(self_path, wrapper_dir, len));
189189+ ASSERT('/' == wrapper_dir[0]);
190190+ ASSERT('/' == self_path[len]);
187191188192 // Make *really* *really* sure that we were executed as
189193 // `self_path', and not, say, as some other setuid program. That
190194 // is, our effective uid/gid should match the uid/gid of
191195 // `self_path'.
192196 struct stat st;
193193- assert(lstat(self_path, &st) != -1);
197197+ ASSERT(lstat(self_path, &st) != -1);
194198195195- assert(!(st.st_mode & S_ISUID) || (st.st_uid == geteuid()));
196196- assert(!(st.st_mode & S_ISGID) || (st.st_gid == getegid()));
199199+ ASSERT(!(st.st_mode & S_ISUID) || (st.st_uid == geteuid()));
200200+ ASSERT(!(st.st_mode & S_ISGID) || (st.st_gid == getegid()));
197201198202 // And, of course, we shouldn't be writable.
199199- assert(!(st.st_mode & (S_IWGRP | S_IWOTH)));
203203+ ASSERT(!(st.st_mode & (S_IWGRP | S_IWOTH)));
200204201205 // Read the path of the real (wrapped) program from <self>.real.
202206 char real_fn[PATH_MAX + 10];
203207 int real_fn_size = snprintf(real_fn, sizeof(real_fn), "%s.real", self_path);
204204- assert(real_fn_size < sizeof(real_fn));
208208+ ASSERT(real_fn_size < sizeof(real_fn));
205209206210 int fd_self = open(real_fn, O_RDONLY);
207207- assert(fd_self != -1);
211211+ ASSERT(fd_self != -1);
208212209213 char source_prog[PATH_MAX];
210214 len = read(fd_self, source_prog, PATH_MAX);
211211- assert(len != -1);
212212- assert(len < sizeof(source_prog));
213213- assert(len > 0);
215215+ ASSERT(len != -1);
216216+ ASSERT(len < sizeof(source_prog));
217217+ ASSERT(len > 0);
214218 source_prog[len] = 0;
215219216220 close(fd_self);
+1-1
nixos/modules/services/misc/nitter.nix
···277277 Add settings here to override NixOS module generated settings.
278278279279 Check the official repository for the available settings:
280280- https://github.com/zedeus/nitter/blob/master/nitter.conf
280280+ https://github.com/zedeus/nitter/blob/master/nitter.example.conf
281281 '';
282282 };
283283
···55 /* Do not use "dev" as a version. If you do, Tilt will consider itself
66 running in development environment and try to serve assets from the
77 source tree, which is not there once build completes. */
88- version = "0.26.3";
88+ version = "0.30.0";
991010 src = fetchFromGitHub {
1111 owner = "tilt-dev";
1212 repo = pname;
1313 rev = "v${version}";
1414- sha256 = "sha256-jrVf6vNlEkTgALS93o3kIiticvsyFHm5oA2Fh1edAGY=";
1414+ sha256 = "sha256-bZYm9T3NRNNtT8RDGwnXcXC7Rb/GuIxI/U06By4gR/w=";
1515 };
1616 vendorSha256 = null;
1717
···82828383 # needed for relative paths for some packages
8484 cd tests
8585+ '' + lib.optionalString stdenv.isDarwin ''
8686+ # OSError: [Errno 24] Too many open files
8787+ ulimit -n 1024
8588 '';
86898790 # uvloop usage is buggy