Replace defaultBla.$system with bla.$system.default
This also simplifies some InstallableFlake logic and fixes 'nix bundle' parsing its installable twice. Fixes #5532.
This commit is contained in:
parent
caf5172945
commit
162fbe31ff
|
@ -158,7 +158,10 @@ SourceExprCommand::SourceExprCommand()
|
|||
|
||||
Strings SourceExprCommand::getDefaultFlakeAttrPaths()
|
||||
{
|
||||
return {"defaultPackage." + settings.thisSystem.get()};
|
||||
return {
|
||||
"packages." + settings.thisSystem.get() + ".default",
|
||||
"defaultPackage." + settings.thisSystem.get()
|
||||
};
|
||||
}
|
||||
|
||||
Strings SourceExprCommand::getDefaultFlakeAttrPathPrefixes()
|
||||
|
|
|
@ -49,9 +49,11 @@ struct CmdBundle : InstallableCommand
|
|||
|
||||
Category category() override { return catSecondary; }
|
||||
|
||||
// FIXME: cut&paste from CmdRun.
|
||||
Strings getDefaultFlakeAttrPaths() override
|
||||
{
|
||||
Strings res{
|
||||
"apps." + settings.thisSystem.get() + ".default",
|
||||
"defaultApp." + settings.thisSystem.get()
|
||||
};
|
||||
for (auto & s : SourceExprCommand::getDefaultFlakeAttrPaths())
|
||||
|
@ -61,10 +63,7 @@ struct CmdBundle : InstallableCommand
|
|||
|
||||
Strings getDefaultFlakeAttrPathPrefixes() override
|
||||
{
|
||||
Strings res{
|
||||
"apps." + settings.thisSystem.get() + "."
|
||||
|
||||
};
|
||||
Strings res{"apps." + settings.thisSystem.get() + "."};
|
||||
for (auto & s : SourceExprCommand::getDefaultFlakeAttrPathPrefixes())
|
||||
res.push_back(s);
|
||||
return res;
|
||||
|
@ -80,7 +79,9 @@ struct CmdBundle : InstallableCommand
|
|||
const flake::LockFlags lockFlags{ .writeLockFile = false };
|
||||
InstallableFlake bundler{this,
|
||||
evalState, std::move(bundlerFlakeRef), bundlerName,
|
||||
{"defaultBundler." + settings.thisSystem.get()},
|
||||
{"bundlers." + settings.thisSystem.get() + ".default",
|
||||
"defaultBundler." + settings.thisSystem.get()
|
||||
},
|
||||
{"bundlers." + settings.thisSystem.get() + "."},
|
||||
lockFlags
|
||||
};
|
||||
|
|
|
@ -325,8 +325,15 @@ struct Common : InstallableCommand, MixProfile
|
|||
|
||||
Strings getDefaultFlakeAttrPaths() override
|
||||
{
|
||||
return {"devShell." + settings.thisSystem.get(), "defaultPackage." + settings.thisSystem.get()};
|
||||
Strings paths{
|
||||
"devShells." + settings.thisSystem.get() + ".default",
|
||||
"devShell." + settings.thisSystem.get(),
|
||||
};
|
||||
for (auto & p : SourceExprCommand::getDefaultFlakeAttrPaths())
|
||||
paths.push_back(p);
|
||||
return paths;
|
||||
}
|
||||
|
||||
Strings getDefaultFlakeAttrPathPrefixes() override
|
||||
{
|
||||
auto res = SourceExprCommand::getDefaultFlakeAttrPathPrefixes();
|
||||
|
|
|
@ -651,7 +651,7 @@ struct CmdFlakeCheck : FlakeCommand
|
|||
};
|
||||
|
||||
static Strings defaultTemplateAttrPathsPrefixes{"templates."};
|
||||
static Strings defaultTemplateAttrPaths = {"defaultTemplate"};
|
||||
static Strings defaultTemplateAttrPaths = {"templates.default", "defaultTemplate"};
|
||||
|
||||
struct CmdFlakeInitCommon : virtual Args, EvalCommand
|
||||
{
|
||||
|
|
|
@ -158,7 +158,10 @@ struct CmdRun : InstallableCommand
|
|||
|
||||
Strings getDefaultFlakeAttrPaths() override
|
||||
{
|
||||
Strings res{"defaultApp." + settings.thisSystem.get()};
|
||||
Strings res{
|
||||
"apps." + settings.thisSystem.get() + ".default",
|
||||
"defaultApp." + settings.thisSystem.get(),
|
||||
};
|
||||
for (auto & s : SourceExprCommand::getDefaultFlakeAttrPaths())
|
||||
res.push_back(s);
|
||||
return res;
|
||||
|
|
|
@ -10,26 +10,28 @@ cd $TEST_HOME
|
|||
cat <<EOF > flake.nix
|
||||
{
|
||||
outputs = {self}: {
|
||||
bundlers.$system.simple = drv:
|
||||
bundlers.$system = rec {
|
||||
simple = drv:
|
||||
if drv?type && drv.type == "derivation"
|
||||
then drv
|
||||
else self.defaultPackage.$system;
|
||||
defaultBundler.$system = self.bundlers.$system.simple;
|
||||
defaultPackage.$system = import ./simple.nix;
|
||||
defaultApp.$system = {
|
||||
type = "app";
|
||||
program = "\${import ./simple.nix}/hello";
|
||||
};
|
||||
else self.packages.$system.default;
|
||||
default = simple;
|
||||
};
|
||||
packages.$system.default = import ./simple.nix;
|
||||
apps.$system.default = {
|
||||
type = "app";
|
||||
program = "\${import ./simple.nix}/hello";
|
||||
};
|
||||
};
|
||||
}
|
||||
EOF
|
||||
nix build .#
|
||||
nix bundle --bundler .# .#
|
||||
nix bundle --bundler .#defaultBundler.$system .#defaultPackage.$system
|
||||
nix bundle --bundler .#bundlers.$system.simple .#defaultPackage.$system
|
||||
nix bundle --bundler .#bundlers.$system.default .#packages.$system.default
|
||||
nix bundle --bundler .#bundlers.$system.simple .#packages.$system.default
|
||||
|
||||
nix bundle --bundler .#defaultBundler.$system .#defaultApp.$system
|
||||
nix bundle --bundler .#bundlers.$system.simple .#defaultApp.$system
|
||||
nix bundle --bundler .#bundlers.$system.default .#apps.$system.default
|
||||
nix bundle --bundler .#bundlers.$system.simple .#apps.$system.default
|
||||
|
||||
clearStore
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ cat <<EOF > flake.nix
|
|||
nixConfig.allow-dirty = false; # See #5621
|
||||
|
||||
outputs = a: {
|
||||
defaultPackage.$system = import ./simple.nix;
|
||||
packages.$system.default = import ./simple.nix;
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
|
|
@ -15,8 +15,10 @@ cat <<EOF > flake.nix
|
|||
{
|
||||
inputs.foo.url = "$PWD/foo";
|
||||
outputs = a: {
|
||||
defaultPackage.$system = import ./simple.nix;
|
||||
packages.$system.test = import ./simple.nix;
|
||||
packages.$system = rec {
|
||||
test = import ./simple.nix;
|
||||
default = test;
|
||||
};
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
|
|
@ -41,8 +41,10 @@ cat > $flake1Dir/flake.nix <<EOF
|
|||
description = "Bla bla";
|
||||
|
||||
outputs = inputs: rec {
|
||||
packages.$system.foo = import ./simple.nix;
|
||||
defaultPackage.$system = packages.$system.foo;
|
||||
packages.$system = rec {
|
||||
foo = import ./simple.nix;
|
||||
default = foo;
|
||||
};
|
||||
|
||||
# To test "nix flake init".
|
||||
legacyPackages.x86_64-linux.hello = import ./simple.nix;
|
||||
|
@ -128,7 +130,7 @@ hash2=$(nix flake metadata flake1 --json --refresh | jq -r .revision)
|
|||
nix build -o $TEST_ROOT/result flake1#foo
|
||||
[[ -e $TEST_ROOT/result/hello ]]
|
||||
|
||||
# Test defaultPackage.
|
||||
# Test packages.default.
|
||||
nix build -o $TEST_ROOT/result flake1
|
||||
[[ -e $TEST_ROOT/result/hello ]]
|
||||
|
||||
|
@ -140,11 +142,11 @@ nix build -o $flake1Dir/result git+file://$flake1Dir
|
|||
nix path-info $flake1Dir/result
|
||||
|
||||
# 'getFlake' on a mutable flakeref should fail in pure mode, but succeed in impure mode.
|
||||
(! nix build -o $TEST_ROOT/result --expr "(builtins.getFlake \"$flake1Dir\").defaultPackage.$system")
|
||||
nix build -o $TEST_ROOT/result --expr "(builtins.getFlake \"$flake1Dir\").defaultPackage.$system" --impure
|
||||
(! nix build -o $TEST_ROOT/result --expr "(builtins.getFlake \"$flake1Dir\").packages.$system.default")
|
||||
nix build -o $TEST_ROOT/result --expr "(builtins.getFlake \"$flake1Dir\").packages.$system.default" --impure
|
||||
|
||||
# 'getFlake' on an immutable flakeref should succeed even in pure mode.
|
||||
nix build -o $TEST_ROOT/result --expr "(builtins.getFlake \"git+file://$flake1Dir?rev=$hash2\").defaultPackage.$system"
|
||||
nix build -o $TEST_ROOT/result --expr "(builtins.getFlake \"git+file://$flake1Dir?rev=$hash2\").packages.$system.default"
|
||||
|
||||
# Building a flake with an unlocked dependency should fail in pure mode.
|
||||
(! nix build -o $TEST_ROOT/result flake2#bar --no-registries)
|
||||
|
@ -370,13 +372,13 @@ cat > $templatesDir/flake.nix <<EOF
|
|||
description = "Some templates";
|
||||
|
||||
outputs = { self }: {
|
||||
templates = {
|
||||
templates = rec {
|
||||
trivial = {
|
||||
path = ./trivial;
|
||||
description = "A trivial flake";
|
||||
};
|
||||
default = trivial;
|
||||
};
|
||||
defaultTemplate = self.templates.trivial;
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
@ -388,8 +390,10 @@ cat > $templatesDir/trivial/flake.nix <<EOF
|
|||
description = "A flake for building Hello World";
|
||||
|
||||
outputs = { self, nixpkgs }: {
|
||||
packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
|
||||
defaultPackage.x86_64-linux = self.packages.x86_64-linux.hello;
|
||||
packages.x86_64-linux = rec {
|
||||
hello = nixpkgs.legacyPackages.x86_64-linux.hello;
|
||||
default = hello;
|
||||
};
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
@ -496,17 +500,15 @@ EOF
|
|||
cat > $flake3Dir/flake.nix <<EOF
|
||||
{
|
||||
outputs = { flake1, self }: {
|
||||
defaultPackage = {
|
||||
system-1 = "foo";
|
||||
system-2 = "bar";
|
||||
};
|
||||
packages.system-1.default = "foo";
|
||||
packages.system-2.default = "bar";
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
||||
checkRes=$(nix flake check --keep-going $flake3Dir 2>&1 && fail "nix flake check should have failed" || true)
|
||||
echo "$checkRes" | grep -q "defaultPackage.system-1"
|
||||
echo "$checkRes" | grep -q "defaultPackage.system-2"
|
||||
echo "$checkRes" | grep -q "packages.system-1.default"
|
||||
echo "$checkRes" | grep -q "packages.system-2.default"
|
||||
|
||||
# Test 'follows' inputs.
|
||||
cat > $flake3Dir/flake.nix <<EOF
|
||||
|
@ -591,7 +593,7 @@ mkdir $flake5Dir
|
|||
cat > $flake5Dir/flake.nix <<EOF
|
||||
{
|
||||
outputs = { self, flake1 }: {
|
||||
defaultPackage.$system = flake1.defaultPackage.$system;
|
||||
packages.$system.default = flake1.packages.$system.default;
|
||||
expr = assert builtins.pathExists ./flake.lock; 123;
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue