From 5aeabc1a8a8c5ecea3f5d0b7bcfa0aa0767ac92d Mon Sep 17 00:00:00 2001 Message-ID: <5aeabc1a8a8c5ecea3f5d0b7bcfa0aa0767ac92d.1699726745.git.avityazev@posteo.org> From: Aleksandr Vityazev Date: Sat, 11 Nov 2023 19:50:46 +0300 Subject: [PATCH] add extra config file option to yggdrasil command This is useful in Guix and Nix, because one config file can come from the world-readable store and another can be placed directly into /etc with much stricter permissions. --- cmd/yggdrasil/main.go | 12 ++++++++++++ src/config/config.go | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cmd/yggdrasil/main.go b/cmd/yggdrasil/main.go index a225755..3f53dda 100644 --- a/cmd/yggdrasil/main.go +++ b/cmd/yggdrasil/main.go @@ -42,6 +42,7 @@ func main() { genconf := flag.Bool("genconf", false, "print a new config to stdout") useconf := flag.Bool("useconf", false, "read HJSON/JSON config from stdin") useconffile := flag.String("useconffile", "", "read HJSON/JSON config from specified file path") + extraconffile := flag.String("extraconffile", "", "extra (usually private) HJSON/JSON config from specified file path") normaliseconf := flag.Bool("normaliseconf", false, "use in combination with either -useconf or -useconffile, outputs your configuration normalised") exportkey := flag.Bool("exportkey", false, "use in combination with either -useconf or -useconffile, outputs your private key in PEM format") confjson := flag.Bool("json", false, "print configuration from -genconf or -normaliseconf as JSON instead of HJSON") @@ -137,6 +138,17 @@ func main() { return } + if *extraconffile !="" { + f, err := os.Open(*extraconffile) + if err != nil { + panic(err) + } + if _, err := cfg.ReadFrom(f); err != nil { + panic(err) + } + _ = f.Close() + } + privateKey := ed25519.PrivateKey(cfg.PrivateKey) publicKey := privateKey.Public().(ed25519.PublicKey) diff --git a/src/config/config.go b/src/config/config.go index e899a35..76b9ec8 100644 --- a/src/config/config.go +++ b/src/config/config.go @@ -112,7 +112,7 @@ func (cfg *NodeConfig) ReadFrom(r io.Reader) (int64, error) { // then parse the configuration we loaded above on top of it. The effect // of this is that any configuration item that is missing from the provided // configuration will use a sane default. - *cfg = *GenerateConfig() + // *cfg = *GenerateConfig() if err := cfg.UnmarshalHJSON(conf); err != nil { return n, err } base-commit: b759683b76985665b5218346abab35f08d9f4d38 -- 2.41.0 3:37 +0200'>2021-07-05tests: Fix typo in 'tests/store.scm'....This typo had always been there since the test was introduced in commit ce72c780746776a86f59747f5eff8731cb4ff39b. Presumably, it became visible with 9e5812ac59b01ff011ec0c5b0f437dfe85d6fcc7, where caching was no longer global and thus the 'store' argument of 'package-derivation' was actually being used. * tests/store.scm ("current-build-output-port, UTF-8"): Refer to '%store' rather than 's' in 'package-derivation' call. Ludovic Courtès 2021-06-08store: Remove 'references/substitutes'....This procedure lost its only user in commit 710854304b1ab29332edcb76f3de532e0724c197. * guix/store.scm (references/substitutes): Remove. * tests/store.scm ("references/substitutes missing reference info") ("references/substitutes with substitute info"): Remove. Ludovic Courtès 2021-03-18tests: Make the STORE test more robust in a "pure" environment....Otherwise, the test crashes (not fails) when run in `guix environment --pure guix`. Fixes <https://bugs.gnu.org/46445>. * tests/store.scm (%shell): Fallback to "/bin/sh". Leo Famulari