Initial checkin.

Change-Id: Ib0f503f39cedb6fcc11f80a3b309e4cbb7ed438f
diff --git a/mulkup.cabal b/mulkup.cabal
new file mode 100644
index 0000000..e5f5976
--- /dev/null
+++ b/mulkup.cabal
@@ -0,0 +1,133 @@
+cabal-version:      3.0
+name:               mulkup
+version:            0.1.0.0
+license:            NONE
+copyright:          2021 Matthias Andreas Benkard
+maintainer:         code@mail.matthias.benkard.de
+author:             Matthias Andreas Benkard
+
+
+common shared-properties
+  default-language: Haskell2010
+  -- tested-with:
+  --     GHC == 9.0.1
+
+  build-depends:
+    , base                   ^>= 4.15.0
+    , relude                 ^>= 1.0.0.0
+    , aeson
+    , bytestring             ^>= 0.10
+    , co-log                 ^>= 0.4
+    , co-log-core            ^>= 0.2.1
+    , co-log-polysemy        ^>= 0.0.1
+    , dhall                  ^>= 1.39
+    , optparse-applicative    >= 0.15     && < 0.17
+    , optics                 ^>= 0.4
+    , polysemy                >= 1.3       && < 1.7
+    , recursion-schemes      ^>= 5.2
+    , time
+    , text                   ^>= 1.2
+    , turtle                 ^>= 1.5.20
+
+  default-extensions:
+      BangPatterns
+      BinaryLiterals
+      ConstraintKinds
+      DataKinds
+      DefaultSignatures
+      DeriveAnyClass
+      DeriveDataTypeable
+      DeriveFoldable
+      DeriveFunctor
+      DeriveGeneric
+      DeriveTraversable
+      DerivingStrategies
+      DoAndIfThenElse
+      EmptyDataDecls
+      EmptyDataDeriving
+      ExistentialQuantification
+      FlexibleContexts
+      FlexibleInstances
+      FunctionalDependencies
+      GADTSyntax
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      KindSignatures
+      LambdaCase
+      MultiParamTypeClasses
+      MultiWayIf
+      NamedFieldPuns
+      NoImplicitPrelude
+      OverloadedStrings
+      OverloadedLabels
+      PartialTypeSignatures
+      PatternGuards
+      PolyKinds
+      RankNTypes
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+      TypeSynonymInstances
+      ViewPatterns
+
+  ghc-options:
+      -Wall
+      -Wcompat
+      -Widentities
+      -Wincomplete-record-updates
+      -Wincomplete-uni-patterns
+      -Wmissing-deriving-strategies
+      -Wpartial-fields
+      -Wredundant-constraints
+      -fprint-explicit-foralls
+      -fprint-unicode-syntax
+
+
+library
+  import:           shared-properties
+  default-language: Haskell2010
+
+  exposed-modules:
+      Mulkup.Bupstash
+      Mulkup.Config
+      Mulkup.Flags
+      Mulkup.Logging
+      Mulkup.Main
+      Mulkup.Prelude
+
+  hs-source-dirs:
+      src
+
+
+executable mulkup
+  import:           shared-properties
+  default-language: Haskell2010
+  main-is:          Main.hs
+
+  hs-source-dirs:
+      src/bin
+
+  build-depends:
+    , mulkup
+
+
+test-suite mulkup-test
+  type:                exitcode-stdio-1.0
+  default-language:    Haskell2010
+  hs-source-dirs:      test
+  main-is:             Main.hs
+
+  other-modules:
+      Mulkup.ConfigSpec
+
+  build-depends:
+    , base                   ^>= 4.15.0
+    , tasty                  ^>= 1.4
+    , tasty-hunit            ^>= 0.10
+    , tasty-smallcheck       ^>= 0.8
+    , mulkup