Merge pull request #105182 from roosemberth/fixes/firejail
firejail: fix -overlay and -build functionality on NixOS
This commit is contained in:
commit
2d50a1f09e
@ -20,6 +20,15 @@ stdenv.mkDerivation {
|
|||||||
name = "${s.name}.tar.bz2";
|
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 = ''
|
prePatch = ''
|
||||||
# Allow whitelisting ~/.nix-profile
|
# Allow whitelisting ~/.nix-profile
|
||||||
substituteInPlace etc/firejail.config --replace \
|
substituteInPlace etc/firejail.config --replace \
|
||||||
|
@ -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",
|
@ -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);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user