NEWS (5903B)
1 A brief guide to backward-incompatible changes 2 that are likely to break configurations or workflows 3 4 2023-07-13 5 6 * a significant re-arrangement of modules and services, which will 7 probably break any configuration written before this time. For a 8 detailed explanation, see 9 https://www.liminix.org/doc/configuration.html#modules 10 11 2023-12-10 12 13 * configurations (usually) need no longer import modules from 14 modules/outputs because devices are expected to do this instead. This 15 change is because the outputs that make sense in any given context are 16 usually a property of the device being installed onto. 17 18 2023-12-11 19 20 * rename outputs.flashimage to outputs.mtdimage (and also diskimage to 21 mbrimage). This change is made in the expectation that "fooimage" is 22 the name of an outputs that gloms together other filesystem-like 23 outputs with some kind of partition table - so we might in future have 24 gptimage or lvmimage or ubimage. 25 26 2024-01-03 27 28 Liminix is now targeted to Nixpkgs 23.11 (not 23.05 as previously). 29 Upstream changes that have led to incompatible Liminix changes are: 30 31 * newer U-Boot version 32 * util-linux can now be built (previously depended on systemd) 33 34 2024-01-30 35 36 New port! Thanks to Arnout Engelen <arnout@bzzt.net>, Liminix 37 now runs on the TP-Link Archer AX23. 38 39 2024-02-12 40 41 * We now build wifi drivers (mac80211) from the same kernel source as 42 the running kernel, instead of using drivers from the linux-backports 43 project. This may be a regression on some devices that depend on 44 OpenWrt patches for wireless functionality: if you have a device that 45 used to work and now doesn't, refer to OpenWrt 46 package/kernel/mac80211/patches/ to see if there's something in there 47 that needs to be applied. 48 49 * in general, we build kernel modules (e.g. for nftables) at the same 50 time as the kernel itself instead of expecting to be able to build 51 them afterwards as though they were "out of tree". Refer to commit 52 b9c0d93670275e69df24902b05bf4aa4f0fcbe96 for a fuller explanation 53 of how this simplifies things. 54 55 2024-02-13 56 57 So that we can be more consistent about services that would like their 58 state to be preserved across boots (assuming a writable filesystem) 59 these changes have been made 60 61 * /run/service-state has been moved to /run/services/outputs 62 to better reflect what it's used for 63 * /run/services/state is either a symlink to /persist/services/state 64 (if there's a writeable fs on /persist) or a directory (if there 65 isn't) 66 67 The change will lose your ssh host key(s) unless you copy them from 68 the old location to the new one before rebooting into the new system 69 70 mkdir -m 02751 -p /run/services/state/dropbear 71 cp /persist/secrets/dropbear/* /run/services/state/dropbear 72 73 The `output`, `mkoutputs` functions defined by ${serviceFns} 74 have been updated for the new location. 75 76 2024-02-16 77 78 New (or at least, previously unreported) port! Liminix now runs on the 79 Turris Omnia and has been serving my family's internet needs for most 80 of this week. Thanks to NGI0 Entrust and the NLnet Foundation for 81 sponsoring this development (and funding the hardware) 82 83 2024-02-21 84 85 New port! Thanks to Raito Bezarius, Liminix now runs on the Zyxel NWA50AX, 86 an MT7621 (MIPS EL) dual radio WiFi AP. 87 88 2024-04-29 89 90 The setup for using `levitate` has changed: now it accepts an entire 91 config fragment, not just a list of services. Hopefully this makes it 92 a bit more useful :-) 93 94 defaultProfile.packages = with pkgs; [ 95 ... 96 (levitate.override { 97 config = { 98 services = { 99 inherit (config.services) dhcpc sshd watchdog; 100 }; 101 defaultProfile.packages = [ mtdutils ]; 102 users.root.openssh.authorizedKeys.keys = secrets.root.keys; 103 }; 104 }) 105 ]; 106 107 2024-07-16 108 109 * structured parameters are available for the pppoe service 110 111 * The "wan" configuration in modules/profiles/gateway.nix has changed: 112 instead of passing options that are used to create a pppoe interface, 113 callers should create a (pppoe or other) interface and pass that as 114 the value of profile.gateway.wan. For the pppoe case this is now only 115 very slightly more verbose, and it allows using the gateway profile 116 with other kinds of upstream. 117 118 2024-8-16 119 120 As part of implementing log shipping, the default directory for system 121 logs has beenchanged from /run/uncaught-logs to /run/log 122 123 2024-10-09 124 125 liminix-rebuild is being deprecated. From hereon in, the preferred way 126 to do an incremental update on an installed device with a writable 127 filesystem is to build the systemConfiguration output 128 129 nix-build -I liminix-config=hosts/myhost.nix --argstr deviceName turris-omnia -A outputs.systemConfiguration 130 131 and then run the generated `install.sh` script 132 133 result/install.sh root@192.168.8.1 134 135 2024-12-16 136 137 Config options changed: if you had set config.hardware.dts.includes 138 (maybe in an out-of-tree device port) to specify the search paths 139 in which dtc finds include files, you will need to change this to 140 hardware.dts.includePaths. 141 142 The "new" hardware.dts.includes option is now for dtsi files which 143 should be merged into the device tree. 144 145 2024-12-19 146 147 Incremental updates changed again (but not massively). From hereon in, 148 the preferred way to do an incremental update on an installed device 149 with a writable filesystem is to build the updater output 150 151 nix-build -I liminix-config=hosts/myhost.nix --argstr deviceName turris-omnia -A outputs.updater 152 153 and then run the generated `update.sh` script. See 154 https://www.liminix.org/doc/admin.html#updating-an-installed-system 155 156 2024-12-22 157 158 outputs.zimage is now outputs.kernel.zImage. This is unlikely to 159 affect many people at all but I mention it anyway. 160 161 2024-03-11 162 163 The fennel function (svc.open ...) now expects to be given the store 164 directory of a service derivation, not a direct path to the .outputs 165 directory. Thus 166 167 (svc.open "/nix/store/eeeeeeeeeeeeee-hellod") 168 not 169 (svc.open "/nix/store/eeeeeeeeeeeeee-hellod/.outputs") 170 171 This simplifies most extant uses of it