Skip to content

Instantly share code, notes, and snippets.

View nicolashery's full-sized avatar

Nicolas Hery nicolashery

View GitHub Profile
@nicolashery
nicolashery / Minimal Monochrome Dark
Last active February 21, 2026 17:45
Monochrome and minimal color themes
background = #1A1A1A
foreground = #EEEEEE
cursor-color = #EEEEEE
cursor-text = #1A1A1A
selection-background = #606060
selection-foreground = #EEEEEE
palette = 0=#1A1A1A
palette = 1=#F5A3A7
palette = 2=#8BCFAC
palette = 3=#F0C674
@nicolashery
nicolashery / lazyvim.md
Created May 15, 2025 13:34
My config for LazyVim

My config for LazyVim.

Theme:

-- ~/.config/nvim/lua/plugins/catppuccin
return {
  "catppuccin/nvim",
  name = "catppuccin",
  priority = 1000,
@nicolashery
nicolashery / main.go
Last active February 6, 2025 02:56
Encoding and decoding JSON sum types in Go
package main
import (
"encoding/json"
"fmt"
)
type Item struct {
ID string `json:"id"`
Name string `json:"name"`

Using MonadLogger without LoggingT in Haskell

Using RIO with Servant in Haskell, with nested environments.

Port of servant-nested-apis Gist.

Nesting APIs and ReaderT environments in Haskell's Servant

Environments, from parent to child (or base to extended):

  • App (ReaderT AppEnv IO):
    • HasLogFunc env
    • HasDatabase env
    • HasTracing env
  • AppAuthenticated (ReaderT AppAuthenticatedEnv IO):
  • HasApp env (everything from App)

App-wide vs. Handler-specific environments in Haskell's Servant

See files:

Client requests:

@nicolashery
nicolashery / AsyncMonadBaseControlExample.hs
Created September 9, 2022 14:01
Haskell ReaderT LoggingT - MonadBaseControl vs. MonadUnliftIO
module AsyncMonadBaseControlExample where
import Blammo.Logging (LoggingT)
import Control.Concurrent.Async.Lifted.Safe (concurrently)
import Control.Monad.Base (MonadBase)
import Control.Monad.Reader (MonadIO, MonadReader, MonadTrans (lift), ReaderT)
import Control.Monad.Trans.Control (MonadBaseControl (liftBaseWith, restoreM), StM)
import Data.Text.Lazy qualified as TL
import Web.Scotty.Trans (ActionT, text)
#!/usr/bin/env stack
{- stack
--resolver lts-13.4
--install-ghc
script
--ghc-options "-Wall"
--package aeson
--package aeson-pretty
--package aeson-typescript
--package base