diff --git a/cabal-gild.cabal b/cabal-gild.cabal
--- a/cabal-gild.cabal
+++ b/cabal-gild.cabal
@@ -11,7 +11,7 @@
 maintainer: Taylor Fausak
 name: cabal-gild
 synopsis: Formats package descriptions.
-version: 1.7.0.2
+version: 1.8.0.0
 
 source-repository head
   type: git
@@ -98,11 +98,17 @@
     CabalGild.Unstable.Extra.Field
     CabalGild.Unstable.Extra.FieldLine
     CabalGild.Unstable.Extra.FilePath
+    CabalGild.Unstable.Extra.IncludeRenaming
+    CabalGild.Unstable.Extra.LibraryName
     CabalGild.Unstable.Extra.List
+    CabalGild.Unstable.Extra.Mixin
     CabalGild.Unstable.Extra.ModuleName
+    CabalGild.Unstable.Extra.ModuleRenaming
     CabalGild.Unstable.Extra.Name
+    CabalGild.Unstable.Extra.PackageName
     CabalGild.Unstable.Extra.SectionArg
     CabalGild.Unstable.Extra.String
+    CabalGild.Unstable.Extra.UnqualComponentName
     CabalGild.Unstable.Main
     CabalGild.Unstable.Type.Block
     CabalGild.Unstable.Type.Chunk
diff --git a/source/library/CabalGild/Unstable/Extra/IncludeRenaming.hs b/source/library/CabalGild/Unstable/Extra/IncludeRenaming.hs
new file mode 100644
--- /dev/null
+++ b/source/library/CabalGild/Unstable/Extra/IncludeRenaming.hs
@@ -0,0 +1,11 @@
+module CabalGild.Unstable.Extra.IncludeRenaming where
+
+import qualified CabalGild.Unstable.Extra.ModuleRenaming as ModuleRenaming
+import qualified Distribution.Types.IncludeRenaming as IncludeRenaming
+
+sort :: IncludeRenaming.IncludeRenaming -> IncludeRenaming.IncludeRenaming
+sort x =
+  IncludeRenaming.IncludeRenaming
+    { IncludeRenaming.includeProvidesRn = ModuleRenaming.sort $ IncludeRenaming.includeProvidesRn x,
+      IncludeRenaming.includeRequiresRn = ModuleRenaming.sort $ IncludeRenaming.includeRequiresRn x
+    }
diff --git a/source/library/CabalGild/Unstable/Extra/LibraryName.hs b/source/library/CabalGild/Unstable/Extra/LibraryName.hs
new file mode 100644
--- /dev/null
+++ b/source/library/CabalGild/Unstable/Extra/LibraryName.hs
@@ -0,0 +1,9 @@
+module CabalGild.Unstable.Extra.LibraryName where
+
+import qualified CabalGild.Unstable.Extra.UnqualComponentName as UnqualComponentName
+import qualified Distribution.Types.LibraryName as LibraryName
+
+toCaseFold :: LibraryName.LibraryName -> LibraryName.LibraryName
+toCaseFold ln = case ln of
+  LibraryName.LMainLibName -> LibraryName.LMainLibName
+  LibraryName.LSubLibName uqn -> LibraryName.LSubLibName $ UnqualComponentName.toCaseFold uqn
diff --git a/source/library/CabalGild/Unstable/Extra/Mixin.hs b/source/library/CabalGild/Unstable/Extra/Mixin.hs
new file mode 100644
--- /dev/null
+++ b/source/library/CabalGild/Unstable/Extra/Mixin.hs
@@ -0,0 +1,21 @@
+module CabalGild.Unstable.Extra.Mixin where
+
+import qualified CabalGild.Unstable.Extra.IncludeRenaming as IncludeRenaming
+import qualified CabalGild.Unstable.Extra.LibraryName as LibraryName
+import qualified CabalGild.Unstable.Extra.PackageName as PackageName
+import qualified Distribution.Types.Mixin as Mixin
+
+sort :: Mixin.Mixin -> Mixin.Mixin
+sort x =
+  Mixin.Mixin
+    { Mixin.mixinPackageName = Mixin.mixinPackageName x,
+      Mixin.mixinLibraryName = Mixin.mixinLibraryName x,
+      Mixin.mixinIncludeRenaming = IncludeRenaming.sort $ Mixin.mixinIncludeRenaming x
+    }
+
+toCaseFold :: Mixin.Mixin -> Mixin.Mixin
+toCaseFold x =
+  x
+    { Mixin.mixinPackageName = PackageName.toCaseFold $ Mixin.mixinPackageName x,
+      Mixin.mixinLibraryName = LibraryName.toCaseFold $ Mixin.mixinLibraryName x
+    }
diff --git a/source/library/CabalGild/Unstable/Extra/ModuleName.hs b/source/library/CabalGild/Unstable/Extra/ModuleName.hs
--- a/source/library/CabalGild/Unstable/Extra/ModuleName.hs
+++ b/source/library/CabalGild/Unstable/Extra/ModuleName.hs
@@ -12,6 +12,13 @@
 fromFilePath :: FilePath -> Maybe ModuleName.ModuleName
 fromFilePath = Parsec.simpleParsec . List.intercalate "." . FilePath.splitDirectories
 
