Dict: offline version?

Huh, I think that worked. So I enabled and rebuilt and now can lookup words (and indeed can see responses from multiple of the DBs I installed), but during rebuild I saw multiple errors output from some build process:

Basename is /nix/store/gfbza56cr66mhka9rnzc2s1ksb939iza-dict-db-wiktionary-20220420/share/dictd/wiktionary-en
Locale is en_US.UTF-8
/nix/store/7cni7ndy2pm18ysl5znq6znb30sxp156-stdenv-linux/setup: line 1626: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory
/nix/store/m36d29gn5gm9bk0g7fcln1v8171hvn95-bash-5.2-p15/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
awk: cmd. line:4: fatal: cannot open file `en_US.UTF-8' for reading: No such file or directory
dictfmt: option '--locale' requires an argument
dictfmt-1.13.1
Copyright 1997-2000 Rickard E. Faith (faith@cs.unc.edu)
Copyright 2002-2007 Aleksey Cheusov (vle@gmx.net)

Usage: dictfmt -c5|-t|-e|-f|-h|-j|-p [-u url] [-s name] [options] basename
       dictfmt -i|-I [options]
Create a dictionary database and index file for use by a dictd server

# qsu@ snipped _long_ help output from dictfmt

I don’t see anything obvious in https://github.com/NixOS/nixpkgs/blob/e5f018cf150e29aac26c61dac0790ea023c46b24/nixos/modules/services/misc/dictd.nix - no references to dictfmt or awk

here's the full output of rebuilding in case the above snippet isn't clear:
$ sudo --reset-timestamp nixos-rebuild switch --upgrade
[sudo] password for qsu:
unpacking channels...
building Nix...
building the system configuration...
trace: warning: mdadm: Neither MAILADDR nor PROGRAM has been set. This will cause the `mdmon` service to crash.
these 20 derivations will be built:
  /nix/store/200m9ajjj53vscmwp795rw85sdrnqhfn-dictd-dbs.drv
  /nix/store/ajq02in86wmw5np7hgxmhcc7bvlnc676-system-path.drv
  /nix/store/dl8w7mpvpskyx9nmqcz6hrijcnqryqrw-X-Restart-Triggers.drv
  /nix/store/5d03f6k6xrv94pjxyhjp478lfkmlkxwa-unit-polkit.service.drv
  /nix/store/5hksp8i3annfd1m42ycch11yb55gwg13-unit-script-dictd-start.drv
  /nix/store/7alayslwnrkmbpdgyfz3cri698n9nrjl-dbus-1.drv
  /nix/store/fxffiip2zvd2xrcdmvh0hxpb928w1wy1-X-Restart-Triggers.drv
  /nix/store/9a8mvkj1qn1g8kypchsq732fppkqkwrp-unit-dbus.service.drv
  /nix/store/66fvph86fwzbc0c8zfd45gzqj14na3n7-user-units.drv
  /nix/store/7bmk2rf2lakba9sw72y8k8hj729l16bx-unit-dbus.service.drv
  /nix/store/s6f16h3vyh8az4h1qqigvi2am4q6r53k-unit-accounts-daemon.service.drv
  /nix/store/z8h5p821j1ywz8wlk6p1cca2f91hb9wk-unit-dictd.service.drv
  /nix/store/9x827sr5fcm63h2l0578fsfy400xfibj-system-units.drv
  /nix/store/c3p7zdy0m2jb3hz95bwzii72s93xsmqz-etc-dict.conf.drv
  /nix/store/k7h48ln52vcykpnzxh1ivr5frghgj1k7-set-environment.drv
  /nix/store/c44b30x3jzmvzbc71sk2ls1vhiw6033w-etc-profile.drv
  /nix/store/mbyfn7zngqb13xa6pxcmpa497yd2ynfn-etc-pam-environment.drv
  /nix/store/nvwjbv4x96h7i4jqa7fkr5qp9pr3bwhp-etc.drv
  /nix/store/q8l78ijzxqjjsvl4lc2lz509a6glrvrn-users-groups.json.drv
  /nix/store/w5fy9c9zcisi2s0nsphc63xd18a3q66b-nixos-system-qsulaptop-23.11pre524605.3a2786eea085.drv
this path will be fetched (0.05 MiB download, 0.20 MiB unpacked):
  /nix/store/iwbwvxdkj5zhxwkh27cihx90q5cw0kix-libfaketime-0.9.10
building '/nix/store/ajq02in86wmw5np7hgxmhcc7bvlnc676-system-path.drv'...
building '/nix/store/c3p7zdy0m2jb3hz95bwzii72s93xsmqz-etc-dict.conf.drv'...
copying path '/nix/store/iwbwvxdkj5zhxwkh27cihx90q5cw0kix-libfaketime-0.9.10' from 'https://cache.nixos.org'...
building '/nix/store/200m9ajjj53vscmwp795rw85sdrnqhfn-dictd-dbs.drv'...
warning: collision between `/nix/store/gfbza56cr66mhka9rnzc2s1ksb939iza-dict-db-wiktionary-20220420/share/dictd/locale' and `/nix/store/psj541qixnmwj96ca5ylk7vlzqqyz88q-dict-db-wordnet-542/share/dictd/locale'
patching sources
updateAutotoolsGnuConfigScriptsPhase
configuring
no configure script, doing nothing
building
no Makefile or custom buildPhase, doing nothing
installing
Got store path /nix/store/gfbza56cr66mhka9rnzc2s1ksb939iza-dict-db-wiktionary-20220420
Directory reference: /nix/store/gfbza56cr66mhka9rnzc2s1ksb939iza-dict-db-wiktionary-20220420/share/dictd
Basename is /nix/store/gfbza56cr66mhka9rnzc2s1ksb939iza-dict-db-wiktionary-20220420/share/dictd/wiktionary-en
Locale is en_US.UTF-8
/nix/store/7cni7ndy2pm18ysl5znq6znb30sxp156-stdenv-linux/setup: line 1626: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory
/nix/store/m36d29gn5gm9bk0g7fcln1v8171hvn95-bash-5.2-p15/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
awk: cmd. line:4: fatal: cannot open file `en_US.UTF-8' for reading: No such file or directory
dictfmt: option '--locale' requires an argument
dictfmt-1.13.1
Copyright 1997-2000 Rickard E. Faith (faith@cs.unc.edu)
Copyright 2002-2007 Aleksey Cheusov (vle@gmx.net)

Usage: dictfmt -c5|-t|-e|-f|-h|-j|-p [-u url] [-s name] [options] basename
       dictfmt -i|-I [options]
Create a dictionary database and index file for use by a dictd server

-c5       headwords are preceded by a line containing at least
                5 underscore (_) characters
-t        implies -c5, --without-headword and --without-info options
-e        file is in html format
-f        headwords start in col 0, definitions start in col 8
-j        headwords are set off by colons
-p        headwords are preceded by %p, with %d on following line
-i        reformat stdin having three-column .index file format
-u <url>  URL of site where database was obtained
-s <name> name of the database
--license
-L        display copyright and license information
--version
-V        display version information
-D        debug
--utf8    for creating utf-8 dictionary
--quiet
--silent
-q        quiet operation
--help    display this help message
--locale   <locale> specifies the locale used for sorting.
           if no locale is specified, the "C" locale is used.
--allchars all characters (not only alphanumeric and space)
           will be used in search if this argument is supplied
--headword-separator <sep> sets headword separator which allows
                     several words to have the same definition
                     Example: autumn%%%fall can be used
                     if '--headword-separator %%%' is supplied
--index-data-separator <sep> sets index/data separator which allows
                     to explicitly set fourth column in .index file,
                     the default is "\034"
--break-headwords    multiple headwords will be written on separate lines
                     in the .dict file.  For use with '--headword-separator.
--index-keep-orig    fourth column in .index file stores original headword
                     which is returned by MATCH command
--case-sensitive     Create .index/.dict files for case sensitive search
--without-headword   headwords will not be copied to .dict file
--without-header     header will not be copied to DB info entry
--without-url        URL will not be copied to DB info entry
--without-time       time of creation will not be copied to DB info entry
--without-info       DB info entry will not be created.
                     This may be useful if 00-database-info headword
                     is expected from stdin (dictunformat outputs it).
--columns            Set the number of columns for wrapping text
                     before writing it to .dict file.
                     If it is zero, wrapping is off.
--default-strategy  Sets the default search strategy for the database.
                    Special entry 00-database-default-strategy is created
                    for this purpose.
--mime-header       Sets MIME header stored in .data file which
                    prepend definition
                    when client sent OPTION MIME to `dictd'
