--- /dev/null
+; Copyright 2023 Amélia COUTARD.
+;
+; This file from the guix channel amy 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.
+;
+; This channel 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 this channel. If
+; not, see <https://www.gnu.org/licenses/>.
+
+(define-module (amy packages site-web)
+ #:use-module (gnu packages haskell-check)
+ #:use-module (gnu packages haskell-web)
+ #:use-module (gnu packages haskell-xyz)
+ #:use-module (gnu packages linux)
+ #:use-module (guix build-system haskell)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module ((guix licenses)
+ #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:export (site-web))
+
+(define ghc-lrucache
+ (package
+ (name "ghc-lrucache")
+ (version "1.2.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hackage-uri "lrucache" version))
+ (sha256
+ (base32 "11avhnjnb89rvn2s41jhh5r40zgp7r6kb5c0hcfiibpabqvv46pw"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "lrucache")))
+ (inputs (list ghc-contravariant))
+ (home-page "http://github.com/chowells79/lrucache")
+ (synopsis "a simple, pure LRU cache")
+ (description
+ "This package contains a simple, pure LRU cache, implemented in terms of
+\"Data.Map\". . It also contains a mutable IO wrapper providing atomic updates to
+an LRU cache.")
+ (license license:bsd-3)))
+
+(define ghc-hakyll
+ (package
+ (name "ghc-hakyll")
+ (version "4.16.2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hackage-uri "hakyll" version))
+ (sha256
+ (base32 "1xcw8pcw9h82hxdlpp8z0ma2a1ssa5x2m32vizxh2a2pm5l1d3a7"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "hakyll")))
+ (inputs (list ghc-aeson
+ ghc-blaze-html
+ ghc-blaze-markup
+ ghc-data-default
+ ghc-file-embed
+ ghc-hashable
+ ghc-lrucache
+ ghc-network-uri
+ ghc-optparse-applicative
+ ghc-random
+ ghc-regex-tdfa
+ ghc-resourcet
+ ghc-scientific
+ ghc-tagsoup
+ ghc-time-locale-compat
+ ghc-unordered-containers
+ ghc-vector
+ ghc-wai-app-static
+ ghc-yaml
+ ghc-wai
+ ghc-warp
+ ghc-http-types
+ ghc-fsnotify
+ ghc-http-conduit
+ ghc-pandoc))
+ (native-inputs (list ghc-quickcheck
+ ghc-tasty
+ ghc-tasty-golden
+ ghc-tasty-hunit
+ ghc-tasty-quickcheck
+ util-linux))
+ (home-page "http://jaspervdj.be/hakyll")
+ (synopsis "A static website compiler library")
+ (description
+ "Hakyll is a static website compiler library. It provides you with the tools to
+create a simple or advanced static website using a Haskell DSL and formats such
+as markdown or RST. You can find more information, including a tutorial, on the
+website: . * <http://jaspervdj.be/hakyll> . If you seek assistance, there's: .
+* A google group: <http://groups.google.com/group/hakyll> . * An IRC channel,
+@@#hakyll@@ on irc.libera.chat (we *do not* have a channel on Freenode anymore)
+. Additionally, there's the Haddock documentation in the different modules,
+meant as a reference.")
+ (license license:bsd-3)))
+
+(define ghc-hakyll-process
+ (package
+ (name "ghc-hakyll-process")
+ (version "0.0.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hackage-uri "hakyll-process" version))
+ (sha256
+ (base32 "1ci7sw9r73h06kdrhqqbs0sar91z56scns3xljq2rpzhcpf3ppms"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "hakyll-process")))
+ (inputs (list ghc-hakyll ghc-typed-process))
+ (home-page "https://github.com/jhmcstanton/hakyll-process#readme")
+ (synopsis "Hakyll compiler for arbitrary external processes.")
+ (description
+ "Exposes Hakyll compilers for passing file paths to external processes.
+Transformed results are made available as Hakyll `Items`.")
+ (license license:bsd-3)))
+
+(define vcs-file?
+ (or (git-predicate (current-source-directory))
+ (const #t)))
+
+(define site-web
+ (package
+ (name "site-web")
+ (version "1.0-3253fc10")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.ameliathe1st.gay/site-web.git")
+ (commit "3253fc1004e23b804861104d917da278a895ea64"))) ;(string-append "v" version))))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32 "0lqqv2qjirzcnlyq6wmfhsazc16hhs8y95jx1xn2g6p1h44zslvp"))))
+ (build-system haskell-build-system)
+ (inputs (list ghc-hakyll ghc-hakyll-process))
+ (arguments
+ (list
+ #:phases #~(modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'check)
+ (delete 'haddock)
+ (delete 'register)
+ (replace 'build
+ (lambda* (#:key #:allow-other-keys)
+ (mkdir "out")
+ (invoke "ghc"
+ "-Wno-tabs"
+ "-odir"
+ "out"
+ "-hidir"
+ "out"
+ "main.hs"
+ "-o"
+ "out/main")
+ (invoke "./out/main" "build")))
+ (replace 'install
+ (lambda* (#:key output #:allow-other-keys)
+ (mkdir-p (string-append #$output "/share/"))
+ (invoke "cp" "-r" "_site" (string-append #$output "/share/site-web")))))))
+ (synopsis "Mon site web")
+ (description "Mon site web statique, implémenté en haskell via Hakyll.")
+ (home-page "https://www.ameliathe1st.gay")
+ (license license:agpl3+)))