Commit Graph

89 Commits

Author SHA1 Message Date
Pol Dellaiera
b5c90bbeb3
Merge pull request #283634 from itzwam/master
nixos-rebuild: Fetch Flake's default configurationName (Hostname) from targetHost
2024-05-07 13:12:17 +02:00
éclairevoyant
2680b60c30
nixos-rebuild: avoid rebuilding nix / reexecuting nixos-rebuild for list-generations 2024-04-23 15:03:52 -04:00
Sandro
65b10c53d1
Merge pull request #288610 from sephii/nixos-rebuild-remote-specialisation
nixos-rebuild: fix --specialisation with remote builder and target
2024-04-20 21:11:35 +02:00
Robert Hensing
9ffe63c6fa
Merge pull request #300335 from amarshall/nixos-rebuild-repl-path
nixos-rebuild: Fix `repl` with a relative flake path
2024-04-02 14:22:49 +02:00
Andrew Marshall
228dc7eaf4 nixos-rebuild: Fix repl with a relative flake path
Most nixos-rebuild commands support a relative flake path, however
`repl` uses `builtins.getFlake` and that requires an absolute path. So
ensure we pass an absolute path to it, providing UX consistency. Only do
so when the path exists in order to passthrough URLs as-is.
2024-04-01 16:29:54 -04:00
Philip Taron
a696dbb659
nixos-rebuild: use substitute rather than substituteAll
No change in produced output.
2024-03-30 12:00:21 -07:00
Thiago Kenji Okada
48f9437cd1
Merge pull request #263360 from duament/nixos-rebuild-pipe
nixos-rebuild: use --pipe instead of --pty in systemd-run
2024-03-28 18:25:08 +00:00
K900
99bebcbfa4 nixos-rebuild: avoid --preserve-env
sudo-rs does not support it, but also it's just spooky action at a distance.
2024-02-18 10:24:51 +03:00
Sylvain Fankhauser
a77bfd0f15
nixos-rebuild: fix --specialisation with remote builder and target
Fixes #286066.
2024-02-13 18:06:08 +01:00
Jacek Galowicz
3dbf54decb nixos-rebuild: Fix "too long for Unix domain socket" errors due to long
TMPDIR
2024-01-29 06:27:30 +01:00
Antoine Toinux
03b68f1431 nixos-rebuild: Fetch Flake's default configurationName (Hostname) from targetHost 2024-01-26 15:47:04 +01:00
Rvfg
ff3d9902e0
nixos-rebuild: use --pipe instead of --pty in systemd-run 2024-01-26 13:10:22 +08:00
Robert Hensing
e0000983db
Merge pull request #279170 from SuperSandro2000/nixos-repl-lib
nixos-rebuild: add lib to repl to make debugging even easier
2024-01-19 12:29:04 +01:00
Robert Hensing
d059ce52ce nixos-rebuild: Partially future-proof the repl test 2024-01-18 18:04:46 +01:00
Robert Hensing
71154a6e30 nixos-rebuild: Test the repl subcommand 2024-01-18 18:04:46 +01:00
Robert Hensing
8be52599b7 nixos-rebuild: Prefer the module lib when available
pkgs.lib and lib need not match, so prefer the one that the modules get.

For example:

```nix
nix-repl> :lf nixpkgs
nix-repl> (lib.nixosSystem { modules = [ ({ lib, ... }: assert lib?nixosSystem; { nixpkgs.hostPlatform = "x86_64-linux"; }) ]; }).pkgs.lib?nixosSystem
false
```

The code is backwards compatible, for the case where you evaluate a
config whose nixpkgs doesn't have the preceding commit yet.
2024-01-15 00:28:36 +01:00
Robert Hensing
c8c3c5854e nixos-rebuild: Avoid empty command
"${a[@]}" => ok
"${foo:+a[@]}" => empty string when length is 0
2024-01-14 04:03:25 +01:00
Robert Hensing
472dfb3888 nixos-rebuild: Add tty only to "sudo-able" commands for target
This solves again the problem solved by 09fd207cb8.

To quote:

> We always want to use `ssh -t` to force PTY allocation as there may be
> interactive SSH prompts like trusting unknown hosts.

However, the creation of a pseudoterminal causes the remote stdout and stderr
to point to the same tty, resulting in a single stream in the ssh client,
which breaks other usages of ssh, such as `--build-host`.

Hence, this commit only sets the flag for invocations that need it -
or would need it if sudo were disabled. That should help with development
and gives a somewhat more consistent user experience.
2024-01-14 01:14:33 +01:00
Robert Hensing
99d3e0c168 Revert "nixos-rebuild: fix entering sudo password over SSH"
This reverts commit 09fd207cb8.

