···220221- The `version` attribute _must_ start with a digit e.g`"0.3.1rc2".
222223-- If a package is not a release but a commit from a repository, then the `version` attribute _must_ be the date of that (fetched) commit. The date _must_ be in `"unstable-YYYY-MM-DD"` format.
00224225- Dashes in the package `pname` _should_ be preserved in new variable names, rather than converted to underscores or camel cased — e.g., `http-parser` instead of `http_parser` or `httpParser`. The hyphenated style is preferred in all three package names.
226
···220221- The `version` attribute _must_ start with a digit e.g`"0.3.1rc2".
222223+- If a package is a commit from a repository without a version assigned, then the `version` attribute _should_ be the latest upstream version preceding that commit, followed by `-unstable-` and the date of the (fetched) commit. The date _must_ be in `"YYYY-MM-DD"` format.
224+225+Example: Given a project had its latest releases `2.2` in November 2021, and `3.0` in January 2022, a commit authored on March 15, 2022 for an upcoming bugfix release `2.2.1` would have `version = "2.2-unstable-2022-03-15"`.
226227- Dashes in the package `pname` _should_ be preserved in new variable names, rather than converted to underscores or camel cased — e.g., `http-parser` instead of `http_parser` or `httpParser`. The hyphenated style is preferred in all three package names.
228
+1-1
nixos/modules/config/users-groups.nix
···652 deps = [ "users" ];
653 text = ''
654 users=()
655- while IFS=: read -r user hash tail; do
656 if [[ "$hash" = "$"* && ! "$hash" =~ ^\''$${cryptSchemeIdPatternGroup}\$ ]]; then
657 users+=("$user")
658 fi
···652 deps = [ "users" ];
653 text = ''
654 users=()
655+ while IFS=: read -r user hash _; do
656 if [[ "$hash" = "$"* && ! "$hash" =~ ^\''$${cryptSchemeIdPatternGroup}\$ ]]; then
657 users+=("$user")
658 fi
···62 frontend = {};
6364 # include some popular integrations, that absolutely shouldn't break
65- esphome = {};
66 knx = {};
67 shelly = {};
68 zha = {};
···198199 with subtest("Check that new components get setup after restart"):
200 journal = get_journal_since(cursor)
201- for domain in ["esphome"]:
202 assert f"Setup of domain {domain} took" in journal, f"{domain} setup missing"
203204 with subtest("Check that no errors were logged"):
···62 frontend = {};
6364 # include some popular integrations, that absolutely shouldn't break
065 knx = {};
66 shelly = {};
67 zha = {};
···197198 with subtest("Check that new components get setup after restart"):
199 journal = get_journal_since(cursor)
200+ for domain in ["backup"]:
201 assert f"Setup of domain {domain} took" in journal, f"{domain} setup missing"
202203 with subtest("Check that no errors were logged"):
···18 emptyDiskImages = [ 512 ];
19 useBootLoader = true;
20 useEFIBoot = true;
21+ # This requires to have access
22+ # to a host Nix store as
23+ # the new root device is /dev/vdb
24+ # an empty 512MiB drive, containing no Nix store.
25+ mountHostNixStore = true;
26 };
2728 boot.loader.systemd-boot.enable = true;
···7 emptyDiskImages = [ 512 512 ];
8 useBootLoader = true;
9 useEFIBoot = true;
10+ # To boot off the encrypted disk, we need to have a init script which comes from the Nix store
11+ mountHostNixStore = true;
12 };
13 boot.loader.systemd-boot.enable = true;
14
···65 emptyDiskImages = [ 8192 8192 ];
66 useBootLoader = true;
67 useEFIBoot = true;
68+ # To boot off the LVM disk, we need to have a init script which comes from the Nix store.
69+ mountHostNixStore = true;
70 };
71 boot.loader.systemd-boot.enable = true;
72 boot.loader.efi.canTouchEfiVariables = true;
···14 virtualisation = {
15 emptyDiskImages = [ 512 ];
16 useBootLoader = true;
17+ # Necessary to boot off the encrypted disk because it requires a init script coming from the Nix store
18+ mountHostNixStore = true;
19 useEFIBoot = true;
20 };
21 boot.loader.systemd-boot.enable = true;
···9 repo = "ASF-ui";
10 # updated by the update script
11 # this is always the commit that should be used with asf-ui from the latest asf version
12- rev = "114c390c92a889b86cf560def28fb8f39bc4fe54";
13- sha256 = "1ajmi2l6xhv3nlnag2kmkblny925irp4gngdc3mniiimw364p826";
14 };
1516- npmDepsHash = "sha256-AY1DFuZkB8tOQd2FzHuNZ31rtLlWujP+3AqsMMB2BhU=";
1718 installPhase = ''
19 runHook preInstall
···9 repo = "ASF-ui";
10 # updated by the update script
11 # this is always the commit that should be used with asf-ui from the latest asf version
12+ rev = "3078d92e8b8d79571b771f452a53d1789330c541";
13+ hash = "sha256-K3YTgsde9aqtmKuFKjXpoWe6USGpKBlC6eeazuOYTqk=";
14 };
1516+ npmDepsHash = "sha256-L+aWsGMUmIsPJRQ4XPg8WOWOqHKcfDQTqUK+vGBHi0Y=";
1718 installPhase = ''
19 runHook preInstall
···910buildGoModule rec {
11 pname = "gvisor";
12- version = "20221102.1";
1314 # gvisor provides a synthetic go branch (https://github.com/google/gvisor/tree/go)
15 # that can be used to build gvisor without bazel.
016 # For updates, you should stick to the commits labeled "Merge release-** (automated)"
00000000001718 src = fetchFromGitHub {
19 owner = "google";
20 repo = "gvisor";
21- rev = "bf8eeee3a9eb966bc72c773da060a3c8bb73b8ff";
22- sha256 = "sha256-rADQsJ+AnBVlfQURGJl1xR6Ad5NyRWSrBSpOFMRld+o=";
23 };
2425- vendorSha256 = "sha256-iGLWxx/Kn1QaJTNOZcc+mwoF3ecEDOkaqmA0DH4pdgU=";
2627 nativeBuildInputs = [ makeWrapper ];
28
···910buildGoModule rec {
11 pname = "gvisor";
12+ version = "20230529.0";
1314 # gvisor provides a synthetic go branch (https://github.com/google/gvisor/tree/go)
15 # that can be used to build gvisor without bazel.
16+ #
17 # For updates, you should stick to the commits labeled "Merge release-** (automated)"
18+ # Make sure to check that the tagged commit for a release aligns with the version in
19+ # the message for good measure; e.g. the commit
20+ #
21+ # 142d38d770a07291877dc0d50b88b719dbef76dc is "Merge release-20230522.0-11-g919cfd12b (automated)"
22+ #
23+ # on the 'go' branch. But the mentioned commit, 919cfd12b..., is actually tagged as release-20230529.0
24+ #
25+ # https://github.com/google/gvisor/releases/tag/release-202329.0
26+ #
27+ # Presumably this is a result of the release process. Handle with care.
2829 src = fetchFromGitHub {
30 owner = "google";
31 repo = "gvisor";
32+ rev = "142d38d770a07291877dc0d50b88b719dbef76dc";
33+ hash = "sha256-Ukcjlz/6iUmDAUpQpIVfZHKbwK90Mt6fukcFaw64hQI=";
34 };
3536+ vendorHash = "sha256-COr47mZ4tsbzMjkv63l+fexo0RL5lrBXeewak9CuZVk=";
3738 nativeBuildInputs = [ makeWrapper ];
39
···1+# Create a cctools-compatible bintools that uses equivalent tools from LLVM in place of the ones
2+# from cctools when possible.
3+4+{ lib, stdenv, makeWrapper, cctools-port, llvmPackages, enableManpages ? true }:
5+6+let
7+ cctoolsVersion = lib.getVersion cctools-port;
8+ llvmVersion = llvmPackages.release_version;
9+10+ # `bitcode_strip` is not available until LLVM 12.
11+ useLLVMBitcodeStrip = lib.versionAtLeast llvmVersion "12";
12+13+ # A compatible implementation of `otool` was not added until LLVM 13.
14+ useLLVMOtool = lib.versionAtLeast llvmVersion "13";
15+16+ # Older versions of `strip` cause problems for the version of `codesign_allocate` available in
17+ # the version of cctools in nixpkgs. The version of `codesign_allocate` in cctools-1005.2 does
18+ # not appear to have issues, but the source is not available yet (as of June 2023).
19+ useLLVMStrip = lib.versionAtLeast llvmVersion "15" || lib.versionAtLeast cctoolsVersion "1005.2";
20+21+ llvm_bins = [
22+ "dwarfdump"
23+ "nm"
24+ "objdump"
25+ "size"
26+ "strings"
27+ ]
28+ ++ lib.optional useLLVMBitcodeStrip "bitcode-strip"
29+ ++ lib.optional useLLVMOtool "otool"
30+ ++ lib.optional useLLVMStrip "strip";
31+32+ # Only include the tools that LLVM doesn’t provide and that are present normally on Darwin.
33+ # The only exceptions are the following tools, which should be reevaluated when LLVM is bumped.
34+ # - install_name_tool (llvm-objcopy): unrecognized linker commands when building open source CF;
35+ # - libtool (llvm-libtool-darwin): not fully compatible when used with xcbuild; and
36+ # - lipo (llvm-lipo): crashes when running the LLVM test suite.
37+ cctools_bins = [
38+ "cmpdylib"
39+ "codesign_allocate"
40+ "ctf_insert"
41+ "install_name_tool"
42+ "ld"
43+ "libtool"
44+ "lipo"
45+ "nmedit"
46+ "pagestuff"
47+ "ranlib"
48+ "segedit"
49+ "vtool"
50+ ]
51+ ++ lib.optional (!useLLVMBitcodeStrip) "bitcode_strip"
52+ ++ lib.optional (!useLLVMOtool) "otool"
53+ ++ lib.optional (!useLLVMStrip) "strip";
54+55+ inherit (stdenv.cc) targetPrefix;
56+57+ linkManPages = pkg: source: target: lib.optionalString enableManpages ''
58+ sourcePath=${pkg}/share/man/man1/${source}.1.gz
59+ targetPath=$man/share/man/man1/${target}.1.gz
60+61+ if [ -f "$sourcePath" ]; then
62+ mkdir -p "$(dirname "$targetPath")"
63+ ln -s "$sourcePath" "$targetPath"
64+ fi
65+ '';
66+in
67+stdenv.mkDerivation {
68+ pname = "cctools-llvm";
69+ version = "${llvmVersion}-${cctoolsVersion}";
70+71+ nativeBuildInputs = [ makeWrapper ];
72+73+ # The `man` output has to be included unconditionally because darwin.binutils expects it.
74+ outputs = [ "out" "dev" "man" ];
75+76+ buildCommand = ''
77+ mkdir -p "$out/bin" "$man"
78+ ln -s ${lib.getDev cctools-port} "$dev"
79+80+ # Use the clang-integrated assembler instead of using `as` from cctools.
81+ makeWrapper "${lib.getBin llvmPackages.clang-unwrapped}/bin/clang" "$out/bin/${targetPrefix}as" \
82+ --add-flags "-x assembler -integrated-as -c"
83+84+ ln -s "${lib.getBin llvmPackages.bintools-unwrapped}/bin/llvm-ar" "$out/bin/${targetPrefix}ar"
85+ ${linkManPages llvmPackages.llvm-manpages "llvm-ar" "ar"}
86+87+ for tool in ${toString llvm_bins}; do
88+ cctoolsTool=''${tool/-/_}
89+ ln -s "${lib.getBin llvmPackages.llvm}/bin/llvm-$tool" "$out/bin/${targetPrefix}$cctoolsTool"
90+ ${linkManPages llvmPackages.llvm-manpages "llvm-$tool" "$cctoolsTool"}
91+ done
92+93+ for tool in ${toString cctools_bins}; do
94+ ln -s "${lib.getBin cctools-port}/bin/${targetPrefix}$tool" "$out/bin/${targetPrefix}$tool"
95+ ${linkManPages (lib.getMan cctools-port) "$tool" "$tool"}
96+ done
97+98+ ${linkManPages (lib.getMan cctools-port) "ld64" "ld64"}
99+ ${lib.optionalString (!useLLVMOtool) # The actual man page for otool in cctools is llvm-otool
100+ linkManPages (lib.getMan cctools-port) "llvm-otool" "llvm-otool"}
101+ '';
102+103+ passthru = { inherit targetPrefix; };
104+}
···4 # the frontend version corresponding to a specific home-assistant version can be found here
5 # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
6 pname = "home-assistant-frontend";
7- version = "20230503.3";
8 format = "wheel";
910 src = fetchPypi {
···12 pname = "home_assistant_frontend";
13 dist = "py3";
14 python = "py3";
15- hash = "sha256-BOSXRpHgHUygrbd7LaGHFj5aM+Bfp5VkB791tJ5jCwU=";
16 };
1718 # there is nothing to strip in this package
···4 # the frontend version corresponding to a specific home-assistant version can be found here
5 # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
6 pname = "home-assistant-frontend";
7+ version = "20230607.0";
8 format = "wheel";
910 src = fetchPypi {
···12 pname = "home_assistant_frontend";
13 dist = "py3";
14 python = "py3";
15+ hash = "sha256-O3hAF3QgZHm6q+manxlqWZLlSDxHMr86B3GdwMClxEk=";
16 };
1718 # there is nothing to strip in this package
···155 boost159 = throw "boost159 has been deprecated in favor of the latest version"; # Added 2023-01-01
156 boost15x = throw "boost15x has been deprecated in favor of the latest version"; # Added 2023-01-01
157 boost160 = throw "boost160 has been deprecated in favor of the latest version"; # Added 2023-01-01
0000000158 botan = throw "botan has been removed because it did not support a supported openssl version"; # added 2021-12-15
159 bpftool = bpftools; # Added 2021-05-03
160 bpytop = throw "bpytop has been deprecated by btop"; # Added 2023-02-16
···155 boost159 = throw "boost159 has been deprecated in favor of the latest version"; # Added 2023-01-01
156 boost15x = throw "boost15x has been deprecated in favor of the latest version"; # Added 2023-01-01
157 boost160 = throw "boost160 has been deprecated in favor of the latest version"; # Added 2023-01-01
158+ boost168 = throw "boost168 has been deprecated in favor of the latest version"; # Added 2023-06-08
159+ boost169 = throw "boost169 has been deprecated in favor of the latest version"; # Added 2023-06-08
160+ boost16x = throw "boost16x has been deprecated in favor of the latest version"; # Added 2023-06-08
161+ boost170 = throw "boost170 has been deprecated in favor of the latest version"; # Added 2023-06-08
162+ boost172 = throw "boost172 has been deprecated in favor of the latest version"; # Added 2023-06-08
163+ boost173 = throw "boost173 has been deprecated in favor of the latest version"; # Added 2023-06-08
164+ boost174 = throw "boost174 has been deprecated in favor of the latest version"; # Added 2023-06-08
165 botan = throw "botan has been removed because it did not support a supported openssl version"; # added 2021-12-15
166 bpftool = bpftools; # Added 2021-05-03
167 bpytop = throw "bpytop has been deprecated by btop"; # Added 2023-02-16