Merge pull request #42 from Profpatsch/explicit-nixpkgs-imports

Explicit nixpkgs imports
This commit is contained in:
Profpatsch 2020-12-01 23:40:52 +01:00 committed by GitHub
commit da01add18b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 59 additions and 22 deletions

View file

@ -16,6 +16,4 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: cachix/install-nix-action@v12 - uses: cachix/install-nix-action@v12
with:
nix_path: nixpkgs=channel:nixos-20.09
- run: ./test.sh - run: ./test.sh

View file

@ -16,14 +16,14 @@ You might choose to simply copy the derivations from this repository, or you can
``` ```
> nix repl > nix repl
nix-repl> pkgs = import <nixpkgs> {} nix-repl> pkgs = import ./nixpkgs.nix {}
nix-repl> drvs = import (pkgs.fetchFromGitHub { nix-repl> drvs = import (pkgs.fetchFromGitHub {
owner = "justinwoo"; owner = "justinwoo";
repo = "easy-dhall-nix"; repo = "easy-dhall-nix";
rev = # some REV rev = # some REV
sha256 = # some SHA sha256 = # some SHA
}) {} }) { inherit pkgs; }
nix-repl> drvs.dhall-simple nix-repl> drvs.dhall-simple
«derivation /nix/store/qz29jbplpmlvsbmq05084dh1fbs8sl0h-dhall-simple.drv» «derivation /nix/store/qz29jbplpmlvsbmq05084dh1fbs8sl0h-dhall-simple.drv»

View file

@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import ./nixpkgs.nix {} }:
{ {
dhall-simple = import ./dhall-simple.nix { dhall-simple = import ./dhall-simple.nix {

View file

@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import ./nixpkgs.nix {} }:
import ./build.nix { inherit pkgs; release = import ./release.nix; } { import ./build.nix { inherit pkgs; release = import ./release.nix; } {
simpleName = "dhall-bash-simple"; simpleName = "dhall-bash-simple";

View file

@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> { } }: { pkgs ? import ./nixpkgs.nix { } }:
import ./build.nix { inherit pkgs; release = import ./release.nix; } { import ./build.nix { inherit pkgs; release = import ./release.nix; } {
simpleName = "dhall-docs-simple"; simpleName = "dhall-docs-simple";

View file

@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import ./nixpkgs.nix {} }:
import ./build.nix { inherit pkgs; release = import ./release.nix; } { import ./build.nix { inherit pkgs; release = import ./release.nix; } {
simpleName = "dhall-json-simple"; simpleName = "dhall-json-simple";

View file

@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import ./nixpkgs.nix {} }:
import ./build.nix { inherit pkgs; release = import ./release.nix; } { import ./build.nix { inherit pkgs; release = import ./release.nix; } {
simpleName = "dhall-lsp-simple"; simpleName = "dhall-lsp-simple";

View file

@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import ./nixpkgs.nix {} }:
import ./build.nix { inherit pkgs; release = import ./release.nix; } { import ./build.nix { inherit pkgs; release = import ./release.nix; } {
simpleName = "dhall-nix-simple"; simpleName = "dhall-nix-simple";

View file

@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import ./nixpkgs.nix {} }:
import ./build.nix { inherit pkgs; release = import ./release.nix; } { import ./build.nix { inherit pkgs; release = import ./release.nix; } {
simpleName = "dhall-simple"; simpleName = "dhall-simple";

View file

@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import ./nixpkgs.nix {} }:
import ./build.nix { inherit pkgs; release = import ./release.nix; } { import ./build.nix { inherit pkgs; release = import ./release.nix; } {
simpleName = "dhall-yaml-simple"; simpleName = "dhall-yaml-simple";

View file

@ -1,5 +1,5 @@
#!/usr/bin/env nix-shell #!/usr/bin/env nix-shell
#!nix-shell -i python3 -p python3 curl nix #!nix-shell -I nixpkgs=./nixpkgs.nix -i python3 -p python3 curl nix
import json import json
import re import re
@ -11,6 +11,29 @@ def curl_latest_release():
url = "https://api.github.com/repos/dhall-lang/dhall-haskell/releases/latest" url = "https://api.github.com/repos/dhall-lang/dhall-haskell/releases/latest"
return json.loads(sub.check_output(["curl", url])) return json.loads(sub.check_output(["curl", url]))
# fetch the latest nixos unstable version
def curl_latest_nixos_unstable():
url = "https://nixos.org/channels/nixos-unstable/git-revision"
return sub.check_output(["curl", "--location", url]).strip().decode()
def update_nixpkgs(lockfile_path, new_hash):
# --unpack produces the hash required by `builtins.fetchTarball`
github_archive = "https://github.com/NixOS/nixpkgs/archive/{}.tar.gz".format(new_hash)
hash = sub.check_output([
"nix-prefetch-url", '--unpack', github_archive
]).strip().decode()
date = sub.check_output([
"date", "--iso-8601=minutes"
]).strip().decode()
with open(lockfile_path, 'w') as f:
json.dump({
"comment": "autogenerated by fetch.py",
"url": github_archive,
"sha256": hash,
"date": date
}, f, indent=2)
# call nix-prefetch-url on each asset to get their hashes # call nix-prefetch-url on each asset to get their hashes
def prefetch_binaries(release): def prefetch_binaries(release):
res = [] res = []
@ -39,11 +62,17 @@ def postprocess(fetched):
if __name__ == "__main__": if __name__ == "__main__":
print("updating nixpkgs to latest unstable", file=sys.stderr)
nixos_hash = curl_latest_nixos_unstable()
update_nixpkgs("./nixpkgs.json", nixos_hash)
release = curl_latest_release() release = curl_latest_release()
version = release['tag_name'] version = release['tag_name']
print("updating to release {}".format(version), file=sys.stderr) print("updating to release {}".format(version), file=sys.stderr)
fetched = prefetch_binaries(release) fetched = prefetch_binaries(release)
res = postprocess(fetched) res = postprocess(fetched)
print("writing ./release.json", file=sys.stderr) print("writing ./release.json", file=sys.stderr)
with open("./release.json", mode='w') as f: with open("./release.json", mode='w') as f:
json.dump(res, f, indent=2) json.dump(res, f, indent=2)

6
nixpkgs.json Normal file
View file

@ -0,0 +1,6 @@
{
"comment": "autogenerated by fetch.py",
"url": "https://github.com/NixOS/nixpkgs/archive/24eb3f87fc610f18de7076aee7c5a84ac5591e3e.tar.gz",
"sha256": "1ca14hhbinnz1ylbqnhwinjdbm6nn859j4gmyamg2kr7jl6611s0",
"date": "2020-11-30T23:28+01:00"
}

View file

@ -1,6 +1,6 @@
import ( import (fetchTarball {
builtins.fetchTarball { inherit (builtins.fromJSON (builtins.readFile ./nixpkgs.json))
url = "https://github.com/nixos/nixpkgs/archive/a7bf8161fa834a602278c15fcbdd955656b3aed8.tar.gz"; url
sha256 = "0lzd35niw0j8qy4mhglvqwv5qwyvdb9mhv8hpmn73ym57r92i4p1"; sha256
} ;
) })

View file

@ -1,4 +1,4 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import ./nixpkgs.nix {} }:
let let

View file

@ -1,4 +1,8 @@
#!/usr/bin/env sh #!/usr/bin/env sh
set -e set -e
test_script="$(nix-build ./test.nix)" tmp="$(mktemp -d)"
exec "$test_script" trap "rm -r $tmp" EXIT
nix-build \
--out-link "$tmp"/result \
./test.nix
"$tmp/result"