mirror of
https://github.com/nmasur/dotfiles
synced 2024-11-22 00:35:39 +00:00
add haskell programming template
This commit is contained in:
parent
704acea26e
commit
6d08491f1c
@ -97,6 +97,10 @@
|
|||||||
path = ./templates/python;
|
path = ./templates/python;
|
||||||
description = "Legacy Python template";
|
description = "Legacy Python template";
|
||||||
};
|
};
|
||||||
|
haskell = {
|
||||||
|
path = ./templates/haskell;
|
||||||
|
description = "Haskell template";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -35,5 +35,6 @@ nixpkgs.lib.nixosSystem {
|
|||||||
../../modules/services/gnupg.nix
|
../../modules/services/gnupg.nix
|
||||||
../../modules/services/mullvad.nix
|
../../modules/services/mullvad.nix
|
||||||
../../modules/programming/nix.nix
|
../../modules/programming/nix.nix
|
||||||
|
../../modules/programming/haskell.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
8
modules/programming/haskell.nix
Normal file
8
modules/programming/haskell.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ ... }: {
|
||||||
|
|
||||||
|
# Binary Cache for Haskell.nix
|
||||||
|
nix.settings.trusted-public-keys =
|
||||||
|
[ "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" ];
|
||||||
|
nix.settings.substituters = [ "https://cache.iog.io" ];
|
||||||
|
|
||||||
|
}
|
@ -112,6 +112,8 @@
|
|||||||
# Nix
|
# Nix
|
||||||
ns = "nix-shell -p";
|
ns = "nix-shell -p";
|
||||||
nps = "nix repl '<nixpkgs>'";
|
nps = "nix repl '<nixpkgs>'";
|
||||||
|
nixo = "man configuration.nix";
|
||||||
|
nixh = "man home-configuration.nix";
|
||||||
|
|
||||||
# Docker
|
# Docker
|
||||||
dc = "$DOTS/bin/docker_cleanup";
|
dc = "$DOTS/bin/docker_cleanup";
|
||||||
|
@ -2,5 +2,3 @@ set -l branch (git branch 2>/dev/null | grep '^\*' | colrm 1 2)
|
|||||||
and set -l command "git push --set-upstream origin $branch"
|
and set -l command "git push --set-upstream origin $branch"
|
||||||
and commandline -r $command
|
and commandline -r $command
|
||||||
and commandline -f execute
|
and commandline -f execute
|
||||||
and echo "git push --set-upstream origin $branch"
|
|
||||||
and git push --set-upstream origin $branch
|
|
||||||
|
1
templates/haskell/.envrc
Normal file
1
templates/haskell/.envrc
Normal file
@ -0,0 +1 @@
|
|||||||
|
use flake
|
27
templates/haskell/.gitignore
vendored
Normal file
27
templates/haskell/.gitignore
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
### Nix ###
|
||||||
|
result
|
||||||
|
|
||||||
|
### 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.*
|
12
templates/haskell/.hlint.yaml
Normal file
12
templates/haskell/.hlint.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# template-haskell example hlint file
|
||||||
|
|
||||||
|
# Generalise map to fmap, ++ to <>. Off by default
|
||||||
|
- group:
|
||||||
|
name: generalise
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
- ignore:
|
||||||
|
name: Use section
|
||||||
|
|
||||||
|
- ignore:
|
||||||
|
name: Use infix
|
4
templates/haskell/app/Main.hs
Normal file
4
templates/haskell/app/Main.hs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import Lib
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = putStrLn "this is my app"
|
4
templates/haskell/bench/Main.hs
Normal file
4
templates/haskell/bench/Main.hs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import Lib
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = putStrLn "heyyyyyyyyyyyyyyyyyyyy"
|
5
templates/haskell/cabal.project
Normal file
5
templates/haskell/cabal.project
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
packages:
|
||||||
|
./
|
||||||
|
|
||||||
|
package hello
|
||||||
|
tests: True
|
419
templates/haskell/flake.lock
Normal file
419
templates/haskell/flake.lock
Normal file
@ -0,0 +1,419 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"HTTP": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1451647621,
|
||||||
|
"narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=",
|
||||||
|
"owner": "phadej",
|
||||||
|
"repo": "HTTP",
|
||||||
|
"rev": "9bc0996d412fef1787449d841277ef663ad9a915",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "phadej",
|
||||||
|
"repo": "HTTP",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cabal-32": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1603716527,
|
||||||
|
"narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "cabal",
|
||||||
|
"rev": "48bf10787e27364730dd37a42b603cee8d6af7ee",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "3.2",
|
||||||
|
"repo": "cabal",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cabal-34": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1640353650,
|
||||||
|
"narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "cabal",
|
||||||
|
"rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "3.4",
|
||||||
|
"repo": "cabal",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cabal-36": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1641652457,
|
||||||
|
"narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=",
|
||||||
|
"owner": "haskell",
|
||||||
|
"repo": "cabal",
|
||||||
|
"rev": "f27667f8ec360c475027dcaee0138c937477b070",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "haskell",
|
||||||
|
"ref": "3.6",
|
||||||
|
"repo": "cabal",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cardano-shell": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1608537748,
|
||||||
|
"narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "cardano-shell",
|
||||||
|
"rev": "9392c75087cb9a3d453998f4230930dea3a95725",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "cardano-shell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1656065134,
|
||||||
|
"narHash": "sha256-oc6E6ByIw3oJaIyc67maaFcnjYOz1mMcOtHxbEf9NwQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "bee6a7250dd1b01844a2de7e02e4df7d8a0a206c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1644229661,
|
||||||
|
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ghc-8.6.5-iohk": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1600920045,
|
||||||
|
"narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "ghc",
|
||||||
|
"rev": "95713a6ecce4551240da7c96b6176f980af75cae",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"ref": "release/8.6.5-iohk",
|
||||||
|
"repo": "ghc",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hackage": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1656724378,
|
||||||
|
"narHash": "sha256-JdtnbKzKiP1GMWuVt3aQYELxFb8A2OhH/TJBfPn3QMg=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "hackage.nix",
|
||||||
|
"rev": "6e2d054b0876d3f9709da1df9dfe27325886927e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "hackage.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"haskellNix": {
|
||||||
|
"inputs": {
|
||||||
|
"HTTP": "HTTP",
|
||||||
|
"cabal-32": "cabal-32",
|
||||||
|
"cabal-34": "cabal-34",
|
||||||
|
"cabal-36": "cabal-36",
|
||||||
|
"cardano-shell": "cardano-shell",
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"ghc-8.6.5-iohk": "ghc-8.6.5-iohk",
|
||||||
|
"hackage": "hackage",
|
||||||
|
"hpc-coveralls": "hpc-coveralls",
|
||||||
|
"hydra": "hydra",
|
||||||
|
"nix-tools": "nix-tools",
|
||||||
|
"nixpkgs": [
|
||||||
|
"haskellNix",
|
||||||
|
"nixpkgs-unstable"
|
||||||
|
],
|
||||||
|
"nixpkgs-2003": "nixpkgs-2003",
|
||||||
|
"nixpkgs-2105": "nixpkgs-2105",
|
||||||
|
"nixpkgs-2111": "nixpkgs-2111",
|
||||||
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
"old-ghc-nix": "old-ghc-nix",
|
||||||
|
"stackage": "stackage"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1656752829,
|
||||||
|
"narHash": "sha256-Xz7aGLynjihmgp5a9dTX5Ax5GsL3Fcd2GQUEJ2BEYAU=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "haskell.nix",
|
||||||
|
"rev": "4e100b2ad96c221a78580701aa0a5a4f48f49130",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "haskell.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hpc-coveralls": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1607498076,
|
||||||
|
"narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=",
|
||||||
|
"owner": "sevanspowell",
|
||||||
|
"repo": "hpc-coveralls",
|
||||||
|
"rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "sevanspowell",
|
||||||
|
"repo": "hpc-coveralls",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hydra": {
|
||||||
|
"inputs": {
|
||||||
|
"nix": "nix",
|
||||||
|
"nixpkgs": [
|
||||||
|
"haskellNix",
|
||||||
|
"hydra",
|
||||||
|
"nix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1646878427,
|
||||||
|
"narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "hydra",
|
||||||
|
"rev": "28b682b85b7efc5cf7974065792a1f22203a5927",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "hydra",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lowdown-src": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1633514407,
|
||||||
|
"narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=",
|
||||||
|
"owner": "kristapsdz",
|
||||||
|
"repo": "lowdown",
|
||||||
|
"rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "kristapsdz",
|
||||||
|
"repo": "lowdown",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix": {
|
||||||
|
"inputs": {
|
||||||
|
"lowdown-src": "lowdown-src",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nixpkgs-regression": "nixpkgs-regression"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1643066034,
|
||||||
|
"narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nix",
|
||||||
|
"rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "2.6.0",
|
||||||
|
"repo": "nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-tools": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1649424170,
|
||||||
|
"narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "nix-tools",
|
||||||
|
"rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "nix-tools",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1632864508,
|
||||||
|
"narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "82891b5e2c2359d7e58d08849e4c89511ab94234",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-21.05-small",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-2003": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1620055814,
|
||||||
|
"narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-20.03-darwin",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-2105": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1645296114,
|
||||||
|
"narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-21.05-darwin",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-2111": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1648744337,
|
||||||
|
"narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0a58eebd8ec65ffdef2ce9562784123a73922052",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-21.11-darwin",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-regression": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1643052045,
|
||||||
|
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-unstable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1648219316,
|
||||||
|
"narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"old-ghc-nix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1631092763,
|
||||||
|
"narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=",
|
||||||
|
"owner": "angerman",
|
||||||
|
"repo": "old-ghc-nix",
|
||||||
|
"rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "angerman",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "old-ghc-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"haskellNix": "haskellNix",
|
||||||
|
"nixpkgs": [
|
||||||
|
"haskellNix",
|
||||||
|
"nixpkgs-unstable"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stackage": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1656638371,
|
||||||
|
"narHash": "sha256-waxiLSFvKxpaG4zl8YpLtuhLf5OrFi6CgAIZAOXpnQ8=",
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "stackage.nix",
|
||||||
|
"rev": "4f1ad0f4b0f01010df8dab254fc8b453934823e7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "input-output-hk",
|
||||||
|
"repo": "stackage.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
54
templates/haskell/flake.nix
Normal file
54
templates/haskell/flake.nix
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# Derived from: https://github.com/jonascarpay/template-haskell
|
||||||
|
# More info here: https://jonascarpay.com/posts/2021-01-28-haskell-project-template.html
|
||||||
|
|
||||||
|
{
|
||||||
|
description = "hello";
|
||||||
|
|
||||||
|
inputs.haskellNix.url = "github:input-output-hk/haskell.nix";
|
||||||
|
inputs.nixpkgs.follows = "haskellNix/nixpkgs-unstable";
|
||||||
|
inputs.flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, flake-utils, haskellNix }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
overlay = self: _: {
|
||||||
|
hsPkgs = self.haskell-nix.project' rec {
|
||||||
|
src = ./.;
|
||||||
|
compiler-nix-name = "ghc8107";
|
||||||
|
shell = {
|
||||||
|
tools = {
|
||||||
|
cabal = "latest";
|
||||||
|
ghcid = "latest";
|
||||||
|
haskell-language-server = "latest";
|
||||||
|
hlint = "latest";
|
||||||
|
# See https://github.com/input-output-hk/haskell.nix/issues/1337
|
||||||
|
ormolu = {
|
||||||
|
version = "latest";
|
||||||
|
modules = [
|
||||||
|
({ lib, ... }: {
|
||||||
|
options.nonReinstallablePkgs =
|
||||||
|
lib.mkOption { apply = lib.remove "Cabal"; };
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
## ormolu that uses ImportQualifiedPost.
|
||||||
|
## To use, remove ormolu from the shell.tools section above, and uncomment the following lines.
|
||||||
|
# buildInputs =
|
||||||
|
# let
|
||||||
|
# ormolu = pkgs.haskell-nix.tool compiler-nix-name "ormolu" "latest";
|
||||||
|
# ormolu-wrapped = pkgs.writeShellScriptBin "ormolu" ''
|
||||||
|
# ${ormolu}/bin/ormolu --ghc-opt=-XImportQualifiedPost $@
|
||||||
|
# '';
|
||||||
|
# in
|
||||||
|
# [ ormolu-wrapped ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = [ haskellNix.overlay overlay ];
|
||||||
|
};
|
||||||
|
flake = pkgs.hsPkgs.flake { };
|
||||||
|
in flake // { defaultPackage = flake.packages."hello:exe:hello-exe"; });
|
||||||
|
}
|
68
templates/haskell/hello.cabal
Normal file
68
templates/haskell/hello.cabal
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
cabal-version: 2.4
|
||||||
|
name: hello
|
||||||
|
version: 0
|
||||||
|
license: BSD-3-Clause
|
||||||
|
build-type: Simple
|
||||||
|
license-file: LICENSE
|
||||||
|
author: AUTHNAME
|
||||||
|
maintainer: AUTHNAME <EMAIL>
|
||||||
|
copyright: CURRENTYEAR AUTHNAME
|
||||||
|
tested-with: GHC ==8.6.3 || ==8.8.3 || ==8.10.5
|
||||||
|
extra-doc-files:
|
||||||
|
CHANGELOG.md
|
||||||
|
README.md
|
||||||
|
|
||||||
|
-- category:
|
||||||
|
-- description: description
|
||||||
|
-- synopsis: one-line synopsis
|
||||||
|
-- homepage: https://github.com/FIXME/hello#readme
|
||||||
|
-- source-repository head
|
||||||
|
-- type: git
|
||||||
|
-- location: git://github.com/FIXME/hello.git
|
||||||
|
|
||||||
|
common common-options
|
||||||
|
build-depends: base >=4.9 && <5
|
||||||
|
default-language: Haskell2010
|
||||||
|
ghc-options:
|
||||||
|
-Wall -Wcompat -Widentities -Wincomplete-uni-patterns
|
||||||
|
-Wincomplete-record-updates -Wredundant-constraints
|
||||||
|
-fhide-source-paths -Wpartial-fields
|
||||||
|
|
||||||
|
library
|
||||||
|
import: common-options
|
||||||
|
hs-source-dirs: src
|
||||||
|
exposed-modules: Lib
|
||||||
|
build-depends:
|
||||||
|
, containers
|
||||||
|
, mtl
|
||||||
|
|
||||||
|
executable hello-exe
|
||||||
|
import: common-options
|
||||||
|
hs-source-dirs: app
|
||||||
|
main-is: Main.hs
|
||||||
|
build-depends: hello
|
||||||
|
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
||||||
|
|
||||||
|
test-suite hello-test
|
||||||
|
import: common-options
|
||||||
|
type: exitcode-stdio-1.0
|
||||||
|
hs-source-dirs: test
|
||||||
|
main-is: Spec.hs
|
||||||
|
build-depends:
|
||||||
|
, hspec
|
||||||
|
, HUnit
|
||||||
|
, hello
|
||||||
|
, QuickCheck
|
||||||
|
|
||||||
|
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
||||||
|
|
||||||
|
benchmark hello-bench
|
||||||
|
import: common-options
|
||||||
|
type: exitcode-stdio-1.0
|
||||||
|
hs-source-dirs: bench
|
||||||
|
main-is: Main.hs
|
||||||
|
build-depends:
|
||||||
|
, criterion
|
||||||
|
, hello
|
||||||
|
|
||||||
|
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
16
templates/haskell/hie.yaml
Normal file
16
templates/haskell/hie.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
cradle:
|
||||||
|
multi:
|
||||||
|
# - path: "ignore/"
|
||||||
|
# config: {cradle: {none: }}
|
||||||
|
|
||||||
|
- path: "src"
|
||||||
|
config: {cradle: {cabal: {component: "lib:hello"}}}
|
||||||
|
|
||||||
|
- path: "app"
|
||||||
|
config: {cradle: {cabal: {component: "hello:hello-exe"}}}
|
||||||
|
|
||||||
|
- path: "test"
|
||||||
|
config: {cradle: {cabal: {component: "hello:hello-test"}}}
|
||||||
|
|
||||||
|
- path: "bench"
|
||||||
|
config: {cradle: {cabal: {component: "hello:hello-bench"}}}
|
7
templates/haskell/src/Lib.hs
Normal file
7
templates/haskell/src/Lib.hs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
module Lib
|
||||||
|
( someFunc,
|
||||||
|
)
|
||||||
|
where
|
||||||
|
|
||||||
|
someFunc :: IO ()
|
||||||
|
someFunc = putStrLn "this is a lib"
|
8
templates/haskell/test/Spec.hs
Normal file
8
templates/haskell/test/Spec.hs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import Test.Hspec
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main =
|
||||||
|
hspec $
|
||||||
|
describe "hello-test" $
|
||||||
|
it "works" $
|
||||||
|
2 + 2 `shouldBe` (4 :: Int)
|
Loading…
Reference in New Issue
Block a user