It caused a regression when using `--build-host` and flakes.
See https://github.com/NixOS/nixpkgs/pull/277642#issuecomment-1890783714
2024-01-14 00:48:53 +01:00
Michael Hoang
cd61094234 nixos-rebuild: fix systemd-run hanging over SSH 2024-01-07 03:40:01 +11:00
Michael Hoang
09fd207cb8 nixos-rebuild: fix entering sudo password over SSH
We always want to use `ssh -t` to force PTY allocation as there may be
interactive SSH prompts like trusting unknown hosts.
2024-01-07 03:40:01 +11:00
Michael Hoang
5aad97fcff nixos-rebuild: only use sudo when necessary 2024-01-07 03:40:01 +11:00
Michael Hoang
b09de27cd6 nixos-rebuild: add --target-host test 2024-01-07 03:40:01 +11:00
Sandro Jäckel
50d0eb6c9f
nixos-rebuild: add lib to repl to make debugging even easier 2024-01-06 15:34:45 +01:00
Linus Heckemann
bb2a5d8706
Merge pull request #270212 from SuperSandro2000/nixos-rebuild-accept-flake-config
nixos-rebuild: passthru accept-flake-config
2023-12-14 14:39:07 +01:00
Robert Hensing
0e062cb692 nixos-rebuild: Add nixos-rebuild repl
Apologies to the non-flake users; your repl isn't quite as fancy,
but at least evaluates your config exactly as you would expect,
unlike flakes which are only evaluated impurely for now.
2023-12-10 06:36:02 +01:00
Sandro Jäckel
89ef7b76f3
nixos-rebuild: passthru accept-flake-config 2023-12-04 22:33:25 +01:00
Michael Lohmann
67c354b081 nixos-rebuild: remove manpage hint on feature that is not merged
This is a hint that mentions the feature #105910 but that is not yet
merged. This is very confusing and since it there is no progress with
that merge we should remove the reference
2023-11-27 12:35:40 +01:00
Samuel Dionne-Riel
c95728ce72
Merge pull request #262684 from samueldr/feature/nixos-rebuild-completions
nixos-rebuild: Locally own the nixos-rebuild (bash) completions
2023-11-05 22:41:03 -05:00
Thiago Kenji Okada
ccebc89954 nixos/tests: add nixos-rebuild-install-bootloader 2023-10-23 12:39:40 +01:00
Thiago Kenji Okada
b269e6853e nixos-rebuild: fix --install-bootloader flag with systemd-run 2023-10-22 12:19:59 +01:00
Samuel Dionne-Riel
a5e30e71b6 nixos-rebuild: Locally own the nixos-rebuild completion 2023-10-22 03:18:50 -04:00
Samuel Dionne-Riel
61d5040ef1 nixos-rebuild: Drop incorrectly implemented short args for build/target host
*Nobody* uses them, or else it'd have been fixed already.
2023-10-22 02:42:48 -04:00
Thiago Kenji Okada
ecd89093e1 nixos-rebuild: run activation inside systemd-run
Right now, running `nixos-rebuild switch` in a remote system via SSH may
put the system in an unusable state by restarting services (e.g.:
network ones like systemd-networkd.service) during the update. This will
cause the SSH to lose access to the TTY, stopping the process entirely.

This commit wraps up the call to `switch-to-configuration` inside a
systemd-run call, making the switch resiliant against TTY loss, since it
will allocate its own TTY. For the user this should be entirely
transparent though, with the only visible change is that the
`switch-to-configuration` messages will be logged through journalctl
(e.g.: `journalctl -u nixos-rebuild-switch-to-configuration`).
2023-10-04 20:45:23 +01:00
Michael Lohmann
cc625486c4 nixos-rebuild: Add list-generations
Add new command `nixos-rebuild list-generations`. It will show an output
like

```
$ nixos-rebuild list-generations
Generation      Build-date               NixOS version           Kernel  Configuration Revision                    Specialisations
52   (current)  Fri 2023-08-18 08:17:27  23.11.20230817.0f46300  6.4.10  448160aeccf6a7184bd8a84290d527819f1c552c  *
51              Mon 2023-08-07 17:56:41  23.11.20230807.31b1eed  6.4.8   99ef480007ca51e3d440aa4fa6558178d63f9c42  *
```

This also mentions the change in the upcoming release notes
2023-09-10 15:13:04 +02:00
Doron Behar
68e6cc5831 nixos-rebuild: Include manual page in the package 2023-08-12 12:52:46 +03:00
Ilan Joselevich
fdf0c98ff4
nixos-rebuild: make --use-substitutes work with flakes 2023-07-08 00:11:51 +03:00
apfelkuchen06
619b142a7f nixos-rebuild: allow passing --log-format
This is benefitial when using nix-output-monitor.
2023-05-13 15:33:05 +02:00
Nick Cao
3cd694d1bd
Merge pull request #210382 from B4dM4n/nixos-rebuild-local
nixos-rebuild: Allow local builds when --target-host is used again
2023-01-23 16:37:41 +08:00
Patryk Wychowaniec
2c55eba8f4
nixos: add --specialisation to nixos-rebuild
This commit fixes a papercut in nixos-rebuild where people wanting to
switch to a specialisation (or test one) were forced to manually figure
out the specialisation's path and run its activation script - since now,
there's a dedicated option to do just that.

