services.sxml 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. `((section
  2. (article (@ (class "basic-section-padding"))
  3. (p "Do you like this blog or these "
  4. (a (@ (href "https://video.hardlimit.com/accounts/joshua_branson/video-channels")
  5. (target "_blank")) "videos")
  6. " ? Do you dislike money? Would you care to support
  7. this blog and video production? Awesome! Because I have some services
  8. for you. Please note, that not all of these services are currently
  9. live. Singing up for these helps me gage interest. Each of these
  10. services is available in guix system, so it's just a matter of turning
  11. each service on.")))
  12. (section (@ (class "section-background"))
  13. (article (@ (class "basic-section-padding"))
  14. (h3 "Static Website Hosting")
  15. (p "I will host your static website on my guix
  16. system server (that runs this site). I'll charge $3/month. There are
  17. a ton of static site generators out there, you can click on these
  18. below to get started building your site.")
  19. (div (@ (class "flex"))
  20. (a (@ (href "https://dthompson.us/projects/haunt.html") (target "_blank"))
  21. (img (@ (src "./images/haunt.png"))))
  22. (a (@ (href "https://gohugo.io/") (target "_blank"))
  23. (img (@ (src "./images/hugo.png"))))
  24. (a (@ (href "https://jekyllrb.com/") (target "_blank"))
  25. (img (@ (src "./images/jekyll.png"))))
  26. (a (@ (href "https://orgmode.org/worg/org-web.html") (target "_blank"))
  27. (img (@ (src "./images/org-mode.png")))))
  28. (p "Status: live")
  29. ))
  30. (section
  31. (article (@ (class "basic-section-padding"))
  32. (h3 "An XMPP Account")
  33. (img (@ (src "./images/xmpp.png")))
  34. (p "I offer an XMPP account (formerly known
  35. as jabber) for $1/month. Once you get signed up, then you can talk to anyone with
  36. an XMPP account. Including the fabulous "
  37. (a (@ (href "https://dustycloud.org/contact/")
  38. (target "_blank") )
  39. "Christopher Lemmer Webber!")
  40. "You could also pair your new XMPP account with a "
  41. (a (@ (href "https://jmp.chat") (target "_blank"))
  42. "jmp.chat account. ")
  43. "That will make your phone bill $4/month!")
  44. (p "Status: Working!")))
  45. (section (@ (class "section-background"))
  46. (article (@ (class "basic-section-padding"))
  47. (h3 "Battle for Wesnoth Server")
  48. (img (@ (src "./images/wesnoth.png")))
  49. (p "The Battle for Wesnoth is one of the most
  50. popular turn based strategy game, where users attempt to control an
  51. ever larger region. You can play my on my Wesnoth server for
  52. $10/month.")
  53. (p "Status: not set up")))
  54. (section
  55. (article (@ (class "basic-section-padding"))
  56. ;;https://commons.wikimedia.org/wiki/File:Other-linux-logo.svg
  57. (h3 "Network File System Server")
  58. (img (@ (src "./images/linux.svg") (height "200px")))
  59. (p "NFS (network file system) to back up your files. NFS
  60. is puts all your file on a remote server, so you can access it from
  61. any computer. You can have access to 5GB of space for $5/month.")
  62. (p "Status: not set up")))
  63. (section (@ (class "section-background"))
  64. (article (@ (class "basic-section-padding"))
  65. (h3 "An Email Account")
  66. (p "email service. This is not a fastmail or
  67. gmail alternative. You will need an email client like Thunderbird or
  68. Claws mail. But you will not be subject to your google overlords.
  69. $3/month.")
  70. (p "Status: Working! Currently does not offer spam filtering or mail filtering.")))
  71. (section
  72. (article (@ (class "basic-section-padding"))
  73. (h3 "5 Email Aliases")
  74. (p "Email aliases let you sign up for
  75. various subscriptions and news items. If you alias starts to get
  76. over-bloated, you can always delete it. $2/month.")
  77. (p "Status: not set up")))
  78. (section (@ (class "section-background"))
  79. (article (@ (class "basic-section-padding"))
  80. (h3 "Your own Git Repository")
  81. (img (@ (src "./images/git.png")))
  82. (p "This git repository service
  83. won't be as pretty as others, bit it'll work. $3/month.")
  84. (p "Status: not set up")))
  85. (section
  86. (article (@ (class "basic-section-padding"))
  87. (h3 "Mumble Chat Server")
  88. (img (@ (src "./images/mumble.png")))
  89. (p "The low latency high quality voice chat server. This
  90. is a chat server that is popular with many gamers. If you are a gamer
  91. and want to set up a chat server with your friends, then perhaps this
  92. service is for you. $10/month.")
  93. (p "Status: not set up")))
  94. (section (@ (class "section-background"))
  95. (article (@ (class "basic-section-padding"))
  96. (h3 "Dictionary Server")
  97. (p "Dictionary server. $1/month.")
  98. (p "Status: not set up")))
  99. (section (@ (class "basic-section-padding"))
  100. (article
  101. (form (@ (action "/form/submit.scm") (method "post"))
  102. (div
  103. (label (@ (for "name")) "Name")
  104. (input (@ (id "name") (type "text") (name "name") (placeholder "Greg Jones") (required ""))))
  105. (div
  106. (label (@ (for "email")) "Email")
  107. (input (@ (id "email") (type "email") (name "email") (placeholder "email@example.com")
  108. (required ""))))
  109. (div
  110. ;; this is a honeypot. It's an hidden input, that users will leave empty, but computer programs
  111. ;; will put in a value.
  112. (label (@ (for "address") (class "hidden")) "address")
  113. (input (@ (id "address") (type "text") (class "hidden") (name "address"))))
  114. (div
  115. (label (@ (for "timestamp") (class "hidden")) "timestamp")
  116. (input (@ (id "timestamp") (type "number") (class "hidden") (name "timestamp")
  117. (value ,(string-append
  118. (number->string (car (gettimeofday)))
  119. " "
  120. (number->string (cdr (gettimeofday))))
  121. ))))
  122. (div
  123. (label (@ (for "phone")) "Phone")
  124. (input (@ (id "phone") (type "tel") (name "phone") (placeholder "224-930-0493")
  125. (required ""))))
  126. (div
  127. (label (@ (for "subject")) "Subject")
  128. (input (@ (id "subject") (type "text") (name "subject") (placeholder "Website Hosting")
  129. (required ""))))
  130. (div
  131. (label (@ (for "domain")) "Website")
  132. (input (@ (id "domain") (type "text") (name "domain") (placeholder "gregsblog.com")
  133. (required ""))))
  134. (div
  135. (input (@ (type "checkbox") (id "service1") (name "service1") (value "webhost")))
  136. (label (@ (for "service1")) "Static Site Hosting $3") (br)
  137. (input (@ (type "checkbox") (id "service2") (name "service2") (value "xmpp")))
  138. (label (@ (for "service2")) "XMPP account $1") (br)
  139. (input (@ (type "checkbox") (id "service3") (name "service3") (value "wesnoth")))
  140. (label (@ (for "service3")) "The Battle for Wesnoth Server $10") (br)
  141. (input (@ (type "checkbox") (id "service4") (name "service4") (value "nfs")))
  142. (label (@ (for "service4")) "NFS $5") (br)
  143. (input (@ (type "checkbox") (id "service5") (name "service5") (value "email")))
  144. (label (@ (for "service5")) "Email Account $3") (br)
  145. (input (@ (type "checkbox") (id "service6") (name "service6") (value "email-alias")))
  146. (label (@ (for "service6")) "5 Email Aliases $2") (br)
  147. (input (@ (type "checkbox") (id "service7") (name "service7") (value "git")))
  148. (label (@ (for "service7")) "Git Hosting $3") (br)
  149. (input (@ (type "checkbox") (id "service8") (name "service8") (value "mumble")))
  150. (label (@ (for "service8")) "Mumble Server $10") (br)
  151. (input (@ (type "checkbox") (id "service9") (name "service9") (value "dict")))
  152. (label (@ (for "service9")) "dictionary service $1") (br))
  153. (div
  154. (label (@ (for "message")) "Message")
  155. (textarea (@ (id "message") (name "message") (cols "26") (rows "6")
  156. (placeholder "I like your services!
  157. Plz donate 10% of your profits to guix or Wesnoth.")
  158. (required ""))
  159. ;;necessary to properly close <textarea></textarea> tag.
  160. ()))
  161. (div
  162. (br) (br) (br)
  163. (label "Total: " (span (@ (id "total")) ""))
  164. (br) (br) (br)
  165. (button (@ (type "submit")) "Submit")))))
  166. (br) (br))