mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-11-10 09:43:30 +01:00
59 lines
1.9 KiB
Nix
59 lines
1.9 KiB
Nix
# This is a smoke test that tests that basic functionality is still available
|
|
# with the bashless profile. For this, however, we have to re-enable bash.
|
|
|
|
{ lib, ... }:
|
|
|
|
{
|
|
|
|
name = "activation-bashless";
|
|
|
|
meta.maintainers = with lib.maintainers; [ nikstur ];
|
|
|
|
nodes.machine =
|
|
{ pkgs, modulesPath, ... }:
|
|
{
|
|
imports = [ "${modulesPath}/profiles/bashless.nix" ];
|
|
|
|
# Forcibly re-set options that would normally be set by the bashless
|
|
# profile but that we have to re-enable to make the test instrumentation
|
|
# work.
|
|
environment.binsh = lib.mkForce null;
|
|
boot.initrd.systemd.shell.enable = false;
|
|
systemd.shutdownRamfs.shell.enable = false;
|
|
|
|
# This ensures that we only have the store paths of our closure in the
|
|
# in the guest. This is necessary so we can grep in the store.
|
|
virtualisation.mountHostNixStore = false;
|
|
virtualisation.useNixStoreImage = true;
|
|
|
|
# Re-enable just enough of a normal NixOS system to be able to run tests
|
|
programs.bash.enable = true;
|
|
environment.shell.enable = true;
|
|
environment.systemPackages = [
|
|
pkgs.coreutils
|
|
pkgs.gnugrep
|
|
pkgs.findutils
|
|
];
|
|
|
|
# Unset the regex because the tests instrumentation needs bash.
|
|
system.forbiddenDependenciesRegexes = lib.mkForce [ ];
|
|
};
|
|
|
|
testScript = ''
|
|
machine.wait_for_unit("multi-user.target")
|
|
|
|
with subtest("/bin/sh doesn't exist"):
|
|
machine.fail("stat /bin/sh")
|
|
|
|
with subtest("shutdown ramfs is bashless"):
|
|
machine.systemctl("start generate-shutdown-ramfs.service")
|
|
shutdown_ramfs_bash_paths = machine.succeed("find /run/initramfs -type d,f -name '*bash*'")
|
|
print(shutdown_ramfs_bash_paths)
|
|
t.assertNotIn("bash", shutdown_ramfs_bash_paths)
|
|
|
|
bash_store_paths = machine.succeed("ls /nix/store | grep bash || true")
|
|
print(bash_store_paths)
|
|
'';
|
|
|
|
}
|