--without-ver      do not create 00-database-dictfmt-<VER> entry in .index
/nix/store/m36d29gn5gm9bk0g7fcln1v8171hvn95-bash-5.2-p15/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
dictfmt: option '--locale' requires an argument
dictfmt-1.13.1
Copyright 1997-2000 Rickard E. Faith (faith@cs.unc.edu)
Copyright 2002-2007 Aleksey Cheusov (vle@gmx.net)

Usage: dictfmt -c5|-t|-e|-f|-h|-j|-p [-u url] [-s name] [options] basename
       dictfmt -i|-I [options]
Create a dictionary database and index file for use by a dictd server

-c5       headwords are preceded by a line containing at least
                5 underscore (_) characters
-t        implies -c5, --without-headword and --without-info options
-e        file is in html format
-f        headwords start in col 0, definitions start in col 8
-j        headwords are set off by colons
-p        headwords are preceded by %p, with %d on following line
-i        reformat stdin having three-column .index file format
-u <url>  URL of site where database was obtained
-s <name> name of the database
--license
-L        display copyright and license information
--version
-V        display version information
-D        debug
--utf8    for creating utf-8 dictionary
--quiet
--silent
-q        quiet operation
--help    display this help message
--locale   <locale> specifies the locale used for sorting.
           if no locale is specified, the "C" locale is used.
