Skip to content
Snippets Groups Projects
flake.nix 2.84 KiB
Newer Older
    get-flake.url = "github:ursi/get-flake";
Daniel Firth's avatar
Daniel Firth committed
    lint-utils.url = "git+https://gitlab.homotopic.tech/nix/lint-utils";
    horizon-gen-nix = {
Daniel Firth's avatar
Daniel Firth committed
      url = "git+https://gitlab.homotopic.tech/horizon/horizon-gen-nix?rev=066b21b5b0c3b7b2bee1b5954f89ae0b7845ade9";
      flake = false;
    };
    nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
  };
Daniel Firth's avatar
Daniel Firth committed
  outputs =
    inputs@
    { self
    , get-flake
    , flake-utils
    , horizon-gen-nix
    , lint-utils
    , nixpkgs
    , ...
    }:
Daniel Firth's avatar
Daniel Firth committed
    flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
Daniel Firth's avatar
Daniel Firth committed
    let
      pkgs = nixpkgs.legacyPackages.${system};
    in
    with pkgs.lib;
    with pkgs.writers;
Daniel Firth's avatar
Daniel Firth committed
    with lint-utils.writers.${system};
Daniel Firth's avatar
Daniel Firth committed
    let
Daniel Firth's avatar
Daniel Firth committed
      horizon-gen-nix-app = get-flake horizon-gen-nix;
Daniel Firth's avatar
Daniel Firth committed
      haskellLib = pkgs.haskell.lib.compose;
Daniel Firth's avatar
Daniel Firth committed
      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;
Daniel Firth's avatar
Daniel Firth committed
        initialPackages = import ./initial-packages.nix;
Daniel Firth's avatar
Daniel Firth committed
        nonHackagePackages = self: super: { };
      };
Daniel Firth's avatar
Daniel Firth committed
      packages = filterAttrs
        (n: v: v != null
          && builtins.typeOf v == "set"
          && pkgs.lib.hasAttr "type" v
          && v.type == "derivation"
          && v.meta.broken == false)
        legacyPackages;
Daniel Firth's avatar
Daniel Firth committed
      horizon-gen-gitlab-ci = writeBashBin "gen-gitlab-ci" "${pkgs.dhall-json}/bin/dhall-to-yaml --file .gitlab-ci.dhall";
Daniel Firth's avatar
Daniel Firth committed
      run-impure-tests = writePorcelainOrDieBin {
Daniel Firth's avatar
Daniel Firth committed
        name = "run-impure-tests";
        src = ./.;
        command = ''
Daniel Firth's avatar
Daniel Firth committed
          export PATH=$PATH:${pkgs.nix-prefetch-git}/bin:${pkgs.cabal-install}/bin
Daniel Firth's avatar
Daniel Firth committed
          cabal update
          rm pkgs -rf && nix run .#horizon-gen-nix make-package-set;
          nixpkgs-fmt pkgs/*
        '';
        advice = "Try removing the offending packages from pkgs/ and running nix run .#horizon-gen-nix make-package-set";
      };

      run-impure-tests-app = {
        type = "app";
        program = "${run-impure-tests}/bin/run-impure-tests";
      };

Daniel Firth's avatar
Daniel Firth committed
    in
    {
Daniel Firth's avatar
Daniel Firth committed

Daniel Firth's avatar
Daniel Firth committed
      apps = {
Daniel Firth's avatar
Daniel Firth committed

Daniel Firth's avatar
Daniel Firth committed
        horizon-gen-nix = horizon-gen-nix-app.outputs.apps.${system}.horizon-gen-nix;
Daniel Firth's avatar
Daniel Firth committed

Daniel Firth's avatar
Daniel Firth committed
        horizon-gen-gitlab-ci = {
          type = "app";
          program = "${horizon-gen-gitlab-ci}/bin/gen-gitlab-ci";
Daniel Firth's avatar
Daniel Firth committed
        run-impure-tests = run-impure-tests-app;
Daniel Firth's avatar
Daniel Firth committed
      };

      checks = {
Daniel Firth's avatar
Daniel Firth committed
        dhall-format = lint-utils.outputs.linters.${system}.dhall-format { src = ./.; };
        nixpkgs-fmt = lint-utils.outputs.linters.${system}.nixpkgs-fmt { src = ./.; };
Daniel Firth's avatar
Daniel Firth committed
      };
Daniel Firth's avatar
Daniel Firth committed
      inherit legacyPackages;
Daniel Firth's avatar
Daniel Firth committed
      inherit packages;
Daniel Firth's avatar
Daniel Firth committed
    });