Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions nixos/doc/manual/installation/installing.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,14 @@
</para>

<para>
You are logged-in automatically as <literal>root</literal>. (The
<literal>root</literal> user account has an empty password.)
You are logged-in automatically as <literal>nixos</literal>.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
You are logged-in automatically as <literal>nixos</literal>.
You are logged-in automatically as the <literal>nixos</literal> user.

The <literal>nixos</literal> user account has an empty password so you
can use <command>sudo</command> without a password.
</para>

<para>
If you downloaded the graphical ISO image, you can run <command>systemctl
start display-manager</command> to start KDE. If you want to continue on the
start display-manager</command> to start the desktop environment. If you want to continue on the
terminal, you can use <command>loadkeys</command> to switch to your
preferred keyboard layout. (We even provide neo2 via <command>loadkeys de
neo</command>!)
Expand Down Expand Up @@ -65,9 +66,9 @@

<para>
If you would like to continue the installation from a different machine you
need to activate the SSH daemon via <literal>systemctl start
sshd</literal>. In order to be able to login you also need to set a
password for <literal>root</literal> using <literal>passwd</literal>.
need to activate the SSH daemon via <command>systemctl start
sshd</command>. You then must set a password for either <literal>root</literal> or
<literal>nixos</literal> with <command>passwd></command> to be able to login.
</para>
</section>
</section>
Expand Down
6 changes: 6 additions & 0 deletions nixos/doc/manual/release-notes/rl-1909.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@
set up binfmt interpreters for each of those listed systems.
</para>
</listitem>
<listitem>
<para>
The installer now uses a less privileged <literal>nixos</literal> user whereas before we logged in as root.
Copy link
Member

@grahamc grahamc Aug 12, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The installer now uses a less privileged <literal>nixos</literal> user whereas before we logged in as root.
The installer now uses the <literal>nixos</literal> user instead of <literal>root</literal>.

Copy link
Member

@grahamc grahamc Aug 12, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I drop "less privileged" because they're not actually less privileged., and saying it is might lead to questions about well how do I do the thing then.

To gain root privileges use <literal>sudo -i</literal> without a password.
</para>
</listitem>
</itemizedlist>
</section>

Expand Down
19 changes: 16 additions & 3 deletions nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,30 @@ with lib;
{
imports = [ ./installation-cd-base.nix ];

# Whitelist wheel users to do anything
# This is useful for things like pkexec
#
# WARNING: this is dangerous for systems
# outside the installation-cd and shouldn't
# be used anywhere else.
security.polkit.extraConfig = ''
polkit.addRule(function(action, subject) {
if (subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});
'';

services.xserver = {
enable = true;

# Don't start the X server by default.
autorun = mkForce false;

# Automatically login as root.
# Automatically login as nixos.
displayManager.slim = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I won't ask it of this PR, but slim is long abandoned. We should get off of it sometime :)

Copy link
Contributor Author

@worldofpeace worldofpeace Aug 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, I raised this in #66313 (comment) at the very end. Some people had strong opinions though in the past.

enable = true;
defaultUser = "root";
defaultUser = "nixos";
autoLogin = true;
};

Expand All @@ -33,7 +47,6 @@ with lib;

# Enable sound in graphical iso's.
hardware.pulseaudio.enable = true;
hardware.pulseaudio.systemWide = true; # Needed since we run plasma as root.

environment.systemPackages = [
# Include gparted for partitioning disks.
Expand Down
17 changes: 11 additions & 6 deletions nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# This module defines a NixOS installation CD that contains X11 and
# Plasma5.
# Plasma 5.

{ config, lib, pkgs, ... }:

Expand Down Expand Up @@ -30,15 +30,20 @@ with lib;
Version=1.0
Type=Application
Name=NixOS Manual
Exec=firefox ${config.system.build.manual.manualHTMLIndex}
Copy link
Contributor Author

@worldofpeace worldofpeace Aug 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just realized that nixos-manual.desktop generation isn't needed anymore,
as nixos-manual has a desktop item that will intelligently launch the default browser.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So this can be removed?

Exec=firefox ${config.system.build.manual.manual}/share/doc/nixos/index.html
Icon=text-html
'';

homeDir = "/home/nixos/";
desktopDir = homeDir + "Desktop/";

in ''
mkdir -p /root/Desktop
ln -sfT ${manualDesktopFile} /root/Desktop/nixos-manual.desktop
ln -sfT ${pkgs.konsole}/share/applications/org.kde.konsole.desktop /root/Desktop/org.kde.konsole.desktop
ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop /root/Desktop/gparted.desktop
mkdir -p ${desktopDir}
chown nixos ${homeDir} ${desktopDir}

ln -sfT ${manualDesktopFile} ${desktopDir + "nixos-manual.desktop"}
ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop ${desktopDir + "gparted.desktop"}
ln -sfT ${pkgs.konsole}/share/applications/org.kde.konsole.desktop ${desktopDir + "org.kde.konsole.desktop"}
'';

}
27 changes: 20 additions & 7 deletions nixos/modules/profiles/installation-device.nix
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,35 @@ with lib;
#services.rogue.enable = true;

# Disable some other stuff we don't need.
security.sudo.enable = mkDefault false;
services.udisks2.enable = mkDefault false;

# Use less privileged nixos user
users.users.nixos = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" "video" ];
# Allow the graphical user to login without password
initialHashedPassword = "";
};

# Allow the user to log in as root without a password.
users.users.root.initialHashedPassword = "";

# Allow passwordless sudo from nixos user
security.sudo = {
enable = mkDefault true;
wheelNeedsPassword = mkForce false;
};

# Automatically log in at the virtual consoles.
services.mingetty.autologinUser = "root";
services.mingetty.autologinUser = "nixos";

# Some more help text.
services.mingetty.helpLine =
''

The "root" account has an empty password. ${
The "nixos" and "root" account have empty passwords. ${
optionalString config.services.xserver.enable
"Type `systemctl start display-manager' to\nstart the graphical user interface."}
"Type `sudo systemctl start display-manager' to\nstart the graphical user interface."}
'';

# Allow sshd to be started manually through "systemctl start sshd".
Expand Down Expand Up @@ -86,8 +102,5 @@ with lib;
# because we have the firewall enabled. This makes installs from the
# console less cumbersome if the machine has a public IP.
networking.firewall.logRefusedConnections = mkDefault false;

# Allow the user to log in as root without a password.
users.users.root.initialHashedPassword = "";
};
}
33 changes: 24 additions & 9 deletions pkgs/tools/misc/gparted/default.nix
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{ stdenv, fetchurl, intltool, gettext, makeWrapper
, parted, glib, libuuid, pkgconfig, gtkmm3, libxml2, hicolor-icon-theme
, gpart, hdparm, procps, utillinux
{ stdenv, fetchurl, intltool, gettext, makeWrapper, coreutils, gnused, gnome3
, gnugrep, parted, glib, libuuid, pkgconfig, gtkmm3, libxml2, hicolor-icon-theme
, gpart, hdparm, procps, utillinux, polkit, wrapGAppsHook, substituteAll
}:

stdenv.mkDerivation rec {
Expand All @@ -11,16 +11,31 @@ stdenv.mkDerivation rec {
sha256 = "0mdvn85jvy72ff7nds3dakx9kzknh8gx1z8i0w2sf970q03qp2z4";
};

# Tries to run `pkexec --version` to get version.
# however the binary won't be suid so it returns
# an error preventing the program from detection
patches = [
(substituteAll {
src = ./polkit.patch;
polkit_version = polkit.version;
})
];

configureFlags = [ "--disable-doc" ];

buildInputs = [ parted glib libuuid gtkmm3 libxml2 hicolor-icon-theme ];
nativeBuildInputs = [ intltool gettext makeWrapper pkgconfig ];
buildInputs = [ parted glib libuuid gtkmm3 libxml2 hicolor-icon-theme polkit.bin gnome3.adwaita-icon-theme ];
nativeBuildInputs = [ intltool gettext pkgconfig wrapGAppsHook ];

preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : "${stdenv.lib.makeBinPath [ gpart hdparm utillinux procps coreutils gnused gnugrep ]}"
)
'';

# Doesn't get installed automaticallly if PREFIX != /usr
postInstall = ''
wrapProgram $out/bin/gparted \
--prefix PATH : "${procps}/bin"
wrapProgram $out/sbin/gpartedbin \
--prefix PATH : "${stdenv.lib.makeBinPath [ gpart hdparm utillinux ]}"
install -D -m0644 org.gnome.gparted.policy \
$out/share/polkit-1/actions/org.gnome.gparted.policy
'';

meta = with stdenv.lib; {
Expand Down
12 changes: 12 additions & 0 deletions pkgs/tools/misc/gparted/polkit.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
diff -ru old/gparted-1.0.0/configure gparted-1.0.0/configure
--- old/gparted-1.0.0/configure 2019-05-29 12:02:13.000000000 -0400
+++ gparted-1.0.0/configure 2019-08-08 18:09:52.792795781 -0400
@@ -16145,7 +16145,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pkexec >= $PKEXEC_REQUIRED_VERSION" >&5
$as_echo_n "checking for pkexec >= $PKEXEC_REQUIRED_VERSION... " >&6; }
PKEXEC_REQUIRED_INT=`echo "$PKEXEC_REQUIRED_VERSION" | $AWK -F. '{print $1 * 10000 + $2}'`
-PKEXEC_VERSION_OUTPUT=`pkexec --version 2> /dev/null` ||
+PKEXEC_VERSION_OUTPUT='pkexec version @polkit_version@' ||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
$as_echo "not found" >&6; }
if test "x$PKEXEC_VERSION_OUTPUT" != 'x'; then