Commit graph

80 commits

Author SHA1 Message Date
John Titor
c87464cb0c
Revert "treewide: migrate nixos modules to networking.hosts"
This reverts commit cd64f1bd87.
2025-06-09 00:10:05 +05:30
John Titor
cd64f1bd87 treewide: migrate nixos modules to networking.hosts
Signed-off-by: John Titor <50095635+JohnRTitor@users.noreply.github.com>
2025-06-07 23:09:46 +05:30
Louis Opter
9d3a171dbf nixos/containers: fix shell error when privateUsers=no
Details in #387773.
2025-04-05 00:36:42 +00: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
Kevin Boulain
c2d4e8f4cb nixos/nixos-containers: user options take precedence over module ones
I think this is the norm in NixOS modules. This allows to start a
container with '--volatile=overlay --link-journal=host' in order to
persist logs across runs of a container running with a temporary root.
While '--ephemeral' omits '--link-journal=try-guest', it's not possible
to run an ephemeral container when linking the journal:
https://github.com/systemd/systemd/issues/1666
2025-03-09 11:08:56 +01:00
Ramses
51e84098b5
nixos-container: avoid subshell when testing $PRIVATE_USERS (#383056) 2025-02-19 10:46:48 +01:00
Jean-Baptiste Giraudeau
57c96ff6ef
nixos-container: avoid subshell when testing $PRIVATE_USERS
So that the script is not rejected by https://www.shellcheck.net/wiki/SC2235
 under `systemd.enableStrictShellChecks = true;`
2025-02-18 09:41:55 +01:00
Sandro
86f9eeb816
nixos-container: add support for --private-users (#362210) 2025-02-18 00:09:56 +01:00
Christian Kögler
bbd8de2fdd
nixos-container: do not touch os-release if it is a symlink (#353366) 2025-02-16 07:43:34 +01:00
Jean-Baptiste Giraudeau
c8f83ec641
nixos-container: add support for --private-users
imply bind mounts with idmap option when user namespacing is enabled,
 so that /nix/store and friends are correctly own by root user.
2025-02-12 14:28:57 +01:00
Robert Hensing
0b47fba230 Revert "nixos/nixpkgs: make config.nixpkgs.{localSystem,crossSystem,buildPlatform,hostPlatform} write only"
This reverts commit 0a19371146.
2025-02-05 14:29:18 +01:00
Wolfgang Walther
0a19371146
nixos/nixpkgs: make config.nixpkgs.{localSystem,crossSystem,buildPlatform,hostPlatform} write only
The description for options.nixpkgs.system already hints at this:

  Neither ${opt.system} nor any other option in nixpkgs.* is meant
  to be read by modules and configurations.
  Use pkgs.stdenv.hostPlatform instead.

We can support this goal by not elaborating the systems anymore, forcing
users to go via pkgs.stdenv.

This will prevent problems when making the top-level package sets
composable in the next commit. For this to work, you should pass a fully
elaborated system to nixpkgs' localSystem or crossSystem options.
2025-02-01 12:04:59 +01:00
Peder Bergebakken Sundt
953f72e76e nixos/*: tag manpage references 2025-01-27 02:47:01 +01:00
Nico Felbinger
e65d6fba75
nixos-containers: add networkNamespace option 2024-12-23 00:18:02 +01:00
Paul Grandperrin
853d34898d
nixos-containers: fix enableTun option
When using private users, `mknod /dev/net/tun` is run from the guest and therefor needs the `m` modifier.
2024-11-19 14:43:02 +01:00
taku0
a009d2b73f nixos-container: do not touch os-release if it is a symlink
`/etc/os-release` of NixOS containers, which are
`/var/lib/nixos-containers/*/etc/os-release` on the host, are usually
symlinks to the absolute path `/etc/static/os-release` but it doesn't
exist in non-NixOS host.  Since `startScript` is evaluated by the host
system, both `[ -e "$root/etc/os-release" ]` and
`touch "$root/etc/os-release"` fail, so that the container fails to
start on the second boot (on the first boot, the symlink doesn't exist,
so the command succeeds).

This commit avoids `touch "$root/etc/os-release"` if
`$root/etc/os-release` is a symlink, so imperative NixOS containers are
usable on non-NixOS host.
2024-11-03 22:02:50 +09:00
r-vdp
cc28f2bef5
nixos/containers: Fix shellcheck issues 2024-10-03 17:57:41 +02:00
K900
307dda84c0 nixos/nixos-containers: partially revert aa4570ca05
Word splitting is actually intentional here, as both of those variables
can (and often do) contain multiple flags.
2024-09-27 10:00:58 +03:00
r-vdp
aa4570ca05
nixos/nixos-containers: fix shellcheck errors in systemd scripts 2024-09-26 21:54:07 +02:00
Gabriella Gonzalez
79e5dbb262 Restore check for container not defining nixpkgs.hostPlatform option 2024-08-18 17:00:16 -07:00
Gabriella Gonzalez
0600255046 Use host.pkgs.stdenv.hostPlatform 2024-08-18 16:49:57 -07:00
Gabriella Gonzalez
de83fcb2df containers.*.config: reuse host nixpkgs.pkgs if defined
The minimum reproduction for the problem I'm trying to solve is that
the following NixOS test with a trivial NixOS container:

```
{ inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/24.05";

    flake-utils.url = "github:numtide/flake-utils/v1.0.0";
  };

  outputs = { flake-utils, nixpkgs, self, ... }:
    flake-utils.lib.eachDefaultSystem (system: {
      checks.default = nixpkgs.legacyPackages."${system}".nixosTest {
        name = "test";

        nodes.machine.containers.tutorial.config = { };

        testScript = "";
      };
    });
}
```

… fails with the following error message:

```
error: Neither nodes.machine.nixpkgs.hostPlatform nor the legacy option nodes.machine.nixpkgs.system has been set.
You can set nodes.machine.nixpkgs.hostPlatform in hardware-configuration.nix by re-running
a recent version of nixos-generate-config.
The option nodes.machine.nixpkgs.system is still fully supported for NixOS 22.05 interoperability,
but will be deprecated in the future, so we recommend to set nodes.machine.nixpkgs.hostPlatform.
```

The root of the problem appears to be that in
`nixos/modules/virtualisation/nixos-containers.nix` there is support
for deriving the guest's `nixpkgs.hostPlatform` or
`nixpkgs.localSystem` from the corresponding host's values, but this
doesn't work if the host sets `nixpkgs.pkgs` instead of one of those
values.  In fact, this is what happens when using `pkgs.nixosTest`
(which sets `nixpkgs.pkgs` in
`pkgs/build-support/testers/default.nix`).

The solution I went with was to forward the `nixpkgs.pkgs` setting from
the host to the guest, but only if it is defined (matching the same
treatment as `nixpkgs.hostPlatform` and `nixpkgs.localSystem`.
2024-08-18 11:32:46 -07:00
Sohalt
c11439943d
nixos/containers: add wants and after dependency for network interfaces (#153234)
Co-authored-by: Franz Pletz <fpletz@fnordicwalking.de>
2024-07-22 01:22:19 +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
Kira Bruneau
f0034ee975
Merge pull request #297517 from kira-bruneau/nixos-containers
nixos/nixos-containers: require mounts for bind mount host paths
2024-04-06 18:07:45 -04:00
Kira Bruneau
7f3643bef6 nixos/nixos-containers: require mounts for bind mount host paths
Fixes starting containers before bind mount host paths are mounted
2024-04-04 19:48:15 -04:00
Florian Klink
39ebd395cc
Merge pull request #224666 from grindhold/container_underscores
check nixos-container names for underscores
2024-03-20 11:41:34 +02:00
emilylange
1c404d2584
nixos/containers: warn if containers are used but disabled
This is a follow-up to 8dfe8e447e.
2023-11-25 20:01:42 +01:00
K900
6f06066e94 nixos/containers: use latest stateVersion as example
Hopefully this way we don't confuse people into thinking you have to set it to 21.05.
2023-10-27 12:56:12 +03:00
grindhold
108a6f181a nixos/containers: check nixos-container names for underscores 2023-10-22 09:45:41 +02:00
Donovan Glover
fd7daf9fc4
nixos/nixos-containers: add restartIfChanged option
This commit makes auto-restarting declarative containers optional.

This is useful when you don't want changes to your config to automatically
restart the container and thus stop any applications running inside it.
2023-10-11 21:53:42 -04:00
Felix Buehler
6672dde558 treewide: use optionalAttrs instead of 'else {}' 2023-06-25 11:01:34 -03:00
Fabian Möller
c51fe112cc
treewide: pass system argument to eval-config.nix
Calling `eval-config.nix` without a `system` from a Nix flake fails with
`error: attribute 'currentSystem' missing` since #230523. Setting
`system = null` removes the use of `currentSystem` and instead uses the
value from the `nixpkgs` module.
2023-05-12 14:56:23 +02:00
Felix Buehler
327b0cff7a treewide: use more lib.optionalString 2023-04-07 13:38:33 +02:00
Yureka
c683aaaa1d
nixos/nixos-containers: add specialArgs option (#216677) 2023-02-19 21:25:04 +01:00
adisbladis
841bcc7a24
Merge pull request #185129 from Munksgaard/fix-nixos-container
nixos-containers: Make sure same version of nixos-container is used
2022-11-17 22:13:44 +13:00
Eelco Dolstra
0a00b332cd
Merge pull request #198526 from farnoy/nixos-container-unified-cgroups
[nixos-container] Make nixos containers use unified cgroupsv2
2022-11-10 13:37:43 +01:00
Jakub Okoński
12508ac79a nixos-container: force systemd-nspawn to use unified cgroups hierarchy 2022-11-06 17:12:02 +01:00
Robert Hensing
8837a5d68e
Merge pull request #195681 from maifel-maifel/mr-containers-hostPlatform
nixos/containers: now uses nixpkgs.hostPlatform
2022-10-27 17:52:45 +02:00
digital
f4ccaa51e0 nixos/containers: support nixpkgs.hostPlatform
Use hostPlatform if both the host and the containers nixpkgs supports
hostPlatform, otherwise fall back to localSystem. This preseves backwards
compatibility.
2022-10-18 19:15:26 +02:00
Mario Rodas
405db07799
Merge pull request #167047 from helsinki-systems/drop/postgresql10
postgresql: remove 10.x
2022-10-06 21:32:46 -05:00
pennae
ef176dcf7e nixos/*: automatically convert option descriptions
conversions were done using https://github.com/pennae/nix-doc-munge
using (probably) rev f34e145 running

    nix-doc-munge nixos/**/*.nix
    nix-doc-munge --import nixos/**/*.nix

the tool ensures that only changes that could affect the generated
manual *but don't* are committed, other changes require manual review
and are discarded.
2022-08-31 16:32:53 +02:00
pennae
6039648c50 nixos/*: automatically convert option docs 2022-08-19 22:40:58 +02:00
ajs124
817ca3699e treewide: change postgresql_10 in documentation and examples to postgresql_14 2022-08-15 22:36:32 +02:00
pennae
50f9b3107a
Merge pull request #185474 from pennae/option-docs-md
nixos/*: more options md conversion
2022-08-12 23:23:26 +02:00
adisbladis
053ab2f7a8
Merge pull request #185153 from puppe/enable-container-warning
nixos/nixos-containers: Fix ineffective warning
2022-08-10 23:24:14 +08:00
pennae
087472b1e5 nixos/*: automatically convert option docs 2022-08-06 20:39:12 +02:00
pennae
423545fe48 nixos/*: normalize manpage references to single-line form
now nix-doc-munge will not introduce whitespace changes when it replaces
manpage references with the MD equivalent.

no change to the manpage, changes to the HTML manual are whitespace only.
2022-08-05 18:34:50 +02:00
Martin Puppe
82c64d154b nixos/nixos-containers: Fix ineffective warning
A warning regarding enabling NixOS containers and
virtualisation.containers at the same time with state versions < 22.05
had been added in commit 3c49151f15. But
this warning had accidentally been defined in the wrong place, and the
warning has therefore not actually been in effect. This commit fixes
that.
2022-08-04 22:52:16 +02:00
Philip Munksgaard
3daea5fa9b
nixos-containers: Make sure same version of nixos-container is used
Fixes #185126 (I hope)
2022-08-04 13:49:00 +02:00