From af5bbe630cb990daf9f29b307572f965ee9fa099 Mon Sep 17 00:00:00 2001 From: Runciter Date: Mon, 28 Oct 2024 02:19:54 +0800 Subject: Initial. A .guix-authorizations A .guix-channel A COPYING A README A whispers/packages/dict.scm A whispers/packages/doc.scm A whispers/packages/pdf.scm A whispers/packages/sh.scm A whispers/packages/whispers.scm A whispers/services/console.scm A whispers/services/dict.scm A whispers/services/finance.scm A whispers/services/gps.scm A whispers/services/proton.scm A whispers/services/ssh-agent.scm A whispers/services/ssh-tunneler.scm A whispers/services/whispers.scm A whispers/services/whispers/finance.scm A whispers/services/whispers/gps.scm A whispers/services/whispers/mail.scm A whispers/services/whispers/ssh.scm A whispers/services/whispers/vpn.scm A whispers/services/whispers/xdg.scm A whispers/tests/ssh-tunneler.scm --- whispers/services/proton.scm | 117 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 whispers/services/proton.scm (limited to 'whispers/services/proton.scm') diff --git a/whispers/services/proton.scm b/whispers/services/proton.scm new file mode 100644 index 0000000..41bf197 --- /dev/null +++ b/whispers/services/proton.scm @@ -0,0 +1,117 @@ +;;; Whispers --- Stealth VPN and ssh tunneler +;;; Copyright © 2024 Runciter +;;; +;;; This file is part of Whispers. +;;; +;;; Whispers is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; Whispers is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with Whispers. If not, see . + +(define-module (whispers services proton) + #:use-module (guix gexp) + #:use-module (guix records) + #:use-module (gnu services) + #:use-module (gnu services shepherd) + #:use-module (gnu services admin) + #:use-module (gnu packages mail) + #:export (hydroxide-configuration + hydroxide-service-type + hydroxide-configuration? + hydroxide-service-type)) + +(define-record-type* + hydroxide-configuration make-hydroxide-configuration + hydroxide-configuration? + this-hydroxide-configuration + ;; A file-like object + (hydroxide-package hydroxide-configuration-hydroxide-package + (default hydroxide)) + ;; A string + (user hydroxide-configuration-user + (default "johndoe")) + ;; A boolean value + (https-proxy? hydroxide-configuration-https-proxy? + (default #f)) + ;; A string + (https-proxy hydroxide-configuration-https-proxy + (default "socks5://localhost:8971")) + ;; A boolean value + (imap? hydroxide-configuration-imap? + (default #t)) + ;; A boolean value + (smtp? hydroxide-configuration-smtp? + (default #t)) + ;; A boolean value + (carddav? hydroxide-configuration-carddav? + (default #t)) + ;; A boolean value + (%auto-start? hydroxide-configuration-auto-start? + (default #t))) + +(define (hydroxide-constructor-gexp config) + "Returns a G-exp to a procedure starting an hydroxide server +configurable by CONFIG, a record of the type." + (let ((hydroxide-package (hydroxide-configuration-hydroxide-package + config)) + (user (hydroxide-configuration-user config)) + (https-proxy? (hydroxide-configuration-https-proxy? config)) + (https-proxy (hydroxide-configuration-https-proxy config)) + (imap? (hydroxide-configuration-imap? config)) + (carddav? (hydroxide-configuration-carddav? config)) + (smtp? (hydroxide-configuration-smtp? config))) + #~(make-forkexec-constructor + (append (list #$(file-append hydroxide-package + "/bin/hydroxide")) + (if #$imap? + (list) + (list "--disable-imap")) + (if #$carddav? + (list) + (list "--disable-carddav")) + (if #$smtp? + (list) + (list "--disable-smtp")) + (list "serve")) + #:environment-variables + (append (list (string-append "XDG_CONFIG_HOME=" + (passwd:dir (getpwnam #$user)) + "/.config")) + #$(if https-proxy? + #~(list (string-append "https_proxy=" + #$https-proxy)) + #~(list)))))) + +(define (hydroxide-shepherd-services config) + "Returns a list of shepherd services handling an hydroxide server +configured by CONFIG, a record of the type." + (let ((auto-start? (hydroxide-configuration-auto-start? config))) + (list + (shepherd-service + (documentation "Hydroxide service") + (provision '(hydroxide)) + (requirement '()) + (start (hydroxide-constructor-gexp config)) + (stop #~(make-kill-destructor)) + (auto-start? auto-start?))))) + +(define hydroxide-service-type + (service-type + (name 'hydroxide) + (description "Hydroxide node service") + (extensions + (list (service-extension shepherd-root-service-type + hydroxide-shepherd-services) + (service-extension + profile-service-type + (lambda (config) + (list (hydroxide-configuration-hydroxide-package config)))))) + (default-value (hydroxide-configuration)))) -- cgit v1.2.3