+toCaseFold :: ModuleName.ModuleName -> ModuleName.ModuleName
+toCaseFold =
+  ModuleName.fromString
+    . List.intercalate "."
+    . fmap String.toCaseFold
+    . ModuleName.components
+
 -- | Converts a 'ModuleName.ModuleName' into a 'Fields.FieldLine'.
 toFieldLine :: a -> ModuleName.ModuleName -> Fields.FieldLine a
 toFieldLine a = Fields.FieldLine a . String.toUtf8 . Pretty.prettyShow
diff --git a/source/library/CabalGild/Unstable/Extra/ModuleRenaming.hs b/source/library/CabalGild/Unstable/Extra/ModuleRenaming.hs
new file mode 100644
--- /dev/null
+++ b/source/library/CabalGild/Unstable/Extra/ModuleRenaming.hs
@@ -0,0 +1,12 @@
+module CabalGild.Unstable.Extra.ModuleRenaming where
+
+import qualified CabalGild.Unstable.Extra.ModuleName as ModuleName
+import qualified Data.Bifunctor as Bifunctor
+import qualified Data.List as List
+import qualified Distribution.Types.ModuleRenaming as ModuleRenaming
+
+sort :: ModuleRenaming.ModuleRenaming -> ModuleRenaming.ModuleRenaming
+sort x = case x of
+  ModuleRenaming.DefaultRenaming -> ModuleRenaming.DefaultRenaming
+  ModuleRenaming.HidingRenaming ys -> ModuleRenaming.HidingRenaming $ List.sortOn ModuleName.toCaseFold ys
+  ModuleRenaming.ModuleRenaming ys -> ModuleRenaming.ModuleRenaming $ List.sortOn (Bifunctor.bimap ModuleName.toCaseFold ModuleName.toCaseFold) ys
diff --git a/source/library/CabalGild/Unstable/Extra/PackageName.hs b/source/library/CabalGild/Unstable/Extra/PackageName.hs
new file mode 100644
--- /dev/null
+++ b/source/library/CabalGild/Unstable/Extra/PackageName.hs
@@ -0,0 +1,10 @@
+module CabalGild.Unstable.Extra.PackageName where
+
+import qualified CabalGild.Unstable.Extra.String as String
+import qualified Distribution.Types.PackageName as PackageName
+
+toCaseFold :: PackageName.PackageName -> PackageName.PackageName
+toCaseFold =
+  PackageName.mkPackageName
+    . String.toCaseFold
+    . PackageName.unPackageName
diff --git a/source/library/CabalGild/Unstable/Extra/String.hs b/source/library/CabalGild/Unstable/Extra/String.hs
--- a/source/library/CabalGild/Unstable/Extra/String.hs
+++ b/source/library/CabalGild/Unstable/Extra/String.hs
@@ -4,6 +4,9 @@
 import qualified Data.Text as Text
 import qualified Data.Text.Encoding as Encoding
 
