added haskell template

This commit is contained in:
Rachel Lambda Samuelsson 2023-10-12 22:04:55 +02:00
parent 20d8b0dc0b
commit 704b32de03
5 changed files with 160 additions and 0 deletions

1
haskell/.envrc Normal file
View File

@ -0,0 +1 @@
use flake

58
haskell/flake.lock Normal file
View File

@ -0,0 +1,58 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1693428224,
"narHash": "sha256-FWUUlhYqkGEySUD0blTADRiDQ7fw+H1ikivfu88uy+w=",
"path": "/nix/store/3fdrwsy2yi8rwxqylpd6vi2asraxq1nv-source",
"rev": "841889913dfd06a70ffb39f603e29e46f45f0c1a",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

20
haskell/flake.nix Normal file
View File

@ -0,0 +1,20 @@
{
description = "A bare minimum Haskell flake";
inputs = {
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (sys:
let pkgs = import nixpkgs { system = sys; };
hpkgs = pkgs.haskellPackages; # pkgs.haskell.ghc<VERSION>
project = hpkgs.callCabal2nix "my-cool-project" ./. {};
in {
packages.default = project;
devShells.default = pkgs.mkShell {
inputsFrom = [ project.env ];
};
}
);
}

View File

@ -0,0 +1,75 @@
cabal-version: 2.0
-- The cabal-version field refers to the version of the .cabal specification,
-- and can be different from the cabal-install (the tool) version and the
-- Cabal (the library) version you are using. As such, the Cabal (the library)
-- version used must be equal or greater than the version stated in this field.
-- Starting from the specification version 2.2, the cabal-version field must be
-- the first thing in the cabal file.
-- Initial package description 'my-cool-project' generated by
-- 'cabal init'. For further documentation, see:
-- http://haskell.org/cabal/users-guide/
--
-- The name of the package.
name: my-cool-project
-- The package version.
-- See the Haskell package versioning policy (PVP) for standards
-- guiding when and how versions should be incremented.
-- https://pvp.haskell.org
-- PVP summary: +-+------- breaking API changes
-- | | +----- non-breaking API additions
-- | | | +--- code changes with no API change
version: 0.1.0.0
-- A short (one-line) description of the package.
synopsis: my cool project
-- A longer description of the package.
-- description:
-- URL for the project homepage or repository.
homepage: mycool.website
-- The license under which the package is released.
license: OtherLicense
-- The file containing the license text.
-- license-file: LICENSE
-- The package author(s).
author: my cool author
-- An email address to which users can send suggestions, bug reports, and patches.
maintainer: mycool@email
-- A copyright notice.
-- copyright:
category: my cool category
build-type: Simple
-- Extra doc files to be distributed with the package, such as a CHANGELOG or a README.
extra-doc-files: CHANGELOG.md
-- Extra source files to be distributed with the package, such as examples, or a tutorial module.
-- extra-source-files:
executable my-cool-project
-- .hs or .lhs file containing the Main module.
main-is: Main.hs
-- Modules included in this executable, other than Main.
-- other-modules:
-- LANGUAGE extensions used by modules in this package.
-- other-extensions:
-- Other library packages from which modules are imported.
build-depends: base ^>=4.16.4.0
, haskell-say
-- Directories containing source files.
hs-source-dirs: src
-- Base language which the package is written in.
default-language: Haskell2010

6
haskell/src/Main.hs Normal file
View File

@ -0,0 +1,6 @@
module Main where
import HaskellSay
main :: IO ()
main = haskellSay "λλλλ mjau"