!coeAONBrWyDJnYMbMi:nixos.org

NixOS System Operations

621 Members
About system administration for running NixOS systems in production. Declaratively manage your operations. | Room recommendations: #networking:nixos.org169 Servers

Load older messages


SenderMessageTime
2 Apr 2024
@rosariopulella:matrix.orgRosario Pulella joined the room.12:27:39
@dgrig:erethon.comdgrig joined the room.15:13:18
@ruther:ditigal.xyzRuther joined the room.19:52:38
3 Apr 2024
@quentinmit:matrix.orgquentin joined the room.00:28:49
@dclmatrix:matrix.orgblu3 changed their display name from exet to blu3.16:01:24
@dclmatrix:matrix.orgblu3 set a profile picture.16:44:08
5 Apr 2024
@kittenmreeow:matrix.orgkittenmreeow joined the room.15:16:46
6 Apr 2024
@steveej0:matrix.orgsteveej i'm working on a nixos config for a cloud-hypervisor based hosting platform. they load the kernel and initram directly without a bootloader. they hardcode calling /init. now i'm looking for a way to replace the /init. i've accepted the fact that i won't be able to do fallback for now. what is the right place in a config to execute this? i'm thinking of boot.loader.external.installHook but don't fully understand the context it runs in 09:41:28
@steveej0:matrix.orgsteveej * i'm working on a nixos config for a cloud-hypervisor based hosting platform. they load the kernel and initram directly without a bootloader. they hardcode calling /init. now i'm looking for a way to replace the /init on nixos-rebuild switch or boot. i've accepted the fact that i won't be able to do fallback for now. what is the right place in a config to execute this? i'm thinking of boot.loader.external.installHook but don't fully understand the context it runs in 09:42:04
@k900:0upti.meK900What we've done in NixOS-WSL is use an activation script to inject a binary there09:43:43
@k900:0upti.meK900That looks something like this: https://github.com/nix-community/NixOS-WSL/blob/main/utils/src/shim.rs09:44:21
@k900:0upti.meK900You probably want to do something similar09:44:27
@k900:0upti.meK900(or even steal that one wholesale as I'm pretty sure it doesn't have any WSL specific hacks left)09:44:39
@steveej0:matrix.orgsteveej i thought about an activation that too. does that work in the nixos-rebuild boot case? i thought it's only executed when the new system is booted, which in my case relies on /init pointing to the new system 09:47:41
@k900:0upti.meK900It doesn't, no09:48:33
@k900:0upti.meK900The more correct way to do it would be through a bootloader script, yes09:48:43
@k900:0upti.meK900But the important thing here is that you can't just symlink NixOS init to the right place and expect it to work09:49:01
@k900:0upti.meK900Because normally activation happens before that09:49:06
@k900:0upti.meK900So you have to have your own thing that will run the activation script and then run the stage2 init09:49:24
@steveej0:matrix.orgsteveej

FWIW, this works imperatively on the system:

set -xeEu -o pipefail

result="$(nix build --refresh --tarball-ttl 0 github:holochain/holochain-infra/workorch-zos#nixosConfigurations.tfgrid-devnet-vm0.config.system.build.toplevel --print-out-paths --no-link)"

ln -sf "${result}"/init /init
09:49:30
@steveej0:matrix.orgsteveeji'd be ok putting this anywhere appropriate. but i want to prevent running it anywhere else other than on the actual target system, for probably obvious reasons 😆09:50:47
@steveej0:matrix.orgsteveejthis is just the update use-case. i've already got something for the initial system assembly09:51:07
@steveej0:matrix.orgsteveej i'm looking through the shim code you've sent me and am intimidated by wrangling with /dev entries :-) is this used as a PID1 shim? 09:53:34
@steveej0:matrix.orgsteveejeither i'm oversimplifying or my use-case is actually simpler than in WSL09:54:17
@k900:0upti.meK900The /dev stuff can be ignored09:55:47
@k900:0upti.meK900It's a workaround for a stupid WSL bug09:55:50
@tumble1999:matrix.orgTumble joined the room.10:11:52
@steveej0:matrix.orgsteveej

this works (obviously it's not a noop anymore)

      boot.loader.external.installHook = pkgs.writeShellScript "noop" ''
        ${pkgs.coreutils}/bin/ln -sf "$1"/init /init
      '';
10:37:57
@adam:robins.wtfadamcstephens The lxc container does something similar 11:29:02
@sammy:cherrykitten.devSammy (It/Its) joined the room.13:05:26

Show newer messages


Back to Room ListRoom Version: 10