+toCaseFold :: String -> String
+toCaseFold = Text.unpack . Text.toCaseFold . Text.pack
+
 -- | Converts the given 'String' into a UTF-8 encoded 'ByteString.ByteString'.
 toUtf8 :: String -> ByteString.ByteString
 toUtf8 = Encoding.encodeUtf8 . Text.pack
diff --git a/source/library/CabalGild/Unstable/Extra/UnqualComponentName.hs b/source/library/CabalGild/Unstable/Extra/UnqualComponentName.hs
new file mode 100644
--- /dev/null
+++ b/source/library/CabalGild/Unstable/Extra/UnqualComponentName.hs
@@ -0,0 +1,10 @@
+module CabalGild.Unstable.Extra.UnqualComponentName where
+
+import qualified CabalGild.Unstable.Extra.String as String
+import qualified Distribution.Types.UnqualComponentName as UnqualComponentName
+
+toCaseFold :: UnqualComponentName.UnqualComponentName -> UnqualComponentName.UnqualComponentName
+toCaseFold =
+  UnqualComponentName.mkUnqualComponentName
+    . String.toCaseFold
+    . UnqualComponentName.unUnqualComponentName
diff --git a/source/library/CabalGild/Unstable/Type/Dependency.hs b/source/library/CabalGild/Unstable/Type/Dependency.hs
--- a/source/library/CabalGild/Unstable/Type/Dependency.hs
+++ b/source/library/CabalGild/Unstable/Type/Dependency.hs
@@ -2,6 +2,7 @@
 
 module CabalGild.Unstable.Type.Dependency where
 
+import qualified CabalGild.Unstable.Extra.UnqualComponentName as UnqualComponentName
 import qualified CabalGild.Unstable.Type.VersionRange as VersionRange
 import qualified Control.Monad as Monad
 import qualified Data.List.NonEmpty as NonEmpty
@@ -53,6 +54,6 @@
                   . PrettyPrint.punctuate PrettyPrint.comma
                   . fmap Pretty.pretty
                   . NonEmpty.toList
-                  $ NonEmpty.sort ucns
+                  $ NonEmpty.sortOn UnqualComponentName.toCaseFold ucns
         ver = foldMap Pretty.pretty $ versionRange dependency
      in PrettyPrint.hsep [pkg <> libs, ver]
diff --git a/source/library/CabalGild/Unstable/Type/Extension.hs b/source/library/CabalGild/Unstable/Type/Extension.hs
--- a/source/library/CabalGild/Unstable/Type/Extension.hs
+++ b/source/library/CabalGild/Unstable/Type/Extension.hs
@@ -1,5 +1,6 @@
 module CabalGild.Unstable.Type.Extension where
 
+import qualified CabalGild.Unstable.Extra.String as String
 import qualified Data.Ord as Ord
 import qualified Distribution.Parsec as Parsec
 import qualified Distribution.Pretty as Pretty
@@ -14,7 +15,8 @@
   deriving (Eq, Show)
 
 instance Ord Extension where
-  compare = Ord.comparing Pretty.prettyShow
+  compare = Ord.comparing $ \x ->
+    let y = Pretty.prettyShow x in (String.toCaseFold y, y)
 
 instance Parsec.Parsec Extension where
   parsec = Extension <$> Parsec.parsec
diff --git a/source/library/CabalGild/Unstable/Type/Mixin.hs b/source/library/CabalGild/Unstable/Type/Mixin.hs
--- a/source/library/CabalGild/Unstable/Type/Mixin.hs
+++ b/source/library/CabalGild/Unstable/Type/Mixin.hs
@@ -1,51 +1,24 @@
 module CabalGild.Unstable.Type.Mixin where
 
-import qualified Data.List as List
+import qualified CabalGild.Unstable.Extra.Mixin as Mixin
 import qualified Data.Ord as Ord
 import qualified Distribution.Parsec as Parsec
 import qualified Distribution.Pretty as Pretty
