* Unofficial channel 'whispers' with services and packages
@ 2024-10-28 14:36 Runciter via Development of GNU Guix and the GNU System distribution.
2024-11-04 21:57 ` Ludovic Courtès
0 siblings, 1 reply; 4+ messages in thread
From: Runciter via Development of GNU Guix and the GNU System distribution. @ 2024-10-28 14:36 UTC (permalink / raw)
To: guix-devel
Hello Guix users and maintainers!
I've decided to make parts of my personal channel 'whispers' public, in
case it can be helpful to some users, or if the Guix maintainers wish to
pick and choose packages or services from it.
The following channel declaration in the list of your
'~/.config/channels.scm' should enable pulling from the whispers
channel. Let me know if this works for you:
(channel (name 'whispers)
(url "https://git.whispers-vpn.org/whispers.git")
(branch "trunk")
(introduction
(make-channel-introduction
"af5bbe630cb990daf9f29b307572f965ee9fa099"
(openpgp-fingerprint
"F7E9 58D9 7711 36C6 EBCA A908 F0F4 A585 9416 E70E"))))
You should also be able to clone the channel with:
git clone https://git.whispers-vpn.org/whispers.git
In passing I want to thank the guixer sash-kan for guix-forge; I used it
to get an elementary web server with cgit and https working in less than
one evening!
The channel contains both services and packages which may be of interest:
SERVICES
========
Services of the following modules might be of interest to end-user:
* (whispers services ssh-tunneler): ssh port forwarding, dynamic
forwarding and tunnel forwarding as Guix shepherd services. Comes with
facilities to "resurrect" them with mcron jobs after a temporary drop
of connectivity. Can automate a workflow with sshpass, although it is
not recommended. Includes features where ssh connections can be
proxied inside dynamic proxies created by other ssh connections,
sometimes useful for stealth, or to bypass firewall, or to escape
packet scanning.
* (whispers services whispers): Extend a flexible tree of shepherd
processes running as root or a normal user, each of the shepherds in
the tree can have shepherd services. The modules also provides
facilities for other services to extend the start and stop actions of
services within the tree.
** (whispers services whispers ssh): Extend my aforementioned
ssh-tunneler services within the whispers tree instead of the root
shepherd, per-user if needed, and possibly in a somewhat easier to
configure manner; also, the module provides services to automate
ssh-agent and the adding of keys into ssh-agent per-user as shepherd
services.
** (whispers services whispers gpsd): gpsd shepherd service(s) running
inside the whispers tree, running as configurable user(s).
** (whispers services whispers mail): currently, just an hydroxide
service for users to handle mail received by and sent through the
protonmail servers locally, communicating with the proton mail
servers through the hydroxide program.
** (whispers services whispers finance): BTC and XMR nodes per-user
running as shepherd services inside the whispers tree.
** (whispers services whispers vpn): *DO NOT USE* in the wild. A VPN
which uses the facilities of (whispers services ssh-tunneler) to
deploy a VPN network between machines running Guix and
whispers. Merely a proof-of-concept which achieves basic
functionality through horrible spaghetti code included strictly only
for experimental purposes. It may have security vulnerabilities, and
it will almost certainly leave you in an inconsistent state if the
network drops unexpectedly or if the VPN connection fails to
establish. It might be possible to make it workable, my next step
will be to try to re-factor and improve the parts which are
deserving, and rewrite the rest with a better design.
PACKAGES
========
* ssh-tunneler-doc: info manual for the (whispers services ssh-tunneler)
service.
* whispers-doc: info manual for the whispers shepherd tree and the
service types that live inside it.
* ssh-tunneler-tests: shell script for testing the ssh-tunneler
services. Takes insanely long to run.
* whispers-tests: shell script for testing whispers. Includes a script
'whispers-vpn-tests' which you can use to play with the VPN inside a
network of VMs. Takes insanely long to run. Don't press a key on the
terminal where it is running, or it will kill the VMs as soon as it
has finished deploying them. When it finally finished deploying the
VMs and connecting the VPN, it will print instructions on how to ssh
into the VMs from another terminal of the local machine.
* whispers: a simple wrapper around herd to control the actions of
shepherd services running inside the whispers tree.
* sh-pulse: an elementary script 'vlm' to control pulseaudio volume and
cycle output sinks. The script's actions are intended to be used with
keyboard shortcuts configured in whichever way is most agreeable to
the user. Although it was never distributed, many years ago I posted
my little script on a Debian forum and I was surprised to get a
(single) testimonial that "this was the only thing that worked" along
with a request to re-post it a few months later. Indeed it has worked
continuously for me ever since. This may be useful/necessary to have a
script like this if you're using a somewhat minimalist WM and you
don't want to pull along the gazillion dependencies and services of a
monolithic desktop manager just to have keyboard shortcuts for volume
control.
* libmaa: C library from the DICT project, because it is a dependency
for the dictd package. I'm just the packager not an author.
* dictd: the original programs for the DICT protocol. Includes the dict
client and dictd server, which dico and dicod know how to
emulate. Also includes the dictfmt utility, which is useful to express
DICT dictionaries from human-written sources or other dictionary
formats, for which GNU dico has no equivalent to my knowledge. I'm
just the packager not an author.
* freedict-tools: I packaged helper tools to compile the freedict
multilingual dictionaries. I'm just the packager not an author.
* freedict-dictionaries: package containing a subset of the
freedict-dictionaries, intended for a local installation on a Guix
system. I think the subset which I packaged corresponds exactly to the
Freedict bilingual dictionaries which are human-written. The Freedict
project also has a system which copulates 2 bilingual dictionaries
sharing a common language into a third new automatically generated
bilingual dictionary, I don't think my package outputs any of the many
dictionaries which are expressed by this system. I'm just the packager
not an author.
* cc-cedict: Scripts run by the GNU build system, using mostly sed, awk
and the dictfmt utility to convert the community written
chinese/english bilingual dictionary CC-CEDICT into 5 chinese/english
dictionaries in DICT format: one dictionary for simplified characters,
one for traditional characters, and 3 dictionaries in various forms
of pinyin or assimilate.d I'm the author of the (very dirty) scripts
and build system stances which perform this conversion, but I'm not a
contributor or editor of the CC-CEDICT project. CC-CEDICT is published
under CC-BY-SA.
For any useful purposes, here's a snippet that you should be able to
use in order to make the above dictionary-related packages useful with
your local machine's dicod service, along with wordnet and gcide which
Guix proper already provides:
(service dicod-service-type
(dicod-configuration
(handlers (list
(dicod-handler
(name "wordnet")
(module "wordnet")
(options
(list #~(string-append "wnhome="
#$wordnet))))
%dictorg-handler))
(databases (cons*
(dicod-database
(name "wordnet")
(complex? #t)
(handler "wordnet")
(options '("merge-defs")))
%dicod-database:gcide
(append %freedict-dictorg-databases
%cedict-dictorg-databases)))))
* zathura-synctex: just a Zathura pdf reader compiled with synctex
support. The Zathura packaged by Guix cannot do synctex since the
feature is disabled by default at compile-time by upstream. I'm just
the packager not an author.
Enjoy!
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Unofficial channel 'whispers' with services and packages
2024-10-28 14:36 Unofficial channel 'whispers' with services and packages Runciter via Development of GNU Guix and the GNU System distribution.
@ 2024-11-04 21:57 ` Ludovic Courtès
2024-11-06 16:51 ` Runciter via Development of GNU Guix and the GNU System distribution.
2024-11-17 18:51 ` Runciter via Development of GNU Guix and the GNU System distribution.
0 siblings, 2 replies; 4+ messages in thread
From: Ludovic Courtès @ 2024-11-04 21:57 UTC (permalink / raw)
To: Runciter via Development of GNU Guix and the GNU System distribution.
Cc: Runciter
Hello Runciter,
Lots of interesting things in there!
If I could have a wish list of things to integrate in Guix proper, it
would be this:
> * dictd: the original programs for the DICT protocol. Includes the dict
> client and dictd server, which dico and dicod know how to
> emulate. Also includes the dictfmt utility, which is useful to express
> DICT dictionaries from human-written sources or other dictionary
> formats, for which GNU dico has no equivalent to my knowledge. I'm
> just the packager not an author.
>
> * freedict-tools: I packaged helper tools to compile the freedict
> multilingual dictionaries. I'm just the packager not an author.
>
> * freedict-dictionaries: package containing a subset of the
> freedict-dictionaries, intended for a local installation on a Guix
> system. I think the subset which I packaged corresponds exactly to the
> Freedict bilingual dictionaries which are human-written. The Freedict
> project also has a system which copulates 2 bilingual dictionaries
> sharing a common language into a third new automatically generated
> bilingual dictionary, I don't think my package outputs any of the many
> dictionaries which are expressed by this system. I'm just the packager
> not an author.
:-)
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Unofficial channel 'whispers' with services and packages
2024-11-04 21:57 ` Ludovic Courtès
@ 2024-11-06 16:51 ` Runciter via Development of GNU Guix and the GNU System distribution.
2024-11-17 18:51 ` Runciter via Development of GNU Guix and the GNU System distribution.
1 sibling, 0 replies; 4+ messages in thread
From: Runciter via Development of GNU Guix and the GNU System distribution. @ 2024-11-06 16:51 UTC (permalink / raw)
To: guix-devel
Ludovic Courtès <ludo@gnu.org> writes:
> Hello Runciter,
>
> Lots of interesting things in there!
>
> If I could have a wish list of things to integrate in Guix proper, it
> would be this:
>
>> * dictd: the original programs for the DICT protocol. Includes the dict
>> client and dictd server, which dico and dicod know how to
>> emulate. Also includes the dictfmt utility, which is useful to express
>> DICT dictionaries from human-written sources or other dictionary
>> formats, for which GNU dico has no equivalent to my knowledge. I'm
>> just the packager not an author.
>>
>> * freedict-tools: I packaged helper tools to compile the freedict
>> multilingual dictionaries. I'm just the packager not an author.
>>
>> * freedict-dictionaries: package containing a subset of the
>> freedict-dictionaries, intended for a local installation on a Guix
>> system. I think the subset which I packaged corresponds exactly to the
>> Freedict bilingual dictionaries which are human-written. The Freedict
>> project also has a system which copulates 2 bilingual dictionaries
>> sharing a common language into a third new automatically generated
>> bilingual dictionary, I don't think my package outputs any of the many
>> dictionaries which are expressed by this system. I'm just the packager
>> not an author.
>
> :-)
>
> Thanks,
> Ludo’.
Hello Ludo,
Very well, I'll be glad to contribute those 3 packages.
I'm frequently busy and away from my main computer these days, I'll be
able to work conveniently with the Guix source-tree on Sunday, and then
should be able to submit a patch or three next week.
As a first step, I'll just submit a patch or a series with only the packages.
As a second step, it might be helpful to make a short addition to the
relevant section of the info manual, and/or to export working default
bindings from the (gnu services dict) module, for ease of configuration.
Regards,
Runciter
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Unofficial channel 'whispers' with services and packages
2024-11-04 21:57 ` Ludovic Courtès
2024-11-06 16:51 ` Runciter via Development of GNU Guix and the GNU System distribution.
@ 2024-11-17 18:51 ` Runciter via Development of GNU Guix and the GNU System distribution.
1 sibling, 0 replies; 4+ messages in thread
From: Runciter via Development of GNU Guix and the GNU System distribution. @ 2024-11-17 18:51 UTC (permalink / raw)
To: guix-devel
Ludovic Courtès <ludo@gnu.org> writes:
Hello Guix,
> Hello Runciter,
>
> Lots of interesting things in there!
>
> If I could have a wish list of things to integrate in Guix proper, it
> would be this:
>
>> * dictd: the original programs for the DICT protocol. Includes the dict
>> client and dictd server, which dico and dicod know how to
>> emulate. Also includes the dictfmt utility, which is useful to express
>> DICT dictionaries from human-written sources or other dictionary
>> formats, for which GNU dico has no equivalent to my knowledge. I'm
>> just the packager not an author.
>>
>> * freedict-tools: I packaged helper tools to compile the freedict
>> multilingual dictionaries. I'm just the packager not an author.
>>
>> * freedict-dictionaries: package containing a subset of the
>> freedict-dictionaries, intended for a local installation on a Guix
>> system. I think the subset which I packaged corresponds exactly to the
>> Freedict bilingual dictionaries which are human-written. The Freedict
>> project also has a system which copulates 2 bilingual dictionaries
>> sharing a common language into a third new automatically generated
>> bilingual dictionary, I don't think my package outputs any of the many
>> dictionaries which are expressed by this system. I'm just the packager
>> not an author.
I've just sent a cover letter to the patches mailing list, I'm waiting
for it to show up before sending 4 patches.
There's 4 packages and not 3 finally because 'libmaa' is a dependency of
dictd.
Everything compiles and cross-compiles, however the
'freedict-dictionaries' build is non-deterministic. One reason,
hopefully the only reason for the non-deterministic output is that the
'dictzip' program includes a timestamp header in the compressed files it
produces. The man page of dictzip does not document a way to modify or
get rid of the timestamp header.
There is a possible fix I have not tried yet, which looks like it's
going to work: I could probably output non-compressed binary dictionary
files (*.dict) instead of dictzipped dictionary files (*.dict.dz). In
order to do it, an 'install-base' target needs to be modified. This
target is found in mk/dicts.mk inside the toolchain package
'freedict-tools'. I have not found how this could be easily configured
at build-time, at the moment I would only know how to do it with a patch
to the 'freedict-tools' package.
What's your policy, or what's your call for this case? Do you want me to
try my fix, or do you find it preferable to sacrifice determinism in
exchange for enjoying dictzip compression of the output, which also
amounts to staying faithful to the upstream intended installation
contents? Other suggestions?
Runciter
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-11-17 18:51 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-28 14:36 Unofficial channel 'whispers' with services and packages Runciter via Development of GNU Guix and the GNU System distribution.
2024-11-04 21:57 ` Ludovic Courtès
2024-11-06 16:51 ` Runciter via Development of GNU Guix and the GNU System distribution.
2024-11-17 18:51 ` Runciter via Development of GNU Guix and the GNU System distribution.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
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).