Merge pull request #333952 from r-vdp/specialisation-name-regex
specialisation: limit the allowed characters in specialisation names
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
{ config, lib, pkgs, extendModules, noUserModules, ... }:
|
||||
{ config, lib, extendModules, noUserModules, ... }:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
attrNames
|
||||
concatStringsSep
|
||||
filter
|
||||
length
|
||||
mapAttrs
|
||||
mapAttrsToList
|
||||
match
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
@@ -73,6 +77,19 @@ in
|
||||
};
|
||||
|
||||
config = {
|
||||
assertions = [(
|
||||
let
|
||||
invalidNames = filter (name: match "[[:alnum:]_]+" name == null) (attrNames config.specialisation);
|
||||
in
|
||||
{
|
||||
assertion = length invalidNames == 0;
|
||||
message = ''
|
||||
Specialisation names can only contain alphanumeric characters and underscores
|
||||
Invalid specialisation names: ${concatStringsSep ", " invalidNames}
|
||||
'';
|
||||
}
|
||||
)];
|
||||
|
||||
system.systemBuilderCommands = ''
|
||||
mkdir $out/specialisation
|
||||
${concatStringsSep "\n"
|
||||
|
||||
@@ -65,7 +65,7 @@ class Entry:
|
||||
# Matching nixos*-generation-$number*.conf
|
||||
rex_generation = re.compile(r"^nixos.*-generation-([0-9]+).*\.conf$")
|
||||
# Matching nixos*-generation-$number-specialisation-$specialisation_name*.conf
|
||||
rex_specialisation = re.compile(r"^nixos.*-generation-([0-9]+)-specialisation-([a-zA-Z0-9]+).*\.conf$")
|
||||
rex_specialisation = re.compile(r"^nixos.*-generation-([0-9]+)-specialisation-([a-zA-Z0-9_]+).*\.conf$")
|
||||
profile = rex_profile.sub(r"\1", filename) if rex_profile.match(filename) else None
|
||||
specialisation = rex_specialisation.sub(r"\2", filename) if rex_specialisation.match(filename) else None
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user