diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,23 @@
 
 ## [Unreleased]
 
+## [1.0.0.2] - 2026-01-03
+
+### Added
+
+- Support for Windows
+- Support for macOS (x86_64-darwin, aarch64-darwin) and Linux ARM (aarch64-linux)
+- `Himari.Prelude.Aeson` module for JSON-related re-exports
+- `Himari.Prelude.Safe` module for safe function re-exports
+- `Himari.Prelude.Category` module for `Control.Category` re-exports (hiding `id` and `.`)
+- `Himari.Prelude.Generics` module for `GHC.Generics` re-exports (hiding `from` and `to`)
+- `Himari.Prelude.FilePath` module for `System.FilePath` re-exports (hiding `<.>`)
+- `Himari.Prelude.Type` module for type-only re-exports (`ByteString`, `Text`, `Map`, `Vector`, etc.)
+
+### Changed
+
+- Refactor `Himari.Prelude` to use submodules for cleaner Haddock documentation
+
 ## [1.0.0.1] - 2026-01-01
 
 ### Changed
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,5 +1,16 @@
 # himari
 
+[![CI](https://github.com/ncaq/himari/actions/workflows/push.yml/badge.svg)](https://github.com/ncaq/himari/actions/workflows/push.yml)
+[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://github.com/ncaq/himari/blob/master/LICENSE)
+
+[![Haskell](https://img.shields.io/badge/language-Haskell-5D4F85.svg)](https://www.haskell.org/)
+[![Hackage](https://img.shields.io/hackage/v/himari.svg?logo=haskell)](https://hackage.haskell.org/package/himari)
+[![Haddock](https://img.shields.io/badge/docs-Haddock-purple.svg)](https://hackage.haskell.org/package/himari/docs/Himari.html)
+
+![Linux](https://img.shields.io/badge/linux-x86__64%20|%20ARM64-brightgreen?logo=linux&logoColor=white)
+![macOS](https://img.shields.io/badge/macOS-x86__64%20|%20ARM64-brightgreen?logo=apple&logoColor=white)
+![Windows](https://img.shields.io/badge/windows-x86__64-brightgreen?logo=windows&logoColor=white)
+
 A standard library for Haskell to replace rio
 
 ## 注意
@@ -29,8 +40,12 @@
 なのでhimariはhlintのルールで警告を出すことで対処しています。
 
 プロジェクトルートにある[.hlint.yaml](./.hlint.yaml)ファイルを、
-あなたのプロジェクトにコピーしてください。
+以下のような方法であなたのプロジェクトにコピーしてください。
 
+```console
+curl -L 'https://raw.githubusercontent.com/ncaq/himari/master/.hlint.yaml' -o '.hlint.yaml'
+```
+
 ## 背景
 
 私は、
@@ -81,3 +96,25 @@
 himariはrioで言う`RIO.Text`のような独自のシンボルを定義することをなるべく避けます。
 LLMのコーディングエージェントに独自のシンボルを使うことを守ってもらうのが難しいからです。
 しばしばオリジナルのシンボルをimportしてしまいます。
+
+ただし`Himari.Prelude`のサブモジュール(`Himari.Prelude.Aeson`など)は例外的に存在します。
+これはHaddockの制限により、`hiding`を使ったre-exportはシンボルが全て展開されてドキュメントが肥大化してしまうためです。
+サブモジュールでhidingを隠蔽することで、`Himari.Prelude`のドキュメントをコンパクトに保っています。
+
+これらのサブモジュールは`Himari.Prelude`から自動的にre-exportされるため、
+rioの`RIO.Text`のように個別にimportする必要はありません。
+万が一誤ってサブモジュールを直接importした場合でも、
+`Himari.Prelude`と重複importすることになり、GHCが警告を出してくれます。
+
+## Nix
+
+このプロジェクトは[haskell.nix](https://input-output-hk.github.io/haskell.nix/)を使用しています。
+
+### `nix flake show`が失敗する場合
+
+haskell.nixはIFD(Import From Derivation)を使用するため、
+複数システムをサポートするflakeで`nix flake show`を実行すると、
+異なるシステム向けのビルドを評価しようとして失敗することがあります。
+
+これはhaskell.nixの既知の制限であり、
+現在のところ完全な回避策はありません。
diff --git a/himari.cabal b/himari.cabal
--- a/himari.cabal
+++ b/himari.cabal
@@ -1,14 +1,12 @@
 cabal-version: 3.0
 name: himari
-version: 1.0.0.1
+version: 1.0.0.2
 synopsis: A standard library for Haskell as an alternative to rio
 description:
   A standard library for Haskell inspired by rio.
-  .
   Unlike rio, himari uses the full lens library instead of microlens,
   and provides hlint rules to warn against partial functions
   instead of providing safe wrapper modules.
-  .
   See the README at <https://github.com/ncaq/himari#readme> for more information.
 
 homepage: https://github.com/ncaq/himari
@@ -84,6 +82,12 @@
     Himari.Env.Simple
     Himari.Logger
     Himari.Prelude
+    Himari.Prelude.Aeson
+    Himari.Prelude.Category
+    Himari.Prelude.FilePath
+    Himari.Prelude.Generics
+    Himari.Prelude.Safe
+    Himari.Prelude.Type
 
 test-suite himari-test
   import: basic
diff --git a/src/Himari/Prelude.hs b/src/Himari/Prelude.hs
--- a/src/Himari/Prelude.hs
+++ b/src/Himari/Prelude.hs
@@ -1,30 +1,9 @@
 -- | Alternative to "Prelude".
 module Himari.Prelude
   ( module Export
-  -- Type only re-exports.
-  , ByteString
-  , StrictByteString
-  , LazyByteString
-  , ShortByteString
-  , HashMap
-  , HashSet
-  , IntMap
-  , IntSet
-  , List
-  , NonEmpty
-  , Map
-  , Seq
-  , Set
-  , StrictText
-  , Text
-  , LazyText
-  , Tree
-  , MVector
-  , Vector
   ) where
 
 import Control.Applicative as Export
-import Control.Category as Export hiding (id, (.))
 import Control.DeepSeq as Export
 import Control.Lens as Export
 import Control.Monad as Export
@@ -56,140 +35,14 @@
 import Data.Void as Export
 import Data.Word as Export
 import Debug.Pretty.Simple as Export
-import GHC.Generics as Export hiding (from, to)
-import System.FilePath as Export hiding ((<.>))
+import Himari.Prelude.Aeson as Export
+import Himari.Prelude.Category as Export
+import Himari.Prelude.FilePath as Export
+import Himari.Prelude.Generics as Export
+import Himari.Prelude.Safe as Export
+import Himari.Prelude.Type as Export
 import System.Process.Typed as Export
 import Text.Pretty.Simple as Export
 import Text.Show as Export
 import UnliftIO as Export
 import Prelude as Export
-
--- 部分関数ではない代替関数を提供してくれるsafeライブラリからシンボルを持ってきます。
--- 必要なのは部分関数ではない関数なので、部分関数はいらないのでhidingします。
--- `Safe.Foldable`の方がより汎用的なので、そちらを優先してコンフリクトするものはhidingします。
-import Safe as Export hiding
-  ( abort
-  , assertNote
-  , at
-  , atNote
-  , cycleNote
-  , elemIndexJust
-  , elemIndexJustNote
-  , findIndexJust
-  , findIndexJustNote
-  , findJust
-  , findJustDef
-  , findJustNote
-  , foldl1Def
-  , foldl1May
-  , foldl1Note
-  , foldl1Note'
-  , foldr1Def
-  , foldr1May
-  , foldr1Note
-  , fromJustNote
-  , headErr
-  , headNote
-  , indexNote
-  , initNote
-  , lastNote
-  , lookupJust
-  , lookupJustNote
-  , maximumBound
-  , maximumBoundBy
-  , maximumBounded
-  , maximumByDef
-  , maximumByMay
-  , maximumByNote
-  , maximumDef
-  , maximumMay
-  , maximumNote
-  , minimumBound
-  , minimumBoundBy
-  , minimumBounded
-  , minimumByDef
-  , minimumByMay
-  , minimumByNote
-  , minimumDef
-  , minimumMay
-  , minimumNote
-  , predNote
-  , readNote
-  , scanl1Note
-  , scanr1Note
-  , succNote
-  , tailErr
-  , tailNote
-  , toEnumNote
-  )
-import Safe.Exact as Export hiding
-  ( dropExact
-  , dropExactNote
-  , splitAtExact
-  , splitAtExactNote
-  , takeExact
-  , takeExactNote
-  , zip3Exact
-  , zip3ExactNote
-  , zipExact
-  , zipExactNote
-  , zipWith3Exact
-  , zipWith3ExactNote
-  , zipWithExact
-  , zipWithExactNote
-  )
-import Safe.Foldable as Export hiding
-  ( findJust
-  , findJustNote
-  , foldl1Note
-  , foldr1Note
-  , maximumByNote
-  , maximumNote
-  , minimumByNote
-  , minimumNote
-  )
-
--- aeson系には被りそうな関数名が多いので、hidingしたり、シンボルを個別importします。
-import Data.Aeson as Export hiding
-  ( decode
-  , decode'
-  , decodeFileStrict
-  , decodeFileStrict'
-  , decodeStrict
-  , decodeStrict'
-  , decodeStrictText
-  , eitherDecode'
-  , eitherDecodeFileStrict'
-  , eitherDecodeStrict'
-  , throwDecode'
-  , throwDecodeStrict'
-  , (.=)
-  )
-import Data.Aeson.Encode.Pretty as Export
-  ( encodePretty
-  , encodePretty'
-  , encodePrettyToTextBuilder
-  , encodePrettyToTextBuilder'
-  )
-import Data.Aeson.QQ.Simple as Export
-import Deriving.Aeson as Export
-
--- Type only.
-
-import Control.Monad.Catch as Export (MonadCatch, MonadMask, MonadThrow)
-import Data.ByteString (ByteString, StrictByteString)
-import Data.ByteString.Lazy (LazyByteString)
-import Data.ByteString.Short (ShortByteString)
-import Data.HashMap.Strict (HashMap)
-import Data.HashSet (HashSet)
-import Data.IntMap.Strict (IntMap)
-import Data.IntSet (IntSet)
-import Data.List (List)
-import Data.List.NonEmpty (NonEmpty)
-import Data.Map.Strict (Map)
-import Data.Sequence (Seq)
-import Data.Set (Set)
-import Data.Text (StrictText, Text)
-import Data.Text.Lazy (LazyText)
-import Data.Tree (Tree)
-import Data.Vector (MVector, Vector)
diff --git a/src/Himari/Prelude/Aeson.hs b/src/Himari/Prelude/Aeson.hs
new file mode 100644
--- /dev/null
+++ b/src/Himari/Prelude/Aeson.hs
@@ -0,0 +1,30 @@
+-- | "Data.Aeson", "Data.Aeson.Encode.Pretty", "Data.Aeson.QQ.Simple", and "Deriving.Aeson" re-exports for JSON handling.
+module Himari.Prelude.Aeson
+  ( module Export
+  ) where
+
+-- aeson has many functions with common names that may conflict,
+-- so we hide some and selectively import others.
+import Data.Aeson as Export hiding
+  ( decode
+  , decode'
+  , decodeFileStrict
+  , decodeFileStrict'
+  , decodeStrict
+  , decodeStrict'
+  , decodeStrictText
+  , eitherDecode'
+  , eitherDecodeFileStrict'
+  , eitherDecodeStrict'
+  , throwDecode'
+  , throwDecodeStrict'
+  , (.=)
+  )
+import Data.Aeson.Encode.Pretty as Export
+  ( encodePretty
+  , encodePretty'
+  , encodePrettyToTextBuilder
+  , encodePrettyToTextBuilder'
+  )
+import Data.Aeson.QQ.Simple as Export
+import Deriving.Aeson as Export
diff --git a/src/Himari/Prelude/Category.hs b/src/Himari/Prelude/Category.hs
new file mode 100644
--- /dev/null
+++ b/src/Himari/Prelude/Category.hs
@@ -0,0 +1,6 @@
+-- | "Control.Category" re-exports, hiding symbols that conflict with "Prelude".
+module Himari.Prelude.Category
+  ( module Export
+  ) where
+
+import Control.Category as Export hiding (id, (.))
diff --git a/src/Himari/Prelude/FilePath.hs b/src/Himari/Prelude/FilePath.hs
new file mode 100644
--- /dev/null
+++ b/src/Himari/Prelude/FilePath.hs
@@ -0,0 +1,6 @@
+-- | "System.FilePath" re-exports, hiding symbols that conflict with "Control.Lens".
+module Himari.Prelude.FilePath
+  ( module Export
+  ) where
+
+import System.FilePath as Export hiding ((<.>))
diff --git a/src/Himari/Prelude/Generics.hs b/src/Himari/Prelude/Generics.hs
new file mode 100644
--- /dev/null
+++ b/src/Himari/Prelude/Generics.hs
@@ -0,0 +1,6 @@
+-- | "GHC.Generics" re-exports, hiding symbols that conflict with "Control.Lens".
+module Himari.Prelude.Generics
+  ( module Export
+  ) where
+
+import GHC.Generics as Export hiding (from, to)
diff --git a/src/Himari/Prelude/Safe.hs b/src/Himari/Prelude/Safe.hs
new file mode 100644
--- /dev/null
+++ b/src/Himari/Prelude/Safe.hs
@@ -0,0 +1,88 @@
+-- | "Safe", "Safe.Exact", and "Safe.Foldable" re-exports.
+-- Only total functions are exported; partial functions are hidden.
+-- "Safe.Foldable" is preferred for more generic versions, so conflicting functions are hidden from "Safe".
+module Himari.Prelude.Safe
+  ( module Export
+  ) where
+
+import Safe as Export hiding
+  ( abort
+  , assertNote
+  , at
+  , atNote
+  , cycleNote
+  , elemIndexJust
+  , elemIndexJustNote
+  , findIndexJust
+  , findIndexJustNote
+  , findJust
+  , findJustDef
+  , findJustNote
+  , foldl1Def
+  , foldl1May
+  , foldl1Note
+  , foldl1Note'
+  , foldr1Def
+  , foldr1May
+  , foldr1Note
+  , fromJustNote
+  , headErr
+  , headNote
+  , indexNote
+  , initNote
+  , lastNote
+  , lookupJust
+  , lookupJustNote
+  , maximumBound
+  , maximumBoundBy
+  , maximumBounded
+  , maximumByDef
+  , maximumByMay
+  , maximumByNote
+  , maximumDef
+  , maximumMay
+  , maximumNote
+  , minimumBound
+  , minimumBoundBy
+  , minimumBounded
+  , minimumByDef
+  , minimumByMay
+  , minimumByNote
+  , minimumDef
+  , minimumMay
+  , minimumNote
+  , predNote
+  , readNote
+  , scanl1Note
+  , scanr1Note
+  , succNote
+  , tailErr
+  , tailNote
+  , toEnumNote
+  )
+import Safe.Exact as Export hiding
+  ( dropExact
+  , dropExactNote
+  , splitAtExact
+  , splitAtExactNote
+  , takeExact
+  , takeExactNote
+  , zip3Exact
+  , zip3ExactNote
+  , zipExact
+  , zipExactNote
+  , zipWith3Exact
+  , zipWith3ExactNote
+  , zipWithExact
+  , zipWithExactNote
+  )
+import Safe.Foldable as Export hiding
+  ( findJust
+  , findJustNote
+  , foldl1Note
+  , foldr1Note
+  , maximumByNote
+  , maximumNote
+  , minimumByNote
+  , minimumNote
+  )
diff --git a/src/Himari/Prelude/Type.hs b/src/Himari/Prelude/Type.hs
new file mode 100644
--- /dev/null
+++ b/src/Himari/Prelude/Type.hs
@@ -0,0 +1,56 @@
+-- | Type-only re-exports from various modules.
+--
+-- Includes types from "Control.Monad.Catch", "Data.ByteString", "Data.HashMap.Strict",
+-- "Data.HashSet", "Data.IntMap.Strict", "Data.IntSet", "Data.List", "Data.List.NonEmpty",
+-- "Data.Map.Strict", "Data.Sequence", "Data.Set", "Data.Text", "Data.Tree", and "Data.Vector".
+module Himari.Prelude.Type
+  ( -- * Exception handling
+    MonadCatch
+  , MonadMask
+  , MonadThrow
+
+    -- * ByteString
+  , ByteString
+  , StrictByteString
+  , LazyByteString
+  , ShortByteString
+
+    -- * Containers
+  , HashMap
+  , HashSet
+  , IntMap
+  , IntSet
+  , List
+  , NonEmpty
+  , Map
+  , Seq
+  , Set
+  , Tree
+
+    -- * Text
+  , StrictText
+  , Text
+  , LazyText
+
+    -- * Vector
+  , MVector
+  , Vector
+  ) where
+
+import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow)
+import Data.ByteString (ByteString, StrictByteString)
+import Data.ByteString.Lazy (LazyByteString)
+import Data.ByteString.Short (ShortByteString)
+import Data.HashMap.Strict (HashMap)
+import Data.HashSet (HashSet)
+import Data.IntMap.Strict (IntMap)
+import Data.IntSet (IntSet)
+import Data.List (List)
+import Data.List.NonEmpty (NonEmpty)
+import Data.Map.Strict (Map)
+import Data.Sequence (Seq)
+import Data.Set (Set)
+import Data.Text (StrictText, Text)
+import Data.Text.Lazy (LazyText)
+import Data.Tree (Tree)
+import Data.Vector (MVector, Vector)
