Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tchoutri/horizon-platform
  • jonge/horizon-platform
  • raoulhc/horizon-platform
  • package-sets/horizon-platform
Show changes
Commits on Source (565)
Showing with 4347 additions and 2774 deletions
let Prelude =
env:DHALL_PRELUDE
? https://raw.githubusercontent.com/dhall-lang/dhall-lang/v20.1.0/Prelude/package.dhall
sha256:26b0ef498663d269e4dc6a82b0ee289ec565d683ef4c00d0ebdd25333a5a3c98
let H = ./horizon-spec.dhall
let toStep
: Text → Text
= λ(x : Text) → ".#${x}"
let input =
Prelude.Map.keys Text H.HaskellPackage.Type (./horizon.dhall).packages
let packages = Prelude.List.map Text Text toStep (input : List Text)
in "nix build -L --no-link "
++ Prelude.List.fold
Text
packages
Text
(λ(x : Text) → λ(y : Text) → x ++ " " ++ y)
""
stages:
- generate
- check
- build
- devour
- cachix
generate-flake-ci:
stage: generate
script: nix run "git+https://gitlab.homotopic.tech/haskell/flake-to-gitlab-ci?ref=refs/tags/0.2.1.0" > flake-ci.yml
artifacts:
paths:
- flake-ci.yml
build:
stage: build
script:
- nix build .#packages.$SYSTEM.$PACKAGE -L
parallel:
matrix:
- SYSTEM:
- aarch64-darwin
- x86_64-linux
PACKAGE:
- aeson
- beam-postgres
- composite-base
- dhall
- hedgehog
- hoauth2-providers
- log-effectful
- persistent-postgresql
- polysemy
- servant
- souffle-haskell
- sydtest
- tasty
- wai-app-static
- warp
- SYSTEM:
- x86_64-linux
PACKAGE:
- streamly
flake-ci:
stage: check
trigger:
include:
- artifact: flake-ci.yml
job: generate-flake-ci
strategy: depend
devour:
stage: devour
script:
- nix build github:srid/devour-flake#packages.$SYSTEM.default -L --no-link --print-out-paths --override-input flake . --keep-going
parallel:
matrix:
- SYSTEM:
- aarch64-darwin
- x86_64-linux
cachix:
stage: cachix
rules:
- if: $CI_COMMIT_REF_PROTECTED == "true"
script:
- nix-shell -p cachix --command "nix build github:srid/devour-flake#packages.$SYSTEM.default -L --no-link --print-out-paths --override-input flake . | xargs cat | cachix push horizon"
parallel:
matrix:
- SYSTEM:
- aarch64-darwin
- x86_64-linux
# ChangeLog for horion-platform
## unstable-2023-02-20
* Initial unstable tag. Handwritten policy added.
MIT License
Copyright (c) 2022-2023 Homotopic.Tech Ltd
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# Haskell Horizon Platform
# Horizon Haskell Platform
[horizon-haskell.net](https://horizon-haskell.net).
Horizon is a haskell package set targetting new builds of GHC.
horizon-platform is a haskell package set targetting new builds of GHC. This package set extends [horizon-platform](https://gitlab.horizon-haskell.net/package-sets/horizon-platform).
## Getting started
You an can use this package set instead of your haskell packages set in
nixpkgs. To see an example you can use the template supplied with this
repository.
The following things are expected to be here:
* aeson
* beam-postgres
* composite-base
* dhall
* hedgehog
* hoauth2-providers
* log-effectful
* persistent-postgresql
* polysemy
* servant
* souffle-haskell
* streamly
* sydtest
* tasty
* wai-app-static
* warp
## Updating the Package Set
Generating the nix expressions for the package set is a two step process.
1. Edit the `horizon.dhall` file.
2. Generate the nix expressions with
```
mkdir myProject
cd myProject
nix flake init -t 'git+https://gitlab.homotopic.tech/horizon/horizon-platform'
nix run develop/#horizon-gen-nix -- -jN
```
## Updating the package set
You can edit the `horizon.dhall` file in one of two ways: manually using a text
editor, or programatically using `horizon-shell`.
The package set is generated from the `horizon.dhall` using the following command:
If you want to bumping everything listed in the `horizon.dhall` file to the latest
bounds, run
```
nix run .#horizon-gen-nix
nix run develop/#try-to-upgrade-everything
```
This will generate both the packages folder and the package set file. If you
want to regenerate a particular package in the packages folder, delete that file
from the packages folder. To regenerate the entire package set from scratch,
delete the packages folder.
### Using horizon-shell.
If you need to do additional manual overrides to the nix code, such as
`addPkgconfigDepends`, edit the `configuration.nix` overlay, which is applied
To use `horizon-shell`.
```
nix run develop/#horizon-shell
```
This is a haskell interpreter with a few shortcut functions available. Running
`tryToUpgradeEverything` will poll hackage for any potential updates and add
them to the dhall file. This will only modify the dhall, not the nix
expressions. You must remember to run `nix run develop/#horizon-gen-nix`
afterwards.
To quickly add a new package to the dhall, use the `addHackage` function. For example
`addHackage "optics"`.
## Tweaking & Hacking
If you need to do additional manual overrides to the nix code, such as
`addPkgconfigDepends`, edit the `configuration/common.nix` overlay, which is
applied over the generated derivations.
## Feedback
To build all packages, run
```
nix run develop/#feedback -- build
```
## Hoogle
To get a hoogle instance for the entire package set, you can run:
```
nix run .#apps.x86_64-linux.run-hoogle
```
{ pkgs, haskellLib }:
let
inherit (pkgs) fetchpatch lib;
inherit (lib) throwIfNot versionOlder;
in
self: super: {
llvmPackages = lib.dontRecurseIntoAttrs self.ghc.llvmPackages;
# Disable GHC core libraries.
array = null;
base = null;
binary = null;
bytestring = null;
containers = null;
deepseq = null;
directory = null;
exceptions = null;
filepath = null;
ghc-bignum = null;
ghc-boot = null;
ghc-boot-th = null;
ghc-compact = null;
ghc-heap = null;
ghc-prim = null;
ghci = null;
haskeline = null;
hpc = null;
integer-gmp = null;
libiserv = null;
mtl = null;
pretty = null;
process = null;
rts = null;
stm = null;
system-cxx-std-lib = null;
template-haskell = null;
# GHC only builds terminfo if it is a native compiler
terminfo = if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then null else self.terminfo_0_4_1_5;
text = null;
time = null;
transformers = null;
unix = null;
# GHC only bundles the xhtml library if haddock is enabled, check if this is
# still the case when updating: https://gitlab.haskell.org/ghc/ghc/-/blob/0198841877f6f04269d6050892b98b5c3807ce4c/ghc.mk#L463
xhtml = if self.ghc.hasHaddock or true then null else self.xhtml_3000_2_2_1;
}
{ pkgs, haskellLib }:
with pkgs.haskell.lib;
final: prev: {
digest = addExtraLibrary prev.digest pkgs.zlib;
hopenssl = prev.hopenssl.override { openssl = pkgs.openssl_1_1; };
libsodium = prev.callPackage ./pkgs/libsodium.nix { inherit (pkgs) libsodium; };
saltine = addPkgconfigDepend prev.saltine pkgs.libsodium;
splitmix = prev.callPackage ./pkgs/splitmix.nix { inherit (pkgs) testu01; };
text-icu = prev.callPackage ./pkgs/text-icu.nix { icu-i18n = pkgs.icu; };
X11-xft = addPkgconfigDepends prev.X11-xft [ pkgs.expat pkgs.xorg.libXau pkgs.xorg.libXdmcp ];
zlib = prev.callPackage ./pkgs/zlib.nix { inherit (pkgs) zlib; };
}
{ pkgs, haskellLib }:
with pkgs.haskell.lib;
final: prev: {
alsa-core = null;
alsa-mixer = null;
iwlib = null;
libsystemd-journal = null;
llvm-hs = null;
sdl2-mixer = null;
streamly = null;
}
{ pkgs, haskellLib }:
with haskellLib;
final: prev: {
dhall-docs = null;
hfsevents = null;
mmark = null;
stripeapi = null;
}
{ pkgs, haskellLib }:
with haskellLib;
final: prev: {
cheapskate = null;
hasql-explain-tests = null;
sandwich = null;
text-icu = prev.callPackage ../pkgs/text-icu.nix { icu-i18n = pkgs.icu; };
thyme = null;
tmp-postgres = null;
X11-xft = addPkgconfigDepends prev.X11-xft [ pkgs.expat pkgs.xorg.libXau pkgs.xorg.libXdmcp ];
}
{ pkgs, haskellLib }:
with pkgs.haskell.lib;
final: prev: {
alsa-core = null;
alsa-mixer = null;
hfsevents = prev.callPackage ../pkgs/hfsevents.nix {
Cocoa = pkgs.darwin.apple_sdk.frameworks.Cocoa;
CoreServices = pkgs.darwin.apple_sdk.frameworks.CoreServices;
};
iwlib = null;
libsystemd-journal = null;
sdl2-mixer = null;
hinotify = final.hfsevents;
}
{ pkgs, haskellLib }:
with haskellLib;
final: prev: {
hfsevents = null;
}
This diff is collapsed.
{
nixConfig = {
extra-substituters = "https://horizon.cachix.org";
extra-trusted-public-keys = "horizon.cachix.org-1:MeEEDRhRZTgv/FFGCv3479/dmJDfJ82G6kfUDxMSAw0=";
};
inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
horizon-develop-flake.url = "git+https://gitlab.horizon-haskell.net/nix/horizon-develop-flake";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs =
inputs@
{ self
, flake-parts
, nixpkgs
, ...
}:
flake-parts.lib.mkFlake { inherit inputs; }
{
systems = [
"aarch64-darwin"
"x86_64-darwin"
"x86_64-linux"
];
imports = [
inputs.horizon-develop-flake.flakeModule
];
};
}
loops:
build:
command: cat .build-all.dhall | dhall text | bash
filter:
find: '*.nix'
check: nix flake check -L
gen:
command: nix run .#horizon-gen-nix
filter:
find: horizon.dhall
{
"nodes": {
"flake-utils": {
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"lastModified": 1738453229,
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
"type": "github"
},
"original": {
"id": "flake-utils",
"type": "indirect"
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils_2": {
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1644229661,
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
"lastModified": 1717285511,
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"get-flake": {
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_3"
},
"locked": {
"lastModified": 1644686428,
"narHash": "sha256-zkhYsURWFrvEZLkIoBeqFBzSu+cA2u5mo6M8vq9LN7M=",
"owner": "ursi",
"repo": "get-flake",
"rev": "703f15558daa56dfae19d1858bb3046afe68831a",
"lastModified": 1717285511,
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
"type": "github"
},
"original": {
"owner": "ursi",
"repo": "get-flake",
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"horizon-gen-nix": {
"flake": false,
"horizon-advance": {
"inputs": {
"flake-parts": [
"horizon-advance",
"horizon-core",
"flake-parts"
],
"horizon-core": "horizon-core",
"horizon-hoogle": "horizon-hoogle_2",
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1670944091,
"narHash": "sha256-WFj0uQqaEIURuZpfsb8yy/iqyzN8Lrc9BpWloL5a4R0=",
"rev": "8eb5ffc81cd8331f340546d746a786c7b2f021a6",
"revCount": 109,
"lastModified": 1719751316,
"narHash": "sha256-exJ80zZPyiSxiYQb4IreK7LDpjfBLOCPb77QUn3TGR8=",
"ref": "lts/ghc-9.10.x",
"rev": "36784235da4dd828b3e139a855dc8410fff91376",
"revCount": 259,
"type": "git",
"url": "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
"url": "https://gitlab.horizon-haskell.net/package-sets/horizon-advance"
},
"original": {
"rev": "8eb5ffc81cd8331f340546d746a786c7b2f021a6",
"ref": "lts/ghc-9.10.x",
"type": "git",
"url": "https://gitlab.homotopic.tech/horizon/horizon-gen-nix"
"url": "https://gitlab.horizon-haskell.net/package-sets/horizon-advance"
}
},
"lint-utils": {
"horizon-build-packages": {
"inputs": {
"flake-utils": "flake-utils_2",
"flake-parts": [
"horizon-advance",
"horizon-core",
"horizon-build-packages",
"horizon-ghc",
"flake-parts"
],
"horizon-ghc": "horizon-ghc",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1718969469,
"narHash": "sha256-0Q8v/yNwcLZy0znegLXx/SQmbfd2d/4TBSrFYh7g7+0=",
"ref": "refs/heads/master",
"rev": "23fa82740dc197706a3737c8830b724ccabafac4",
"revCount": 96,
"type": "git",
"url": "https://gitlab.horizon-haskell.net/package-sets/horizon-build-packages"
},
"original": {
"type": "git",
"url": "https://gitlab.horizon-haskell.net/package-sets/horizon-build-packages"
}
},
"horizon-core": {
"inputs": {
"flake-parts": "flake-parts_2",
"horizon-build-packages": "horizon-build-packages",
"horizon-hoogle": "horizon-hoogle",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1718977916,
"narHash": "sha256-sssWF/XjZga4asgwvovPLAbg8E2EyLDQOYSFgUbKg6c=",
"ref": "refs/heads/master",
"rev": "81674e75e63548341ebe0cb94127044255affb55",
"revCount": 1375,
"type": "git",
"url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core"
},
"original": {
"type": "git",
"url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core"
}
},
"horizon-ghc": {
"inputs": {
"flake-parts": "flake-parts_3",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1669815989,
"narHash": "sha256-yDE8uxa/O633VeRBlJKSY5q9JtzoBoMANvgupdI42YI=",
"lastModified": 1718969245,
"narHash": "sha256-eeMsOK3Hmm23SH45GdbuWRtpEcMWZPC/JCYvKL2LOos=",
"ref": "refs/heads/master",
"rev": "0bcfe994903359aef81338915706bf6b2f38aaa4",
"revCount": 109,
"type": "git",
"url": "https://gitlab.horizon-haskell.net/ghc/horizon-ghc"
},
"original": {
"type": "git",
"url": "https://gitlab.horizon-haskell.net/ghc/horizon-ghc"
}
},
"horizon-hoogle": {
"locked": {
"lastModified": 1701521742,
"narHash": "sha256-huf/95jYL7mY0AHSziJYXx4m/sP+G+YAbJb+Q5Ph/Jg=",
"ref": "refs/heads/master",
"rev": "ddf3b08c6458c1a9e0d881f968c050bc828b9b8e",
"revCount": 2,
"type": "git",
"url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle"
},
"original": {
"type": "git",
"url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle"
}
},
"horizon-hoogle_2": {
"locked": {
"lastModified": 1701521742,
"narHash": "sha256-huf/95jYL7mY0AHSziJYXx4m/sP+G+YAbJb+Q5Ph/Jg=",
"ref": "refs/heads/master",
"rev": "5b97bd76dd6756dfc29a32d25a5c78c0522bac10",
"revCount": 39,
"rev": "ddf3b08c6458c1a9e0d881f968c050bc828b9b8e",
"revCount": 2,
"type": "git",
"url": "https://gitlab.homotopic.tech/nix/lint-utils"
"url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle"
},
"original": {
"type": "git",
"url": "https://gitlab.homotopic.tech/nix/lint-utils"
"url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle"
}
},
"horizon-hoogle_3": {
"locked": {
"lastModified": 1701521742,
"narHash": "sha256-huf/95jYL7mY0AHSziJYXx4m/sP+G+YAbJb+Q5Ph/Jg=",
"ref": "refs/heads/master",
"rev": "ddf3b08c6458c1a9e0d881f968c050bc828b9b8e",
"revCount": 2,
"type": "git",
"url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle"
},
"original": {
"type": "git",
"url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1644525281,
"narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=",
"lastModified": 1718928808,
"narHash": "sha256-MjVGflb3qXOrJRTJ5siQZHYuMCsRHaqYgTSKSik+/sE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2",
"rev": "564000ae34c6af8549f3729051bbae33403e298c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"ref": "haskell-updates",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1738452942,
"narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
}
},
"nixpkgs-lib_2": {
"locked": {
"lastModified": 1717284937,
"narHash": "sha256-lIbdfCsf8LMFloheeE6N31+BMIeixqyQWbSr2vk79EQ=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
}
},
"nixpkgs-lib_3": {
"locked": {
"lastModified": 1717284937,
"narHash": "sha256-lIbdfCsf8LMFloheeE6N31+BMIeixqyQWbSr2vk79EQ=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1665830552,
"narHash": "sha256-qel2bZ9TqfW8WzWCWdjuCy4bVFhhGsEeqFv/bj1ka2s=",
"lastModified": 1718928808,
"narHash": "sha256-MjVGflb3qXOrJRTJ5siQZHYuMCsRHaqYgTSKSik+/sE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "564000ae34c6af8549f3729051bbae33403e298c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "haskell-updates",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1718928808,
"narHash": "sha256-MjVGflb3qXOrJRTJ5siQZHYuMCsRHaqYgTSKSik+/sE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "564000ae34c6af8549f3729051bbae33403e298c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "haskell-updates",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1719706517,
"narHash": "sha256-ynXAAr5AJgTQHQAJW4GH3i8auqnZVzcjCokZMdEKjcs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "01da4c59cc4879540b7a5d73230475b4616a0dc8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "haskell-updates",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1739138025,
"narHash": "sha256-M4ilIfGxzbBZuURokv24aqJTbdjPA9K+DtKUzrJaES4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "26b7e6ab6a864c3e7e077bcb27a49f0480b9894a",
"rev": "b2243f41e860ac85c0b446eadc6930359b294e79",
"type": "github"
},
"original": {
......@@ -113,11 +309,10 @@
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"get-flake": "get-flake",
"horizon-gen-nix": "horizon-gen-nix",
"lint-utils": "lint-utils",
"nixpkgs": "nixpkgs_2"
"flake-parts": "flake-parts",
"horizon-advance": "horizon-advance",
"horizon-hoogle": "horizon-hoogle_3",
"nixpkgs": "nixpkgs_5"
}
}
},
......
{
inputs = {
get-flake.url = "github:ursi/get-flake";
lint-utils.url = "git+https://gitlab.homotopic.tech/nix/lint-utils";
horizon-gen-nix = {
url = "git+https://gitlab.homotopic.tech/horizon/horizon-gen-nix?rev=8eb5ffc81cd8331f340546d746a786c7b2f021a6";
flake = false;
};
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
};
outputs =
inputs@
{ self
, get-flake
, flake-utils
, horizon-gen-nix
, lint-utils
, nixpkgs
, ...
}:
flake-utils.lib.eachSystem [ "x86_64-linux" ]
(system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
with pkgs.lib;
with pkgs.writers;
with lint-utils.writers.${system};
let
horizon-gen-nix-app = get-flake horizon-gen-nix;
haskellLib = pkgs.haskell.lib.compose;
legacyPackages = pkgs.callPackage (nixpkgs + /pkgs/development/haskell-modules) {
buildHaskellPackages = pkgs.haskell.packages.ghc942;
compilerConfig = pkgs.callPackage ./configuration-ghc-9.4.x.nix { inherit haskellLib; };
configurationCommon = import ./configuration.nix;
configurationNix = { pkgs, haskellLib }: self: super: { };
ghc = pkgs.haskell.compiler.ghc942;
inherit haskellLib;
initialPackages = import ./initial-packages.nix;
nonHackagePackages = self: super: { };
};
packages = filterAttrs
(n: v: v != null
&& builtins.typeOf v == "set"
&& pkgs.lib.hasAttr "type" v
&& v.type == "derivation"
&& v.meta.broken == false)
legacyPackages;
horizon-gen-gitlab-ci = writeBashBin "gen-gitlab-ci" "${pkgs.dhall-json}/bin/dhall-to-yaml --file .gitlab-ci.dhall";
run-impure-tests = writePorcelainOrDieBin {
name = "run-impure-tests";
src = ./.;
command = ''
export PATH=$PATH:${pkgs.nix-prefetch-git}/bin:${pkgs.cabal-install}/bin
cabal update
rm pkgs -rf && nix run .#horizon-gen-nix;
nixpkgs-fmt pkgs/*
'';
advice = "Try removing the offending packages from pkgs/ and running nix run .#horizon-gen-nix";
};
run-impure-tests-app = {
type = "app";
program = "${run-impure-tests}/bin/run-impure-tests";
};
in
{
apps = {
horizon-gen-nix = horizon-gen-nix-app.outputs.apps.${system}.horizon-gen-nix;
horizon-gen-gitlab-ci = {
type = "app";
program = "${horizon-gen-gitlab-ci}/bin/gen-gitlab-ci";
};
run-impure-tests = run-impure-tests-app;
};
checks = {
dhall-format = lint-utils.outputs.linters.${system}.dhall-format { src = ./.; };
nixpkgs-fmt = lint-utils.outputs.linters.${system}.nixpkgs-fmt { src = ./.; };
};
inherit legacyPackages;
description = "Horizon Haskell Platform";
inherit packages;
nixConfig = {
extra-substituters = "https://horizon.cachix.org";
extra-trusted-public-keys = "horizon.cachix.org-1:MeEEDRhRZTgv/FFGCv3479/dmJDfJ82G6kfUDxMSAw0=";
};
}) // {
templates = rec {
inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
horizon-advance.url = "git+https://gitlab.horizon-haskell.net/package-sets/horizon-advance?ref=lts/ghc-9.10.x";
horizon-hoogle.url = "git+https://gitlab.horizon-haskell.net/nix/horizon-hoogle";
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
};
default = minimal;
outputs = inputs:
inputs.flake-parts.lib.mkFlake { inherit inputs; } {
systems = [
"aarch64-darwin"
"aarch64-linux"
"x86_64-darwin"
"x86_64-linux"
];
imports = [
inputs.horizon-hoogle.flakeModule
];
perSystem = { pkgs, config, system, ... }:
with pkgs.lib;
let
haskellLib = pkgs.haskell.lib;
modifiers = import ./modifiers.nix { inherit pkgs; };
overrides = composeManyExtensions [
(import ./overlay.nix { inherit pkgs; f = modifiers; })
(import ./configuration/common.nix { inherit pkgs haskellLib; })
(import (./configuration + "/${system}.nix") { inherit pkgs haskellLib; })
];
legacyPackages = inputs.horizon-advance.legacyPackages.${system}.extend overrides;
packages = filterAttrs (_: isDerivation) legacyPackages;
in
{
inherit legacyPackages;
inherit packages;
minimal = {
description = "horizon-platform minimal template";
path = ./templates/minimal;
};
};
};
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.