Subject: [PATCH] Add manuskript
From: Nicolas Goaziou <[email-masked]>
To: [email-masked]
Date: Fri, 03 Jan 2020 01:01:53 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

The following patch adds Manuskript.

Feedback welcome.

Regards,

-- 
Nicolas Goaziou
From 5d48847bc62fcfade79b349424e8a8e2eb9ee694 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <[email-masked]>
Date: Fri, 3 Jan 2020 00:59:01 +0100
Subject: [PATCH] gnu: Add manuskript.

* gnu/packages/text-editors.scm (manuskript): New variable.
---
 gnu/packages/text-editors.scm | 106 +++++++++++++++++++++++++++++++++-
 1 file changed, 105 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 4ab6e1e2ec..b0d2af0033 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2019 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2019 Andreas Enge <[email-masked]>
-;;; Copyright © 2019 Nicolas Goaziou <[email-masked]>
+;;; Copyright © 2019, 2020 Nicolas Goaziou <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +33,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system python)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages assembly)
@@ -45,6 +46,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages libbsd)
   #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages lua)
@@ -354,6 +356,108 @@ team.")
 environment with Markdown markup.")
     (license license:gpl3+)))           ; icons/* under CC-BY-SA3
 
+(define-public manuskript
+  (package
+    (name "manuskript")
+    (version "0.10.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/olivierkes/manuskript.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0q413vym7hzjpyg3krj5y63hwpncdifjkyswqmr76zg5yqnklnh3"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f                      ;no test
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share/manuskript")))
+               ;; Install data.
+               (mkdir-p share)
+               (for-each
+                (lambda (d)
+                  (let ((destination  (string-append share "/" d)))
+                    (mkdir-p destination)
+                    (copy-recursively d destination)))
+                '("bin" "i18n" "icons" "libs" "manuskript" "resources"))
+               ;; Install documentation.
+               (let ((doc (string-append out
+                                         "/doc/manuskript-" ,version
+                                         "/sample-projects")))
+                 (mkdir-p doc)
+                 (copy-recursively "sample-projects" doc))
+               ;; Wrap executable in "$out/share/manuskript/bin" and
+               ;; link to it from "$out/bin".
+               (let ((bin (string-append out "/bin"))
+                     (executable (string-append share "/bin/manuskript")))
+                 (wrap-program executable
+                   (list "PYTHONPATH" 'prefix (list (getenv "PYTHONPATH"))))
+                 (mkdir-p bin)
+                 (with-directory-excursion bin
+                   (symlink (string-append share "/bin/manuskript")
+                            "manuskript")))
+               ;; Install icons and create .desktop file.
+               (let ((apps (string-append out "/share/applications"))
+                     (icons-dir (string-append out "/share/pixmaps")))
+                 (install-file "icons/Manuskript/manuskript.svg" icons-dir)
+                 (mkdir-p apps)
+                 (with-output-to-file (string-append apps "/manuskript.desktop")
+                   (lambda _
+                     (format #t
+                             "[Desktop Entry]~@
+                         Name=Manuskript~@
+                         MimeType=application/x-manuskript-book;~@
+                         Exec=~a/bin/manuskript %f~@
+                         Comment=Tool for writers~@
+                         Comment[es]=Herramienta para escritores/as~@
+                         Keywords=manuskript;office;write;edit;novel;text;msk~@
+                         Terminal=false~@
+                         Type=Application~@
+                         Icon=manuskript~@
+                         Categories=Office;WordProcessor;~%"
+                             out))))
+               #t))))))
+    (inputs
+     `(("ghc-pandoc" ,ghc-pandoc)
+       ("python-lxml" ,python-lxml)
+       ("python-markdown" ,python-markdown)
+       ("python-pyqt" ,python-pyqt)
+       ("qtsvg" ,qtsvg)))
+    (home-page "http://www.theologeek.ch/manuskript/")
+    (synopsis "Tool for writers")
+    (description "Manuskript provides a rich environment to help
+writers create their first draft and then further refine and edit
+their masterpiece.  With Manuskript you can:
+
+@itemize
+@item Grow your premise from one sentence, to a paragraph, to a full
+summary,
+@item Create characters,
+@item Conceive plots,
+@item Construct outlines (Outline mode and/or Index cards),
+@item Write with focus (Distraction free mode),
+@item Build worlds,
+@item Track items,
+@item Edit and re-organize chapters and scenes,
+@item View Story line,
+@item Compose with fiction or non-fiction templates and writing modes,
+@item Import and export document formats such as HTML, ePub,
+OpenDocument, DocX, and more.
+@end itemize
+
+Additionally Manuskript can help in many more ways with a spell
+checker, markdown highlighter, frequency analyzer, and automatic save
+in plain text file format.")
+    (license license:gpl3+)))
+
 (define-public editorconfig-core-c
   (package
     (name "editorconfig-core-c")
-- 
2.24.1