Merge remote-tracking branch 'origin/master' into systemd
This commit is contained in:
commit
97ae408e83
|
@ -40,7 +40,6 @@ in
|
||||||
|
|
||||||
# The following are used by nixos-rebuild.
|
# The following are used by nixos-rebuild.
|
||||||
nixFallback = pkgs.nixUnstable;
|
nixFallback = pkgs.nixUnstable;
|
||||||
manifests = config.installer.manifests;
|
|
||||||
|
|
||||||
tests = config.tests;
|
tests = config.tests;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,12 +25,10 @@
|
||||||
<arg choice='plain'><option>dry-run</option></arg>
|
<arg choice='plain'><option>dry-run</option></arg>
|
||||||
<arg choice='plain'><option>build-vm</option></arg>
|
<arg choice='plain'><option>build-vm</option></arg>
|
||||||
<arg choice='plain'><option>build-vm-with-bootloader</option></arg>
|
<arg choice='plain'><option>build-vm-with-bootloader</option></arg>
|
||||||
<arg choice='plain'><option>pull</option></arg>
|
|
||||||
</group>
|
</group>
|
||||||
<sbr />
|
<sbr />
|
||||||
<arg><option>--upgrade</option></arg>
|
<arg><option>--upgrade</option></arg>
|
||||||
<arg><option>--install-grub</option></arg>
|
<arg><option>--install-grub</option></arg>
|
||||||
<arg><option>--no-pull</option></arg>
|
|
||||||
<arg><option>--no-build-nix</option></arg>
|
<arg><option>--no-build-nix</option></arg>
|
||||||
<arg><option>--fast</option></arg>
|
<arg><option>--fast</option></arg>
|
||||||
<arg><option>--rollback</option></arg>
|
<arg><option>--rollback</option></arg>
|
||||||
|
@ -170,17 +168,6 @@ $ ./result/bin/run-*-vm
|
||||||
partition, which is mounted read-only in the VM.</para>
|
partition, which is mounted read-only in the VM.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
|
||||||
<term><option>pull</option></term>
|
|
||||||
<listitem>
|
|
||||||
<para>This operation fetches the latest manifest in the Nixpkgs
|
|
||||||
channel to speed up subsequent <command>nix-env</command>
|
|
||||||
operations. This is useful if you are not using
|
|
||||||
<command>nix-channel</command> but still want to use pre-built
|
|
||||||
binary packages. It doesn’t reconfigure the system</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
|
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,6 @@ in
|
||||||
|
|
||||||
isoImage.volumeID = "NIXOS_${config.system.nixosVersion}";
|
isoImage.volumeID = "NIXOS_${config.system.nixosVersion}";
|
||||||
|
|
||||||
installer.nixosURL = "http://nixos.org/releases/nixos/nixos-${config.system.nixosVersion}";
|
|
||||||
|
|
||||||
boot.postBootCommands =
|
boot.postBootCommands =
|
||||||
''
|
''
|
||||||
# Provide the NixOS/Nixpkgs sources in /etc/nixos. This is required
|
# Provide the NixOS/Nixpkgs sources in /etc/nixos. This is required
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
# - copy closure of Nix to target device
|
# - copy closure of Nix to target device
|
||||||
# - register validity
|
# - register validity
|
||||||
# - with a chroot to the target device:
|
# - with a chroot to the target device:
|
||||||
# * do a nix-pull
|
|
||||||
# * nix-env -p /nix/var/nix/profiles/system -i <nix-expr for the configuration>
|
# * nix-env -p /nix/var/nix/profiles/system -i <nix-expr for the configuration>
|
||||||
# * run the activation script of the configuration (also installs Grub)
|
# * run the activation script of the configuration (also installs Grub)
|
||||||
|
|
||||||
|
@ -36,13 +35,6 @@ if ! test -e "$mountPoint/$NIXOS_CONFIG"; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Do a nix-pull to speed up building.
|
|
||||||
if test -n "@nixosURL@" -a ${NIXOS_PULL:-1} != 0; then
|
|
||||||
mkdir -p /nix/var/nix/channel-cache -m 0755
|
|
||||||
NIX_DOWNLOAD_CACHE=/nix/var/nix/channel-cache \
|
|
||||||
@nix@/bin/nix-pull @nixosURL@/MANIFEST || true
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Mount some stuff in the target root directory. We bind-mount /etc
|
# Mount some stuff in the target root directory. We bind-mount /etc
|
||||||
# into the chroot because we need networking and the nixbld user
|
# into the chroot because we need networking and the nixbld user
|
||||||
|
@ -116,6 +108,7 @@ export LC_TIME=
|
||||||
# Create a temporary Nix config file that causes the nixbld users to
|
# Create a temporary Nix config file that causes the nixbld users to
|
||||||
# be used.
|
# be used.
|
||||||
echo "build-users-group = nixbld" > $mountPoint/tmp/nix.conf
|
echo "build-users-group = nixbld" > $mountPoint/tmp/nix.conf
|
||||||
|
grep binary-caches /etc/nix/nix.conf >> $mountPoint/tmp/nix.conf
|
||||||
export NIX_CONF_DIR=/tmp
|
export NIX_CONF_DIR=/tmp
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -18,14 +18,11 @@ The operation is one of the following:
|
||||||
build-vm-with-bootloader:
|
build-vm-with-bootloader:
|
||||||
like build-vm, but include a boot loader in the VM
|
like build-vm, but include a boot loader in the VM
|
||||||
dry-run: just show what store paths would be built/downloaded
|
dry-run: just show what store paths would be built/downloaded
|
||||||
pull: just pull the NixOS channel manifest and exit
|
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
|
||||||
--upgrade fetch the latest version of NixOS before rebuilding
|
--upgrade fetch the latest version of NixOS before rebuilding
|
||||||
--install-grub (re-)install the Grub bootloader
|
--install-grub (re-)install the Grub bootloader
|
||||||
--pull do a nix-pull to get the latest NixOS channel
|
|
||||||
manifest
|
|
||||||
--no-build-nix don't build the latest Nix from Nixpkgs before
|
--no-build-nix don't build the latest Nix from Nixpkgs before
|
||||||
building NixOS
|
building NixOS
|
||||||
--rollback restore the previous NixOS configuration (only
|
--rollback restore the previous NixOS configuration (only
|
||||||
|
@ -49,7 +46,6 @@ EOF
|
||||||
# Parse the command line.
|
# Parse the command line.
|
||||||
extraBuildFlags=()
|
extraBuildFlags=()
|
||||||
action=
|
action=
|
||||||
pullManifest=
|
|
||||||
buildNix=1
|
buildNix=1
|
||||||
rollback=
|
rollback=
|
||||||
upgrade=
|
upgrade=
|
||||||
|
@ -60,15 +56,12 @@ while test "$#" -gt 0; do
|
||||||
--help)
|
--help)
|
||||||
showSyntax
|
showSyntax
|
||||||
;;
|
;;
|
||||||
switch|boot|test|build|dry-run|build-vm|build-vm-with-bootloader|pull)
|
switch|boot|test|build|dry-run|build-vm|build-vm-with-bootloader)
|
||||||
action="$i"
|
action="$i"
|
||||||
;;
|
;;
|
||||||
--install-grub)
|
--install-grub)
|
||||||
export NIXOS_INSTALL_GRUB=1
|
export NIXOS_INSTALL_GRUB=1
|
||||||
;;
|
;;
|
||||||
--pull)
|
|
||||||
pullManifest=1
|
|
||||||
;;
|
|
||||||
--no-build-nix)
|
--no-build-nix)
|
||||||
buildNix=
|
buildNix=
|
||||||
;;
|
;;
|
||||||
|
@ -127,24 +120,6 @@ if initctl status nix-daemon 2>&1 | grep -q 'running'; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Pull the manifests defined in the configuration (the "manifests"
|
|
||||||
# attribute). Wonderfully hacky.
|
|
||||||
if [ -n "$pullManifest" -o "$action" = pull ]; then
|
|
||||||
set -o pipefail
|
|
||||||
manifests=$(nix-instantiate --eval-only --xml --strict '<nixos>' -A manifests \
|
|
||||||
| grep '<string' | sed 's^.*"\(.*\)".*^\1^g')
|
|
||||||
set +o pipefail
|
|
||||||
if [ $? -ne 0 ]; then exit 1; fi
|
|
||||||
|
|
||||||
mkdir -p /nix/var/nix/channel-cache
|
|
||||||
for i in $manifests; do
|
|
||||||
NIX_DOWNLOAD_CACHE=/nix/var/nix/channel-cache nix-pull $i || true
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$action" = pull ]; then exit 0; fi
|
|
||||||
|
|
||||||
|
|
||||||
# If ‘--upgrade’ is given, run ‘nix-channel --update nixos’.
|
# If ‘--upgrade’ is given, run ‘nix-channel --update nixos’.
|
||||||
if [ -n "$upgrade" ]; then
|
if [ -n "$upgrade" ]; then
|
||||||
nix-channel --update nixos
|
nix-channel --update nixos
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# This module generates nixos-install, nixos-rebuild,
|
# This module generates nixos-install, nixos-rebuild,
|
||||||
# nixos-hardware-scan, etc.
|
# nixos-hardware-scan, etc.
|
||||||
|
|
||||||
{config, pkgs, modulesPath, ...}:
|
{ config, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
### implementation
|
### implementation
|
||||||
|
@ -23,7 +23,6 @@ let
|
||||||
|
|
||||||
inherit (pkgs) perl pathsFromGraph;
|
inherit (pkgs) perl pathsFromGraph;
|
||||||
nix = config.environment.nix;
|
nix = config.environment.nix;
|
||||||
nixosURL = cfg.nixosURL;
|
|
||||||
|
|
||||||
nixClosure = pkgs.runCommand "closure"
|
nixClosure = pkgs.runCommand "closure"
|
||||||
{ exportReferencesGraph = ["refs" config.environment.nix]; }
|
{ exportReferencesGraph = ["refs" config.environment.nix]; }
|
||||||
|
@ -84,29 +83,6 @@ in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
|
|
||||||
# FIXME: remove this option once we're using Nix 1.2.
|
|
||||||
installer.nixosURL = pkgs.lib.mkOption {
|
|
||||||
default = http://nixos.org/channels/nixos-unstable;
|
|
||||||
example = http://nixos.org/releases/nixos/nixos-0.1pre1234;
|
|
||||||
description = ''
|
|
||||||
URL of the Nixpkgs distribution to use when building the
|
|
||||||
installation CD.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# FIXME: idem.
|
|
||||||
installer.manifests = pkgs.lib.mkOption {
|
|
||||||
default = [ http://nixos.org/channels/nixos-unstable/MANIFEST ];
|
|
||||||
example =
|
|
||||||
[ http://nixos.org/channels/nixpkgs-unstable/MANIFEST
|
|
||||||
http://nixos.org/channels/nixos-stable/MANIFEST
|
|
||||||
];
|
|
||||||
description = ''
|
|
||||||
URLs of manifests to be downloaded when you run
|
|
||||||
<command>nixos-rebuild</command> to speed up builds.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
installer.enableGraphicalTools = pkgs.lib.mkOption {
|
installer.enableGraphicalTools = pkgs.lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
type = with pkgs.lib.types; bool;
|
type = with pkgs.lib.types; bool;
|
||||||
|
|
|
@ -131,6 +131,7 @@ in
|
||||||
spamd = 56;
|
spamd = 56;
|
||||||
networkmanager = 57;
|
networkmanager = 57;
|
||||||
nslcd = 58;
|
nslcd = 58;
|
||||||
|
scanner = 59;
|
||||||
|
|
||||||
# When adding a gid, make sure it doesn't match an existing uid.
|
# When adding a gid, make sure it doesn't match an existing uid.
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,12 @@ with pkgs.lib;
|
||||||
in mkIf config.hardware.sane.enable {
|
in mkIf config.hardware.sane.enable {
|
||||||
environment.systemPackages = [ pkg ];
|
environment.systemPackages = [ pkg ];
|
||||||
services.udev.packages = [ pkg ];
|
services.udev.packages = [ pkg ];
|
||||||
|
|
||||||
|
users.extraGroups = singleton {
|
||||||
|
name = "scanner";
|
||||||
|
gid = config.ids.gids.scanner;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -247,8 +247,8 @@ in
|
||||||
build-max-jobs = ${toString (cfg.maxJobs)}
|
build-max-jobs = ${toString (cfg.maxJobs)}
|
||||||
build-use-chroot = ${if cfg.useChroot then "true" else "false"}
|
build-use-chroot = ${if cfg.useChroot then "true" else "false"}
|
||||||
build-chroot-dirs = ${toString cfg.chrootDirs} $(echo $extraPaths)
|
build-chroot-dirs = ${toString cfg.chrootDirs} $(echo $extraPaths)
|
||||||
binary-caches = ${toString config.nix.binaryCaches}
|
binary-caches = ${toString cfg.binaryCaches}
|
||||||
trusted-binary-caches = ${toString config.nix.trustedBinaryCaches}
|
trusted-binary-caches = ${toString cfg.trustedBinaryCaches}
|
||||||
$extraOptions
|
$extraOptions
|
||||||
END
|
END
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -24,7 +24,8 @@ let
|
||||||
option classless_static_routes, ntp_servers, interface_mtu
|
option classless_static_routes, ntp_servers, interface_mtu
|
||||||
|
|
||||||
# A ServerID is required by RFC2131.
|
# A ServerID is required by RFC2131.
|
||||||
require dhcp_server_identifier
|
# Commented out because of many non-compliant DHCP servers in the wild :(
|
||||||
|
#require dhcp_server_identifier
|
||||||
|
|
||||||
# A hook script is provided to lookup the hostname if not set by
|
# A hook script is provided to lookup the hostname if not set by
|
||||||
# the DHCP server, but it should not be run by default.
|
# the DHCP server, but it should not be run by default.
|
||||||
|
|
|
@ -41,102 +41,45 @@ let
|
||||||
userOptions = {
|
userOptions = {
|
||||||
|
|
||||||
openssh.authorizedKeys = {
|
openssh.authorizedKeys = {
|
||||||
|
|
||||||
preserveExistingKeys = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
description = ''
|
|
||||||
If this option is enabled, the keys specified in
|
|
||||||
<literal>keys</literal> and/or <literal>keyFiles</literal> will be
|
|
||||||
placed in a special section of the user's authorized_keys file
|
|
||||||
and any existing keys will be preserved. That section will be
|
|
||||||
regenerated each time NixOS is activated. However, if
|
|
||||||
<literal>preserveExisting</literal> isn't enabled, the complete file
|
|
||||||
will be generated, and any user modifications will be wiped out.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
keys = mkOption {
|
keys = mkOption {
|
||||||
type = types.listOf types.string;
|
type = types.listOf types.string;
|
||||||
default = [];
|
default = [];
|
||||||
description = ''
|
description = ''
|
||||||
A list of verbatim OpenSSH public keys that should be inserted into the
|
A list of verbatim OpenSSH public keys that should be added to the
|
||||||
user's authorized_keys file. You can combine the <literal>keys</literal> and
|
user's authorized keys. The keys are added to a file that the SSH
|
||||||
|
daemon reads in addition to the the user's authorized_keys file.
|
||||||
|
You can combine the <literal>keys</literal> and
|
||||||
<literal>keyFiles</literal> options.
|
<literal>keyFiles</literal> options.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
keyFiles = mkOption {
|
keyFiles = mkOption {
|
||||||
#type = types.listOf types.string;
|
|
||||||
default = [];
|
default = [];
|
||||||
description = ''
|
description = ''
|
||||||
A list of files each containing one OpenSSH public keys that should be
|
A list of files each containing one OpenSSH public key that should be
|
||||||
inserted into the user's authorized_keys file. You can combine
|
added to the user's authorized keys. The contents of the files are
|
||||||
the <literal>keyFiles</literal> and
|
read at build time and added to a file that the SSH daemon reads in
|
||||||
<literal>keys</literal> options.
|
addition to the the user's authorized_keys file. You can combine the
|
||||||
|
<literal>keyFiles</literal> and <literal>keys</literal> options.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
mkAuthkeyScript =
|
authKeysFiles = let
|
||||||
let
|
mkAuthKeyFile = u: {
|
||||||
marker1 = "### NixOS auto-added key. Do not edit!";
|
target = "ssh/authorized_keys.d/${u.name}";
|
||||||
marker2 = "### NixOS will regenerate this file. Do not edit!";
|
mode = "0444";
|
||||||
users = map (userName: getAttr userName config.users.extraUsers) (attrNames config.users.extraUsers);
|
source = pkgs.writeText "${u.name}-authorized_keys" ''
|
||||||
usersWithKeys = flip filter users (u:
|
${concatStringsSep "\n" u.openssh.authorizedKeys.keys}
|
||||||
length u.openssh.authorizedKeys.keys != 0 || length u.openssh.authorizedKeys.keyFiles != 0
|
${concatMapStrings (f: builtins.readFile f + "\n") u.openssh.authorizedKeys.keyFiles}
|
||||||
);
|
'';
|
||||||
userLoop = flip concatMapStrings usersWithKeys (u:
|
};
|
||||||
let
|
usersWithKeys = attrValues (flip filterAttrs config.users.extraUsers (n: u:
|
||||||
authKeys = concatStringsSep "," u.openssh.authorizedKeys.keys;
|
length u.openssh.authorizedKeys.keys != 0 || length u.openssh.authorizedKeys.keyFiles != 0
|
||||||
authKeyFiles = concatStrings (map (x: " ${x}") u.openssh.authorizedKeys.keyFiles);
|
));
|
||||||
preserveExisting = if u.openssh.authorizedKeys.preserveExistingKeys then "true" else "false";
|
in map mkAuthKeyFile usersWithKeys;
|
||||||
in ''
|
|
||||||
mkAuthKeysFile "${u.name}" "${authKeys}" "${authKeyFiles}" "${preserveExisting}"
|
|
||||||
''
|
|
||||||
);
|
|
||||||
in ''
|
|
||||||
mkAuthKeysFile() {
|
|
||||||
local userName="$1"
|
|
||||||
local authKeys="$2"
|
|
||||||
local authKeyFiles="$3"
|
|
||||||
local preserveExisting="$4"
|
|
||||||
|
|
||||||
eval homeDir=~$userName
|
|
||||||
if ! [ -d "$homeDir" ]; then
|
|
||||||
echo "User $userName does not exist"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
if ! [ -d "$homeDir/.ssh" ]; then
|
|
||||||
mkdir -v -m 700 "$homeDir/.ssh"
|
|
||||||
chown "$userName":users "$homeDir/.ssh"
|
|
||||||
fi
|
|
||||||
local authKeysFile="$homeDir/.ssh/authorized_keys"
|
|
||||||
touch "$authKeysFile"
|
|
||||||
if [ "$preserveExisting" == false ]; then
|
|
||||||
rm -f "$authKeysFile"
|
|
||||||
echo "${marker2}" > "$authKeysFile"
|
|
||||||
else
|
|
||||||
sed -i '/${marker1}/ d' "$authKeysFile"
|
|
||||||
fi
|
|
||||||
IFS=,
|
|
||||||
for f in $authKeys; do
|
|
||||||
echo "$f ${marker1}" >> "$authKeysFile"
|
|
||||||
done
|
|
||||||
unset IFS
|
|
||||||
for f in $authKeyFiles; do
|
|
||||||
if [ -f "$f" ]; then
|
|
||||||
echo "$(cat "$f") ${marker1}" >> "$authKeysFile"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
chown "$userName" "$authKeysFile"
|
|
||||||
}
|
|
||||||
|
|
||||||
${userLoop}
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
|
@ -244,6 +187,11 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
authorizedKeysFiles = mkOption {
|
||||||
|
default = [];
|
||||||
|
description = "Files from with authorized keys are read.";
|
||||||
|
};
|
||||||
|
|
||||||
extraConfig = mkOption {
|
extraConfig = mkOption {
|
||||||
default = "";
|
default = "";
|
||||||
description = "Verbatim contents of <filename>sshd_config</filename>.";
|
description = "Verbatim contents of <filename>sshd_config</filename>.";
|
||||||
|
@ -305,7 +253,7 @@ in
|
||||||
home = "/var/empty";
|
home = "/var/empty";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.etc = [
|
environment.etc = authKeysFiles ++ [
|
||||||
{ source = "${pkgs.openssh}/etc/ssh/moduli";
|
{ source = "${pkgs.openssh}/etc/ssh/moduli";
|
||||||
target = "ssh/moduli";
|
target = "ssh/moduli";
|
||||||
}
|
}
|
||||||
|
@ -314,22 +262,10 @@ in
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.systemd.services."set-ssh-keys" =
|
|
||||||
{ description = "Update authorized SSH keys";
|
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
|
|
||||||
script = mkAuthkeyScript;
|
|
||||||
|
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
serviceConfig.RemainAfterExit = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.systemd.services.sshd =
|
boot.systemd.services.sshd =
|
||||||
{ description = "SSH Daemon";
|
{ description = "SSH Daemon";
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "set-ssh-keys.service" ];
|
|
||||||
|
|
||||||
path = [ pkgs.openssh ];
|
path = [ pkgs.openssh ];
|
||||||
|
|
||||||
|
@ -360,6 +296,9 @@ in
|
||||||
|
|
||||||
security.pam.services = optional cfg.usePAM { name = "sshd"; startSession = true; showMotd = true; };
|
security.pam.services = optional cfg.usePAM { name = "sshd"; startSession = true; showMotd = true; };
|
||||||
|
|
||||||
|
services.openssh.authorizedKeysFiles =
|
||||||
|
[ ".ssh/authorized_keys" ".ssh/authorized_keys2" "/etc/ssh/authorized_keys.d/%u" ];
|
||||||
|
|
||||||
services.openssh.extraConfig =
|
services.openssh.extraConfig =
|
||||||
''
|
''
|
||||||
PidFile /run/sshd.pid
|
PidFile /run/sshd.pid
|
||||||
|
@ -393,6 +332,8 @@ in
|
||||||
ChallengeResponseAuthentication ${if cfg.challengeResponseAuthentication then "yes" else "no"}
|
ChallengeResponseAuthentication ${if cfg.challengeResponseAuthentication then "yes" else "no"}
|
||||||
|
|
||||||
PrintMotd no # handled by pam_motd
|
PrintMotd no # handled by pam_motd
|
||||||
|
|
||||||
|
AuthorizedKeysFile ${toString cfg.authorizedKeysFiles}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
assertions = [{ assertion = if cfg.forwardX11 then cfgc.setXAuthLocation else true;
|
assertions = [{ assertion = if cfg.forwardX11 then cfgc.setXAuthLocation else true;
|
||||||
|
|
|
@ -75,7 +75,7 @@ let
|
||||||
{ services.httpd.enable = true;
|
{ services.httpd.enable = true;
|
||||||
services.httpd.adminAddr = "foo@example.org";
|
services.httpd.adminAddr = "foo@example.org";
|
||||||
services.httpd.servedDirs = singleton
|
services.httpd.servedDirs = singleton
|
||||||
{ urlPath = "/channels/nixos-unstable";
|
{ urlPath = "/binary-cache";
|
||||||
dir = "/tmp/channel";
|
dir = "/tmp/channel";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -125,7 +125,6 @@ let
|
||||||
"rm /etc/hosts",
|
"rm /etc/hosts",
|
||||||
"echo 192.168.1.1 nixos.org > /etc/hosts",
|
"echo 192.168.1.1 nixos.org > /etc/hosts",
|
||||||
"ifconfig eth1 up 192.168.1.2",
|
"ifconfig eth1 up 192.168.1.2",
|
||||||
"nixos-rebuild pull",
|
|
||||||
);
|
);
|
||||||
|
|
||||||
# Test nix-env.
|
# Test nix-env.
|
||||||
|
|
Loading…
Reference in New Issue