29 May 2023 |
ElvishJerricco | no, | 01:32:57 |
ElvishJerricco | You probably just want to do After=dev-mapper-nixos.device | 01:33:20 |
Winter (she/her) | ah, yeah, that'd be better | 01:33:29 |
ElvishJerricco | and BindsTo=dev-mapper-nixos.device | 01:33:34 |
ElvishJerricco | with that combination, that's how systemd does the "waiting for device blabla..." thing | 01:33:53 |
Winter (she/her) | so like this?
boot.initrd.systemd.services.wipe-root = {
wantedBy = [ "initrd.target" ];
before = [ "sysroot.target" ];
after = [ "dev-mapper-nixos.device" ];
bindsTo = [ "dev-mapper-nixos.device" ];
path = [ pkgs.coreutils pkgs.btrfs-progs ];
serviceConfig.Type = "oneshot";
script = ''
mkdir /scratch
mount /dev/mapper/nixos /scratch
btrfs subvolume delete /scratch/root/srv
btrfs subvolume delete /scratch/root/var/lib/portables
btrfs subvolume delete /scratch/root/var/lib/machines
btrfs subvolume delete /scratch/root
btrfs subvolume snapshot /scratch/root-blank /scratch/root
umount /scratch
rm -r /scratch
'';
};
| 01:36:19 |
ElvishJerricco | s/sysroot.target/sysroot.mount/ | 01:37:04 |
ElvishJerricco | * s/sysroot.target/sysroot.mount/ | 01:37:06 |
Winter (she/her) | thanks. | 01:37:28 |
ElvishJerricco | and it might be technically more correct to say requiredBy = ["sysroot.mount"]; rather than wantedBy = ["initrd.target"]; ? Which unit probably doesn't matter in all practicality, but wantedBy vs requiredBy just dictates whether you want failure to turn into a total stage 1 failure | 01:38:10 |
Winter (she/her) | requiredBy = [ "sysroot.mount" ];
# before = [ "sysroot.mount" ];
| 01:38:41 |
Winter (she/her) | do I need to keep before then? | 01:38:46 |
ElvishJerricco | still need the before. Requires dependencies don't cause runtime ordering | 01:39:07 |
Winter (she/her) | got it, wasn't 100% sure | 01:39:29 |
ElvishJerricco | and only lead to failure if the required unit fails before the requiring unit has even started | 01:39:31 |
Winter (she/her) | interesting | 01:39:49 |
ElvishJerricco | the other difference from Wants is that if the required unit isn't present at all, the requiring unit fails | 01:40:17 |
Winter (she/her) | okay, last thing: how do I control what hostname is sent to the DHCP server with networkd in initrd? when using scripted stage1, i get a static lease, but with networkd, the IP... increases for whatever reason? | 01:40:35 |
Winter (she/her) | i think it's the hostname? no idea tho | 01:40:41 |
ElvishJerricco | huh, can't say I've seen that behavior. But you can probably just set boot.initrd.systemd.contents."/etc/hostname".source = config.environment.etc.hostname.source; | 01:41:55 |
Winter (she/her) | thanks, i'll give it a shot | 01:42:10 |
Winter (she/her) | requiredBy = [ "sysroot.mount" ];
before = [ "sysroot.mount" ];
after = [ "dev-mapper-nixos.device" ];
bindsTo = [ "dev-mapper-nixos.device" ];
nothing redundant is here, right? just want to make sure before i reboot and have to rollback for the millionth time :/
| 01:42:51 |
@uep:matrix.org | presumably because your DHCP server is configured to use that hostname as the allocation, rather than the mac address | 01:43:06 |
ElvishJerricco | Winter (she/her): Also, I had to do boot.initrd.systemd.network.networks.<name>.dhcpV4Config.ClientIdentifier = "mac"; because my DHCP server on my router is a systemd-networkd one, and that was the only way I could figure out to get a statically assigned IP address to the mac address | 01:43:44 |
ElvishJerricco | otherwise it uses some other link identifier thingy | 01:44:10 |
@uep:matrix.org | I keep meaning to change mine to use a combination, because there are several laptops that sometimes use a certain docking station, and they all wind up with the same IP while there | 01:44:16 |
ElvishJerricco | but that should be stable and it should still serve the same ip address | 01:44:27 |
ElvishJerricco | In reply to @winterqt:nixos.dev
requiredBy = [ "sysroot.mount" ];
before = [ "sysroot.mount" ];
after = [ "dev-mapper-nixos.device" ];
bindsTo = [ "dev-mapper-nixos.device" ];
nothing redundant is here, right? just want to make sure before i reboot and have to rollback for the millionth time :/
seems fine to me | 01:44:49 |
Winter (she/her) | In reply to @uep:matrix.org presumably because your DHCP server is configured to use that hostname as the allocation, rather than the mac address it's using the same hostname afaict | 01:44:59 |
Winter (she/her) | by this point i guess i'll just set systemd.network.enable = true ig | 01:45:29 |