From: Eric Wong <e@80x24.org>
To: Alyssa Ross <hi@alyssa.is>
Cc: meta@public-inbox.org
Subject: Re: public-inbox-init with minimal info
Date: Tue, 8 Oct 2019 07:11:01 +0000 [thread overview]
Message-ID: <20191008071101.GA28837@dcvr> (raw)
In-Reply-To: <87tv8k5ldb.fsf@alyssa.is>
Alyssa Ross <hi@alyssa.is> wrote:
<snip>
> Eric Wong wrote:
> > Does Nix allow users to set things in the config file directly?
> > (instead of going through the functional language).
>
> It does; see below.
<snip>
> >> services.public-inbox.http.mount = "/lists/archives/";
> >
> > I think all the services would want access to the same
> > directories, not just httpd (if I'm understanding that config
> > correctly). Also, httpd/nntpd only need read-only access to their
> > mount points, in case that affects things...
>
> "mount" here is in the PSGI sense, not the file system sense. My
> public-inboxes are at https://example.org/lists/archives/. Maybe
> there's a better name.
Ah, so that overrides the Plack::Builder DSL/language. We also
have an analogous support problem for PSGI vs public-inbox-config,
so I've been avoiding any overlap between them.
Perhaps "psgi_mount" would be clearer? *shrug*
> > The purity and rollback parts definitely sound good :)
> >
> > However, I'm wondering what level of customization can be
> > supported by editing the public-inbox config directly? (instead
> > of using the Nix language)
> >
> > Having both an upstream and distro-specific ways to configure the
> > same thing could be confusing to both users and people trying to
> > help them.
> >
> > I can agree with things like PATH, environment variables,
> > services-to-enable and mount-points being environment and/or
> > distro-specific. The rest (everything in public-inbox-config(5)),
> > I'm not sure about; it would increase support/doc overhead.
>
> We accept that we can't package every option and have two conventions
> for making sure that our users can always use every option upstream
> gives them.
>
> One is to provide an option called extraConfig, which just adds a string
> verbatim to the end of the configuration file. The other is to provide
> an option called config, which is structured Nix that gets turned into
> the appropriate configuration. The latter is preferred, because then
> from our point of view the configuration is still structured, and can be
> read back in Nix without having to parse a string, etc. Since
> public-inbox's configuration format is well-defined as git config,
> there's no reason to support the former. So, supposing you introduce a
> new option, publicinbox.foo, and the NixOS module hasn't yet been
> updated to support it natively yet. In that case, a user could use this
> option as an escape hatch to use it anyway:
>
> services.public-inbox.config = {
> publicinbox.foo = "bar";
> };
>
> This will then be compiled into git config using a function I've written
> that essentially runs git config --add for each config option to build
> up a configuration file.
>
> By now I'm sure you're wondering "why bother adding individual NixOS
> options for each setting at all, if you can do this?", and there are a
> couple of reasons why we try to do it anyway. One is that we can do
> type checking -- setting publicinboxmda.spamcheck to "invalid" can be a
> build-time failure rather than a runtime one. The other is that we can
> provide documentation for each option, and our users can see
> documentation for every option available on their NixOS system in one
> place at <https://nixos.org/nixos/options.html>. We regularly hear from
> users that this is one of their favourite things about NixOS. A single
> place to search configuration options for every package they use.
Cool. An upside for non-NixOS users is we get more experienced
and clueful maintainers reporting bugs to upstream as a result :)
Btw, would it be helpful if public-inbox provided a linter for
its config own file?
I'm actually thinking of doing some sort of graphing tool using
Graph::Easy to visualize all the relationships between various
components, and maybe it can parse the config file to show
people how things work; and it could do the linting as a side-effect.
> I hear your concerns about this being difficult for people trying to
> help NixOS users with public-inbox. It's absolutely not my goal to
> fragment the ecosystem. I'm not aware of this having been a significant
> issue for any of the hundreds of modules we have so far. Users seem to
> be generally pretty good at figuring out what's a NixOS issue and what's
> an upstream issue, and, if a NixOS user does need upstream support, it's
> still easy enough for them to find the generated configuration file to
> share with non-NixOS users. Overall, we've found that the benefits of
> "heavyweight" NixOS modules, for want of a better term, outweigh the
> disadvantages. Should this end up having a negative impact on the
> public-inbox system, I'd be happy to review the approach. But I think
> that instead, we'll end up with public-inbox being accessible to more
> people by being available with the advantages of NixOS --
> declarative configuration, reproducibility, near-atomic updates and
> rollbacks, etc.
Thanks, that is all very reassuring to read.
next prev parent reply other threads:[~2019-10-08 7:11 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-03 11:16 public-inbox-init with minimal info Alyssa Ross
2019-10-04 2:45 ` Eric Wong
2019-10-04 11:18 ` Alyssa Ross
2019-10-05 5:14 ` Eric Wong
2019-10-05 13:05 ` Alyssa Ross
2019-10-05 19:58 ` Eric Wong
2019-10-06 9:52 ` Alyssa Ross
2019-10-06 12:01 ` Eric Wong
2019-10-07 20:52 ` Alyssa Ross
2019-10-08 7:11 ` Eric Wong [this message]
2019-10-09 12:09 ` Alyssa Ross
2019-10-10 8:19 ` Eric Wong
2019-10-16 10:04 ` Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://public-inbox.org/README
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191008071101.GA28837@dcvr \
--to=e@80x24.org \
--cc=hi@alyssa.is \
--cc=meta@public-inbox.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).