Commit graph

983 commits

Author SHA1 Message Date
Eelco Dolstra
0e51dce778 nix-fallback-paths.nix: Update to 2.9.1 2022-06-09 09:00:27 +10:00
Erik Arvstedt
64589bcefa
nixos/netboot: use makeInitrdNG to shrink ramdisk size
Previously, `makeInitrd` added the whole closure of the squashfs
derivation to initrd.
This closure contains the squashfs.img and some store paths which are
still referenced by the compressed squashfs.img.
These extra store paths are unused in stage 1.

With `makeInitrdNG` only the squashfs.img is added to the initrd.
(`makeInitrdNG` only resolves shared library references instead of the
whole closure).

This shrinks the netboot ramdisk by ~6% for a minimal system and
significantly decreases the size of the uncompressed root filesystem
in stage 1.
2022-06-07 22:34:30 +02:00
Victor Fuentes
54fcba5b3b
installation-cd: prevent gnome from sleeping 2022-06-05 14:10:37 -07:00
Adam Joseph
c0085404bd lib/systems/inspect.nix: remove isPowerPC
Very confusingly, the `isPowerPC` predicate in
`lib/systems/inspect.nix` does *not* match `powerpc64le`!

This is because `isPowerPC` is defined as

  isPowerPC      = { cpu = cpuTypes.powerpc; };

Where `cpuTypes.powerpc` is:

  { bits = 32; significantByte = bigEndian; family = "power"; };

This means that the `isPowerPC` predicate actually only matches the
subset of machines marketed under this name which happen to be 32-bit
and running in big-endian mode which is equivalent to:

  with stdenv.hostPlatform; isPower && isBigEndian && is32bit

This seems like a sharp edge that people could easily cut themselves
on.  In fact, that has already happened: in
`linux/kernel/common-config.nix` there is a test which will always
fail:

  (stdenv.hostPlatform.isPowerPC && stdenv.hostPlatform.is64bit)

A more subtle case of the strict isPowerPC being used instead of the
moreg general isPower accidentally are the GHC expressions:

  Update pkgs/development/compilers/ghc/8.10.7.nix
  Update pkgs/development/compilers/ghc/8.8.4.nix
  Update pkgs/development/compilers/ghc/9.2.2.nix
  Update pkgs/development/compilers/ghc/9.0.2.nix
  Update pkgs/development/compilers/ghc/head.nix

Since the remaining legitimate use sites of isPowerPC are so few, remove
the isPowerPC predicate completely. The alternative expression above is
noted in the release notes as an alternative.

Co-authored-by: sternenseemann <sternenseemann@systemli.org>
2022-05-25 09:45:42 +02:00
Vladimír Čunát
90e10f361f
Merge #172668: installation-cd: add more guest tools to NixOS graphical installation base 2022-05-19 12:12:10 +02:00
ners
fb4fc93a3e Remove mkDefault 2022-05-17 10:36:59 +02:00
ners
3458d4cf89 installation-cd: remove broken virtualbox module 2022-05-16 12:34:55 +02:00
Eelco Dolstra
5ce31ec2fd
nix-fallback-paths.nix: Update to 2.8.1 2022-05-14 15:19:14 +02:00
Artturi
a0ed85ef29
Merge pull request #165876 from tpwrules/slim-eltorito
iso-image: slim down UEFI El Torito image
2022-05-13 14:30:38 +03:00
ners
49945f07cc installation-cd: add more guest tools to graphical installation base 2022-05-12 09:36:49 +02:00
Janne Heß
e6fb1e63d1
Merge pull request #171650 from helsinki-systems/feat/config-systemd-package
treewide: pkgs.systemd -> config.systemd.package
2022-05-09 10:23:04 +02:00
ajs124
e4a1b1aacd
Merge pull request #171588 from mweinelt/tools-userpkgs
nixos/tools: move firefox into user packages
2022-05-08 19:02:47 +01:00
K900
e994576b0d installation-cd-base: fix eval 2022-05-08 11:08:10 +03:00
Maximilian Bosch
f0bb39d4b7
Merge pull request #167327 from lheckemann/networkd-usedhcp
nixos/networkd: reimplement useDHCP in a sensible way
2022-05-07 00:05:44 +02:00
Maximilian Bosch
f4e5bd8064
nixos/nixos-generate-config: update comment for useDHCP 2022-05-06 16:56:47 +02:00
Janne Heß
57cd07f3a9
treewide: pkgs.systemd -> config.systemd.package
This ensures there is only one systemd package when e.g. testing the
next systemd version.
2022-05-05 20:00:31 +02:00
Martin Weinelt
6051f8028d
nixos/tools: move firefox into user packages
Installing Firefox is a good example for a package that could be
installed as a user, since it is a graphical one.

