-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdefault.nix
51 lines (46 loc) · 2.07 KB
/
default.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Soporte de Nix para proyecto Cabal.
# Referencias:
# "Nix recipes for Haskellers": https://srid.ca/haskell-nix
# Fijar una version de nixpkgs: https://nix.dev/tutorials/first-steps/towards-reproducibility-pinning-nixpkgs
# Determinar commit-hash de asociado al canal de nixos: https://discourse.nixos.org/t/how-to-see-what-commit-is-my-channel-on/4818
# Fetch nixpkgs: https://nixos.wiki/wiki/How_to_fetch_Nixpkgs_with_an_empty_NIX_PATH
#
# Este archivo es utilizado por defecto por `nix-build` y `nix-shell`.
# Al correr `nix-shell` se carga una sesión de terminal con todas las dependencias
# declaradas en el archivo `ritmoTG.cabal`.
# Desde esta sesión se pueden utilizar los comandos `cabal` para interactuar con la biblioteca.
# Utilizo Nix de esta manera para abstraer la instalación de Haskell.
#
# Aquí refiero al commit de nixpkgs correspondiente a mi versión local (canal),
# mediante el número de commit corto obtenido de la parte final de `sudo nixos-version`
# Actual:
# Canal de Nix: nixos-23.11 (stable)
# Version de ghc: 9.4.8
# Versión de base: 4.17.2.1
#
let
## Previous pin (simple approach)
# pkgs = import (fetchTarball {
# url = "https://github.com/NixOS/nixpkgs/archive/b0b2c5445c64.tar.gz";
# sha256 = "1kvscvl8in723440i0w0sv2j2pawdxjkbiqgx85jda2cz92l6rpm";
# }) { };
## Explicit bootstraping and structured revision management
# Use default nix package set to pin it to a git revision
bootstrap = import <nixpkgs> { };
# Nix packages git revision information in JSON generated by
# REV = nix-instantiate --eval --expr 'builtins.readFile <nixpkgs/.git-revision>'
# to get the commit hash and
# nix-prefetch-git https://github.com/NixOS/nixpkgs.git $REV > ./nix/nixpkgs.json
nixpkgs = builtins.fromJSON (builtins.readFile ./nix/nixpkgs.json);
src = bootstrap.fetchFromGitHub {
owner = "NixOS";
repo = "nixpkgs";
inherit (nixpkgs) rev sha256;
};
pkgs = import src { };
in pkgs.haskellPackages.developPackage {
root = ./.;
modifier = drv:
pkgs.haskell.lib.addBuildTools drv
(with pkgs.haskellPackages; [ cabal-install ]);
}