Compare commits

...

10 commits

Author SHA1 Message Date
85dc1735b8 Remove unnecessary dependencies 2023-08-08 01:29:45 -04:00
edb65814cd Disallow broken packages 2023-08-08 01:29:45 -04:00
Kiana Sheibani
a3e2ea6e86
Add slightly more informative comment 2022-04-08 00:54:06 -04:00
adb081fd22 Switch flake.nix architecture 2022-03-11 23:01:32 -05:00
6c3742e148 Name 2022-03-10 10:10:10 -05:00
c421110172 Remove unnecessary flake-compat input 2022-03-09 13:49:35 -05:00
07d8764c63 Update direnv 2022-01-11 23:54:53 -05:00
f20b5a972b Remove ghcid from devshell 2022-01-11 23:41:18 -05:00
3b56e44971 Start using direnv 2022-01-11 23:28:57 -05:00
c096923f39 Fix window size bug 2021-12-29 22:54:49 -05:00
7 changed files with 47 additions and 72 deletions

3
.envrc Normal file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
use flake

5
.gitignore vendored
View file

@ -26,5 +26,6 @@ cabal.project.local~
# ignore vscodium's local config # ignore vscodium's local config
.vscode/ .vscode/
# ignore nix result symlinks # ignore nix build system
result* result*
.direnv

View file

@ -44,15 +44,15 @@ processEvent = event noEvent $ \case
EventMotion {} -> noEvent EventMotion {} -> noEvent
EventResize size -> Event $ Resize size EventResize size -> Event $ Resize size
run :: forall f. DisplayableSpace f => f Bool -> SF InputEvent Picture run :: DisplayableSpace f => (Int, Int) -> f Bool -> SF InputEvent Picture
run st = run size st =
let initSpace = gol' standardRule st let initSpace = gol' standardRule st
in proc inp -> do in proc inp -> do
let cmdev = processEvent inp let cmdev = processEvent inp
playing <- accumHoldBy (const . not) True -< filterE isPlayPause cmdev playing <- accumHoldBy (const . not) True -< filterE isPlayPause cmdev
time <- accum 0.2 -< mapFilterE getChangeSpeed cmdev time <- accum 0.2 -< mapFilterE getChangeSpeed cmdev
windowSize <- hold (100, 100) -< mapFilterE getResize cmdev windowSize <- hold size -< mapFilterE getResize cmdev
tick <- tickSignal -< time tick <- tickSignal -< time
space <- engine initSpace -< gate tick playing space <- engine initSpace -< gate tick playing

View file

@ -6,6 +6,7 @@ import Graphics.Engine (initialSpace, run)
import Graphics.Gloss import Graphics.Gloss
import Graphics.GlossUtils (playYampa) import Graphics.GlossUtils (playYampa)
-- random space just to test things
space :: ToroidalSpace Bool space :: ToroidalSpace Bool
space = tabulate (\(x, y) -> (x + y `mod` 5) * 10 + x - y > 30) space = tabulate (\(x, y) -> (x + y `mod` 5) * 10 + x - y > 30)
@ -15,4 +16,4 @@ main =
(InWindow "Conway's Game of Life" (200, 200) (10, 10)) (InWindow "Conway's Game of Life" (200, 200) (10, 10))
black black
30 30
(run space) (run (200, 200) space)

17
flake.lock generated
View file

@ -1,21 +1,5 @@
{ {
"nodes": { "nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1627913399,
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": { "flake-utils": {
"locked": { "locked": {
"lastModified": 1638122382, "lastModified": 1638122382,
@ -48,7 +32,6 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }

View file

@ -1,59 +1,54 @@
# SPDX-FileCopyrightText: 2021 Serokell <https://serokell.io/>
#
# SPDX-License-Identifier: CC0-1.0
{ {
description = "My haskell application"; description = "Conway's Game of Life in Haskell";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs"; nixpkgs.url = "github:NixOS/nixpkgs";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
flake-compat.url = "github:edolstra/flake-compat";
flake-compat.flake = false;
}; };
outputs = { self, nixpkgs, flake-utils, ... }: outputs = { self, nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system: flake-utils.lib.eachDefaultSystem (system:
let let
overlays = [ ];
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
haskellPackages = pkgs.haskellPackages;
jailbreakUnbreak = pkg:
pkgs.haskell.lib.doJailbreak (pkg.overrideAttrs (_: { meta = { }; }));
packageName = "conways-game-of-life";
execName = "gol"; execName = "gol";
in { hp = pkgs.haskellPackages; # pkgs.haskell.packages.ghc921;
packages.${packageName} = project = returnShellEnv:
haskellPackages.callCabal2nix packageName self rec { hp.developPackage {
# Dependency overrides go here inherit returnShellEnv;
name = "conways-game-of-life";
root = ./.;
withHoogle = false;
overrides = self: super: with pkgs.haskell.lib; {
# Use callCabal2nix to override Haskell dependencies here
# cf. https://tek.brick.do/K3VXJd8mEKO7
# Example:
# > NanoID = self.callCabal2nix "NanoID" inputs.NanoID { };
# Assumes that you have the 'NanoID' flake input defined.
};
modifier = drv:
pkgs.haskell.lib.addBuildTools drv (with hp; [
# Specify your build/dev dependencies here.
hlint
haskell-language-server
ormolu
pkgs.mesa
pkgs.mesa_glu
pkgs.freeglut
]);
}; };
in
{
# Used by `nix build` & `nix run` (prod exe)
defaultPackage = project false;
defaultPackage = self.packages.${system}.${packageName}; defaultApp = {
apps.${execName} = {
type = "app"; type = "app";
program = "${self.packages.${system}.${packageName}}/bin/${execName}"; program = "${self.defaultPackage.${system}}/bin/${execName}";
}; };
defaultApp = self.apps.${system}.${execName}; # Used by `nix develop` (dev shell)
devShell = project true;
devShell = pkgs.mkShell {
buildInputs = with haskellPackages; [
ghcid
cabal-install
hlint
pkgs.haskell-language-server
pkgs.ormolu
pkgs.mesa
pkgs.mesa_glu
pkgs.freeglut
];
inputsFrom = builtins.attrValues self.packages.${system};
};
}); });
} }

View file

@ -1,8 +0,0 @@
(import (
let lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in
fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}
) { src = ./.; }).shellNix