summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2020-12-31 13:29:32 +0100
committerFrederik Rietdijk <fridh@fridh.nl>2020-12-31 13:29:32 +0100
commite823016e6664d6ee1e0a8f7cfe419f32b43bc9dc (patch)
treef5a0baefbf2bf78f4cd6775eacb70fc4e1da0370 /nixos
parentf6514239ee9b0739a6e884ba28e9302c0102f8c0 (diff)
parentb4b338eedc4faa4c9ef3120783634664e2347c48 (diff)
Merge master into staging-next
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/config/update-users-groups.pl9
-rw-r--r--nixos/modules/config/users-groups.nix2
-rw-r--r--nixos/modules/installer/tools/nixos-enter.sh3
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/networking/shellhub-agent.nix91
-rw-r--r--nixos/modules/virtualisation/amazon-init.nix2
-rw-r--r--nixos/modules/virtualisation/oci-containers.nix4
7 files changed, 108 insertions, 4 deletions
diff --git a/nixos/modules/config/update-users-groups.pl b/nixos/modules/config/update-users-groups.pl
index 758237152932..44040217b027 100644
--- a/nixos/modules/config/update-users-groups.pl
+++ b/nixos/modules/config/update-users-groups.pl
@@ -227,6 +227,15 @@ foreach my $u (@{$spec->{users}}) {
$u->{hashedPassword} = hashPassword($u->{password});
}
+ if (!defined $u->{shell}) {
+ if (defined $existing) {
+ $u->{shell} = $existing->{shell};
+ } else {
+ warn "warning: no declarative or previous shell for ‘$name’, setting shell to nologin\n";
+ $u->{shell} = "/run/current-system/sw/bin/nologin";
+ }
+ }
+
$u->{fakePassword} = $existing->{fakePassword} // "x";
$usersOut{$name} = $u;
diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix
index a95763380986..e90a7d567d42 100644
--- a/nixos/modules/config/users-groups.nix
+++ b/nixos/modules/config/users-groups.nix
@@ -153,7 +153,7 @@ let
};
shell = mkOption {
- type = types.either types.shellPackage types.path;
+ type = types.nullOr (types.either types.shellPackage types.path);
default = pkgs.shadow;
defaultText = "pkgs.shadow";
example = literalExample "pkgs.bashInteractive";
diff --git a/nixos/modules/installer/tools/nixos-enter.sh b/nixos/modules/installer/tools/nixos-enter.sh
index c72ef6e9c28b..450d77618148 100644
--- a/nixos/modules/installer/tools/nixos-enter.sh
+++ b/nixos/modules/installer/tools/nixos-enter.sh
@@ -69,6 +69,9 @@ mount --rbind /sys "$mountPoint/sys"
# Run the activation script. Set $LOCALE_ARCHIVE to supress some Perl locale warnings.
LOCALE_ARCHIVE="$system/sw/lib/locale/locale-archive" chroot "$mountPoint" "$system/activate" 1>&2 || true
+
+ # Create /tmp
+ chroot "$mountPoint" systemd-tmpfiles --create --remove --exclude-prefix=/dev 1>&2 || true
)
exec chroot "$mountPoint" "${command[@]}"
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 90f40db7834b..4341c8c238a8 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -745,6 +745,7 @@
./services/networking/skydns.nix
./services/networking/shadowsocks.nix
./services/networking/shairport-sync.nix
+ ./services/networking/shellhub-agent.nix
./services/networking/shorewall.nix
./services/networking/shorewall6.nix
./services/networking/shout.nix
diff --git a/nixos/modules/services/networking/shellhub-agent.nix b/nixos/modules/services/networking/shellhub-agent.nix
new file mode 100644
index 000000000000..4ce4b8250bc3
--- /dev/null
+++ b/nixos/modules/services/networking/shellhub-agent.nix
@@ -0,0 +1,91 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+let
+ cfg = config.services.shellhub-agent;
+in {
+
+ ###### interface
+
+ options = {
+
+ services.shellhub-agent = {
+
+ enable = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ Whether to enable the ShellHub Agent daemon, which allows
+ secure remote logins.
+ '';
+ };
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.shellhub-agent;
+ defaultText = "pkgs.shellhub-agent";
+ description = ''
+ Which ShellHub Agent package to use.
+ '';
+ };
+
+ tenantId = mkOption {
+ type = types.str;
+ example = "ba0a880c-2ada-11eb-a35e-17266ef329d6";
+ description = ''
+ The tenant ID to use when connecting to the ShellHub
+ Gateway.
+ '';
+ };
+
+ server = mkOption {
+ type = types.str;
+ default = "https://cloud.shellhub.io";
+ description = ''
+ Server address of ShellHub Gateway to connect.
+ '';
+ };
+
+ privateKey = mkOption {
+ type = types.path;
+ default = "/var/lib/shellhub-agent/private.key";
+ description = ''
+ Location where to store the ShellHub Agent private
+ key.
+ '';
+ };
+ };
+ };
+
+ ###### implementation
+
+ config = mkIf cfg.enable {
+
+ systemd.services.shellhub-agent = {
+ description = "ShellHub Agent";
+
+ wantedBy = [ "multi-user.target" ];
+ requires = [ "local-fs.target" ];
+ wants = [ "network-online.target" ];
+ after = [
+ "local-fs.target"
+ "network.target"
+ "network-online.target"
+ "time-sync.target"
+ ];
+
+ environment.SERVER_ADDRESS = cfg.server;
+ environment.PRIVATE_KEY = cfg.privateKey;
+ environment.TENANT_ID = cfg.tenantId;
+
+ serviceConfig = {
+ # The service starts sessions for different users.
+ User = "root";
+ Restart = "on-failure";
+ ExecStart = "${cfg.package}/bin/agent";
+ };
+ };
+
+ environment.systemPackages = [ cfg.package ];
+ };
+}
diff --git a/nixos/modules/virtualisation/amazon-init.nix b/nixos/modules/virtualisation/amazon-init.nix
index 8c12e0e49bf5..c5470b7af09b 100644
--- a/nixos/modules/virtualisation/amazon-init.nix
+++ b/nixos/modules/virtualisation/amazon-init.nix
@@ -7,7 +7,7 @@ let
echo "attempting to fetch configuration from EC2 user data..."
export HOME=/root
- export PATH=${pkgs.lib.makeBinPath [ config.nix.package pkgs.systemd pkgs.gnugrep pkgs.git pkgs.gnutar pkgs.gzip pkgs.gnused config.system.build.nixos-rebuild]}:$PATH
+ export PATH=${pkgs.lib.makeBinPath [ config.nix.package pkgs.systemd pkgs.gnugrep pkgs.git pkgs.gnutar pkgs.gzip pkgs.gnused pkgs.xz config.system.build.nixos-rebuild]}:$PATH
export NIX_PATH=nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels
userData=/etc/ec2-metadata/user-data
diff --git a/nixos/modules/virtualisation/oci-containers.nix b/nixos/modules/virtualisation/oci-containers.nix
index a46dd65eb491..ee9fe62187d3 100644
--- a/nixos/modules/virtualisation/oci-containers.nix
+++ b/nixos/modules/virtualisation/oci-containers.nix
@@ -176,10 +176,10 @@ let
description = ''
Define which other containers this one depends on. They will be added to both After and Requires for the unit.
- Use the same name as the attribute under <literal>virtualisation.oci-containers</literal>.
+ Use the same name as the attribute under <literal>virtualisation.oci-containers.containers</literal>.
'';
example = literalExample ''
- virtualisation.oci-containers = {
+ virtualisation.oci-containers.containers = {
node1 = {};
node2 = {
dependsOn = [ "node1" ];