aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEfraim Flashner2023-06-15 15:24:12 +0300
committerEfraim Flashner2023-06-15 15:24:12 +0300
commit8274f0d4f5ba8b9b8976dd21057c7d04d09a2e91 (patch)
tree932664e64db1e28be47d881584b128de7147f050
parent0cc843925d59093b70490ccbca5e18bc4174de9c (diff)
downloadguix-bioinformatics-8274f0d4f5ba8b9b8976dd21057c7d04d09a2e91.tar.gz
Update pluto service and dependant julia packages
-rw-r--r--gn/packages/julia.scm676
-rw-r--r--gn/services/pluto.scm14
2 files changed, 648 insertions, 42 deletions
diff --git a/gn/packages/julia.scm b/gn/packages/julia.scm
index 36d9e31..31cc29c 100644
--- a/gn/packages/julia.scm
+++ b/gn/packages/julia.scm
@@ -60,8 +60,7 @@
"setup.py"
"runpluto.sh"
"notebooks"
- "Project.toml"
- "Manifest.toml")))))
+ "Project.toml")))))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@@ -70,6 +69,31 @@
`("PATH" ":" prefix (,(string-append (assoc-ref inputs "julia") "/bin")
,(string-append (assoc-ref inputs "coreutils") "/bin")))
`("JULIA_LOAD_PATH" ":" prefix (,(getenv "JULIA_LOAD_PATH")))))))
+ (add-after 'install 'create-run-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (with-output-to-file (string-append out "/runpluto")
+ (lambda ()
+ (format #t "#!~a --no-auto-compile
+!#
+(setenv \"JULIA_LOAD_PATH\" \"~a\")
+(setenv \"PATH\" \"~a\")
+(zero? (system*
+ \"~a\"
+ \"--project=/home/jovyan\"
+ \"--optimize=0\"
+ \"-e\" \"import Pluto;
+ Pluto.run(
+ host=\\\"0.0.0.0\\\",
+ port=4343,
+ launch_browser=false,
+ require_secret_for_open_links=false;
+ require_secret_for_access=false)\"))\n"
+ (search-input-file inputs "/bin/guile")
+ (getenv "JULIA_LOAD_PATH")
+ (dirname (search-input-file inputs "/bin/yes"))
+ (search-input-file inputs "/bin/julia"))))
+ (chmod (string-append out "/runpluto") #o555))))
(replace 'precompile
(lambda _
(invoke "julia" "-e" "\"import Pkg; Pkg.instantiate(); Pkg.status(); Pkg.precompile()\""))))))
@@ -80,17 +104,15 @@
,(@ (gn packages python) python-jupyter-server-proxy-1))))
(inputs
- `(;("julia-cairomakie" ,julia-cairomakie) ; ~0.8.13
- ("julia-distributions" ,julia-distributions) ; ~0.25.76
- ("julia-latexstrings" ,julia-latexstrings) ; ~1.3.0
- ("julia-optim" ,julia-optim) ; ~1.7.2
- ("julia-plots" ,julia-plots) ; ~1.35.3
- ("julia-pluto" ,julia-pluto) ; ~0.19.11
- ("julia-plutoui" ,julia-plutoui) ; ~0.7.46
- ("julia-prettytables" ,julia-prettytables) ; ~2.1.0
- ("julia-quadgk" ,julia-quadgk) ; ~2.5.0
- ;("julia-roots" ,julia-roots) ; ~2.0.3
- ("guile" ,(@ (gnu packages guile) guile-3.0)))) ; for wrap-script
+ (list julia-distributions
+ ;julia-interactiveutils ; stdlib
+ julia-latexstrings
+ ;julia-markdown ; stdlib
+ julia-optim
+ julia-plots
+ julia-pluto
+ julia-plutoui
+ (@ (gnu packages guile) guile-3.0))) ; for wrap-script
(home-page "https://github.com/sens/visuals")
(synopsis "Visualizations using Pluto.jl notebooks")
(description "Visualizations using Pluto.jl notebooks.")
@@ -404,40 +426,40 @@ densities and objects associated with a density in Julia.")
(define-public julia-pluto
(package
(name "julia-pluto")
- (version "0.15.1")
+ (version "0.19.9")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/fonsp/Pluto.jl")
- (commit (string-append "v" version))))
+ (commit (string-append "v" version "-src"))))
(file-name (git-file-name name version))
(sha256
- (base32 "1jsvqi33rsj8izm9pb0r4gjzb5xd01dxri8xp95h84kd0rdliirr"))))
+ (base32 "0h9sz4mpf3a4k0f5fblbb6j07wdhrnarxajrn0wz6zsq6w30x6yj"))))
(build-system julia-build-system)
(arguments
- `(#:tests? #f ; Test suite fails to load HTTP.jl.
+ `(#:tests? #f ; Test suite tries to download the package registry.
#:phases
(modify-phases %standard-phases
(add-after 'link-depot 'dont-check-for-upgrades
(lambda _
- (substitute* "frontend/components/Welcome.js"
- (("local_index !== -1") "false"))))
- (add-after 'link-depot 'skip-network-tests
- (lambda _
- (substitute* "test/runtests.jl"
- ;; Attempts to update the package registry.
- ((".*Basic.jl.*") "")))))))
+ (substitute* "frontend/components/welcome/Welcome.js"
+ ((".*new_update_message.*") "")))))))
(propagated-inputs
- `(("julia-configurations" ,julia-configurations)
- ("julia-fuzzycompletions" ,julia-fuzzycompletions)
- ("julia-http" ,julia-http)
- ("julia-msgpack" ,julia-msgpack)
- ("julia-tableiointerface" ,julia-tableiointerface)
- ("julia-tables" ,julia-tables)))
+ (list julia-configurations
+ julia-fuzzycompletions
+ julia-http
+ julia-hypertextliteral
+ julia-mimes
+ julia-msgpack
+ julia-precompilesignatures
+ julia-relocatablefolders
+ julia-tables
+ julia-uris))
(native-inputs
- `(("julia-dataframes" ,julia-dataframes)
- ("julia-offsetarrays" ,julia-offsetarrays)))
+ (list julia-dataframes
+ julia-offsetarrays
+ julia-timeroutputs))
(home-page "https://github.com/fonsp/Pluto.jl")
(synopsis "Simple reactive notebooks for Julia")
(description "A Pluto notebook is made up of small blocks of Julia code
@@ -447,11 +469,10 @@ placed in arbitrary order - intelligent syntax analysis figures out the
dependencies between them and takes care of execution.")
(license license:expat)))
-;; ready to upstream, wait on Pluto.jl?
(define-public julia-plutoui
(package
(name "julia-plutoui")
- (version "0.7.9")
+ (version "0.7.51")
(source
(origin
(method git-fetch)
@@ -460,17 +481,594 @@ dependencies between them and takes care of execution.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32
- "0p159b4m0nxbz36ll5kf082vb806n2f26ma145pbhp749aldzplp"))))
+ (base32 "0hqaa8wx7mia3krdwhj2yf8aa4a8h4r09j16dxn7nyc0zcz8hgb2"))))
(build-system julia-build-system)
(propagated-inputs
- `(("julia-json" ,julia-json)
- ("julia-reexport" ,julia-reexport)
- ("julia-suppressor" ,julia-suppressor)))
+ (list julia-abstractplutodingetjes
+ julia-colortypes
+ julia-fixedpointnumbers
+ julia-hyperscript
+ julia-hypertextliteral
+ julia-iocapture
+ julia-json
+ julia-mimes
+ julia-reexport
+ julia-uris))
(home-page "https://github.com/fonsp/PlutoUI.jl")
(synopsis "Helper package for Julia Pluto")
(description "This package helps to make @code{html\"<input>\"} a bit more
native to Julia. Use it with the @code{@@bind} macro in Pluto.")
+ (license license:unlicense)))
+
+(define-public julia-http-1.5
+ (package
+ (inherit julia-http)
+ (name "julia-http")
+ (version "1.5.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaWeb/HTTP.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0qcfixsq65g8hdimygam7cd8nvcz6w7nzkkjk98mvf65dcby4593"))))
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'install 'disable-network-tests
+ (lambda _
+ #;(substitute* "test/runtests.jl"
+ (("\"async.jl") "# \"async.jl")
+ (("\"client.jl") "# \"client.jl"))
+ #;(substitute* "test/aws4.jl"
+ (("@testset.*HTTP.request with AWS authentication.*" all)
+ (string-append all "return\n")))
+ #;(substitute* "test/insert_layers.jl"
+ (("@testset.*Inserted final layer runs handler.*" all)
+ (string-append all "return\n")))
+ #;(substitute* "test/multipart.jl"
+ (("@testset \"Setting of Content-Type.*" all)
+ (string-append all "return\n"))
+ (("@testset \"Deprecation of .*" all)
+ (string-append all "return\n")))
+ #;(substitute* "test/websockets.jl"
+ (("@testset.*External Host.*" all)
+ (string-append all "return\n")))
+ #;(substitute* "test/messages.jl"
+ (("@testset.*Read methods.*" all)
+ (string-append all "return\n"))
+ (("@testset.*Body - .*" all)
+ (string-append all "return\n"))
+ (("@testset.*Write to file.*" all)
+ (string-append all "return\n")))
+ #;(substitute* "test/cookies.jl"
+ (("@testset.*Set-Cookie casing.*" all)
+ (string-append all "return\n")))
+#t)))))
+ (propagated-inputs
+ (list julia-codeczlib
+ julia-inifile
+ julia-loggingextras
+ julia-mbedtls
+ julia-openssl
+ julia-simplebufferstream
+ julia-uris))
+ ;; required for tests
+ (native-inputs
+ (list julia-bufferedstreams
+ julia-json))))
+
+(define-public julia-simplebufferstream
+ (package
+ (name "julia-simplebufferstream")
+ (version "1.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPackaging/SimpleBufferStream.jl")
+ ;; First commit after 1.1.0 with a license
+ (commit "80c9854d5d9ea921da6f619624989fa30e83b8be")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "05c4d73ki4cp38g66ljxwbl2d0dni3w05r8xsd6g1v63x2rqqbgn"))))
+ (build-system julia-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'link-depot 'adjust-tests
+ (lambda _
+ (substitute* "test/runtests.jl"
+ ;; Tests fail when build machine is too *fast*.
+ (("0\\.01") "0.001")
+ ;; Don't create circular dependencies with http
+ (("using HTTP.*") "")
+ (("@testset.*HTTP.jl.*" all)
+ (string-append all "return\n"))))))))
+ (home-page "https://github.com/JuliaPackaging/SimpleBufferStream.jl")
+ (synopsis "What Base.BufferStream should be")
+ (description "This is what I wish Base.BufferStream was.")
+ (license license:expat)))
+
+(define-public julia-openssl
+ (package
+ (name "julia-openssl")
+ (version "1.4.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaWeb/OpenSSL.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1s2h4qh9y3alhkf18p4pjqp77mvsb47qagmk68pq0wsx8r3hzhzx"))))
+ (build-system julia-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'install 'disable-network-tests
+ (lambda _
+ (substitute* "test/runtests.jl"
+ ;; No /etc/ssl/certs/ca-certificates.crt in the build environment.
+ (("@testset.*(ReadPEMCert|X509Certificate|X509Store).*" all)
+ (string-append all "return\n"))
+ ;; No network connection
+ (("@testset.*(HttpsConnect|ClosedStream|NoCloseStream).*" all)
+ (string-append all "return\n"))
+ ;; undefined symbol.
+ ;; XXX: THIS BREAKS THE PACKAGE!
+ (("@testset.*ErrorTaskTLS.*" all)
+ (string-append all "return\n"))))))))
+ (propagated-inputs
+ (list julia-bitflags
+ julia-openssl-jll))
+ (home-page "https://github.com/JuliaWeb/OpenSSL.jl")
+ (synopsis "Openssl Julia bindings")
+ (description "This package provides Openssl Julia bindings.")
+ (license license:expat)))
+
+#;(define-public julia-openssl-jll
+ (package
+ (name "julia-openssl-jll")
+ (version "3.0.8+0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl")
+ (commit (string-append "OpenSSL-v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1d9kcx7a3yv3rgkggq7h436sfjafr66pq8d0lmlcjxdpl46hx3j7"))))
+ (build-system julia-build-system)
+ (arguments
+ '(#:tests? #f ; no runtests
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'link-depot 'override-binary-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (map
+ (lambda (wrapper)
+ (substitute* wrapper
+ (("lib64") "lib")
+ (("generate_wrapper_header.*")
+ (string-append
+ "generate_wrapper_header(\"OpenSSL\", \""
+ (assoc-ref inputs "openssl") "\")\n"))))
+ ;; There's a Julia file for each platform, override them all
+ (find-files "src/wrappers/" "\\.jl$")))))))
+ (inputs
+ (list (@ (gnu packages tls) openssl)))
+ (propagated-inputs
+ (list julia-jllwrappers))
+ (home-page "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl")
+ (synopsis "Openssl library wrappers")
+ (description "This package provides a wrapper for openssl.")
+ (license license:expat)))
+
+#;(define-public julia-openssl-jll-1.1
+ (package
+ (name "julia-openssl-jll")
+ (version "1.1.21+0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl")
+ (commit (string-append "OpenSSL-v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "05wgsvy0iviffkcq4w1dg8gaafyxknnk26c1gpcgma5yhfia8yfs"))))
+ (build-system julia-build-system)
+ (arguments
+ '(#:tests? #f ; no runtests
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'link-depot 'override-binary-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (map
+ (lambda (wrapper)
+ (substitute* wrapper
+ (("generate_wrapper_header.*")
+ (string-append
+ "generate_wrapper_header(\"OpenSSL\", \""
+ (assoc-ref inputs "openssl") "\")\n"))))
+ ;; There's a Julia file for each platform, override them all
+ (find-files "src/wrappers/" "\\.jl$")))))))
+ (inputs
+ (list (@ (gnu packages tls) openssl-1.1)))
+ (propagated-inputs
+ (list julia-jllwrappers))
+ (home-page "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl")
+ (synopsis "Openssl library wrappers")
+ (description "This package provides a wrapper for openssl.")
+ (license license:expat)))
+
+(define-public julia-bitflags
+ (package
+ (name "julia-bitflags")
+ (version "0.1.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jmert/BitFlags.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1wphfpwqm7bsff68d6h9yhhxrh1lq2shyl0afbzp0h5czf6qi2xr"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/jmert/BitFlags.jl")
+ (synopsis "Enum-like type for bit flag option values")
+ (description "@code{BitFlag.jl} provides an @code{Enum}-like type for bit
+flag option values.")
+ (license license:expat)))
+
+(define-public julia-relocatablefolders
+ (package
+ (name "julia-relocatablefolders")
+ (version "0.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPackaging/RelocatableFolders.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "116f98y2w5cqkv2fvddmv54422cpby6d7q1dndgqh2rdlkpb44iw"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ (list julia-scratch))
+ (home-page "https://github.com/JuliaPackaging/RelocatableFolders.jl")
+ (synopsis "Reference packages in their project directory")
+ (description "An alternative to the @code{@@__DIR__} macro. Packages that
+wish to reference paths in their project directory run into issues with
+relocatability when used in conjunction with @code{PackageCompiler}.")
+ (license license:expat)))
+
+(define-public julia-scratch
+ (package
+ (name "julia-scratch")
+ (version "1.1.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPackaging/Scratch.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0s7dmqsskq5vy7sk6pxng5vrznrn6msg7xf8a9kj3a03b617pgap"))))
+ (build-system julia-build-system)
+ (arguments
+ (list #:tests? #f)) ; Tries to download the Julia registry.
+ (home-page "https://github.com/JuliaPackaging/Scratch.jl")
+ (synopsis "Scratch spaces for all your persistent mutable data needs")
+ (description "This repository implements the scratch spaces API for
+package-specific mutable containers of data. These spaces can contain
+datasets, text, binaries, or any other kind of data that would be convenient to
+store in a location specific to your package. As compared to Artifacts, these
+containers of data are mutable. Because the scratch space location on disk is
+not very user-friendly, scratch spaces should, in general, not be used for a
+storing files that the user must interact with through a file browser. In that
+event, packages should simply write out to disk at a location given by the
+user. Scratch spaces are designed for data caches that are completely managed
+by a package and should be removed when the package itself is uninstalled.")
+ (license license:expat)))
+
+(define-public julia-hypertextliteral
+ (package
+ (name "julia-hypertextliteral")
+ (version "0.9.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPluto/HypertextLiteral.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "06nzgxrl1aac9bqb37l2lak2aicp9h7fd1ijcva9pq80z0d74a8a"))))
+ (build-system julia-build-system)
+ (arguments (list #:tests? #f)) ; Disable tests until all inputs are pacakged.
+ (propagated-inputs
+ (list julia-tricks))
+ (native-inputs
+ (list julia-documenter
+ ;julia-faker
+ julia-hyperscript
+ ;julia-narrativetest
+ ))
+ (home-page "https://juliapluto.github.io/HypertextLiteral.jl/stable/")
+ (synopsis "Julia library for the string interpolation of HTML and SVG")
+ (description "HypertextLiteral is a Julia package for generating HTML, SVG,
+and other SGML tagged content. It works similar to Julia string interpolation,
+only that it tracks hypertext escaping needs and provides handy conversions
+dependent upon context.")
+ (license license:expat)))
+
+;; This can be removed with julia-1.10
+(define-public julia-tricks
+ (package
+ (name "julia-tricks")
+ (version "0.1.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/oxinabox/Tricks.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0870hiqpl14wpr2v16wl6fw89r469yjrchv6gn4pfw2irw3nkjip"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/oxinabox/Tricks.jl")
+ (synopsis "Cunning tricks though the julia compiler internals")
+ (description "Tricks.jl is an particularly cunning package that does tricks
+with the Julia edge system.")
+ (license license:expat)))
+
+(define-public julia-registryinstances
+ (package
+ (name "julia-registryinstances")
+ (version "0.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/GunnarFarneback/RegistryInstances.jl")
+ (commit "2796d959014475bc19e2dfa174179cdf02642d28")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "09926dy2s4wcml6s2hrbq1j1r1456d61fvk5fma4sbr9qsvpyyd0"))))
+ (build-system julia-build-system)
+ (arguments
+ (list #:tests? #f)) ; TODO: Got exception outside of a @test
+ (propagated-inputs
+ (list julia-lazilyinitializedfields))
+ (home-page "https://github.com/GunnarFarneback/RegistryInstances.jl")
+ (synopsis "Access the information in installed Julia registries")
+ (description "Julia's package manager stores package metadata in registries,
+which consist of TOML files in a directory structure.")
+ (license license:expat)))
+
+(define-public julia-lazilyinitializedfields
+ (package
+ (name "julia-lazilyinitializedfields")
+ (version "1.2.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/KristofferC/LazilyInitializedFields.jl")
+ (commit "53ed8cbe78b2048105a0e0b355294e7f024e3d14")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1jwpka27d873cyn0vxrg7h7ns7fmlqlyx5h38cw6zvfbdhkrmi09"))))
+ (build-system julia-build-system)
+ (native-inputs
+ (list julia-documenter))
+ (home-page "https://github.com/KristofferC/LazilyInitializedFields.jl")
+ (synopsis "Handle lazily initialized fields")
+ (description "A package for handling lazily initialized fields.")
+ (license license:expat)))
+
+(define-public julia-mimes
+ (package
+ (name "julia-mimes")
+ (version "0.1.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaWeb/MIMEs.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0vgc2q2mgbrm16px7cbqsrga9l99djlb1ayg5k1djb0mbnprjajk"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaWeb/MIMEs.jl")
+ (synopsis "MIME information: filetype, encoding, gzip")
+ (description "A small package to transform between file extensions and MIME
+types, with bonus features.")
+ (license license:expat)))
+
+(define-public julia-loggingextras
+ (package
+ (name "julia-loggingextras")
+ (version "1.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLogging/LoggingExtras.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0mc0bbr2wsa809q74hg4npdw2xcni4xl40zz50i6djwnxq88yl07"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLogging/LoggingExtras.jl")
+ (synopsis "Composable Loggers for the Julia Logging StdLib")
+ (description "LoggingExtras is designs around allowing you to build
+arbitrarily complicated systems for \"log plumbing\". That is to say basically
+routing logged information to different places. It is built around the idea of
+simple parts which are composed together, to allow for powerful and flexible
+definition of your logging system.")
+ (license license:expat)))
+
+(define-public julia-precompilesignatures
+ (package
+ (name "julia-precompilesignatures")
+ (version "3.0.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rikhuijzer/PrecompileSignatures.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "11rjdx8n3q10iis7ryzbvlvgdpi6kd2h53qp7lac02yx6rsgsfx1"))))
+ (build-system julia-build-system)
+ (arguments
+ (list #:tests? #f)) ; cycle with Pluto.jl.
+ ;(native-inputs
+ ; (list julia-pluto))
+ (home-page "https://github.com/rikhuijzer/PrecompileSignatures.jl")
+ (synopsis "Generate precompile directives by reading method signatures")
+ (description "This package reads all method signatures in a package and
+generates precompile directives for any concrete signature that it can find.")
+ (license license:expat)))
+
+(define-public julia-precompiletools
+ (package
+ (name "julia-precompiletools")
+ (version "1.1.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/PrecompileTools.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "124qzflwnn34d8x8vz3cmj2m4a55mg5qf8i8jdcwyyrnag3si7zr"))))
+ (build-system julia-build-system)
+ (arguments
+ (list #:tests? #f)) ; Tries to download the Julia registry.
+ (propagated-inputs
+ (list julia-preferences))
+ (home-page "https://github.com/JuliaLang/PrecompileTools.jl")
+ (synopsis "Reduce time-to-first-execution of Julia code")
+ (description "PrecompileTools allows you to reduce the latency of the first
+execution of Julia code. It is applicable for package developers and for
+\"ordinary users\" in their personal workflows.")
+ (license license:expat)))
+
+(define-public julia-timeroutputs
+ (package
+ (name "julia-timeroutputs")
+ (version "0.5.23")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/KristofferC/TimerOutputs.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "031m7d837cw4c7iz4arrm1a1ppqihhj5jsldvm7z1bc72jxgfrcv"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ (list julia-exprtools))
+ (home-page "https://github.com/KristofferC/TimerOutputs.jl")
+ (synopsis "Formatted output of timed sections in Julia")
+ (description "TimerOutputs is a small Julia package that is used to generate
+formatted output from timings made in different sections of a program. It's
+main functionality is the @code{@@timeit} macro, similar to the @code{@@time}
+macro in Base except one also assigns a label to the code section being timed.
+Multiple calls to code sections with the same label (and in the same \"scope\")
+will accumulate the data for that label. After the program has executed, it is
+possible to print a nicely formatted table presenting how much time,
+allocations and number of calls were made in each section. The output can be
+customized as to only show the things you are interested in.")
+ (license license:expat)))
+
+(define-public julia-memoize
+ (package
+ (name "julia-memoize")
+ (version "0.4.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaCollections/Memoize.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0mfavihgdmh6zzjx5lzbigmgsa50pa9ik9gk2gq9wam26prkmkba"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ (list julia-macrotools))
+ (home-page "https://github.com/JuliaCollections/Memoize.jl")
+ (synopsis "Memoize macro for Julia")
+ (description "Easy memoization for Julia.")
+ (license license:bsd-0)))
+
+(define-public julia-abstractplutodingetjes
+ (package
+ (name "julia-abstractplutodingetjes")
+ (version "1.1.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPluto/AbstractPlutoDingetjes.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "03grnv26n3qdadb2awv3d0rs655l5hhmh7h43v949za9aaaz89j3"))))
+ (build-system julia-build-system)
+ (arguments
+ (list #:tests? #f)) ; No tests for this package.
+ (home-page "https://docs.juliahub.com/AbstractPlutoDingetjes/UHbnu/")
+ (synopsis "Abstract package for creating widgets in Pluto.jl")
+ (description "An abstract package to be implemented by packages/people who
+create widgets (or other dingetjes) for Pluto.")
+ (license license:unlicense)))
+
+(define-public julia-hyperscript
+ (package
+ (name "julia-hyperscript")
+ (version "0.0.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaWeb/Hyperscript.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0flap3a9p6fr768kjfk1lkyfgjqcyhzvzl7in7gjszfy04pqj55w"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaWeb/Hyperscript.jl")
+ (synopsis "Lightweight DOM representation for Julia")
+ (description "Hyperscript is a package for working with HTML, SVG, and CSS
+in Julia. When using this library you automatically get:
+@enumerate
+@item A concise DSL for writing HTML, SVG, and CSS.
+@item Flexible ways to combine DOM pieces together into larger components.
+@item Safe and automatic HTML-escaping.
+@item Lightweight and optional support for scoped CSS.
+@item Lightweight and optional support for CSS unit arithmetic.
+@end enumerate")
(license license:expat)))
;; ready to upstream
diff --git a/gn/services/pluto.scm b/gn/services/pluto.scm
index d137314..720b769 100644
--- a/gn/services/pluto.scm
+++ b/gn/services/pluto.scm
@@ -44,16 +44,20 @@
(modules '((gnu build shepherd)
(gnu system file-systems)))
(start #~(make-forkexec-constructor/container
- (list #$(file-append package "/runpluto.sh") #$port)
+ ;(list #$(file-append package "/runpluto.sh") #$port)
+ (list #$(file-append package "/runpluto"))
#:log-file "/var/log/pluto.log"
#:user "julia"
#:group "julia"
- ;; This needs to exist. Unclear why.
+ ;; This prevents the service from using /root as $HOME.
#:environment-variables '()
#:mappings (list (file-system-mapping
(source "/home/jovyan")
(target source)
- (writable? #t)))))
+ (writable? #t))
+ (file-system-mapping
+ (source "/etc/ssl")
+ (target source)))))
(stop #~(make-kill-destructor))))))))
(define pluto-service-type
@@ -86,6 +90,10 @@
;; No firmware for VMs.
(firmware '())
(packages (list nss-certs))
+ ;; For testing
+ ;(packages (cons* nss-certs %base-packages))
+
+ (setuid-programs '())
(services (list (service pluto-service-type
(pluto-configuration