-import qualified Distribution.Types.IncludeRenaming as IncludeRenaming
 import qualified Distribution.Types.Mixin as Mixin
-import qualified Distribution.Types.ModuleRenaming as ModuleRenaming
 
--- | This is a wrapper around 'Mixin.Mixin' that sorts the nested module names
--- when parsing.
+-- | This is a wrapper around 'Mixin.Mixin' that compares case insensitively
+-- and sorts the nested module names when printing.
 newtype Mixin = Mixin
   { unwrap :: Mixin.Mixin
   }
   deriving (Eq, Show)
 
 instance Ord Mixin where
-  compare = Ord.comparing unwrap
+  compare = Ord.comparing $ \x ->
+    let y = unwrap x in (Mixin.toCaseFold y, y)
 
 instance Parsec.Parsec Mixin where
-  parsec = Mixin . sortMixin <$> Parsec.parsec
+  parsec = Mixin <$> Parsec.parsec
 
 instance Pretty.Pretty Mixin where
-  pretty = Pretty.pretty . unwrap
-
--- | Sorts the 'Mixin.mixinIncludeRenaming' field using 'sortIncludeRenaming'.
-sortMixin :: Mixin.Mixin -> Mixin.Mixin
-sortMixin x =
-  Mixin.Mixin
-    { Mixin.mixinPackageName = Mixin.mixinPackageName x,
-      Mixin.mixinLibraryName = Mixin.mixinLibraryName x,
-      Mixin.mixinIncludeRenaming = sortIncludeRenaming $ Mixin.mixinIncludeRenaming x
-    }
-
--- | Sorts both 'IncludeRenaming.includeProvidesRn' and
--- 'IncludeRenaming.includeRequiresRn' fields using 'sortModuleRenaming'.
-sortIncludeRenaming :: IncludeRenaming.IncludeRenaming -> IncludeRenaming.IncludeRenaming
-sortIncludeRenaming x =
-  IncludeRenaming.IncludeRenaming
-    { IncludeRenaming.includeProvidesRn = sortModuleRenaming $ IncludeRenaming.includeProvidesRn x,
-      IncludeRenaming.includeRequiresRn = sortModuleRenaming $ IncludeRenaming.includeRequiresRn x
-    }
-
--- | Sorts both 'ModuleRenaming.HidingRenaming' and
--- 'ModuleRenaming.ModuleRenaming' variants.
-sortModuleRenaming :: ModuleRenaming.ModuleRenaming -> ModuleRenaming.ModuleRenaming
-sortModuleRenaming x = case x of
-  ModuleRenaming.DefaultRenaming -> ModuleRenaming.DefaultRenaming
-  ModuleRenaming.HidingRenaming ys -> ModuleRenaming.HidingRenaming $ List.sort ys
-  ModuleRenaming.ModuleRenaming ys -> ModuleRenaming.ModuleRenaming $ List.sort ys
+  pretty = Pretty.pretty . Mixin.sort . unwrap
diff --git a/source/test-suite/Main.hs b/source/test-suite/Main.hs
--- a/source/test-suite/Main.hs
+++ b/source/test-suite/Main.hs
@@ -1002,6 +1002,11 @@
       "library\n default-extensions: b a"
       "library\n  default-extensions:\n    a\n    b\n"
 
+  Hspec.it "sorts default-extensions case insensitively" $ do
+    expectGilded
+      "library\n default-extensions: B a"
+      "library\n  default-extensions:\n    a\n    B\n"
+
   Hspec.it "sorts known extensions by name" $ do
     expectGilded
       "library\n default-extensions: DerivingVia BlockArguments"
@@ -1032,11 +1037,21 @@
       "library\n other-extensions: b a"
       "library\n  other-extensions:\n    a\n    b\n"
 
+  Hspec.it "sorts other-extensions case insensitively" $ do
+    expectGilded
+      "library\n other-extensions: B a"
+      "library\n  other-extensions:\n    a\n    B\n"
+
   Hspec.it "sorts extensions" $ do
     expectGilded
       "library\n extensions: b a"
       "library\n  extensions:\n    a\n    b\n"
 
