Commit Graph

380 Commits

Author SHA1 Message Date
Wolfgang Walther
91a8fee3aa treewide: remove redundant parentheses
Auto-fixed by nixf-diagnose.
2025-10-05 10:52:03 +02:00
misuzu
e7fa9ff16c nixos-init: init at 0.1.0 (#433154) 2025-09-23 12:48:56 +00:00
nikstur
d0c03e4c5a nixos-init: init at 0.1.0 2025-09-23 00:21:33 +02:00
Val Packett
313fa9dc99 nixos/top-level: fix cutoffPackages without initialRamdisk
In systems without initrd (e.g. containers) that also use system.replaceDependencies, we'd get:

error: attribute 'initialRamdisk' missing
at /nix/store/8vfhnwmmzqqzy97q9c5m4bzyaqqf63zy-source/nixos/modules/system/activation/top-level.nix:286:21:
   285|       cutoffPackages = mkOption {
   286|         default = [ config.system.build.initialRamdisk ];
      |                     ^

Make that initialRamdisk reference conditional on the initrd being enabled.
2025-09-18 18:59:45 -03:00
Will Fancher
6b5020dc9c nixos/top-level: Install 'bootStage2' as 'init' in all non-initrd configs
Eventually we'd like to change our posture on this, and somehow ensure
that 'init' is always our systemd binary, but for now containers
require us to do it this way.
2025-09-10 09:45:48 -04:00
nikstur
bc5eefd2a5 nixos/activation-script: disable userActivationScripts when system is not activatable 2025-08-10 22:43:42 +02:00
nikstur
d5ae87bdeb Revert "nixos: allow more things to be disabled" 2025-08-10 22:22:08 +02:00
nikstur
089e2e5eaf nixos/activation-script: disable userActivationScripts when system is not activatable 2025-07-31 20:42:36 +02:00
Wolfgang Walther
5a0711127c treewide: run nixfmt 1.0.0 2025-07-24 13:55:40 +02:00
Martin Weinelt
3beaa4d288 nixos/activatable-script: drop nettools dependency
The hostname is not set over nettools since d300940637.
2025-07-06 00:59:35 +02:00
Jared Baur
c59d4343f9 treewide: remove Perl-based switch-to-configuration 2025-06-11 08:56:42 -07:00
Ramses
139080c304 nixos/specialisation: escape and restrict specialisation names (#405393) 2025-05-17 19:47:05 +02:00
Will Fancher
4b0d1225f5 lib/asserts: Factor out NixOS's toplevel assertion / warning logic. 2025-05-14 01:21:10 -04:00
Berk D. Demir
e4bf5ce70d nixos/activation: Fix shellcheck test failure
lib/test.nix relies on `fileset.toSource` which creates a source dir
with the files of interest. `testers.shellcheck` passes all the files in
the source dir to shellcheck. The issue is related to relative path
sourcing, i.e. `source ./lib.sh` where shellcheck cannot make any
assumptions about the working directory.

Options were:
1) Disable this warning with a directive
   Prior disabling in the tree:
    - pkgs/tools/nix/info/info.sh
    - nixos/modules/testing/test-instrumentation.nix

2) Set source-path to SCRIPTDIR with a directive
   https://github.com/koalaman/shellcheck/wiki/Directive#source-path

   Even though we don't enable external script following for shellcheck
   with `-x` flag given every file in the source dir is passed, this
   directive seems to capture the intent to help shellcheck a bit
   better.

Went with option 2.
2025-05-12 09:58:28 -07:00
toborwinner
2b9fc0ccc5 nixos/specialisation: escape and restrict specialisation names
Prevent the specialisation names from containing a forward slash.
Also escape them to allow for spaces in specialisation names.
2025-05-09 00:10:54 +02:00
Raito Bezarius
139bfb5b5e nixos/system/activation/bootspec: generalize the bootspec tooling package
After RFC-0125 implementation, Determinate Systems was pinged multiple
times to transfer the repository ownership of the tooling to a
vendor-neutral repository.

Unfortunately, this never manifested. Additionally, the leadership of
the NixOS project was too dysfunctional to deal with this sort of
problem. It might even still be the case up to this day.

Nonetheless, nixpkgs is about enabling end users to enact their own
policies. It would be better to live in a world where there is one
obvious choice of bootspec tooling, in the meantime, we can live in a
world where people can choose their bootspec tooling.

The Lix forge possess one fork of the Bootspec tooling:
https://git.lix.systems/lix-community/bootspec which will live its own
life from now on.

Change-Id: I00c4dd64e00b4c24f6641472902e7df60ed13b55
Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
2025-04-24 18:22:02 +02:00
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
Connor Baker
cd7df192e3 treewide: add name argument to calls to testers.shellcheck 2025-03-08 00:15:22 +00:00
r-vdp
125edf8424 switch-to-configuration: don't block on flock, see 7a56ddaf9d 2025-02-17 13:14:25 +01:00
r-vdp
713607abea nixos/activation: document the arguments that are passed to the pre-switch-check script 2025-01-28 12:00:10 +01:00
r-vdp
e6bc540ce0 nixos/activation: pass the action as an argument to the pre-switch-checks
This allows for instance to reject switching into a configuration, while
still allowing to reboot into that same configuration.

This can be useful for instance to reject switching to a configuration
with a new systemd major version, but setting that same configuration as
the new boot default with `switch-to-configuration boot` is fine.
2025-01-28 11:40:38 +01:00
Peder Bergebakken Sundt
953f72e76e nixos/*: tag manpage references 2025-01-27 02:47:01 +01:00
r-vdp
73f3fe4839 nixos/activation: log output from pre-switch checks on stderr 2025-01-23 15:51:40 +01:00
r-vdp
113dbd79de nixos/activation: improve preSwitchChecks
A couple of improvements:

1. Avoid the generally discouraged apply argument to options, as it has
   quite weird semantics
2. Avoid issues when a user calls a preSwitchCheck `script`, which
   would've been silently overridden by the existing implementation.
   Reliance on a special attribute name like that is bound to lead to a
   very-hard-to-debug problem for someone at some point
3. Use writeShellApplication so that the preSwitchChecks are checked by
   shellcheck and and so that they run with basic bash guardrails
4. Fix shellcheck issue (testing the value of $?)
5. Add a positive preSwitchCheck to the nixos test, to make sure that
   that works as intended
2025-01-23 15:51:37 +01:00
piegames
dd7d5339f7 treewide: Fix incorrect string indentations 2025-01-07 19:49:28 +01:00
Will Fancher
15be453e9a switch-to-configuration: Better handling of socket-activated units (#359724) 2025-01-04 11:51:21 -05:00
Lucy
8a1561bba6 doc: Add warning for configuration file copy in flake systems 2024-12-29 10:39:46 +01:00
misuzu
b8be6313dc nixos/activation-script: check rmdir in usrbinenv (#264523) 2024-12-14 13:28:42 +02:00
misuzu
21e39e915f system/activation: mention deps attr in activationScripts example (#363915) 2024-12-11 20:01:19 +02:00
Silvan Mosberger
4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00
phaer
df8e6f7487 system/activation: mention deps attr in activationScripts example
As it helps making deps easier to discover - as we don't currently
render submodule options in the module correctly - and is arguably
more technical correct: When using nixos-install to install nixos
into a chroot in i.e. /mnt, there's no gurantee that /mnt/dev exists
before the specialfs phase ran.
2024-12-10 14:17:09 +01:00
misuzu
4b0caba2c5 nixos/activation, switch-to-configuration-ng, doc: improve NIXOS_LUSTRATE installation experience (#349049) 2024-12-01 19:16:26 +02:00
Andreas Fuchs
1fed2312e7 Add X-NotSocketActivated logic to switch-to-configuration.pl, as well 2024-11-29 09:53:10 -05:00
Jared Baur
6e192c4489 nixos/activation: Add pre-switch checks
Add an option for shell script fragments that are ran before switching
to a new NixOS system configuration (pre installation of bootloader or
system activation). Also add a new subcommand for
switch-to-configuration called "check" that will cause the program to
always exit after checks are ran.
2024-11-21 13:02:54 -08:00
Jeff Huffman
898c9e3c91 nixos/activation: prevent error during NIXOS_LUSTRATE install 2024-11-21 10:19:21 -05:00
Will Fancher
5d9ac94606 nixos/activation-script: Make installBootLoader default a script
Fixes #344535
2024-11-04 04:12:52 -05:00
Will Fancher
37ee6ba681 Revert "NixOS apply script"
Reverts #344407

This has broken nixos-rebuild switch so that it no longer updates the profile, which has bad consequences including not updating the systemd-boot menu with new generations.
2024-11-01 20:18:09 -04:00
Robert Hensing
514ea18006 nixos: Update s-t-c and apply help text 2024-10-30 00:23:37 +01:00
Robert Hensing
7902cea1de nixos: Update documentation to refer to bin/apply 2024-10-30 00:21:21 +01:00
Robert Hensing
6427500989 nixos/toplevel: Add bin/apply 2024-10-30 00:21:20 +01:00
Jared Baur
9bbef50e24 nixos/switchable-system: add evaluation warning when using perl stc 2024-10-24 08:50:51 -07:00
Jared Baur
81f92fbc29 nixos/switchable-system: nixfmt 2024-10-24 06:22:58 -07:00
r-vdp
24bf6e9cb8 nixos/etc-overlay: avoid rebuilding the initrd every time the etc contents change
Before this change, the hash of the etc metadata image was included in
the mount unit that's responsible for mounting this metadata image in the
initrd.
And because this metadata image changes with every change to the etc
contents, the initrd would be rebuild every time as well.
This can lead to a lot of rebuilds (especially when revision info is
included in /etc/os-release) and all these initrd archives use up a lot of
space on the ESP.

With this change, we instead include a symlink to the metadata image in the
top-level directory, in the same way as we already do for things like init and
prepare-root, and we deduce the store path from the init= kernel parameter,
in the same way as we already do to find the path to init and prepare-root.

Doing so avoids rebuilding the initrd all the time.
2024-10-16 17:42:58 +02:00
Jared Baur
c39781c558 nixos/activation-script: only setup nix tmpfiles if nix is enabled
If nix is not installed on the end system, the tmpfiles settings related
to it do not need to be setup.
2024-10-05 09:03:19 -07:00
Alois Wohlschlager
59ca239d1a replaceDirectDependencies: split off from replaceDependencies
This allows both swapping out and reusing the rewrite machinery.
2024-09-24 12:20:15 +02:00
Alois Wohlschlager
63d6a7037c nixos/top-level: wire up cutoffPackages for replaceDependencies
Move replaceRuntimeDependencies to the replaceDependencies namespace,
where the structure is more consistent with the replaceDependencies
function. This makes space for wiring up cutoffPackages as an option
too.

By default, the system's initrd is excluded. The replacement process does not
work properly anyway due to the structure of the initrd (the files being copied
into it, and it being compressed). In the worst case (which has been observed
to actually occur in practice), a store path makes it into the incompressible
parts of the archive, checksums are broken, and the system won't boot.
2024-09-24 12:20:15 +02:00
Alois Wohlschlager
d3abae8dee nixos/top-level: improve replaceRuntimeDependencies
Instead of iterating over all replacements and applying them one by one,
use the newly introduced replaceDependencies function to apply them all
at once for replaceRuntimeDependencies. The advantages are twofold in
case there are multiple replacements:
* Performance is significantly improved, because there is only one pass
  over the closure to be made.
* Correctness is improved, because replaceDependencies also replaces
  dependencies of the replacements themselves if applicable.

Fixes: https://github.com/NixOS/nixpkgs/issues/4336
2024-09-24 12:20:15 +02:00
Rick van Schijndel
cbf48cea2d activation: avoid error due to unset PATH variable (#340488) 2024-09-10 21:58:24 +02:00
K900
7771e0b943 nixos/specialisation: add isSpecialisation option to know if we're a specialisation 2024-09-08 17:04:44 +03:00
r-vdp
e2db383cb6 activation: avoid error due to unset PATH variable 2024-09-08 12:27:06 +02:00