This commit is contained in:
Cadey Ratio 2020-03-15 09:24:55 -04:00
parent 7796082dbc
commit 1c2ff72eb1
7 changed files with 81 additions and 88 deletions

View File

@ -14,9 +14,7 @@ let
contents = [ pkg ]; contents = [ pkg ];
config = { config = { Cmd = [ "/bin/${pkg.name}" ]; };
Cmd = [ "/bin/${pkg.name}" ];
};
}; };
in dockerImage minica in dockerImage minica

View File

@ -14,9 +14,7 @@ let
contents = [ pkg ]; contents = [ pkg ];
config = { config = { Cmd = [ "/bin/${pkg.name}" ]; };
Cmd = [ "/bin/${pkg.name}" ];
};
}; };
in dockerImage moonplus in dockerImage moonplus

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,17 +50,16 @@ 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 Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
add a package called "nixpkgs" to your sources.json. add a package called "nixpkgs" to your sources.json.
''; '';
@ -71,64 +69,65 @@ let
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
if lessThan nixVersion "1.12" then
fetchTarball { inherit url; } fetchTarball { inherit url; }
else else
fetchTarball attrs; 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
if lessThan nixVersion "1.12" then
fetchurl { inherit url; } fetchurl { inherit url; }
else else
fetchurl attrs; 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; } spec // { outPath = fetch config.pkgs name spec; }) config.sources;
) 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,4 +1,3 @@
dir: dir:
builtins.filterSource builtins.filterSource
(path: type: type != "directory" || builtins.baseNameOf path != "target") (path: type: type != "directory" || builtins.baseNameOf path != "target") dir
dir

View File

@ -50,8 +50,7 @@ let
''; '';
}; };
in in {
{
appsluggr = out.appsluggr; appsluggr = out.appsluggr;
quickserv = out.quickserv; quickserv = out.quickserv;
johaus = out.johaus; johaus = out.johaus;