Merge pull request #105182 from roosemberth/fixes/firejail

firejail: fix -overlay and -build functionality on NixOS
This commit is contained in:
Michael Raskin 2020-11-28 12:27:39 +00:00 committed by GitHub
commit 2d50a1f09e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 0 deletions

View file

@ -20,6 +20,15 @@ stdenv.mkDerivation {
name = "${s.name}.tar.bz2";
};
patches = [
# Adds the /nix directory when using an overlay.
# Required to run any programs under this mode.
./mount-nix-dir-on-overlay.patch
# By default fbuilder hardcodes the firejail binary to the install path.
# On NixOS the firejail binary is a setuid wrapper available in $PATH.
./fbuilder-call-firejail-on-path.patch
];
prePatch = ''
# Allow whitelisting ~/.nix-profile
substituteInPlace etc/firejail.config --replace \

View file

@ -0,0 +1,11 @@
--- a/src/fbuilder/build_profile.c
+++ b/src/fbuilder/build_profile.c
@@ -67,7 +67,7 @@
errExit("asprintf");
char *cmdlist[] = {
- BINDIR "/firejail",
+ "firejail",
"--quiet",
"--noprofile",
"--caps.drop=all",

View file

@ -0,0 +1,27 @@
--- a/src/firejail/fs.c
+++ b/src/firejail/fs.c
@@ -1143,6 +1143,16 @@
errExit("mounting /dev");
fs_logger("whitelist /dev");
+ // mount-bind /nix
+ if (arg_debug)
+ printf("Mounting /nix\n");
+ char *nix;
+ if (asprintf(&nix, "%s/nix", oroot) == -1)
+ errExit("asprintf");
+ if (mount("/nix", nix, NULL, MS_BIND|MS_REC, NULL) < 0)
+ errExit("mounting /nix");
+ fs_logger("whitelist /nix");
+
// mount-bind run directory
if (arg_debug)
printf("Mounting /run\n");
@@ -1201,6 +1211,7 @@
free(odiff);
free(owork);
free(dev);
+ free(nix);
free(run);
free(tmp);
}