Terraform needs the plugin directory to not be a tree of symlinks,
because it uses https://pkg.go.dev/path/filepath#Walk under the hood.
This restores some of the work that had been undone in
e7dbfd7ece
This will provide at least the `name` and `meta` attributes when
evaluating on such a system. `meta.platforms` and therefore
`meta.broken` can then be used to determine if the package can be
evaluated further.
Chrome, Chromium, VSCode, Slack, Signal, Discord, element-desktop,
schildichat.
For the latter two, the feature flag useWayland was removed and a
wrapper script was provided.
```
❯ result/bin/talosctl cluster create --wait
validating CIDR and reserving IPs
generating PKI and tokens
downloading ghcr.io/talos-systems/talos:v0.14.1
creating network talos-default
creating master nodes
creating worker nodes
renamed talosconfig context "talos-default" -> "talos-default-1"
waiting for API
bootstrapping cluster
waiting for etcd to be healthy: OK
waiting for apid to be ready: OK
waiting for kubelet to be healthy: OK
waiting for all nodes to finish boot sequence: OK
waiting for all k8s nodes to report: OK
waiting for all k8s nodes to report ready: OK
waiting for all control plane components to be ready: OK
waiting for kube-proxy to report ready: OK
waiting for coredns to report ready: OK
waiting for all k8s nodes to report schedulable: OK
merging kubeconfig into "/home/flokli/.kube/config"
PROVISIONER docker
NAME talos-default
NETWORK NAME talos-default
NETWORK CIDR 10.5.0.0/24
NETWORK GATEWAY 10.5.0.1
NETWORK MTU 1500
NODES:
NAME TYPE IP CPU RAM DISK
/talos-default-master-1 controlplane 10.5.0.2 2.00 2.1 GB -
/talos-default-worker-1 worker 10.5.0.3 2.00 2.1 GB -
```
`--provisioner qemu` was also tested. Note you need to have
`_out/{initramfs-$arch.xz,vmlinuz-$arch}` available, as documented in
their [docs](https://www.talos.dev/docs/v0.14/local-platforms/qemu/#install-talos-kernel-and-initramfs)
This fixes:
--------------------------------------------------------------------------------
configuring
ERROR at //ui/gtk/BUILD.gn:17:1: Assertion failed.
assert(use_gio, "GIO is required for building with GTK")
^-----
GIO is required for building with GTK
See //content/shell/BUILD.gn:308:15: which caused the file to be included.
deps += [ "//ui/gtk" ]
^---------
--------------------------------------------------------------------------------
But there's still another build issue(s) left:
--------------------------------------------------------------------------------
[25491/48383] ACTION //components/url_formatter/spoof_checks/top_domains:generate_top_domain_list_variables_file(//build/toolchain/linux/unbundle:default)d_tmp/browser_command.mojom-webui.jsab_page_third_party.mojom-webui.js
FAILED: gen/components/url_formatter/spoof_checks/top_domains/top500-domains-inc.cc
python3 ../../build/gn_run_binary.py make_top_domain_list_variables ../../components/url_formatter/spoof_checks/top_domains/domains.list top500_domains gen/components/url_formatter/spoof_checks/top_domains/top500-domains-inc.cc
make_top_domain_list_variables failed with exit code -4
ninja: build stopped: subcommand failed.
--------------------------------------------------------------------------------
Now that the terraform 0.12 compatibility is not needed anymore, the
`terraform.withPlugins` and `terraform-providers.mkProvider`
implementations can be simplified.
Instead of building a bunch of bin wrappers on instantiation, the
providers are now stored in
`$out/libexec/terraform-providers/<registry>/<owner>/<name>/<version>/<os>_<arch>/terraform-provider-<name>_v<version>`
and then a simple `buildEnv` can be used to merge them.
This breaks back-compat so it's not possible to mix-and-match with
previous versions of nixpkgs. In exchange, it now becomes possible to
use the providers from
[nixpkgs-terraform-providers-bin](https://github.com/numtide/nixpkgs-terraform-providers-bin)
directly.