Commit Graph

176 Commits

Author SHA1 Message Date
Silvan Mosberger
374e6bcc40 treewide: Format all Nix files
Format all Nix files using the officially approved formatter,
making the CI check introduced in the previous commit succeed:

  nix-build ci -A fmt.check

This is the next step of the of the [implementation](https://github.com/NixOS/nixfmt/issues/153)
of the accepted [RFC 166](https://github.com/NixOS/rfcs/pull/166).

This commit will lead to merge conflicts for a number of PRs,
up to an estimated ~1100 (~33%) among the PRs with activity in the past 2
months, but that should be lower than what it would be without the previous
[partial treewide format](https://github.com/NixOS/nixpkgs/pull/322537).

Merge conflicts caused by this commit can now automatically be resolved while rebasing using the
[auto-rebase script](8616af08d9/maintainers/scripts/auto-rebase).

If you run into any problems regarding any of this, please reach out to the
[formatting team](https://nixos.org/community/teams/formatting/) by
pinging @NixOS/nix-formatting.
2025-04-01 20:10:43 +02:00
Silvan Mosberger
4f6e508a09
nixos/users-groups: Enforce ASCII usernames and fix repeated doubling of activation script runtime (#385904) 2025-03-19 17:33:49 +01:00
Philip Taron
f041d52e7b
nixos/users-groups: Add assert on null shells (#279431) 2025-03-07 12:54:52 -08:00
Silvan Mosberger
b602f86829 nixos/users-groups: Catch invalid usernames early
Prevents running into the problem from the parent commit in the first
place.
2025-02-28 22:33:55 +01:00
Sandro
d1c535f62a
nixos/user-groups: add a toggle for user account creation (#358646) 2025-02-27 23:47:20 +01:00
Sandro
03b6a553eb
nixos/users-groups: split isSystemUser/isNormalUser and uid check into two (#357944) 2025-02-16 20:35:45 +01:00
NotAShelf
1dd23b5d74
nixos/user-groups: add a toggle for user account creation
Microscopic change that allows users to toggle user accounts, per user, conditionally.
2025-02-02 02:07:03 +03:00
Peder Bergebakken Sundt
953f72e76e nixos/*: tag manpage references 2025-01-27 02:47:01 +01:00
Maximilian Bosch
cb9b3fd788
nixos/modules: remove a few whitespaces from the pw override parts
Otherwise the evaluation warnings have a two or even three lines of
whitespace between paragraphs.
2024-12-22 15:32:56 +01:00
fidgetingbits
52ce5caf36
nixos/users-groups: Correct and refactor password override documentation
Testing showed that the existing documentation regarding password override
ordering was incorrect. This commit corrects the errors and refactors
the way the text is constructed to make updating future ordering
changes significantly easier.
2024-12-15 12:21:32 +08:00
Sandro Jäckel
db0a0b1173
nixos/users-groups: split isSystemUser/isNormalUser and uid check into two
Before the error message only mentioned isSystemUser/isNormalUser which
lead to a confusing situation when setting isNormalUser and an uid like
500 which would generate an error like:

error:
Failed assertions:
- Exactly one of users.users.other.isSystemUser and users.users.other.isNormalUser must be set.

from which you cannot know that setting the uid to 500 *and* setting
isNormalUser is the actual problem.

With this patch the error looks like:

error:
Failed assertions:
- A user cannot have a users.users.fixme.uid set below 1000 and set users.users.fixme.isNormalUser.
Either users.users.fixme.isSystemUser must be set to true instead of users.users.fixme.isNormalUser
or users.users.fixme.uid must be changed to 1000 or above.
2024-11-22 15:46:00 +01:00
Maximilian Bosch
7cb22a0acb
nixos/users-groups: dump values of password options if multiple options have definitions
This was suggested since it might make it a little easier to identify
the places where the definitions come from.

Retrieving the effective definitions from the module-system seems
non-trivial, especially for submodules though, hence only the values are
shown for now.

I'd argue that especially the `password` option are mostly a convenience
thing for test setups. If the password is an actual secret, it should be
treated as such, i.e. `hashedPasswordFile` should be used.

For the `shadow` VM test, the new section of the warning looks like
this:

    The values of these options are:
    * users.users."leo".hashedPassword: "$6$ymzs8WINZ5wGwQcV$VC2S0cQiX8NVukOLymysTPn4v1zJoJp3NGyhnqyv/dAf4NWZsBWYveQcj6gEJr4ZUjRBRjM0Pj1L8TCQ8hUUp0"
    * users.users."leo".hashedPasswordFile: null
    * users.users."leo".password: null
    * users.users."leo".initialHashedPassword: "!"
    * users.users."leo".initialPassword: null
2024-10-17 17:41:34 +02:00
Philip Taron
1438803fb5
nixos/users-groups: avoid top level with lib; use lib before builtins (#327757) 2024-07-17 20:00:54 +02:00
stuebinm
6afb255d97 nixos: remove all uses of lib.mdDoc
these changes were generated with nixq 0.0.2, by running

  nixq ">> lib.mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> Inherit >> mdDoc[remove]" --batchmode nixos/**.nix

two mentions of the mdDoc function remain in nixos/, both of which
are inside of comments.

Since lib.mdDoc is already defined as just id, this commit is a no-op as
far as Nix (and the built manual) is concerned.
2024-04-13 10:07:35 -07:00
edef
725bb4e48c lib: add xor
This gets clumsily reimplemented in various places, to no useful end.
2024-04-04 19:46:58 +00:00
Adam Stephens
790fb86a7f
nixos/users-groups: move linger to oneshot and add nixos test 2024-03-21 19:51:05 -04:00
Adam Stephens
564c3749d9
nixos/users-groups: fix broken linger 2024-03-21 13:47:15 -04:00
Jordan Williams
8558d7b1ce
nixos/users-groups: Fix the update-lingering activation script failing
The update-lingering activation script currently fails during rebuilds.
This happens when removing a user with linger enabled.
The call to loginctl disable-linger runs for the non-existent user.
This returns an error code which causes the failure.

To mitigate this, this PR removes any residual linger files.
These are files named for the user in /var/lib/systemd/linger.
A simple check for user existence determines whether to delete the file.
This happens before the call to disable-linger to avoid any errors.

Fixes #283769.
2024-03-03 12:00:25 -06:00
Maximilian Bosch
f6954309e8
nixos/users-groups: warn on ambiguous password settings
After 4b128008c5 it took me a while in a
test setup to find out why `root` didn't have the password anymore I
declared in my config.

Because of that I got reminded how the order of preference works for the
password options:

    hashedPassword > password > hashedPasswordFile

If the user is new, initialPassword & initialHashedPassword are also
relevant. Also, the override is silent in contrast to any other
conflicting definition in NixOS.

To make this less surprising I decided to warn in such a case -
assertions would probably break too much that technically works as
intended.

Also removed the `initialHashedPassword` for `root`. This would cause a
warning whenever you set something in your own config and a `!` is added
automatically by `users-groups.pl`.

`systemd-sysusers` also seems to implement these precedence rules, so
having the warning for that case also seems useful.
2024-02-09 16:44:35 +01:00
nikstur
eec1845744 nixos/systemd-sysusers: init 2024-01-18 23:08:14 +01:00
Aneesh Agrawal
f4bd2c83e9 nixos/users-groups: Add assert on null shells
I recently set up a new machine with tmpfs-on-root
and switched to mutableUsers = false as part of that.
I missed that an existing user with `shell = null`
was no longer valid as part of this change.
(`shell = null` is still useful for `mutableUsers = true`.)

Add an assertion to prevent future issues.

Also fix a typo in an option name in a comment,
this confused me slightly
(I originally planned to extend that existing assertion.)
2024-01-07 13:32:24 -05:00
Alyssa Ross
59dc10b5a6 nixos/users-groups: fix confusing error message
If we include users with unset groups, we get this very confusing
message, with invalid Nix code:

       - The following users have a primary group that is undefined: qyliss
       Hint: Add this to your NixOS configuration:
         users.groups. = {};

We don't need to include such users in this check, since they'll be
caught anyway by this one:

       - users.users.qyliss.group is unset. This used to default to
       nogroup, but this is unsafe. For example you can create a group
       for this user with:
       users.users.qyliss.group = "qyliss";
       users.groups.qyliss = {};
2023-12-14 02:08:16 +01:00
Anthony Roussel
e30f48be94
treewide: fix redirected and broken URLs
Using the script in maintainers/scripts/update-redirected-urls.sh
2023-11-11 10:49:01 +01:00
Will Fancher
22325ce016 systemd-stage-1: Support for user shells 2023-10-21 13:24:16 -04:00
Vladimir Pouzanov
ed44cfb141
Merge branch 'master' into shellconfig 2023-10-14 08:38:25 +01:00
Artturi
5fabe8c9fd
Merge pull request #260764 from MatthewCash/fix/xdg-base-pam 2023-10-14 04:01:48 +03:00
Matthew_Cash
9c24f502b7
nixos/user-groups: fix environment.profiles using parameter expansion 2023-10-12 21:00:34 -07:00
Rebecca Kelly
e648d46465 nixos/users-groups: add user option to enable lingering
Adapted from
https://gist.github.com/graham33/fdbdcc18317a621d9dd54beb36be6683

Fixes #3702

Lingering users can still be managed mutably by root with `loginctl`,
but the settings here will take precedence when `nixos-rebuild` is run.
2023-10-10 08:53:48 -04:00
Bjørn Forsman
fa8ace3618 nixos: don't implicitly map missing user groups to nogroup
Before: `users.users.user1.group = "group-not-defined-anywhere-else"`
would result in user1 having the primary group `nogroup`, assigned at
activation time and only with a (easy to miss) warning from the
activation script. This behaviour is a security issue becase no files
should be owned by `nogroup` and it allows for unrelated users (and
services) to accidentally have access to files they shouldn't have.

After: The configuration above results in this eval error:
  - The following users have a primary group that is undefined: user1
  Hint: Add this to your NixOS config:
    users.groups.group-not-defined-anywhere-else = {};
2023-10-06 19:33:01 +02:00
Vladimir Pouzanov
093f354a17 nixos/users-groups: escape hatch for enabling a shell system-wide 2023-09-27 18:49:06 +02:00
Artturi
713af20167
Merge pull request #241518 from Gerg-L/use-xdg-base-directories 2023-09-25 00:45:31 +03:00
rnhmjoj
205b56cffc
nixos/user-groups: fixup of 5666a378 2023-09-13 11:44:19 +02:00
rnhmjoj
5666a378cb
nixos/users-groups: rename passwordFile in hashedPasswordFile
This avoids the possible confusion with `passwordFile` being the file
version of `password`, while it should contain the password hash.

Fixes issue #165858.
2023-09-08 21:19:40 +02:00
Ramses
76f8cf18d1 nixos/update-users-groups: no need to include extra package
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
2023-09-03 11:26:37 +02:00
r-vdp
d560a5e07d nixos/update-users-groups: fix cross compilation
Since #246772, cross compiled NixOS is broken because the DateTime perl
package that was used in the update-users-groups.pl script depends on
Testutf8 which does not cross compile (see #198548).

This PR drops the DateTime dependency in favour of TimePiece, which has
less dependencies and whose closure does cross compile.
2023-09-03 11:26:37 +02:00
Franz Pletz
da37904672
Merge pull request #246772 from R-VdP/nixos-user-expiry
nixos/update-users-groups: add support for account expiry
2023-08-26 02:41:34 +02:00
Gerg-L
bf383adf0a nixos/user-groups: Add to $NIX_PROFILES paths 2023-07-18 23:33:18 -04:00
Lily Foster
e9207b0501
nixos/*: unhide remaining systemd stage-1 options
These options were missed in NixOS/nixpkgs#226237, but they all were
specifically added for systemd stage-1.
2023-07-03 08:41:38 -04:00
Victor Engmark
b0a9abedea refactor: Use dummy variable name for unused value
As recommended by ShellCheck
<https://github.com/koalaman/shellcheck/wiki/SC2034>.
2023-06-08 15:11:35 +12:00
Will Fancher
e70b42bf61 systemd-initrd: Add users and groups with static IDs. 2023-04-12 13:55:50 -04:00
Jan Tojnar
5a3eb4f6fe nixos/users-groups: Fix password scheme validation
0d7cd66652 broke validation for hashes with options
such as those generated with `mkpasswd --method=sha-512 --rounds=1000000`:

    $6$rounds=1000000$xpzZ6Rfg873gZnDY$RxS7lpVnohfDrrKG3lt9UFHED1KoiPGzH7zQv/HzwalZepo/IfFtxw05ap25duEJSKYhC14.Fn9eXszEpWVtF.

This fixes it.
2023-04-03 02:16:07 +02:00
github-actions[bot]
f2ead7fbda
Merge master into staging-next 2023-03-24 12:01:43 +00:00
Ryan Lahfa
a119bfc80d
Merge pull request #211603 from farcaller/fish
Assert that fish configuration is enabled if any user has fish as their shell
2023-03-24 12:05:22 +01:00
Martin Weinelt
0d7cd66652
nixos/users-groups: Update password scheme validation
Updates the warnings message for statefully set up passwords, now that
weak algorithms have been removed from our libxcrypt package.

Additionall we now add proper validation for hashing schemes used in
`hashedPassword`.

Neither will prevent a rebuiild, but instead issue a warning, that this
requires immediate remediation, or else users will be unable to login.

Reuses the crypt scheme ids as provided by the libxcrypt package.
2023-03-13 07:54:27 +01:00
Lily Foster
c56e5ef801 nixos/users-groups: update option description to clarify initial* option precedence 2023-02-25 14:27:35 -05:00
Sandro
d26c778ade
Merge pull request #153127 from eyJhb/user-uids-fix
nixos/users+nixos/lightdm: fixed users starting at 1000, and system users below 1000
2023-01-30 11:32:10 +01:00
Vladimir Pouzanov
631b7f6f88 Add support for the other shells 2023-01-19 16:59:11 +00:00
Vladimir Pouzanov
59296fbbc3 Assert that fish configuration is enabled if any user has fish as their shell.
Suggested-By: matthiasbeyer
2023-01-19 16:28:54 +00:00
pennae
4c1cfbdb84 modules: add mkAliasOptionModuleMD
mkAliasOptionModule should not default to mdDoc descriptions because
that can break out-of-tree users of documentation infrastructure. add an
explicitly-MD variant for now, to be removed some time after the MD
transition is complete.
2023-01-05 02:33:13 +01:00
Sandro
73c0b5c4e8 nixos/users-groups: make isNormalUser description readable 2022-12-27 18:23:21 +01:00