+  Hspec.it "sorts extensions case insensitively" $ do
+    expectGilded
+      "library\n extensions: B a"
+      "library\n  extensions:\n    a\n    B\n"
+
   Hspec.it "sorts build-depends" $ do
     expectGilded
       "library\n build-depends: q , p == 1"
@@ -1057,6 +1072,11 @@
       "cabal-version: 3.0\nlibrary\n build-depends: p:{b,a}"
       "cabal-version: 3.0\n\nlibrary\n  build-depends: p:{a, b}\n"
 
+  Hspec.it "sorts sub-libraries case insensitively in build-depends" $ do
+    expectGilded
+      "cabal-version: 3.0\nlibrary\n build-depends: p:{B,a}"
+      "cabal-version: 3.0\n\nlibrary\n  build-depends: p:{a, B}\n"
+
   Hspec.it "removes duplicate options" $ do
     -- This is kind of silly because there's only one possible foreign library
     -- option.
@@ -1184,26 +1204,56 @@
       "library\n mixins: q (M, N as O), p"
       "library\n  mixins:\n    p,\n    q (M, N as O)\n"
 
+  Hspec.it "sorts mixins case insensitively" $ do
+    expectGilded
+      "library\n mixins: B, a"
+      "library\n  mixins:\n    a,\n    B\n"
+
+  Hspec.it "sorts mixin sub-libraries case insensitively" $ do
+    expectGilded
+      "cabal-version: 3.4\nlibrary\n mixins: p:B, p:a"
+      "cabal-version: 3.4\n\nlibrary\n  mixins:\n    p:a,\n    p:B,\n"
+
   Hspec.it "sorts hiding in mixins" $ do
     expectGilded
       "library\n mixins: p hiding (N, M)"
       "library\n  mixins: p hiding (M, N)\n"
 
+  Hspec.it "sorts hiding in mixins case insensitively" $ do
+    expectGilded
+      "library\n mixins: p hiding (MB, Ma)"
+      "library\n  mixins: p hiding (Ma, MB)\n"
+
   Hspec.it "sorts modules in mixins" $ do
     expectGilded
       "library\n mixins: p (N, M)"
       "library\n  mixins: p (M, N)\n"
 
+  Hspec.it "sorts modules in mixins case insensitively" $ do
+    expectGilded
+      "library\n mixins: p (MB, Ma)"
+      "library\n  mixins: p (Ma, MB)\n"
+
   Hspec.it "sorts hiding in mixins requires" $ do
     expectGilded
       "library\n mixins: p requires hiding (N, M)"
       "library\n  mixins: p requires hiding (M, N)\n"
 
+  Hspec.it "sorts hiding in mixins requires case insensitively" $ do
+    expectGilded
+      "library\n mixins: p requires hiding (MB, Ma)"
+      "library\n  mixins: p requires hiding (Ma, MB)\n"
+
   Hspec.it "sorts modules in mixins requires" $ do
     expectGilded
       "library\n mixins: p requires (N, M)"
       "library\n  mixins: p requires (M, N)\n"
 
+  Hspec.it "sorts modules in mixins requires case insensitively" $ do
+    expectGilded
+      "library\n mixins: p requires (MB, Ma)"
+      "library\n  mixins: p requires (Ma, MB)\n"
+
   Hspec.it "does not sort ghc-options" $ do
     expectGilded
       "library\n ghc-options: b a"
@@ -1243,6 +1293,11 @@
     expectGilded
       "cabal-version: 3.0\ncustom-setup\n setup-depends: p:{b,a}"
       "cabal-version: 3.0\n\ncustom-setup\n  setup-depends: p:{a, b}\n"
+
+  Hspec.it "sorts sub-libraries case insensitively in setup-depends" $ do
+    expectGilded
+      "cabal-version: 3.0\ncustom-setup\n setup-depends: p:{B,a}"
+      "cabal-version: 3.0\n\ncustom-setup\n  setup-depends: p:{a, B}\n"
 
   Hspec.it "discovers an exposed module" $ do
     expectDiscover
