···187187188188- The `services.pipewire.config` options have been removed, as they have basically never worked correctly. All behavior defined by the default configuration can be overridden with drop-in files as necessary - see [below](#sec-release-23.05-migration-pipewire) for details.
189189190190+- The catch-all `hardware.video.hidpi.enable` option was removed. Users on high density displays may want to:
191191+192192+ - Set `services.xserver.upscaleDefaultCursor` to upscale the default X11 cursor for higher resolutions
193193+ - Adjust settings under `fonts.fontconfig` according to preference
194194+ - Adjust `console.font` according to preference, though the kernel will generally choose a reasonably sized font
195195+190196- `services.pipewire.media-session` and the `pipewire-media-session` package have been removed, as they are no longer supported upstream. Users are encouraged to use `services.pipewire.wireplumber` instead.
191197192198- The `baget` package and module was removed due to being unmaintained.
···270276 [headscale's example configuration](https://github.com/juanfont/headscale/blob/main/config-example.yaml)
271277 can be directly written as attribute-set in Nix within this option.
272278273273-- The `hardware.video.hidpi.enable` was renamed to `fonts.optimizeForVeryHighDPI` to be consistent with what it actually does.
274274- They disable by default: antialiasing, hinting and LCD filter for subpixel rendering. They can be overridden if you experience problems with font rendering.
275275- On Xorg, the default cursor is upscaled.
276276- Please see the documentation for the new option to decide if you want to keep it enabled.
277277-278279- `nixos/lib/make-disk-image.nix` can now mutate EFI variables, run user-provided EFI firmware or variable templates. This is now extensively documented in the NixOS manual.
279280280281- `services.grafana` listens only on localhost by default again. This was changed to upstreams default of `0.0.0.0` by accident in the freeform setting conversion.
···344345- The option `services.prometheus.exporters.pihole.interval` does not exist anymore and has been removed.
345346346347- `k3s` can now be configured with an EnvironmentFile for its systemd service, allowing secrets to be provided without ending up in the Nix Store.
348348+349349+- `boot.initrd.luks.device.<name>` has a new `tryEmptyPassphrase` option, this is useful for OEM's who need to install an encrypted disk with a future settable passphrase
347350348351## Detailed migration information {#sec-release-23.05-migration}
349352
+17
nixos/modules/config/fonts/fontconfig.nix
···77Fontconfig reads files in folder name / file name order, so the number prepended to the configuration file name decide the order of parsing.
88Low number means high priority.
991010+NOTE: Please take extreme care when adjusting the default settings of this module.
1111+People care a lot, and I mean A LOT, about their font rendering, and you will be
1212+The Person That Broke It if it changes in a way people don't like.
1313+1414+See prior art:
1515+- https://github.com/NixOS/nixpkgs/pull/194594
1616+- https://github.com/NixOS/nixpkgs/pull/222236
1717+- https://github.com/NixOS/nixpkgs/pull/222689
1818+1919+And do not repeat our mistakes.
2020+2121+- @K900, March 2023
2222+1023*/
11241225{ config, pkgs, lib, ... }:
···218231 paths = cfg.confPackages;
219232 ignoreCollisions = true;
220233 };
234234+235235+ fontconfigNote = "Consider manually configuring fonts.fontconfig according to personal preference.";
221236in
222237{
223238 imports = [
···229244 (mkRemovedOptionModule [ "fonts" "fontconfig" "forceAutohint" ] "")
230245 (mkRemovedOptionModule [ "fonts" "fontconfig" "renderMonoTTFAsBitmap" ] "")
231246 (mkRemovedOptionModule [ "fonts" "fontconfig" "dpi" ] "Use display server-specific options")
247247+ (mkRemovedOptionModule [ "hardware" "video" "hidpi" "enable" ] fontconfigNote)
248248+ (mkRemovedOptionModule [ "fonts" "optimizeForVeryHighDPI" ] fontconfigNote)
232249 ] ++ lib.forEach [ "enable" "substitutions" "preset" ]
233250 (opt: lib.mkRemovedOptionModule [ "fonts" "fontconfig" "ultimate" "${opt}" ] ''
234251 The fonts.fontconfig.ultimate module and configuration is obsolete.
···187187 A configuration file automatically generated by NixOS.
188188 '';
189189 description = lib.mdDoc ''
190190- Override the configuration file used by MySQL. By default,
190190+ Override the configuration file used by logrotate. By default,
191191 NixOS generates one automatically from [](#opt-services.logrotate.settings).
192192 '';
193193 example = literalExpression ''
+58-4
nixos/modules/system/boot/luksroot.nix
···158158 wait_target "header" ${dev.header} || die "${dev.header} is unavailable"
159159 ''}
160160161161+ try_empty_passphrase() {
162162+ ${if dev.tryEmptyPassphrase then ''
163163+ echo "Trying empty passphrase!"
164164+ echo "" | ${csopen}
165165+ cs_status=$?
166166+ if [ $cs_status -eq 0 ]; then
167167+ return 0
168168+ else
169169+ return 1
170170+ fi
171171+ '' else "return 1"}
172172+ }
173173+174174+161175 do_open_passphrase() {
162176 local passphrase
163177···212226 ${csopen} --key-file=${dev.keyFile} \
213227 ${optionalString (dev.keyFileSize != null) "--keyfile-size=${toString dev.keyFileSize}"} \
214228 ${optionalString (dev.keyFileOffset != null) "--keyfile-offset=${toString dev.keyFileOffset}"}
229229+ cs_status=$?
230230+ if [ $cs_status -ne 0 ]; then
231231+ echo "Key File ${dev.keyFile} failed!"
232232+ if ! try_empty_passphrase; then
233233+ ${if dev.fallbackToPassword then "echo" else "die"} "${dev.keyFile} is unavailable"
234234+ echo " - failing back to interactive password prompt"
235235+ do_open_passphrase
236236+ fi
237237+ fi
215238 else
216216- ${if dev.fallbackToPassword then "echo" else "die"} "${dev.keyFile} is unavailable"
217217- echo " - failing back to interactive password prompt"
218218- do_open_passphrase
239239+ # If the key file never shows up we should also try the empty passphrase
240240+ if ! try_empty_passphrase; then
241241+ ${if dev.fallbackToPassword then "echo" else "die"} "${dev.keyFile} is unavailable"
242242+ echo " - failing back to interactive password prompt"
243243+ do_open_passphrase
244244+ fi
219245 fi
220246 '' else ''
221221- do_open_passphrase
247247+ if ! try_empty_passphrase; then
248248+ do_open_passphrase
249249+ fi
222250 ''}
223251 }
224252···476504 preLVM = filterAttrs (n: v: v.preLVM) luks.devices;
477505 postLVM = filterAttrs (n: v: !v.preLVM) luks.devices;
478506507507+479508 stage1Crypttab = pkgs.writeText "initrd-crypttab" (lib.concatStringsSep "\n" (lib.mapAttrsToList (n: v: let
480509 opts = v.crypttabExtraOpts
481510 ++ optional v.allowDiscards "discard"
···483512 ++ optional (v.header != null) "header=${v.header}"
484513 ++ optional (v.keyFileOffset != null) "keyfile-offset=${toString v.keyFileOffset}"
485514 ++ optional (v.keyFileSize != null) "keyfile-size=${toString v.keyFileSize}"
515515+ ++ optional (v.keyFileTimeout != null) "keyfile-timeout=${builtins.toString v.keyFileTimeout}s"
516516+ ++ optional (v.tryEmptyPassphrase) "try-empty-password=true"
486517 ;
487518 in "${n} ${v.device} ${if v.keyFile == null then "-" else v.keyFile} ${lib.concatStringsSep "," opts}") luks.devices));
488519···594625 '';
595626 };
596627628628+ tryEmptyPassphrase = mkOption {
629629+ default = false;
630630+ type = types.bool;
631631+ description = lib.mdDoc ''
632632+ If keyFile fails then try an empty passphrase first before
633633+ prompting for password.
634634+ '';
635635+ };
636636+637637+ keyFileTimeout = mkOption {
638638+ default = null;
639639+ example = 5;
640640+ type = types.nullOr types.int;
641641+ description = lib.mdDoc ''
642642+ The amount of time in seconds for a keyFile to appear before
643643+ timing out and trying passwords.
644644+ '';
645645+ };
646646+597647 keyFileSize = mkOption {
598648 default = null;
599649 example = 4096;
···887937 { assertion = any (dev: dev.bypassWorkqueues) (attrValues luks.devices)
888938 -> versionAtLeast kernelPackages.kernel.version "5.9";
889939 message = "boot.initrd.luks.devices.<name>.bypassWorkqueues is not supported for kernels older than 5.9";
940940+ }
941941+942942+ { assertion = !config.boot.initrd.systemd.enable -> all (x: x.keyFileTimeout == null) (attrValues luks.devices);
943943+ message = "boot.initrd.luks.devices.<name>.keyFileTimeout is only supported for systemd initrd";
890944 }
891945892946 { assertion = config.boot.initrd.systemd.enable -> all (dev: !dev.fallbackToPassword) (attrValues luks.devices);
···636364646565def main() -> None:
6666+ top_cargo_toml = load_file(sys.argv[2])
6767+6868+ if "workspace" not in top_cargo_toml:
6969+ # If top_cargo_toml is not a workspace manifest, then this script was probably
7070+ # ran on something that does not actually use workspace dependencies
7171+ print(f"{sys.argv[2]} is not a workspace manifest, doing nothing.")
7272+ return
7373+6674 crate_manifest = load_file(sys.argv[1])
6767- workspace_manifest = load_file(sys.argv[2])["workspace"]
7575+ workspace_manifest = top_cargo_toml["workspace"]
68766977 if "workspace" in crate_manifest:
7078 return
+4-2
pkgs/build-support/rust/sysroot/Cargo.lock
···11# This file is automatically @generated by Cargo.
22# It is not intended for manual editing.
33+version = 3
44+35[[package]]
46name = "alloc"
57version = "0.0.0"
···10121113[[package]]
1214name = "compiler_builtins"
1313-version = "0.1.52"
1515+version = "0.1.87"
1416source = "registry+https://github.com/rust-lang/crates.io-index"
1515-checksum = "b6591c2442ee984e2b264638a8b5e7ae44fd47b32d28e3a08e2e9c3cdb0c2fb0"
1717+checksum = "f867ce54c09855ccd135ad4a50c777182a0c7af5ff20a8f537617bd648b10d50"
1618dependencies = [
1719 "rustc-std-workspace-core",
1820]
···11+diff --git a/src/elf_locations.ml b/src/elf_locations.ml
22+index a08b359..0db9274 100644
33+--- a/src/elf_locations.ml
44++++ b/src/elf_locations.ml
55+@@ -37,7 +37,8 @@ let resolve_from_dwarf t ~program_counter =
66+ | Some section ->
77+ let body = Owee_buf.cursor (Owee_elf.section_body t.map section) in
88+ let rec aux () =
99+- match Owee_debug_line.read_chunk body with
1010++ let pointers_to_other_sections = Owee_elf.debug_line_pointers t.map t.sections in
1111++ match Owee_debug_line.read_chunk body ~pointers_to_other_sections with
1212+ | None -> ()
1313+ | Some (header, chunk) ->
1414+ (* CR-soon mshinwell: fix owee .mli to note that [state] is