···172 else if ! isPath value then
173 if isStringLike value then
174 throw ''
175- ${context} ("${toString value}") is a string-like value, but it should be a path instead.
176 Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.''
177 else
178 throw ''
179- ${context} is of type ${typeOf value}, but it should be a path instead.''
180 else if ! pathExists value then
181 throw ''
182 ${context} (${toString value}) does not exist.''
···172 else if ! isPath value then
173 if isStringLike value then
174 throw ''
175+ ${context} ("${toString value}") is a string-like value, but it should be a file set or a path instead.
176 Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.''
177 else
178 throw ''
179+ ${context} is of type ${typeOf value}, but it should be a file set or a path instead.''
180 else if ! pathExists value then
181 throw ''
182 ${context} (${toString value}) does not exist.''
+2-2
lib/fileset/tests.sh
···355rm -rf *
356357# Path coercion only works for paths
358-expectFailure 'toSource { root = ./.; fileset = 10; }' 'lib.fileset.toSource: `fileset` is of type int, but it should be a path instead.'
359-expectFailure 'toSource { root = ./.; fileset = "/some/path"; }' 'lib.fileset.toSource: `fileset` \("/some/path"\) is a string-like value, but it should be a path instead.
360\s*Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'
361362# Path coercion errors for non-existent paths
···355rm -rf *
356357# Path coercion only works for paths
358+expectFailure 'toSource { root = ./.; fileset = 10; }' 'lib.fileset.toSource: `fileset` is of type int, but it should be a file set or a path instead.'
359+expectFailure 'toSource { root = ./.; fileset = "/some/path"; }' 'lib.fileset.toSource: `fileset` \("/some/path"\) is a string-like value, but it should be a file set or a path instead.
360\s*Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'
361362# Path coercion errors for non-existent paths
···305306- `service.borgmatic.settings.location` and `services.borgmatic.configurations.<name>.location` are deprecated, please move your options out of sections to the global scope.
30700308## Other Notable Changes {#sec-release-23.11-notable-changes}
309310- The Cinnamon module now enables XDG desktop integration by default. If you are experiencing collisions related to xdg-desktop-portal-gtk you can safely remove `xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];` from your NixOS configuration.
···305306- `service.borgmatic.settings.location` and `services.borgmatic.configurations.<name>.location` are deprecated, please move your options out of sections to the global scope.
307308+- `dagger` was removed because using a package called `dagger` and packaging it from source violates their trademark policy.
309+310## Other Notable Changes {#sec-release-23.11-notable-changes}
311312- The Cinnamon module now enables XDG desktop integration by default. If you are experiencing collisions related to xdg-desktop-portal-gtk you can safely remove `xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];` from your NixOS configuration.
···6 "auth required pam_deny.so",
7 "auth sufficient @@pam_ccreds@@/lib/security/pam_ccreds.so action=store use_first_pass",
8 "auth sufficient pam_rootok.so",
9- "auth sufficient pam_unix.so likeauth try_first_pass",
10 "password sufficient @@pam_krb5@@/lib/security/pam_krb5.so use_first_pass",
11 "password sufficient pam_unix.so nullok yescrypt",
12 "session optional @@pam_krb5@@/lib/security/pam_krb5.so",
···15}
16actual_lines = set(machine.succeed("cat /etc/pam.d/chfn").splitlines())
1718-missing_lines = expected_lines - actual_lines
19-extra_lines = actual_lines - expected_lines
20-non_functional_lines = set([line for line in extra_lines if (line == "" or line.startswith("#"))])
021unexpected_functional_lines = extra_lines - non_functional_lines
2223with subtest("All expected lines are in the file"):
···6 "auth required pam_deny.so",
7 "auth sufficient @@pam_ccreds@@/lib/security/pam_ccreds.so action=store use_first_pass",
8 "auth sufficient pam_rootok.so",
9+ "auth sufficient pam_unix.so likeauth try_first_pass",
10 "password sufficient @@pam_krb5@@/lib/security/pam_krb5.so use_first_pass",
11 "password sufficient pam_unix.so nullok yescrypt",
12 "session optional @@pam_krb5@@/lib/security/pam_krb5.so",
···15}
16actual_lines = set(machine.succeed("cat /etc/pam.d/chfn").splitlines())
1718+stripped_lines = set([line.split("#")[0].rstrip() for line in actual_lines])
19+missing_lines = expected_lines - stripped_lines
20+extra_lines = stripped_lines - expected_lines
21+non_functional_lines = set([line for line in extra_lines if line == ""])
22unexpected_functional_lines = extra_lines - non_functional_lines
2324with subtest("All expected lines are in the file"):
-10
nixos/tests/systemd-repart.nix
···29 "+32M",
30 ])
3132- # Fix the GPT table by moving the backup table to the end of the enlarged
33- # disk image. This is necessary because we increased the size of the disk
34- # before. The disk needs to be a raw disk because sgdisk can only run on
35- # raw images.
36- subprocess.run([
37- "${pkgs.gptfdisk}/bin/sgdisk",
38- "--move-second-header",
39- tmp_disk_image.name,
40- ])
41-42 # Set NIX_DISK_IMAGE so that the qemu script finds the right disk image.
43 os.environ['NIX_DISK_IMAGE'] = tmp_disk_image.name
44 '';
···29 "+32M",
30 ])
31000000000032 # Set NIX_DISK_IMAGE so that the qemu script finds the right disk image.
33 os.environ['NIX_DISK_IMAGE'] = tmp_disk_image.name
34 '';
···38 buildHashes = builtins.fromJSON (builtins.readFile ./hashes.json);
3940 # our version of buck2; this should be a git tag
41- version = "2023-10-01";
4243 # the platform-specific, statically linked binary — which is also
44 # zstd-compressed
···63 # tooling
64 prelude-src =
65 let
66- prelude-hash = "75aa81a92edd2bf477538f9a3f0fe6a47e811842";
67 name = "buck2-prelude-${version}.tar.gz";
68 hash = buildHashes."_prelude";
69 url = "https://github.com/facebook/buck2-prelude/archive/${prelude-hash}.tar.gz";
···38 buildHashes = builtins.fromJSON (builtins.readFile ./hashes.json);
3940 # our version of buck2; this should be a git tag
41+ version = "2023-10-15";
4243 # the platform-specific, statically linked binary — which is also
44 # zstd-compressed
···63 # tooling
64 prelude-src =
65 let
66+ prelude-hash = "880be565178cf1e08ce9badef52b215f91e48479";
67 name = "buck2-prelude-${version}.tar.gz";
68 hash = buildHashes."_prelude";
69 url = "https://github.com/facebook/buck2-prelude/archive/${prelude-hash}.tar.gz";
···166167 ### D ###
1680169 dart_stable = dart; # Added 2020-01-15
170 dat = nodePackages.dat;
171 deadpixi-sam = deadpixi-sam-unstable;
···166167 ### D ###
168169+ dagger = throw "'dagger' has been removed from nixpkgs, as the trademark policy of the upstream project is incompatible"; # Added 2023-10-16
170 dart_stable = dart; # Added 2020-01-15
171 dat = nodePackages.dat;
172 deadpixi-sam = deadpixi-sam-unstable;
···285 pylibgen = throw "pylibgen is unmaintained upstreamed, and removed from nixpkgs"; # added 2020-06-20
286 PyLD = pyld; # added 2022-06-22
287 pymatgen-lammps = throw "pymatgen-lammps has been removed because it is unmaintained and broken"; # added 2023-06-20
0288 pymc3 = pymc; # added 2022-06-05, module was rename starting with 4.0.0
289 pymssql = throw "pymssql has been abandoned upstream."; # added 2020-05-04
290 PyMVGLive = pymvglive; # added 2023-02-19
···285 pylibgen = throw "pylibgen is unmaintained upstreamed, and removed from nixpkgs"; # added 2020-06-20
286 PyLD = pyld; # added 2022-06-22
287 pymatgen-lammps = throw "pymatgen-lammps has been removed because it is unmaintained and broken"; # added 2023-06-20
288+ pymazda = throw "pymazda has been removed, because the upstream repo has been affected by a DCMA claim."; # added 2023-10-16
289 pymc3 = pymc; # added 2022-06-05, module was rename starting with 4.0.0
290 pymssql = throw "pymssql has been abandoned upstream."; # added 2020-05-04
291 PyMVGLive = pymvglive; # added 2023-02-19