diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## [v1.0.0.3](https://github.com/freckle/freckle-app/compare/v1.0.0.2...v1.0.0.3)
+
+- Add `package.yaml` to `extra-source-files`.
+
 ## [v1.0.0.2](https://github.com/freckle/freckle-app/compare/v1.0.0.1...v1.0.0.2)
 
 - Extract tests that require `git` into a new suite.
diff --git a/freckle-app.cabal b/freckle-app.cabal
--- a/freckle-app.cabal
+++ b/freckle-app.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               freckle-app
-version:            1.0.0.2
+version:            1.0.0.3
 license:            MIT
 license-file:       LICENSE
 maintainer:         Freckle Education
@@ -13,6 +13,7 @@
 extra-source-files:
     README.md
     CHANGELOG.md
+    package.yaml
 
 source-repository head
     type:     git
diff --git a/package.yaml b/package.yaml
new file mode 100644
--- /dev/null
+++ b/package.yaml
@@ -0,0 +1,141 @@
+---
+name: freckle-app
+version: 1.0.0.3
+maintainer: Freckle Education
+category: Utils
+github: freckle/freckle-app
+synopsis: Haskell application toolkit used at Freckle
+description: Please see README.md
+
+extra-source-files:
+  - README.md
+  - CHANGELOG.md
+  - package.yaml
+
+flags:
+  test-git:
+    description: Run tests that run git commands
+    manual: true
+    default: true
+
+dependencies:
+  - base < 5
+
+default-extensions:
+  - BangPatterns
+  - DataKinds
+  - DeriveAnyClass
+  - DeriveFoldable
+  - DeriveFunctor
+  - DeriveGeneric
+  - DeriveLift
+  - DeriveTraversable
+  - DerivingStrategies
+  - FlexibleContexts
+  - FlexibleInstances
+  - GADTs
+  - GeneralizedNewtypeDeriving
+  - LambdaCase
+  - MultiParamTypeClasses
+  - NoImplicitPrelude
+  - NoMonomorphismRestriction
+  - OverloadedStrings
+  - RankNTypes
+  - RecordWildCards
+  - ScopedTypeVariables
+  - StandaloneDeriving
+  - TypeApplications
+  - TypeFamilies
+
+library:
+  source-dirs: library
+  dependencies:
+    - Glob
+    - MonadRandom
+    - aeson
+    - ansi-terminal
+    - bytestring
+    - case-insensitive
+    - conduit
+    - data-default
+    - datadog
+    - doctest
+    - errors
+    - exceptions
+    - fast-logger
+    - filepath
+    - hspec
+    - hspec-core
+    - hspec-expectations-lifted
+    - hspec-junit-formatter
+    - http-client
+    - http-conduit
+    - http-link-header
+    - http-types
+    - immortal
+    - iproute
+    - lens
+    - load-env
+    - monad-control
+    - monad-logger
+    - mtl
+    - network
+    - network-uri
+    - persistent
+    - persistent-postgresql
+    - postgresql-simple
+    - primitive
+    - process
+    - resource-pool
+    - retry
+    - rio
+    - text
+    - time
+    - transformers
+    - transformers-base
+    - unliftio
+    - unliftio-core
+    - wai
+    - wai-extra
+    - yaml
+    - yesod-core
+    - yesod
+
+tests:
+  spec:
+    main: Main.hs
+    source-dirs: tests
+    ghc-options: -threaded -rtsopts "-with-rtsopts=-N"
+    dependencies:
+      - aeson
+      - bytestring
+      - freckle-app
+      - hspec
+      - http-types
+      - lens
+      - lens-aeson
+      - wai
+      - wai-extra
+
+  doctest:
+    main: Main.hs
+    source-dirs: doctest
+    dependencies:
+      - freckle-app
+  gittest:
+    main: Main.hs
+    source-dirs: gittest
+    dependencies:
+      - freckle-app
+      - directory
+      - hspec
+      - temporary
+      - time
+      - process
+      - text
+    when:
+      - condition: flag(test-git)
+        then:
+          buildable: true
+        else:
+          buildable: false
