diff options
author | stuebinm | 2022-02-12 21:29:07 +0100 |
---|---|---|
committer | stuebinm | 2022-02-12 21:30:53 +0100 |
commit | f228c99fd04d539b1aa0c84504b1d6e3f87aa2fe (patch) | |
tree | 2247c7bd82a2e16f5208d15ed0a4c719221387ec | |
parent | 6f604d3b0f63d7ceafc95e3a2726c79bb30d51d5 (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-- | .gitignore | 1 | ||||
-rw-r--r-- | default.nix | 42 | ||||
-rw-r--r-- | nix/sources.json | 12 | ||||
-rw-r--r-- | stack.yaml | 3 | ||||
-rw-r--r-- | stack.yaml.lock | 3 |
5 files changed, 57 insertions, 4 deletions
@@ -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", @@ -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 |