nix: nixfmt

This commit is contained in:
Serĉanto de Scio 2021-11-16 17:57:42 +10:00
parent b47099c01e
commit efe6ceb119
Signed by: sercanto
GPG key ID: 7DBA9F5689EFB6AA
3 changed files with 90 additions and 99 deletions

View file

@ -1,12 +1,12 @@
{ nixpkgs ? import <nixpkgs> {}, compiler ? "default"}: { nixpkgs ? import <nixpkgs> { }, compiler ? "default" }:
let let
inherit (nixpkgs) pkgs; inherit (nixpkgs) pkgs;
haskellPackages = if compiler == "default" haskellPackages = if compiler == "default" then
then pkgs.haskellPackages pkgs.haskellPackages
else pkgs.haskell.packages.${compiler}; else
mcwhirter-io = haskellPackages.callPackage ./mcwhirter-io.nix {}; pkgs.haskell.packages.${compiler};
in mcwhirter-io = haskellPackages.callPackage ./mcwhirter-io.nix { };
nixpkgs.stdenv.mkDerivation { in nixpkgs.stdenv.mkDerivation {
name = "mcwhirter-io-website"; name = "mcwhirter-io-website";
buildInputs = [ mcwhirter-io ]; buildInputs = [ mcwhirter-io ];
src = ./.; src = ./.;

View file

@ -19,29 +19,28 @@ let
pkgs.fetchzip { inherit (spec) url sha256; }; pkgs.fetchzip { inherit (spec) url sha256; };
fetch_git = spec: fetch_git = spec:
builtins.fetchGit { url = spec.repo; inherit (spec) rev ref; }; builtins.fetchGit {
url = spec.repo;
inherit (spec) rev ref;
};
fetch_builtin-tarball = spec: fetch_builtin-tarball = spec:
builtins.trace builtins.trace ''
'' WARNING:
WARNING: The niv type "builtin-tarball" will soon be deprecated. You should
The niv type "builtin-tarball" will soon be deprecated. You should instead use `builtin = true`.
instead use `builtin = true`.
$ niv modify <package> -a type=tarball -a builtin=true $ niv modify <package> -a type=tarball -a builtin=true
'' '' builtins_fetchTarball { inherit (spec) url sha256; };
builtins_fetchTarball { inherit (spec) url sha256; };
fetch_builtin-url = spec: fetch_builtin-url = spec:
builtins.trace builtins.trace ''
'' WARNING:
WARNING: The niv type "builtin-url" will soon be deprecated. You should
The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`.
instead use `builtin = true`.
$ niv modify <package> -a type=file -a builtin=true $ niv modify <package> -a type=file -a builtin=true
'' '' (builtins_fetchurl { inherit (spec) url sha256; });
(builtins_fetchurl { inherit (spec) url sha256; });
# #
# Various helpers # Various helpers
@ -51,84 +50,84 @@ let
mkPkgs = sources: mkPkgs = sources:
let let
sourcesNixpkgs = sourcesNixpkgs =
import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) {}; import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; })
{ };
hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath; hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
hasThisAsNixpkgsPath = <nixpkgs> == ./.; hasThisAsNixpkgsPath = <nixpkgs> == ./.;
in in if builtins.hasAttr "nixpkgs" sources then
if builtins.hasAttr "nixpkgs" sources sourcesNixpkgs
then sourcesNixpkgs else if hasNixpkgsPath && !hasThisAsNixpkgsPath then
else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then import <nixpkgs> { }
import <nixpkgs> {} else
else abort ''
abort Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
'' add a package called "nixpkgs" to your sources.json.
Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or '';
add a package called "nixpkgs" to your sources.json.
'';
# The actual fetching function. # The actual fetching function.
fetch = pkgs: name: spec: fetch = pkgs: name: spec:
if ! builtins.hasAttr "type" spec then if !builtins.hasAttr "type" spec then
abort "ERROR: niv spec ${name} does not have a 'type' attribute" abort "ERROR: niv spec ${name} does not have a 'type' attribute"
else if spec.type == "file" then fetch_file pkgs spec else if spec.type == "file" then
else if spec.type == "tarball" then fetch_tarball pkgs spec fetch_file pkgs spec
else if spec.type == "git" then fetch_git spec else if spec.type == "tarball" then
else if spec.type == "builtin-tarball" then fetch_builtin-tarball spec fetch_tarball pkgs spec
else if spec.type == "builtin-url" then fetch_builtin-url spec else if spec.type == "git" then
fetch_git spec
else if spec.type == "builtin-tarball" then
fetch_builtin-tarball spec
else if spec.type == "builtin-url" then
fetch_builtin-url spec
else else
abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}"; abort
"ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
# Ports of functions for older nix versions # Ports of functions for older nix versions
# a Nix version of mapAttrs if the built-in doesn't exist # a Nix version of mapAttrs if the built-in doesn't exist
mapAttrs = builtins.mapAttrs or ( mapAttrs = builtins.mapAttrs or (f: set:
f: set: with builtins; with builtins;
listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set)) listToAttrs (map (attr: {
); name = attr;
value = f attr set.${attr};
}) (attrNames set)));
# fetchTarball version that is compatible between all the versions of Nix # fetchTarball version that is compatible between all the versions of Nix
builtins_fetchTarball = { url, sha256 }@attrs: builtins_fetchTarball = { url, sha256 }@attrs:
let let inherit (builtins) lessThan nixVersion fetchTarball;
inherit (builtins) lessThan nixVersion fetchTarball; in if lessThan nixVersion "1.12" then
in fetchTarball { inherit url; }
if lessThan nixVersion "1.12" then else
fetchTarball { inherit url; } fetchTarball attrs;
else
fetchTarball attrs;
# fetchurl version that is compatible between all the versions of Nix # fetchurl version that is compatible between all the versions of Nix
builtins_fetchurl = { url, sha256 }@attrs: builtins_fetchurl = { url, sha256 }@attrs:
let let inherit (builtins) lessThan nixVersion fetchurl;
inherit (builtins) lessThan nixVersion fetchurl; in if lessThan nixVersion "1.12" then
in fetchurl { inherit url; }
if lessThan nixVersion "1.12" then else
fetchurl { inherit url; } fetchurl attrs;
else
fetchurl attrs;
# Create the final "sources" from the config # Create the final "sources" from the config
mkSources = config: mkSources = config:
mapAttrs ( mapAttrs (name: spec:
name: spec: if builtins.hasAttr "outPath" spec then
if builtins.hasAttr "outPath" spec abort
then abort "The values in sources.json should not have an 'outPath' attribute"
"The values in sources.json should not have an 'outPath' attribute" else
else spec // { outPath = fetch config.pkgs name spec; }) config.sources;
spec // { outPath = fetch config.pkgs name spec; }
) config.sources;
# The "config" used by the fetchers # The "config" used by the fetchers
mkConfig = mkConfig = { sourcesFile ? ./sources.json
{ sourcesFile ? ./sources.json
, sources ? builtins.fromJSON (builtins.readFile sourcesFile) , sources ? builtins.fromJSON (builtins.readFile sourcesFile)
, pkgs ? mkPkgs sources , pkgs ? mkPkgs sources }: rec {
}: rec {
# The sources, i.e. the attribute set of spec name to spec # The sources, i.e. the attribute set of spec name to spec
inherit sources; inherit sources;
# The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers # The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
inherit pkgs; inherit pkgs;
}; };
in in mkSources (mkConfig { }) // {
mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); } __functor = _: settings: mkSources (mkConfig settings);
}

View file

@ -1,9 +1,5 @@
let let sources = import ./nix/sources.nix;
sources = import ./nix/sources.nix; in { compiler ? "ghc883", pkgs ? import sources.nixpkgs { } }:
in
{ compiler ? "ghc883"
, pkgs ? import sources.nixpkgs { }
}:
let let
inherit (pkgs.lib.trivial) flip pipe; inherit (pkgs.lib.trivial) flip pipe;
@ -11,12 +7,10 @@ let
haskellPackages = pkgs.haskell.packages.${compiler}.override { haskellPackages = pkgs.haskell.packages.${compiler}.override {
overrides = hpNew: hpOld: { overrides = hpNew: hpOld: {
hakyll = hakyll = pipe hpOld.hakyll [
pipe (flip appendPatch ./hakyll.patch)
hpOld.hakyll (flip appendConfigureFlags [ "-f" "watchServer" "-f" "previewServer" ])
[ (flip appendPatch ./hakyll.patch) ];
(flip appendConfigureFlags [ "-f" "watchServer" "-f" "previewServer" ])
];
mcwhirter-io = hpNew.callCabal2nix "mcwhirter-io" ./. { }; mcwhirter-io = hpNew.callCabal2nix "mcwhirter-io" ./. { };
@ -25,21 +19,19 @@ let
}; };
project = haskellPackages.mcwhirter-io; project = haskellPackages.mcwhirter-io;
in in {
{
project = project; project = project;
shell = haskellPackages.shellFor { shell = haskellPackages.shellFor {
packages = p: with p; [ packages = p: with p; [ project ];
project #buildInputs = with haskellPackages; [
]; # ghcid
buildInputs = with haskellPackages; [ # hlint # or ormolu
ghcid # niv
hlint # or ormolu # pkgs.cacert # needed for niv
niv # pkgs.nix # needed for niv
pkgs.cacert # needed for niv # zlib
pkgs.nix # needed for niv #];
];
withHoogle = true; withHoogle = true;
}; };
} }