From d419b0f40de5121560f944bd8f92ada5cdcdc3e9 Mon Sep 17 00:00:00 2001 From: mtgmonkey Date: Fri, 28 Nov 2025 21:36:04 +0100 Subject: [PATCH] init --- README.md | 1 + flake.lock | 26 ++++++++++++++++++++++++++ flake.nix | 13 +++++++++++++ package.nix | 37 +++++++++++++++++++++++++++++++++++++ src/Main.hs | 13 +++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 README.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 package.nix create mode 100644 src/Main.hs diff --git a/README.md b/README.md new file mode 100644 index 0000000..c75cc6d --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +generate type-safe GLSL with this Haskell grammar. Under heavy development. diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..0ab51bd --- /dev/null +++ b/flake.lock @@ -0,0 +1,26 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1764242076, + "narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..745dfb3 --- /dev/null +++ b/flake.nix @@ -0,0 +1,13 @@ +{ + inputs = { + nixpkgs.url = "nixpkgs/nixos-unstable"; + }; + outputs = {nixpkgs, ...}: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in { + packages.${system} = { + default = pkgs.callPackage ./package.nix {}; + }; + }; +} diff --git a/package.nix b/package.nix new file mode 100644 index 0000000..c16b4b2 --- /dev/null +++ b/package.nix @@ -0,0 +1,37 @@ +{ + haskellPackages, + lib, + stdenv, + ... +}: let + ghcExeOptions = "-O -Wall -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N"; + ghcPackages = p: [ + p.relude + ]; +in + stdenv.mkDerivation { + pname = "hs-glsl"; + version = "0.1.0"; + src = ./src; + nativeBuildInputs = [ + (haskellPackages.ghcWithPackages ghcPackages) + ]; + buildInputs = [ + ]; + configurePhase = '' + ''; + buildPhase = '' + ghc ${ghcExeOptions} ./Main.hs -o ./Main + ''; + installPhase = '' + mkdir -p $out/bin + cp ./Main $out/bin/hs-glsl + ''; + + meta = { + homepage = "https://mtgmonkey.net"; + license = lib.licenses.wtfpl; + mainProgram = "hs-glsl"; + platforms = ["x86_64-linux"]; + }; + } diff --git a/src/Main.hs b/src/Main.hs new file mode 100644 index 0000000..d989b11 --- /dev/null +++ b/src/Main.hs @@ -0,0 +1,13 @@ +{-# LANGUAGE NoImplicitPrelude #-} +{-# LANGUAGE OverloadedStrings #-} + +module Main (main) where + +-- IMPORTS -- + +import Relude + +-- MAIN -- + +main :: IO () +main = putTextLn "hallo Welt"