Also use thunderbird as a second example.
2022-05-05 00:41:55 +02:00
Victor Fuentes
89096bcce0
installation-cd: add calamares-plasma5 cd 2022-05-03 12:19:20 -04:00
Victor Fuentes
67b5b4cabf
installation-cd: add calamares-gnome cd 2022-05-03 12:19:20 -04:00
Bernardo Meurer
78f6f77962
Merge pull request #169113 from ElvishJerricco/systemd-stage-1-installer-tests
nixos: Installer tests for systemd stage 1
2022-04-30 13:18:57 -07:00
Maximilian Bosch
8e42949a24
nixos/nixos-generate-config: use networking.useDHCP by default
Currently we're still using scripted networking by default. A problem
with scripted networking is that having `useDHCP` on potentially
non-existing interfaces (e.g. an ethernet interface for USB tethering)
can cause the boot to hang.

Closes #107908
2022-04-30 00:30:47 +02:00
Bernardo Meurer
80d4480778
sd-image-aarch64: deduplicate cm4 section 2022-04-26 20:23:50 -07:00
Bernardo Meurer
11c1152e0f
sd-image-aarch64: add dtbs for rpi-400 and cm4s 2022-04-26 19:05:24 -07:00
Bernardo Meurer
b30105b7c2
ubootRaspberryCM4_64bit: merge with ubootRaspberryPi4_64bit 2022-04-26 19:05:23 -07:00
Bernardo Meurer
faf42ffbd0
ubootRaspberryCM4_64bit: init 2022-04-26 15:22:25 -07:00
Bernardo Meurer
d1fef1e7c3
sd-image-aarch64: add support for the RaspberryPi CM4 2022-04-26 15:22:24 -07:00
Bernardo Meurer
e8e87beee7
Merge pull request #169047 from helsinki-systems/feat/systemd-stage-1-filesystems
nixos/systemd-stage-1: Fixup most filesystem tasks
2022-04-25 15:02:29 -07:00
Robert Hensing
ecc66a886e
Merge pull request #168945 from Lassulus/kexec-tests
nixosTests.kexec: better test if we are in a new system
2022-04-25 17:17:32 +02:00
Janne Heß
160fb93fdc
nixos/filesystems: Make most simple filesystems compatible with systemd
This includes disabling some features in the initrd by default, this is
only done when the new initrd is used. Namely, ext and bcache are
disabled by default. bcache gets an own enable option while ext is
detected like any other filesystem.
2022-04-24 16:32:34 +02:00
Linus Heckemann
c85bc19cdf
Merge pull request #169303 from emccorson/fix/add-copy-system-config
nixos/tools: add copySystemConfiguration to configuration file template
2022-04-24 00:01:00 +02:00
Pol Dellaiera
b555b64346
nixVersions.stable: 2.7.0 -> 2.8.0 2022-04-21 19:43:40 +02:00
Eric Corson
0edfd89d6e nixos/tools: add copySystemConfiguration to configuration file template 2022-04-19 10:53:47 +01:00
lassulus
e097044b92 nixos/kexec-boot: auto-detect the right kernel name to support aarch64 2022-04-18 20:34:18 +02:00
Will Fancher
f3f2e55e59 nixos: Fix channel copying in installer tests with systemd stage 1 2022-04-17 18:31:35 -04:00
Thomas Watson
0931014baf iso-image: slim down UEFI El Torito image
UEFI firmware does not have to be able to read ISO9660 filesystems, so
the El Torito mechanism provides a way to specify an embedded FAT32
image which contains files the UEFI firmware itself must be able to
read, such as UEFI executables. Once GRUB starts and reads its
configuration, it can access the ISO9660 filesystem to load other files.

