From 71c63a89e24c5c78a580429a3b1eec4aa829c559 Mon Sep 17 00:00:00 2001 From: Artur Manuel Date: Sat, 7 Sep 2024 16:33:54 +0100 Subject: [PATCH] feat: haskell added --- .gitignore | 1 + templates/Haskell/CHANGELOG.md | 5 ++ templates/Haskell/LICENSE | 14 +++++ templates/Haskell/app/Main.hs | 3 + templates/Haskell/cool-haskell-project.cabal | 25 ++++++++ templates/Haskell/flake.lock | 62 ++++++++++++++++++++ templates/Haskell/flake.nix | 33 +++++++++++ templates/Haskell/flake/package.nix | 4 ++ templates/Haskell/flake/shell.nix | 9 +++ templates/Haskell/flake/treefmt.nix | 5 ++ templates/python/.gitignore | 1 - templates/python/README | 1 - templates/python/flake.lock | 27 --------- templates/python/flake.nix | 26 -------- templates/python/nix/package.nix | 16 ----- templates/python/nix/shell.nix | 9 --- templates/python/python-app/python-app | 11 ---- templates/python/python-app/setup.py | 11 ---- 18 files changed, 161 insertions(+), 102 deletions(-) create mode 100644 templates/Haskell/CHANGELOG.md create mode 100644 templates/Haskell/LICENSE create mode 100644 templates/Haskell/app/Main.hs create mode 100644 templates/Haskell/cool-haskell-project.cabal create mode 100644 templates/Haskell/flake.lock create mode 100644 templates/Haskell/flake.nix create mode 100644 templates/Haskell/flake/package.nix create mode 100644 templates/Haskell/flake/shell.nix create mode 100644 templates/Haskell/flake/treefmt.nix delete mode 100644 templates/python/.gitignore delete mode 100644 templates/python/README delete mode 100644 templates/python/flake.lock delete mode 100644 templates/python/flake.nix delete mode 100644 templates/python/nix/package.nix delete mode 100644 templates/python/nix/shell.nix delete mode 100644 templates/python/python-app/python-app delete mode 100644 templates/python/python-app/setup.py diff --git a/.gitignore b/.gitignore index 2200672..0b1da5b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ **/result **/result-* **/.direnv +**/dist diff --git a/templates/Haskell/CHANGELOG.md b/templates/Haskell/CHANGELOG.md new file mode 100644 index 0000000..f021823 --- /dev/null +++ b/templates/Haskell/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for cool-haskell-project + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/templates/Haskell/LICENSE b/templates/Haskell/LICENSE new file mode 100644 index 0000000..ee7d6a5 --- /dev/null +++ b/templates/Haskell/LICENSE @@ -0,0 +1,14 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/templates/Haskell/app/Main.hs b/templates/Haskell/app/Main.hs new file mode 100644 index 0000000..ae66b7c --- /dev/null +++ b/templates/Haskell/app/Main.hs @@ -0,0 +1,3 @@ +main :: IO () +main = do + putStrLn "Hello World!" diff --git a/templates/Haskell/cool-haskell-project.cabal b/templates/Haskell/cool-haskell-project.cabal new file mode 100644 index 0000000..c2e1848 --- /dev/null +++ b/templates/Haskell/cool-haskell-project.cabal @@ -0,0 +1,25 @@ +cabal-version: 3.0 +name: cool-haskell-project +version: 0.1.0.0 +-- synopsis: +-- description: +license: WTFPL +license-file: LICENSE +author: Artur Manuel +maintainer: balkenix@outlook.com +-- copyright: +build-type: Simple +extra-doc-files: CHANGELOG.md +-- extra-source-files: + +common warnings + ghc-options: -Wall + +executable cool-haskell-project + import: warnings + main-is: Main.hs + -- other-modules: + -- other-extensions: + build-depends: base ^>=4.18.2.1 + hs-source-dirs: app + default-language: GHC2021 diff --git a/templates/Haskell/flake.lock b/templates/Haskell/flake.lock new file mode 100644 index 0000000..7d56b6a --- /dev/null +++ b/templates/Haskell/flake.lock @@ -0,0 +1,62 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1725407940, + "narHash": "sha256-tiN5Rlg/jiY0tyky+soJZoRzLKbPyIdlQ77xVgREDNM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6f6c45b5134a8ee2e465164811e451dcb5ad86e3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1725103162, + "narHash": "sha256-Ym04C5+qovuQDYL/rKWSR+WESseQBbNAe5DsXNx5trY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "12228ff1752d7b7624a54e9c1af4b222b3c1073b", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "treefmt": "treefmt" + } + }, + "treefmt": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1725271838, + "narHash": "sha256-VcqxWT0O/gMaeWTTjf1r4MOyG49NaNxW4GHTO3xuThE=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "9fb342d14b69aefdf46187f6bb80a4a0d97007cd", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/templates/Haskell/flake.nix b/templates/Haskell/flake.nix new file mode 100644 index 0000000..646fa35 --- /dev/null +++ b/templates/Haskell/flake.nix @@ -0,0 +1,33 @@ +{ + description = "Cool Haskell Project with an unknown purpose"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; + treefmt.url = "github:numtide/treefmt-nix"; + }; + outputs = + inputs@{ nixpkgs, ... }: + let + lib = nixpkgs.lib; + systems = [ "x86_64-linux" ]; + forAllSystems = + f: + lib.genAttrs systems ( + system: + f { + pkgs = import nixpkgs { + inherit system; + }; + } + ); + treefmtEval = forAllSystems ({ pkgs }: inputs.treefmt.lib.evalModule pkgs ./flake/treefmt.nix); + in + { + packages = forAllSystems ({ pkgs }: { + cool-haskell-project = pkgs.callPackage ./flake/package.nix {}; + }); + devShells = forAllSystems ({ pkgs }: { + default = pkgs.callPackage ./flake/shell.nix {}; + }); + formatter = forAllSystems ({ pkgs }: treefmtEval.${pkgs.system}.config.build.wrapper); + }; +} diff --git a/templates/Haskell/flake/package.nix b/templates/Haskell/flake/package.nix new file mode 100644 index 0000000..a86f792 --- /dev/null +++ b/templates/Haskell/flake/package.nix @@ -0,0 +1,4 @@ +{ haskellPackages }: +haskellPackages.developPackage { + root = ../.; +} diff --git a/templates/Haskell/flake/shell.nix b/templates/Haskell/flake/shell.nix new file mode 100644 index 0000000..67b0bcc --- /dev/null +++ b/templates/Haskell/flake/shell.nix @@ -0,0 +1,9 @@ +{ haskellPackages }: { + packages = builtins.attrValues { + inherit (haskellPackages) + haskell-language-server + ormolu + ghc + ; + }; +} diff --git a/templates/Haskell/flake/treefmt.nix b/templates/Haskell/flake/treefmt.nix new file mode 100644 index 0000000..7911707 --- /dev/null +++ b/templates/Haskell/flake/treefmt.nix @@ -0,0 +1,5 @@ +_: { + projectRootFile = "flake.nix"; + programs.nixfmt.enable = true; + programs.ormolu.enable = true; +} diff --git a/templates/python/.gitignore b/templates/python/.gitignore deleted file mode 100644 index 41fbeb0..0000000 --- a/templates/python/.gitignore +++ /dev/null @@ -1 +0,0 @@ -**/result diff --git a/templates/python/README b/templates/python/README deleted file mode 100644 index 56689bc..0000000 --- a/templates/python/README +++ /dev/null @@ -1 +0,0 @@ -remember to change python-app to whatever you please! diff --git a/templates/python/flake.lock b/templates/python/flake.lock deleted file mode 100644 index 9ed2b35..0000000 --- a/templates/python/flake.lock +++ /dev/null @@ -1,27 +0,0 @@ -{ - "nodes": { - "nixpkgs": { - "locked": { - "lastModified": 1722987190, - "narHash": "sha256-68hmex5efCiM2aZlAAEcQgmFI4ZwWt8a80vOeB/5w3A=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "21cc704b5e918c5fbf4f9fff22b4ac2681706d90", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/templates/python/flake.nix b/templates/python/flake.nix deleted file mode 100644 index 12a76e7..0000000 --- a/templates/python/flake.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - description = "Python flake"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; - }; - - outputs = { self, nixpkgs }: - let - systems = [ "x86_64-linux" "aarch64-linux" ]; - forAllSystems = nixpkgs.lib.genAttrs systems; - pkgsForEach = nixpkgs.legacyPackages; - in - { - packages = forAllSystems (system: { - default = pkgsForEach.${system}.callPackage ./nix/package.nix { }; - python-app = self.packages.${system}.default; - }); - - devShells = forAllSystems (system: { - default = pkgsForEach.${system}.callPackage ./nix/shell.nix { - inherit (self.packages.${system}) python-app; - }; - }); - }; -} diff --git a/templates/python/nix/package.nix b/templates/python/nix/package.nix deleted file mode 100644 index e025dbd..0000000 --- a/templates/python/nix/package.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ python3Packages }: -let - pname = "python-app"; - version = "0.1.0"; - inherit (python3Packages) - buildPythonApplication - flask - ; -in -buildPythonApplication { - inherit pname version; - propagatedBuildInputs = [ - flask - ]; - src = ../${pname}; -} diff --git a/templates/python/nix/shell.nix b/templates/python/nix/shell.nix deleted file mode 100644 index a4264e6..0000000 --- a/templates/python/nix/shell.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ mkShell, python-app, python312Packages }: -mkShell { - name = "Python Palace"; - inputsFrom = [ python-app ]; - nativeBuildInputs = [ - python312Packages.ruff-lsp - python312Packages.ruff - ]; -} diff --git a/templates/python/python-app/python-app b/templates/python/python-app/python-app deleted file mode 100644 index 0e8ea3b..0000000 --- a/templates/python/python-app/python-app +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -from flask import Flask -app = Flask(__name__) - -@app.route('/') -def hello_world(): - return 'Hello, World!' - -if __name__ == '__main__': - app.run(host="0.0.0.0", port=8080) diff --git a/templates/python/python-app/setup.py b/templates/python/python-app/setup.py deleted file mode 100644 index f27b28a..0000000 --- a/templates/python/python-app/setup.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python - -from setuptools import setup, find_packages - -setup(name='python-app', - version='0.1.0', - # Modules to import from other scripts: - packages=find_packages(), - # Executables - scripts=["python-app"], - )