summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstuebinm2022-02-12 21:29:07 +0100
committerstuebinm2022-02-12 21:30:53 +0100
commitf228c99fd04d539b1aa0c84504b1d6e3f87aa2fe (patch)
tree2247c7bd82a2e16f5208d15ed0a4c719221387ec
parent6f604d3b0f63d7ceafc95e3a2726c79bb30d51d5 (diff)
add haskell.nix build system
it's an annoying blockchain company, but apparently that thing is the only usable option to build stack things with nix without having to redefine all the (outdated) haskell packages in nixpkgs?
-rw-r--r--.gitignore1
-rw-r--r--default.nix42
-rw-r--r--nix/sources.json12
-rw-r--r--stack.yaml3
-rw-r--r--stack.yaml.lock3
5 files changed, 57 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore
index af63e5f..7683061 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
dist-newstyle/*
.stack-work
walint.cabal
+result*
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..deea282
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,42 @@
+let
+ sources = import ./nix/sources.nix {};
+ haskellNix = import sources.haskellNix {};
+
+ # Import nixpkgs and pass the haskell.nix provided nixpkgsArgs
+ pkgs = import
+ # use haskell.nix's nixpkgs, which may (?) have more substitutes available
+ haskellNix.sources.nixpkgs-unstable
+ # args for nixpkgs; includes the haskell.nix overlay
+ (haskellNix.nixpkgsArgs // { system = "x86_64-linux"; });
+
+ drvs = pkgs.haskell-nix.project {
+ # 'cleanGit' cleans a source directory based on the files known by git
+ src = pkgs.haskell-nix.haskellLib.cleanGit {
+ src = ./.;
+ name = "walint";
+ };
+ modules = [{
+ packages.walint.components.exes = {
+ # don't include gcc or ghc in the dependency closure …
+ walint-server.dontStrip = false;
+ walint.dontStrip = false;
+ };
+ }];
+ stack-sha256 = "16ilij2cygmwbdmjdzj6yl4yv7zi4qzwg7rxkxgp0hbjpkz6n42y";
+ };
+in
+{
+ walint = drvs.walint.components.exes.walint;
+ walint-server = pkgs.stdenvNoCC.mkDerivation {
+ name = "walint-server-with-assets";
+ src = drvs.walint.components.exes.walint-server;
+ phases = [ "buildPhase" ];
+ buildPhase = ''
+ mkdir -p $out
+ cp -r $src/* $out
+ cp -r ${pkgs.copyPathToStore ./static} $out/static
+ cp ${pkgs.copyPathToStore ./config.json} $out/config.json
+ cp ${pkgs.copyPathToStore ./config.toml} $out/config.toml
+ '';
+ };
+}
diff --git a/nix/sources.json b/nix/sources.json
index 991e777..f9b2708 100644
--- a/nix/sources.json
+++ b/nix/sources.json
@@ -1,4 +1,16 @@
{
+ "haskellNix": {
+ "branch": "master",
+ "description": "Alternative Haskell Infrastructure for Nixpkgs",
+ "homepage": "https://input-output-hk.github.io/haskell.nix",
+ "owner": "input-output-hk",
+ "repo": "haskell.nix",
+ "rev": "c2677deef14f2772110f56b60d74dee25f19902f",
+ "sha256": "0pa5n8lgq2hmsskyd7m4xsfiinq8mfpgw7g7ll3j77l5z4shi264",
+ "type": "tarball",
+ "url": "https://github.com/input-output-hk/haskell.nix/archive/c2677deef14f2772110f56b60d74dee25f19902f.tar.gz",
+ "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
+ },
"niv": {
"branch": "master",
"description": "Easy dependency management for Nix projects",
diff --git a/stack.yaml b/stack.yaml
index 428eea3..fb24c06 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,5 +1,4 @@
-resolver:
- url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/16.yaml
+resolver: lts-18.16
# User packages to be built.
# Various formats can be used as shown in the example below.
diff --git a/stack.yaml.lock b/stack.yaml.lock
index 93443e4..9f568e8 100644
--- a/stack.yaml.lock
+++ b/stack.yaml.lock
@@ -86,5 +86,4 @@ snapshots:
size: 586286
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/16.yaml
sha256: cdead65fca0323144b346c94286186f4969bf85594d649c49c7557295675d8a5
- original:
- url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/16.yaml
+ original: lts-18.16