--allchars all characters (not only alphanumeric and space)
           will be used in search if this argument is supplied
--headword-separator <sep> sets headword separator which allows
                     several words to have the same definition
                     Example: autumn%%%fall can be used
                     if '--headword-separator %%%' is supplied
--index-data-separator <sep> sets index/data separator which allows
                     to explicitly set fourth column in .index file,
                     the default is "\034"
--break-headwords    multiple headwords will be written on separate lines
                     in the .dict file.  For use with '--headword-separator.
--index-keep-orig    fourth column in .index file stores original headword
                     which is returned by MATCH command
--case-sensitive     Create .index/.dict files for case sensitive search
--without-headword   headwords will not be copied to .dict file
--without-header     header will not be copied to DB info entry
--without-url        URL will not be copied to DB info entry
--without-time       time of creation will not be copied to DB info entry
--without-info       DB info entry will not be created.
                     This may be useful if 00-database-info headword
                     is expected from stdin (dictunformat outputs it).
--columns            Set the number of columns for wrapping text
                     before writing it to .dict file.
                     If it is zero, wrapping is off.
--default-strategy  Sets the default search strategy for the database.
                    Special entry 00-database-default-strategy is created
                    for this purpose.
--mime-header       Sets MIME header stored in .data file which
                    prepend definition
                    when client sent OPTION MIME to `dictd'
--without-ver      do not create 00-database-dictfmt-<VER> entry in .index
gawk: cmd. line:25: fatal: cannot open file `en_US.UTF-8' for reading: No such file or directory
Got store path /nix/store/psj541qixnmwj96ca5ylk7vlzqqyz88q-dict-db-wordnet-542
Directory reference: /nix/store/psj541qixnmwj96ca5ylk7vlzqqyz88q-dict-db-wordnet-542/share/dictd
Basename is /nix/store/psj541qixnmwj96ca5ylk7vlzqqyz88q-dict-db-wordnet-542/share/dictd/wn
Locale is en_US.UTF-8
/nix/store/7cni7ndy2pm18ysl5znq6znb30sxp156-stdenv-linux/setup: line 1626: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
created 21360 symlinks in user environment
gtk-update-icon-cache: Cache file created successfully.
gtk-update-icon-cache: Cache file created successfully.
building '/nix/store/dl8w7mpvpskyx9nmqcz6hrijcnqryqrw-X-Restart-Triggers.drv'...
building '/nix/store/7alayslwnrkmbpdgyfz3cri698n9nrjl-dbus-1.drv'...
building '/nix/store/mbyfn7zngqb13xa6pxcmpa497yd2ynfn-etc-pam-environment.drv'...
building '/nix/store/k7h48ln52vcykpnzxh1ivr5frghgj1k7-set-environment.drv'...
building '/nix/store/s6f16h3vyh8az4h1qqigvi2am4q6r53k-unit-accounts-daemon.service.drv'...
/nix/store/m36d29gn5gm9bk0g7fcln1v8171hvn95-bash-5.2-p15/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
dictfmt: option '--locale' requires an argument
dictfmt-1.13.1
Copyright 1997-2000 Rickard E. Faith (faith@cs.unc.edu)
Copyright 2002-2007 Aleksey Cheusov (vle@gmx.net)