This change removes the unused kernel, initrd, and GRUB font files from
the El Torito image, but keeps the GRUB configuration and UEFI
executables. These files have been present since EFI support was
originally introduced in commit 097c656. Other distribution ISOs, such
as Ubuntu 20.04, Fedora 35, and Windows 10 work this way too. This saves
24MiB on x86_64 and 61MiB on aarch64 ISOs.
2022-04-13 20:26:11 -05:00
Florian Klink
8ea2f75b72 nixos/kexec-boot: use dirname of script to resolve bzImage and initrd.gz
This will allow invoking the `kexec-boot` script without `cd`-ing into
its folder first.
2022-04-13 13:26:04 +02:00
Florian Klink
366c8be2ad nixos/installer: add kexec-boot
This module exposes a config.system.build.kexecBoot attribute,
which returns a directory with kernel, initrd and a shell script
running the necessary kexec commands.

It's meant to be scp'ed to a machine with working ssh and kexec binary
installed.

This is useful for (cloud) providers where you can't boot a custom image, but
get some Debian or Ubuntu installation.
2022-04-13 13:25:22 +02:00
Daniel Kilimnik
206e030ce2 installer/cd-dvd/iso-image: add syslinuxTheme config option
It was not possible to change the theme used by syslinux when building an iso image.
2022-03-25 21:37:20 +01:00
Robert Hensing
ce5a33e62b
Merge pull request #164660 from ncfavier/tests-restrict-arguments
nixos/testing: restrict arguments to makeTest
2022-03-24 17:01:47 +01:00
Artturi
6134c2f891
Merge pull request #161034 from andr1an/fix/nixos-generate-config-absolute-root-path 2022-03-22 02:35:06 +02:00
Robert Hensing
6c469679f6 Merge remote-tracking branch 'upstream/master' into tests-restrict-arguments 2022-03-21 23:17:17 +01:00
Robert Hensing
eb8b70c020 nixos: Make config.nix.enable pass test 2022-03-21 23:14:10 +01:00
Artturin
611b8c4472 nixos/nixos-generate-config: fix specifying --root /mnt --dir adir
it should save to `$PWD/adir` instead of `/mnt/adir`
and --dir adir should save to `$PWD/adir` instead of `/adir`
2022-03-18 23:16:19 +02:00
andr1an
00487b5a87 nixos/nixos-generate-config: resolve abspath to root 2022-03-18 23:16:06 +02:00
Ben Wolsieffer
69cff425e6 nixos/nixos-enter: cleanup resolv.conf handling 2022-03-18 12:19:09 -04:00
Ben Wolsieffer
1ee3d9477b nixos/nixos-enter: fix resolv.conf error handling 2022-03-18 12:19:02 -04:00
Nick Cao
3c09fec700
nix-fallback-paths.nix: Update to 2.7.0 2022-03-08 22:40:16 +08:00
Samuel Dionne-Riel
0adf99aee4
Merge pull request #156005 from zhaofengli/pi02
Update Raspberry Pi packages
2022-02-24 15:05:23 -05:00
Jan Tojnar
f9e65e44e5
Merge pull request #160891 from jtojnar/gnome-iso-shortcuts
installation-cd-graphical-gnome: add useful shortcuts to the dash
2022-02-21 07:00:49 +01:00
Maximilian Bosch
1659bca6b7
nixos-build-vms(8): $out/bin/nixos-run-vms should non-interactively start VMs
Not entirely sure when it got broken this time, but when creating a VM
network with `nixos-build-vms(8)`, there are should be the following scripts:

* `$out/bin/nixos-test-driver` which drops into an interactive shell to
  interactively perform test steps.
* `$out/bin/nixos-run-vms` which non-interactively starts the VMs from
  the network so that one can manually play around in the VM.

The latter also starts an interactive shell for a while now which means
that it does the exact same thing as `nixos-test-driver` which is not
its purpose.
2022-02-19 19:43:34 +01:00
Jan Tojnar
e9cade383c installation-cd-graphical-gnome: add useful shortcuts to the dash
The live image is primarily used for installation so we should make
link to manual as well as other useful tools front and center,
instead of having them buried in the app drawer.

The default GNOME apps can still be found there when the ISO
is used for demonstration purposes.
2022-02-19 14:08:32 +01:00
Zhaofeng Li
1781d283f3 sd-image-aarch64: Enable arm_boost for Pi 4
This is effective on the Pi 400 and on newer board revisions of the
Pi 4B. From the official documentation:

> New Raspberry Pi OS images from Bullseye onwards come with
> this setting by default.

<https://www.raspberrypi.com/documentation/computers/config_txt.html>
2022-02-12 00:04:48 -08:00
Zhaofeng Li
963f011f16 sd-image-aarch64.nix: Add config for Pi Zero 2 W 2022-02-12 00:04:48 -08:00
Artturin
b4adac9ba9 nixos/nixos-generate-config: move dhcpConfig from configuration.nix to hardware-configuration.nix 2022-02-09 19:35:19 +02:00
Artturin
aaf13bb3bd nixos/nixos-generate-config: fix proram path replacements
btrfs-progs was made optional in 2019 c01ea27ce3
because it didn't cross-compile. it now does
2022-02-09 18:38:17 +02:00
Artturin
b2eacd1595 nixos/tools: add more keymap options to configuration template 2022-02-09 18:38:17 +02:00
Artturin
801dca549f nixos/tools: add networkmanager to configuration template 2022-02-09 18:38:17 +02:00
Bernardo Meurer
f46347fa66
nix-fallback-paths: update to 2.6.0 2022-01-31 18:53:43 -08:00
polykernel
4a9d9928dc nixos/nix-daemon: use structural settings
The `nix.*` options, apart from options for setting up the
daemon itself, currently provide a lot of setting mappings
for the Nix daemon configuration. The scope of the mapping yields
convience, but the line where an option is considered essential
is blurry. For instance, the `extra-sandbox-paths` mapping is
provided without its primary consumer, and the corresponding
`sandbox-paths` option is also not mapped.

The current system increases the maintenance burden as maintainers have to
closely follow upstream changes. In this case, there are two state versions
of Nix which have to be maintained collectively, with different options
avaliable.

This commit aims to following the standard outlined in RFC 42[1] to
implement a structural setting pattern. The Nix configuration is encoded
at its core as key-value pairs which maps nicely to attribute sets, making
it feasible to express in the Nix language itself. Some existing options are
kept such as `buildMachines` and `registry` which present a simplified interface
to managing the respective settings. The interface is exposed as `nix.settings`.

Legacy configurations are mapped to their corresponding options under `nix.settings`
for backwards compatibility.

Various options settings in other nixos modules and relevant tests have been
updated to use structural setting for consistency.

The generation and validation of the configration file has been modified to
use `writeTextFile` instead of `runCommand` for clarity. Note that validation
is now mandatory as strict checking of options has been pushed down to the
derivation level due to freeformType consuming unmatched options. Furthermore,
validation can not occur when cross-compiling due to current limitations.

A new option `publicHostKey` was added to the `buildMachines`
submodule corresponding to the base64 encoded public host key settings
exposed in the builder syntax. The build machine generation was subsequently
rewritten to use `concatStringsSep` for better performance by grouping
concatenations.

[1] - https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md
2022-01-26 21:04:50 -05:00
Samuel Dionne-Riel
18ebd1c330
Merge pull request #153409 from tpwrules/fix-nonx86-iso-reproducibility
installer/cd-dvd/iso-image: avoid leaking build timestamps on non-x86
2022-01-23 21:15:26 -05:00
0x4A6F
98590033ad
Merge pull request #154372 from zhaofengli/sd-image-rv64-installer
sd-image-riscv64: Add an -installer variant like others
2022-01-24 00:46:24 +01:00
Jörg Thalheim
966ea2c020
Merge pull request #150360 from Enzime/fix-netboot-cmdline
netboot: Support cmdline variable from netboot.xyz
2022-01-19 06:53:04 +00:00
pennae
466cb747c8
Merge pull request #150408 from Enzime/systemd-boot-extra-entries
nixos/systemd-boot: Add `extraEntries` and `extraFiles` options
2022-01-13 07:15:05 +00:00
Zhaofeng Li
ccd4dc3b98 sd-image-riscv64: Add an -installer variant like others 2022-01-10 17:30:02 -08:00
Maciej Krüger
801d832872
Merge pull request #125451 from zhaofengli/qemu-riscv64-sd-image 2022-01-07 22:14:05 +01:00
Zhaofeng Li
2cb7743e9c sd-image-x86_64: init 2022-01-06 17:31:17 -08:00
Zhaofeng Li
b70c23ea61 sd-image: Propagate imageName to derivation 2022-01-06 17:31:17 -08:00
Zhaofeng Li
823acb25dd sd-image-riscv64-qemu: init 2022-01-06 17:23:10 -08:00
Thomas Watson
450ce00ec4 installer/cd-dvd/iso-image: avoid leaking build timestamps on non-x86 2022-01-05 12:05:15 -06:00
pennae
3ad8f52de0 nixos-install: copy channels before system eval
since fc614c37c6 nixos needs access to its
own path (<nixpkgs/nixos>) to evaluate a system with documentation.
since documentation is enabled by default almost all systems need such
access, including the installer tests. nixos-install however does not
ensure that a channel exists in the target store before evaluating the
system in that store, which can lead to `path is not valid` errors.
2022-01-05 18:38:49 +01:00
Michael Hoang
1783cfde53 nixos/nixos-enter: Don't passthru TMPDIR
`mktemp` tries to use the `TMPDIR` from `nixos-install` outside of the
`chroot` instead of `/tmp` inside the `chroot` and fails. For some
reason the `TMPDIR` is being passed through the `chroot` call.

I haven't tested if other environment variables are being passed through
that shouldn't be.
2021-12-31 10:10:14 +11:00
Michael Hoang
7e7510de4a netboot: Support cmdline variable from netboot.xyz 2021-12-23 18:57:02 +11:00
wucke13
121e2f7e15 honor sdImage.compressImage in intermediate build steps 2021-12-21 21:31:44 +01:00
Victor Engmark
e0f1682910 nixos/installer: Quote variable references
See <https://github.com/koalaman/shellcheck/wiki/SC2086>.
2021-11-26 18:58:08 +13:00
Victor Engmark
c9a7385997 nixos/installer: Use -n instead of ! -z
See <https://github.com/koalaman/shellcheck/wiki/SC2236>.
2021-11-26 18:55:53 +13:00
Victor Engmark
adb8f5c858 nixos/installer: Mark scripts as Bash for ShellCheck
See <https://github.com/koalaman/shellcheck/wiki/SC2239>.
2021-11-26 18:54:23 +13:00
Graham Christensen
6cfd23fa0b nixos-install: support --no-root-password 2021-11-22 22:09:50 +02:00
Ryan Burns
2175b157ac treewide: refactor isi686 && isx86_64 -> isx86 2021-11-20 17:50:41 -08:00
Artturin
f93a7f8b56 nixos-generate-config: automatically enable microcode updates 2021-11-15 22:28:41 +02:00
Eelco Dolstra
58a9cca8cd
nix-fallback-paths.nix: Update to 2.4 2021-11-09 10:47:10 -08:00
Artturin
9145f833cc nixos/nixos-enter: bind mount /etc/resolv.conf to chroot 2021-10-30 18:46:14 +03:00
Janne Heß
b071aea8d0
nixos/nixos-enter: Add IN_NIXOS_ENTER variable 2021-10-13 13:05:54 +02:00
Eelco Dolstra
a47875938d
nix-fallback-paths.nix: Update to 2.3.16 2021-10-07 17:33:53 +02:00
Jacek Galowicz
d68f1e43df
Merge pull request #126713 from blaggacao/nixos-test-ref/05-class-ify-test-driver
nixos test ref/05 class ify test driver
2021-10-07 14:37:01 +02:00
Maximilian Bosch
b2e59bcf77 nixos/build-vms: fix eval 2021-10-05 14:38:48 -05:00
David Arnold
b0fc9da879 nixos/test/test-driver: Class-ify the test driver
This commit encapsulates the involved domain into classes and
defines explicit and typed arguments where untyped dicts where used.

It preserves backwards compatibility through legacy wrappers.
2021-10-05 14:38:48 -05:00
Naïm Favier
2ddc335e6f
nixos/doc: clean up defaults and examples 2021-10-04 12:47:20 +02:00
github-actions[bot]
91c89490cc
Merge master into staging-next 2021-09-14 18:01:05 +00:00
Artturi
045bf139db
Merge pull request #104828 from matthewbauer/add-disableInstallerTools-option 2021-09-14 20:41:02 +03:00
github-actions[bot]
2341511023
Merge staging-next into staging 2021-08-18 00:01:59 +00:00
Dominik Xaver Hörl
c62f911507 top-level: move linux kernels, packages and related functions to linux-kernels.nix 2021-08-12 12:22:03 +02:00
David Arnold
9e42d02047
lib/modules: add mkImageMediaOverride
so the underlaying use case of the preceding commit is so
generic, that we gain a lot in reasoning to give it an
appropriate name.

As the comment states:
image media needs to override host config short of mkForce
2021-08-03 18:28:14 -05:00
David Arnold
2af2d3146d
nixos/boot-media: soft-force entire fs layout
https://github.com/NixOS/nixpkgs/pull/131760 was made to avo
a speicific configuration conflict that errored out for multiple definitions of "/" when the installer where overlayed
on any existing host configuration.

---

Problem 1: It turns out that in also other mountpoints can coflict.

Solution 1: use `mkOverride 60` for all mountpoints (even for the ones unlikely causing confilct for consistency sake)

---

Problem 2: It turns out that on an installation media for a fresh machine (before formatting), we usually don't have any devices yet formatted. However defining for example `fileSystems.<nme>.device = "/dev/disk/by-label/...", in newer versions of nixos, seems to make the system startup fail. Similarily waiting for a non-existent swap device does not make the startup fail, but has a 1:30 min timeout.

Solution 2: For an installation medium, soft-override ("unless users know what they are doing") the entire `fileSystems` and `swapDevices` definitions.
2021-08-03 15:05:52 -05:00
Eelco Dolstra
512ee6db39
nix-fallback-paths.nix: Update to 2.3.15 2021-07-28 22:45:33 +02:00
David Arnold
c219fdffad
nixos/installer: force root fs type
installer media can be used on top of existing host configs. In such
scenarions, root fs types will already be defined.

Before this change, this will inevitably lead to the following error:
```console
error: The option `fileSystems./.fsType' has conflicting definition values:
       - In `/nix/store/2nl5cl4mf6vnldpbxhrbzfh0n8rsv9fm-source/DevOS/os/hardware/common.nix': "ext4"
       - In `/nix/store/jbch90yqx6gg1h3fq30jjj2b6h6jfjgs-source/nixos/modules/installer/cd-dvd/iso-image.nix': "tmpfs"
```

With this patch, the installers will override those values according to
their own local requirement.

Use `mkOverride 60` so that conscientious overriding specially targeted
at the installer, e.g. with `mkForce` is still straight forward.
2021-07-28 15:05:25 -05:00
Maximilian Bosch
e66237af15
nixStable: 2.3.12 -> 2.3.14
Changes: https://github.com/NixOS/nix/compare/2.3.12...2.3.14

Since this is a bugfix release that wasn't pushed to `nixpkgs`, I
decided to take care of it.

As it's usually done in `upload-release.pl`[1], I updated the
fallback-paths accordingly and used eval `1687468`[2] for this with Nix
2.3.14.

Also added a fallback-path for `aarch64-darwin` as Nix 2.3.14 seems to
support this now[3].

[1] https://github.com/NixOS/nix/blob/2.3-maintenance/maintainers/upload-release.pl
[2] https://hydra.nixos.org/eval/1687468
[3] 14262b86cc
2021-07-20 17:06:51 +02:00
Robert Helgesson
231a31be87 nixos-option: add backwards compatibility layer
This adds a basic `nixos-option/default.nix` file to provide some
measure of backwards compatibility with Nixpkgs prior to
ce6f17f953.
2021-07-10 22:32:26 +02:00
Robert Helgesson
ce6f17f953
nixos-option: init at <unversioned> 2021-07-09 08:59:12 +02:00
jakobrs
2e4849b841 installation-cd-base.nix: Add 'live.nixos.passwd' boot option
For interactive SSH access to a system without a (working)
keyboard and monitor, without rebuilding the image itself.
2021-07-03 09:53:16 +02:00
Timothy DeHerrera
7e59c19715 nixos-option: remove if nix.package is unstable
This was done in a0a61c3e34, but users
typically install `nixUnstable` via `nix.package`, not by overlaying
`pkgs.nix` directly.
2021-06-29 16:13:52 -07:00