This is a backwards-compatible change which doesn't affect the existing
behavior, which - to be fair - might still be considered sus by some
people, the painful scenario here being:

- you boot into specialisation `foo`,
- you run `nixos-rebuild switch`,
- whoops, you're no longer at specialisation `foo`, but you're rather
  brought back to the base system.

(it's especially painful for cases where specialisation is used to load
extra drivers, e.g. Nvidia, since then launching `nixos-rebuild switch`,
while forgetting that you're inside a specialisation, can cause some
parts of your system to get accidentally unloaded.)

I've tried to mitigate that by improving specialisations so that they
create a dedicated file somewhere in `/run/current-system` containing
the specialisation's name (which `nixos-rebuild` could then use as the
default value for `--specialisation`), but I haven't been able to come
up with anything working (plus it would be a breaking change then).

Closes https://github.com/NixOS/nixpkgs/issues/174065
2023-01-15 18:16:49 +01:00
Fabian Möller
cc4de1aa3a
nixos-rebuild: Allow local builds when --target-host is used again
This is a followup of #148921, to allow local builds when
`--target-host` is used again. It also documents the change in
behavior, regarding the specialty of the `localhost` value.

By removing the special handling of an empty `buildHost` and non empty
`targetHost`, this change also slightly alters the behavior of
`nixos-rebuild`.

Originally by specifying `--target-host target --build-host ""`, the
now removed special case would transform those arguments to
`--target-host target --build-host target`.
Now the empty `--build-host` would result in a local build.
2023-01-13 10:16:46 +01:00
Victor Engmark
cbd1dc1e72 nixos-rebuild: Treat any build/target host as non-local
Closes #148918.
2023-01-01 00:28:02 -05:00
K900
28dae620b2 nixos-rebuild: always set flakeFlags
Otherwise a rebuild can fail when a flake is autodetected
in /etc/nixos/flake.nix and the system doesn't have flakes
globally enabled.
2022-07-29 10:05:18 +03:00
Marco Rebhan
0a71372a90
nixos-rebuild: Don't create out-link in PWD with test/dry-activate 2022-07-18 16:03:04 +02:00
Klemens Nanni
7a0549387b nixos-rebuild: Accept only one argument
Multiple arguments make no sense but they are accepted, the last one
winning.

Found editing a previous run from shell history and adding a command
rather than replacing it;  observe in verbose mode:

```
$ nixos-rebuild dry-run -v
building the system configuration...
Building in legacy (non-flake) mode.
No --build-host given, running nix-build locally
$ nix-build <nixpkgs/nixos> -A system -k -I nixpkgs=/home/kn/src/nixpkgs -v --dry-run
...
```

```
$ nixos-rebuild dry-run build -v
building Nix...
$ nix-instantiate <nixpkgs/nixos> --add-root /tmp/nixos-rebuild.jgEYqZ/nix.drv --indirect -A config.nix.package.out -I nixpkgs=/home/kn/src/nixpkgs -v
...
```

nixos-rebuild(8) already bails out on zero arguments, so do the same
when passing a second one.
2022-06-23 21:39:13 +04:00
Silvan Mosberger
204366af6d
Merge pull request #153981 from Enzime/nixos-rebuild-flake-reexec
nixos-rebuild: Reexec when using flakes
2022-03-25 18:16:22 +01:00
Profpatsch
a701c09286 nixos-rebuild: use log instead of echo, always print to stderr
Introduces a `log()` function, similar to `logVerbose()`, to replace
usage of `echo` for logging.
2022-03-23 11:49:59 +01:00
Sandro
46ddd465b9
Merge pull request #165302 from Profpatsch/nixos-rebuild-meta 2022-03-23 03:36:18 +01:00
Michal Sojka
611e9302f9 nixos-rebuild: add --no-flake switch
When a NixOS system uses flakes, i.e., /etc/nixos/flake.nix exists, it
is impossible to use nixos-rebuild to build a pre-flake
configuration.nix. Of course, one can directly use nix command to
build the configuration, but not everybody remembers the correct nix
options to do that.

With the new option, it is possible to build a pre-flake configuration
with command like this:

    nixos-rebuild build-vm -I nixos-config=./vm.nix --no-flake

The option might be useful for people following older pre-flake
tutorials on a flake-based system.
2022-03-22 19:03:10 +01:00
Profpatsch
c7172046c7 nixos-rebuild: add meta & add Profpatsch as maintainer 2022-03-22 18:35:33 +01:00