mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-11 21:06:19 +03:00
Merge master into haskell-updates
This commit is contained in:
commit
0f09cfb9c7
134 changed files with 2266 additions and 1129 deletions
|
@ -641,7 +641,7 @@ class Machine:
|
|||
return status != 0
|
||||
|
||||
with self.nested(f"waiting for failure: {command}"):
|
||||
retry(check_failure)
|
||||
retry(check_failure, timeout)
|
||||
return output
|
||||
|
||||
def wait_for_shutdown(self) -> None:
|
||||
|
|
|
@ -20,7 +20,6 @@ let
|
|||
${lib.optionalString (cfg.zone != "") "zone=${cfg.zone}"}
|
||||
ssl=${boolToStr cfg.ssl}
|
||||
wildcard=YES
|
||||
ipv6=${boolToStr cfg.ipv6}
|
||||
quiet=${boolToStr cfg.quiet}
|
||||
verbose=${boolToStr cfg.verbose}
|
||||
${cfg.extraConfig}
|
||||
|
@ -52,6 +51,7 @@ with lib;
|
|||
in if value != "" then [ value ] else []))
|
||||
(mkRemovedOptionModule [ "services" "ddclient" "homeDir" ] "")
|
||||
(mkRemovedOptionModule [ "services" "ddclient" "password" ] "Use services.ddclient.passwordFile instead.")
|
||||
(mkRemovedOptionModule [ "services" "ddclient" "ipv6" ] "")
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
@ -146,15 +146,6 @@ with lib;
|
|||
'';
|
||||
};
|
||||
|
||||
ipv6 = mkOption {
|
||||
default = false;
|
||||
type = bool;
|
||||
description = lib.mdDoc ''
|
||||
Whether to use IPv6.
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
quiet = mkOption {
|
||||
default = false;
|
||||
type = bool;
|
||||
|
|
|
@ -41,6 +41,12 @@ let
|
|||
RestrictNamespaces = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [ "@system-service" "~@privileged" "~@resources" ];
|
||||
|
||||
# Because of various issues Invidious must be restarted often, at least once a day, ideally
|
||||
# every hour.
|
||||
# This option enables the automatic restarting of the Invidious instance.
|
||||
Restart = lib.mkDefault "always";
|
||||
RuntimeMaxSec = lib.mkDefault "1h";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -655,7 +655,7 @@ foreach my $device (keys(%{$cur_swaps})) {
|
|||
# "systemctl stop" here because systemd has lots of alias
|
||||
# units that prevent a stop from actually calling
|
||||
# "swapoff".
|
||||
if ($action ne "dry-activate") {
|
||||
if ($action eq "dry-activate") {
|
||||
print STDERR "would stop swap device: $device\n";
|
||||
} else {
|
||||
print STDERR "stopping swap device: $device\n";
|
||||
|
|
|
@ -814,6 +814,7 @@ in {
|
|||
victoriametrics = handleTest ./victoriametrics.nix {};
|
||||
vikunja = handleTest ./vikunja.nix {};
|
||||
virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {};
|
||||
vscode-remote-ssh = handleTestOn ["x86_64-linux"] ./vscode-remote-ssh.nix {};
|
||||
vscodium = discoverTests (import ./vscodium.nix);
|
||||
vsftpd = handleTest ./vsftpd.nix {};
|
||||
warzone2100 = handleTest ./warzone2100.nix {};
|
||||
|
|
|
@ -24,6 +24,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||
|
||||
with subtest("works with static-auth-secret-file"):
|
||||
secretsfile.wait_for_unit("coturn.service")
|
||||
secretsfile.wait_for_open_port(3478)
|
||||
secretsfile.succeed("grep 'some-very-secret-string' /run/coturn/turnserver.cfg")
|
||||
# Forbidden IP, fails:
|
||||
secretsfile.fail("${pkgs.coturn}/bin/turnutils_uclient -W some-very-secret-string 127.0.0.1 -DgX -e 127.0.0.1 -n 1 -c -y")
|
||||
|
|
124
nixos/tests/vscode-remote-ssh.nix
Normal file
124
nixos/tests/vscode-remote-ssh.nix
Normal file
|
@ -0,0 +1,124 @@
|
|||
import ./make-test-python.nix ({ lib, ... }@args: let
|
||||
pkgs = args.pkgs.extend (self: super: {
|
||||
stdenv = super.stdenv.override {
|
||||
config = super.config // {
|
||||
allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
||||
"vscode" "vscode-with-extensions" "vscode-extension-ms-vscode-remote-remote-ssh"
|
||||
];
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
inherit (import ./ssh-keys.nix pkgs) snakeOilPrivateKey snakeOilPublicKey;
|
||||
|
||||
inherit (pkgs.vscode.passthru) rev vscodeServer;
|
||||
in {
|
||||
name = "vscode-remote-ssh";
|
||||
meta.maintainers = with lib.maintainers; [ Enzime ];
|
||||
|
||||
nodes = let
|
||||
serverAddress = "192.168.0.2";
|
||||
clientAddress = "192.168.0.1";
|
||||
in {
|
||||
server = { ... }: {
|
||||
networking.interfaces.eth1.ipv4.addresses = [ { address = serverAddress; prefixLength = 24; } ];
|
||||
services.openssh.enable = true;
|
||||
users.users.root.openssh.authorizedKeys.keys = [ snakeOilPublicKey ];
|
||||
virtualisation.additionalPaths = with pkgs; [ patchelf bintools stdenv.cc.cc.lib ];
|
||||
};
|
||||
client = { ... }: {
|
||||
imports = [ ./common/x11.nix ./common/user-account.nix ];
|
||||
networking.interfaces.eth1.ipv4.addresses = [ { address = clientAddress; prefixLength = 24; } ];
|
||||
networking.hosts.${serverAddress} = [ "server" ];
|
||||
test-support.displayManager.auto.user = "alice";
|
||||
environment.systemPackages = [
|
||||
(pkgs.vscode-with-extensions.override {
|
||||
vscodeExtensions = [
|
||||
pkgs.vscode-extensions.ms-vscode-remote.remote-ssh
|
||||
];
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
enableOCR = true;
|
||||
|
||||
testScript = let
|
||||
jq = "${pkgs.jq}/bin/jq";
|
||||
|
||||
sshConfig = builtins.toFile "ssh.conf" ''
|
||||
UserKnownHostsFile=/dev/null
|
||||
StrictHostKeyChecking=no
|
||||
'';
|
||||
|
||||
vscodeConfig = builtins.toFile "settings.json" ''
|
||||
{
|
||||
"window.zoomLevel": 1,
|
||||
"security.workspace.trust.startupPrompt": "always"
|
||||
}
|
||||
'';
|
||||
in ''
|
||||
def connect_with_remote_ssh(screenshot, should_succeed):
|
||||
print(f"connect_with_remote_ssh({screenshot=}, {should_succeed=})")
|
||||
|
||||
if server.execute("test -d ~/.vscode-server")[0] == 0:
|
||||
server.succeed("rm -r ~/.vscode-server")
|
||||
|
||||
server.succeed("mkdir -p ~/.vscode-server/bin")
|
||||
server.succeed("cp -r ${vscodeServer} ~/.vscode-server/bin/${rev}")
|
||||
|
||||
client.succeed("sudo -u alice code --remote=ssh-remote+root@server /root")
|
||||
client.wait_for_window("Visual Studio Code")
|
||||
|
||||
client.wait_for_text("Do you trust the authors" if should_succeed else "Disconnected from SSH")
|
||||
client.screenshot(screenshot)
|
||||
|
||||
if should_succeed:
|
||||
# Press the Don't Trust button
|
||||
client.send_key("tab")
|
||||
client.send_key("tab")
|
||||
client.send_key("tab")
|
||||
client.send_key("\n")
|
||||
else:
|
||||
# Close the error dialog
|
||||
client.send_key("esc")
|
||||
|
||||
# Don't send Ctrl-q too quickly otherwise it might not get sent to VS Code
|
||||
client.sleep(1)
|
||||
client.send_key("ctrl-q")
|
||||
client.wait_until_fails("pidof code")
|
||||
|
||||
|
||||
start_all()
|
||||
server.wait_for_open_port(22)
|
||||
|
||||
VSCODE_COMMIT = server.execute("${jq} -r .commit ${pkgs.vscode}/lib/vscode/resources/app/product.json")[1].rstrip()
|
||||
SERVER_COMMIT = server.execute("${jq} -r .commit ${vscodeServer}/product.json")[1].rstrip()
|
||||
|
||||
print(f"{VSCODE_COMMIT=} {SERVER_COMMIT=}")
|
||||
assert VSCODE_COMMIT == SERVER_COMMIT, "VSCODE_COMMIT and SERVER_COMMIT do not match"
|
||||
|
||||
client.wait_until_succeeds("ping -c1 server")
|
||||
client.succeed("sudo -u alice mkdir ~alice/.ssh")
|
||||
client.succeed("sudo -u alice install -Dm 600 ${snakeOilPrivateKey} ~alice/.ssh/id_ecdsa")
|
||||
client.succeed("sudo -u alice install ${sshConfig} ~alice/.ssh/config")
|
||||
client.succeed("sudo -u alice install -Dm 644 ${vscodeConfig} ~alice/.config/Code/User/settings.json")
|
||||
|
||||
client.wait_for_x()
|
||||
client.wait_for_file("~alice/.Xauthority")
|
||||
client.succeed("xauth merge ~alice/.Xauthority")
|
||||
# Move the mouse out of the way
|
||||
client.succeed("${pkgs.xdotool}/bin/xdotool mousemove 0 0")
|
||||
|
||||
with subtest("fails to connect when nixpkgs isn't available"):
|
||||
server.fail("nix-build '<nixpkgs>' -A hello")
|
||||
connect_with_remote_ssh(screenshot="no_node_installed", should_succeed=False)
|
||||
server.succeed("test -e ~/.vscode-server/bin/${rev}/node")
|
||||
server.fail("~/.vscode-server/bin/${rev}/node -v")
|
||||
|
||||
with subtest("connects when server can patch Node"):
|
||||
server.succeed("mkdir -p /nix/var/nix/profiles/per-user/root/channels")
|
||||
server.succeed("ln -s ${pkgs.path} /nix/var/nix/profiles/per-user/root/channels/nixos")
|
||||
connect_with_remote_ssh(screenshot="build_node_with_nix", should_succeed=True)
|
||||
'';
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue