| 20 Mar 2022 |
@elvishjerricco:matrix.org | Janne Heß: Is there a reason boot.initrd.systemd.services.emergency.environtment doesn't work on its own though? | 17:13:27 |
@elvishjerricco:matrix.org | Also, for the modprobe thing, it's in the object that gets symlinked to /etc/sysctl.d/nixos.conf | 17:13:45 |
@janne.hess:helsinki-systems.de | In reply to @elvishjerricco:matrix.org Janne Heß: Is there a reason boot.initrd.systemd.services.emergency.environtment doesn't work on its own though? Yeah you are missing:
diff --git a/nixos/lib/systemd-lib.nix b/nixos/lib/systemd-lib.nix
index 3129fbe7bdb..716128a49ac 100644
--- a/nixos/lib/systemd-lib.nix
+++ b/nixos/lib/systemd-lib.nix
@@ -396,6 +396,13 @@ in rec {
text = commonUnitText def +
''
[Service]
+ ${let env = cfg.globalEnvironment // def.environment;
+ in concatMapStrings (n:
+ let s = optionalString (env.${n} != null)
+ "Environment=${builtins.toJSON "${n}=${env.${n}}"}\n";
+ # systemd max line length is now 1MiB
+ # https://github.com/systemd/systemd/commit/e6dde451a51dc5aaa7f4d98d39b8fe735f73d2af
+ in if stringLength s >= 1048576 then throw "The value of the environment variable ‘${n}’ in systemd service ‘${name}.service’ is too long." else s) (attrNames env)}
${attrsToSection def.serviceConfig}
'';
};
| 17:14:04 |
@janne.hess:helsinki-systems.de | (but without the globalEnvironment, just def.environment) | 17:14:12 |
@elvishjerricco:matrix.org | Ohhh, def.environment doesn't just get assigned to serviceConfig.Environment like e.g. path gets set to environment.PATH | 17:15:13 |
@elvishjerricco:matrix.org | Ok, yea that needs a fixing | 17:15:23 |
@janne.hess:helsinki-systems.de | yeah | 17:15:29 |
bobvanderlinden |
I think that's a good point. I'd like to make that change but just didn't bother last night. I wouldn't be opposed to a patch to change that in this PR
ElvishJerricco no worries. I was thinking these kinds of optimizations can also happen after the PR. I'd rather be in a state where the PR is merged and multiple people can create PRs to improve the various parts of initrd-systemd, rather than everyone commenting/attempting to make changes to the PR itself, leaving you to be the central person that needs to do things: a situation I'd like to avoid with the time it takes for some PRs
| 17:16:14 |
@elvishjerricco:matrix.org | bobvanderlinden: Yea, I agree that delaying the PR with endless discussion would be unfortunate. But delaying for actual completed patches to be included is reasonable | 17:17:09 |
@elvishjerricco:matrix.org | So long as they don't escape the scope of "core functionality" | 17:17:33 |
@elvishjerricco:matrix.org | And I think that would be in scope | 17:18:00 |
bobvanderlinden | I wish it was easier to make it clear that this section of nixos is experimental and people should not use it. That would make it easier to merge the PR in its current state. There are tons of ideas and suggestions to come up for the PR regarding its core functionality, but imo it doesn't really help to make you apply all of those suggestions rather than people making small PRs on top to improve things. Things like formatting, naming, file-placement are really popular to comment on, but do not contribute that much to moving forward imo. | 17:22:53 |
@janne.hess:helsinki-systems.de | Something that I really think would contribute to the initial PR would be a simple nixos test that just boots a simple VM without anything fancy. I'm currently working on that and struggling with ext4 atm :/ For some reason the kernel and mount hate me | 17:24:15 |
@elvishjerricco:matrix.org | I should probably hide these options from the nixos manual for the time being (I forget how to do that; something about visible or internal?) | 17:24:24 |
bobvanderlinden | Janne Heß: I'm working on a test ;D | 17:24:38 |
@janne.hess:helsinki-systems.de | In reply to @bobvanderlinden_:matrix.org Janne Heß: I'm working on a test ;D oh that's great. Have you made it load ext4? | 17:24:56 |
@elvishjerricco:matrix.org | Janne Heß: Well I think an issue there is the lack of auto formatting for the rootfs. Don't NixOS tests rely on stage 1 to format a disk image for / | 17:25:06 |
@elvishjerricco:matrix.org | * Janne Heß: Well I think an issue there is the lack of auto formatting for the rootfs. Don't NixOS tests rely on stage 1 to format a disk image for /? | 17:25:09 |
@elvishjerricco:matrix.org | ext4 works for me | 17:25:19 |
bobvanderlinden | lol, no that's what I'm struggling with. I think the test hasn't yet formatted /dev/vda, so that's why it is failing to mount with auto fsType | 17:25:30 |
@janne.hess:helsinki-systems.de | ohh so the tests don't work as I thought :// | 17:25:55 |
@elvishjerricco:matrix.org | Yea I've been testing with a pre-formatted nixos.qcow2. We need the x-systemd.makefs and x-systemd.growfs fstab options so systemd will just do the formatting for us | 17:26:25 |
bobvanderlinden | while I was struggling I thought I might've take the oppurtinity to create a test for the emergency shell 😅 | 17:26:46 |
@janne.hess:helsinki-systems.de | maybe we can use an installer test that boots with the old initrd and installs a system with the new one? | 17:26:49 |
@elvishjerricco:matrix.org | That'll also require adding file system packages to stage 1's environment. The old PR had some code for this that you should look at | 17:27:03 |
@janne.hess:helsinki-systems.de | In reply to @bobvanderlinden_:matrix.org while I was struggling I thought I might've take the oppurtinity to create a test for the emergency shell 😅 I have a really horrible solution but I think we should come up with something in the test runner that allows us to interact with qemu's stdin | 17:27:53 |
@janne.hess:helsinki-systems.de | Or it may be easier to spawn backdoor.service in stage 1 🤔 | 17:28:44 |
@elvishjerricco:matrix.org | https://github.com/ElvishJerricco/nixpkgs/blob/78d09d5d9eea1259f96b366d640ccbfb5983e6c2/nixos/modules/tasks/filesystems.nix#L129
https://github.com/ElvishJerricco/nixpkgs/blob/78d09d5d9eea1259f96b366d640ccbfb5983e6c2/nixos/modules/tasks/filesystems.nix#L320
This was the stuff from the old PR that made growfs and makefs work automatically | 17:30:19 |
@elvishjerricco:matrix.org | It's just a couple fstab options and adding fsPackages to PATH for the right unit | 17:30:43 |
bobvanderlinden | Hmyea, I added x-systemd.makefs and x-systemd.growfs to fstab's root, but that didn't work. It seems it didn't attempt to run them yet. | 17:32:46 |