Usage: dictfmt -c5|-t|-e|-f|-h|-j|-p [-u url] [-s name] [options] basename
       dictfmt -i|-I [options]
Create a dictionary database and index file for use by a dictd server

-c5       headwords are preceded by a line containing at least
                5 underscore (_) characters
-t        implies -c5, --without-headword and --without-info options
-e        file is in html format
-f        headwords start in col 0, definitions start in col 8
-j        headwords are set off by colons
-p        headwords are preceded by %p, with %d on following line
-i        reformat stdin having three-column .index file format
-u <url>  URL of site where database was obtained
-s <name> name of the database
--license
-L        display copyright and license information
--version
-V        display version information
-D        debug
--utf8    for creating utf-8 dictionary
--quiet
--silent
-q        quiet operation
--help    display this help message
--locale   <locale> specifies the locale used for sorting.
           if no locale is specified, the "C" locale is used.
--allchars all characters (not only alphanumeric and space)
           will be used in search if this argument is supplied
--headword-separator <sep> sets headword separator which allows
                     several words to have the same definition
                     Example: autumn%%%fall can be used
                     if '--headword-separator %%%' is supplied
--index-data-separator <sep> sets index/data separator which allows
                     to explicitly set fourth column in .index file,
                     the default is "\034"
--break-headwords    multiple headwords will be written on separate lines
                     in the .dict file.  For use with '--headword-separator.
--index-keep-orig    fourth column in .index file stores original headword
                     which is returned by MATCH command
--case-sensitive     Create .index/.dict files for case sensitive search
--without-headword   headwords will not be copied to .dict file
--without-header     header will not be copied to DB info entry
--without-url        URL will not be copied to DB info entry
--without-time       time of creation will not be copied to DB info entry
--without-info       DB info entry will not be created.
                     This may be useful if 00-database-info headword
                     is expected from stdin (dictunformat outputs it).
--columns            Set the number of columns for wrapping text
                     before writing it to .dict file.
                     If it is zero, wrapping is off.
--default-strategy  Sets the default search strategy for the database.
                    Special entry 00-database-default-strategy is created
                    for this purpose.
--mime-header       Sets MIME header stored in .data file which
                    prepend definition
                    when client sent OPTION MIME to `dictd'
--without-ver      do not create 00-database-dictfmt-<VER> entry in .index
awk: cmd. line:4: fatal: cannot open file `en_US.UTF-8' for reading: No such file or directory
/nix/store/m36d29gn5gm9bk0g7fcln1v8171hvn95-bash-5.2-p15/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
dictfmt: option '--locale' requires an argument
dictfmt-1.13.1
Copyright 1997-2000 Rickard E. Faith (faith@cs.unc.edu)
Copyright 2002-2007 Aleksey Cheusov (vle@gmx.net)

Usage: dictfmt -c5|-t|-e|-f|-h|-j|-p [-u url] [-s name] [options] basename
       dictfmt -i|-I [options]
Create a dictionary database and index file for use by a dictd server

-c5       headwords are preceded by a line containing at least
                5 underscore (_) characters
-t        implies -c5, --without-headword and --without-info options
building '/nix/store/fxffiip2zvd2xrcdmvh0hxpb928w1wy1-X-Restart-Triggers.drv'...
building '/nix/store/c44b30x3jzmvzbc71sk2ls1vhiw6033w-etc-profile.drv'...
building '/nix/store/5d03f6k6xrv94pjxyhjp478lfkmlkxwa-unit-polkit.service.drv'...
-e        file is in html format
-f        headwords start in col 0, definitions start in col 8
-j        headwords are set off by colons
-p        headwords are preceded by %p, with %d on following line
-i        reformat stdin having three-column .index file format
-u <url>  URL of site where database was obtained
-s <name> name of the database
--license
-L        display copyright and license information
--version
-V        display version information
-D        debug
--utf8    for creating utf-8 dictionary
--quiet
--silent
-q        quiet operation
--help    display this help message
--locale   <locale> specifies the locale used for sorting.
           if no locale is specified, the "C" locale is used.
--allchars all characters (not only alphanumeric and space)
           will be used in search if this argument is supplied
--headword-separator <sep> sets headword separator which allows
                     several words to have the same definition
                     Example: autumn%%%fall can be used
                     if '--headword-separator %%%' is supplied
--index-data-separator <sep> sets index/data separator which allows
                     to explicitly set fourth column in .index file,
                     the default is "\034"
--break-headwords    multiple headwords will be written on separate lines
                     in the .dict file.  For use with '--headword-separator.
--index-keep-orig    fourth column in .index file stores original headword
                     which is returned by MATCH command
--case-sensitive     Create .index/.dict files for case sensitive search
--without-headword   headwords will not be copied to .dict file
--without-header     header will not be copied to DB info entry
--without-url        URL will not be copied to DB info entry
--without-time       time of creation will not be copied to DB info entry
--without-info       DB info entry will not be created.
                     This may be useful if 00-database-info headword
                     is expected from stdin (dictunformat outputs it).
--columns            Set the number of columns for wrapping text
                     before writing it to .dict file.
                     If it is zero, wrapping is off.
--default-strategy  Sets the default search strategy for the database.
                    Special entry 00-database-default-strategy is created
                    for this purpose.
--mime-header       Sets MIME header stored in .data file which
                    prepend definition
                    when client sent OPTION MIME to `dictd'
--without-ver      do not create 00-database-dictfmt-<VER> entry in .index
gawk: cmd. line:25: fatal: cannot open file `en_US.UTF-8' for reading: No such file or directory
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/c1056hai4jj3rmc1csg9l0dpvidxzypz-dictd-dbs
checking for references to /build/ in /nix/store/c1056hai4jj3rmc1csg9l0dpvidxzypz-dictd-dbs...
patching script interpreter paths in /nix/store/c1056hai4jj3rmc1csg9l0dpvidxzypz-dictd-dbs
building '/nix/store/7bmk2rf2lakba9sw72y8k8hj729l16bx-unit-dbus.service.drv'...
building '/nix/store/9a8mvkj1qn1g8kypchsq732fppkqkwrp-unit-dbus.service.drv'...
building '/nix/store/5hksp8i3annfd1m42ycch11yb55gwg13-unit-script-dictd-start.drv'...
building '/nix/store/q8l78ijzxqjjsvl4lc2lz509a6glrvrn-users-groups.json.drv'...
building '/nix/store/z8h5p821j1ywz8wlk6p1cca2f91hb9wk-unit-dictd.service.drv'...
building '/nix/store/66fvph86fwzbc0c8zfd45gzqj14na3n7-user-units.drv'...
building '/nix/store/9x827sr5fcm63h2l0578fsfy400xfibj-system-units.drv'...
building '/nix/store/nvwjbv4x96h7i4jqa7fkr5qp9pr3bwhp-etc.drv'...
building '/nix/store/w5fy9c9zcisi2s0nsphc63xd18a3q66b-nixos-system-qsulaptop-23.11pre524605.3a2786eea085.drv'...
stopping the following units: accounts-daemon.service
activating the configuration...
setting up /etc...
reloading user units for qsu...
setting up tmpfiles
reloading the following units: dbus.service
restarting the following units: polkit.service
starting the following units: accounts-daemon.service
the following new units were started: dictd.service