Initial commit
commit
64c2f3fd0e
|
@ -0,0 +1,13 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
filesToFormat=$(
|
||||||
|
git --no-pager diff --name-status --no-color --cached | \
|
||||||
|
awk '$1 != "D" && $2 ~ /\.hs/ {print $NF}'
|
||||||
|
)
|
||||||
|
|
||||||
|
for path in $filesToFormat
|
||||||
|
do
|
||||||
|
google-java-format --replace $path
|
||||||
|
git add $path
|
||||||
|
done;
|
|
@ -0,0 +1,35 @@
|
||||||
|
# direnv
|
||||||
|
*.sw?
|
||||||
|
.direnv
|
||||||
|
.gopath
|
||||||
|
/direnv
|
||||||
|
/direnv.test
|
||||||
|
/dist
|
||||||
|
/test/config
|
||||||
|
/test/data
|
||||||
|
/test/scenarios/inherited/.envrc
|
||||||
|
|
||||||
|
# haskell
|
||||||
|
dist
|
||||||
|
dist-*
|
||||||
|
cabal-dev
|
||||||
|
*.o
|
||||||
|
*.hi
|
||||||
|
*.hie
|
||||||
|
*.chi
|
||||||
|
*.chs.h
|
||||||
|
*.dyn_o
|
||||||
|
*.dyn_hi
|
||||||
|
.hpc
|
||||||
|
.hsenv
|
||||||
|
.cabal-sandbox/
|
||||||
|
cabal.sandbox.config
|
||||||
|
*.prof
|
||||||
|
*.aux
|
||||||
|
*.hp
|
||||||
|
*.eventlog
|
||||||
|
.stack-work/
|
||||||
|
cabal.project.local
|
||||||
|
cabal.project.local~
|
||||||
|
.HTF/
|
||||||
|
.ghc.environment.*
|
|
@ -0,0 +1,10 @@
|
||||||
|
# hello-world
|
||||||
|
|
||||||
|
## Formatting
|
||||||
|
|
||||||
|
A `pre-commit` file is included in `.githooks` to ensure consistent formatting.
|
||||||
|
Run the following to configure `git` to using it:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git config --local core.hooksPath .githooks/
|
||||||
|
```
|
|
@ -0,0 +1,4 @@
|
||||||
|
module Main where
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = putStrLn "Hello, World!"
|
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1644229661,
|
||||||
|
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1646011258,
|
||||||
|
"narHash": "sha256-+aen4zu5uVp52arEcgL2maCS0zQDuG1t+Azwd/O1gN4=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a25df4c2b79c4343bcc72ad671200e5a3e286c41",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-21.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
description = "A minimal Haskell flake";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-21.11";
|
||||||
|
flake-utils = {
|
||||||
|
url = "github:numtide/flake-utils";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, flake-utils }: {
|
||||||
|
overlay = final: prev: {
|
||||||
|
hello-world = prev.haskellPackages.callCabal2nix "hello-world" self { };
|
||||||
|
};
|
||||||
|
} // (flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = [ self.overlay ];
|
||||||
|
};
|
||||||
|
|
||||||
|
haskell = {
|
||||||
|
ghc = pkgs.haskellPackages.ghc;
|
||||||
|
hls = pkgs.haskell-language-server.override {
|
||||||
|
supportedGhcVersions = [ "8107" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
with pkgs; {
|
||||||
|
packages = { inherit hello-world; };
|
||||||
|
|
||||||
|
defaultPackage = self.packages.${system}.hello-world;
|
||||||
|
|
||||||
|
devShell = mkShell {
|
||||||
|
buildInputs = lib.attrValues self.packages.${system} ++ [
|
||||||
|
haskell.ghc
|
||||||
|
haskell.hls
|
||||||
|
gdb
|
||||||
|
# GHC depends on LANG so need this package to properly interpret our
|
||||||
|
# files with e.g. tasty-discover.
|
||||||
|
# https://www.reddit.com/r/Nix/comments/jyczts/nixshell_locale_issue/
|
||||||
|
glibcLocales
|
||||||
|
haskellPackages.cabal-install
|
||||||
|
haskellPackages.ormolu
|
||||||
|
haskellPackages.tasty-discover
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
cabal-version: 3.0
|
||||||
|
name: hello-world
|
||||||
|
version: 0.1.0.0
|
||||||
|
|
||||||
|
synopsis: The Corner programming language.
|
||||||
|
-- A longer description of the package.
|
||||||
|
-- description:
|
||||||
|
|
||||||
|
-- license:
|
||||||
|
author: <author>
|
||||||
|
maintainer: <author>@<email>.com
|
||||||
|
bug-reports: https://github.com/<owner>/<repo>/issues
|
||||||
|
|
||||||
|
-- A copyright notice.
|
||||||
|
-- copyright:
|
||||||
|
-- category:
|
||||||
|
extra-source-files:
|
||||||
|
CHANGELOG.md
|
||||||
|
README.md
|
||||||
|
|
||||||
|
common hello-world-common
|
||||||
|
default-language: Haskell2010
|
||||||
|
default-extensions: BangPatterns,
|
||||||
|
BinaryLiterals,
|
||||||
|
ConstrainedClassMethods,
|
||||||
|
ConstraintKinds,
|
||||||
|
DeriveDataTypeable,
|
||||||
|
DeriveFoldable,
|
||||||
|
DeriveFunctor,
|
||||||
|
DeriveGeneric,
|
||||||
|
DeriveLift,
|
||||||
|
DeriveTraversable,
|
||||||
|
DoAndIfThenElse,
|
||||||
|
EmptyCase,
|
||||||
|
EmptyDataDecls,
|
||||||
|
EmptyDataDeriving,
|
||||||
|
ExistentialQuantification,
|
||||||
|
ExplicitForAll,
|
||||||
|
-- Enabled by default, but not supported by ghc-8.10.
|
||||||
|
-- FieldSelectors,
|
||||||
|
FlexibleContexts,
|
||||||
|
FlexibleInstances,
|
||||||
|
ForeignFunctionInterface,
|
||||||
|
GADTSyntax,
|
||||||
|
GeneralisedNewtypeDeriving,
|
||||||
|
HexFloatLiterals,
|
||||||
|
ImplicitPrelude,
|
||||||
|
ImportQualifiedPost,
|
||||||
|
InstanceSigs,
|
||||||
|
KindSignatures,
|
||||||
|
MonomorphismRestriction,
|
||||||
|
MultiParamTypeClasses,
|
||||||
|
NamedFieldPuns,
|
||||||
|
NamedWildCards,
|
||||||
|
NumericUnderscores,
|
||||||
|
PatternGuards,
|
||||||
|
PolyKinds,
|
||||||
|
PostfixOperators,
|
||||||
|
RankNTypes,
|
||||||
|
RelaxedPolyRec,
|
||||||
|
ScopedTypeVariables,
|
||||||
|
StandaloneDeriving,
|
||||||
|
StandaloneKindSignatures,
|
||||||
|
StarIsType,
|
||||||
|
TraditionalRecordSyntax,
|
||||||
|
TupleSections,
|
||||||
|
TypeApplications,
|
||||||
|
TypeOperators,
|
||||||
|
TypeSynonymInstances
|
||||||
|
build-depends: base,
|
||||||
|
relude
|
||||||
|
mixins: base hiding (Prelude),
|
||||||
|
relude (Relude as Prelude),
|
||||||
|
relude
|
||||||
|
ghc-options: -Wall
|
||||||
|
|
||||||
|
executable hello-world
|
||||||
|
import: hello-world-common
|
||||||
|
main-is: Main.hs
|
||||||
|
hs-source-dirs: app
|
Loading…
Reference in New Issue