git.iko.soy/typeable/servant
on v0.9 help sign in
typeable/servant/scripts/generate-nix-files.sh
48 lines 1.6 kB history raw
1#!/usr/bin/env bash
2#===============================================================================
3#
4# FILE: generate-nix-files.sh
5#
6# USAGE: ./generate-nix-files.sh
7#
8# DESCRIPTION: Update nix files at top-level and add all packages
9#
10# REQUIREMENTS: bash >= 4, cabal2nix(nix tool)
11#===============================================================================
13set -o nounset
14set -o errexit
16DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
17. "$DIR"/lib/common.sh
18SHELLNIX="shell.nix"
20write-package-shell-nix () {
21 rm -rf $SHELLNIX
22 echo -e "let" >> $SHELLNIX
23 echo -e " pkgs = import <nixpkgs> {};" >> $SHELLNIX
24 echo -e "" >> $SHELLNIX
25 echo -e " haskellPackages = pkgs.haskellPackages.override {" >> $SHELLNIX
26 echo -e " overrides = self: super: {" >> $SHELLNIX
27 for n in ${SOURCES[@]} ; do
28 if [[ $1 != $n ]]; then
29 echo -e " $n = pkgs.haskell.lib.dontCheck (pkgs.haskell.lib.appendConfigureFlag (self.callPackage ../$n {}) \"--ghc-options=-Werror\");" >> $SHELLNIX
30 fi
31 done
32 echo -e " $1 = pkgs.haskell.lib.appendConfigureFlag (self.callPackage ./. {}) \"--ghc-options=-Werror\";" >> $SHELLNIX
33 echo -e " };" >> $SHELLNIX
34 echo -e " };" >> $SHELLNIX
35 echo -e "" >> $SHELLNIX
36 echo -e "in haskellPackages.$s.env" >> $SHELLNIX
39update-nix-files () {
40 for s in ${SOURCES[@]} ; do
41 pushd "$s" > /dev/null
42 cabal2nix . > default.nix
43 write-package-shell-nix $s
44 popd > /dev/null
45 done
48update-nix-files