diff --git a/ofborg/src/nix.rs b/ofborg/src/nix.rs index dcae057..fb97ab5 100644 --- a/ofborg/src/nix.rs +++ b/ofborg/src/nix.rs @@ -675,7 +675,7 @@ mod tests { } #[test] - fn instantiation() { + fn instantiation_success() { let ret: Result = nix().safely( Operation::Instantiate, passing_eval_path().as_path(), @@ -693,4 +693,23 @@ mod tests { ], ); } + + #[test] + fn instantiation_nixpkgs_restricted_mode() { + let ret: Result = nix().safely( + Operation::Instantiate, + individual_eval_path().as_path(), + vec![String::from("-A"), String::from("nixpkgs-restricted-mode")], + true, + ); + + assert_run( + ret, + Expect::Fail, + vec![ + "access to path '/fake'", + "is forbidden in restricted mode", + ], + ); + } } diff --git a/ofborg/src/tasks/massrebuilder.rs b/ofborg/src/tasks/massrebuilder.rs index 19dc889..ee95b09 100644 --- a/ofborg/src/tasks/massrebuilder.rs +++ b/ofborg/src/tasks/massrebuilder.rs @@ -348,6 +348,9 @@ impl worker::SimpleWorker for MassRebuildWorker worker::SimpleWorker for MassRebuildWorker worker::SimpleWorker for MassRebuildWorker worker::SimpleWorker for MassRebuildWorker worker::SimpleWorker for MassRebuildWorker; -in rec { +in + +{ nixpkgs ? fetchGit /fake }: + +rec { success = derivation { name = "success"; system = builtins.currentSystem; @@ -28,6 +36,15 @@ in rec { "echo this ones cool" ]; }; + nixpkgs-restricted-mode = derivation { + name = "nixpkgs-restricted-mode-fetchgit"; + system = builtins.currentSystem; + builder = nix.shell; + args = [ + "-c" + "echo hi; echo ${toString nixpkgs} > $out" ]; + }; + fails-instantiation = assert builtins.trace '' You just can't frooble the frozz on this particular system. '' false; {};