Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
W
walint
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
hub
walint
Commits
959261fa
Unverified
Commit
959261fa
authored
3 years ago
by
stuebinm
Browse files
Options
Downloads
Patches
Plain Diff
pin nixpkgs
parent
9ac0a2e2
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
build.nix
+5
-0
5 additions, 0 deletions
build.nix
nix/sources.json
+26
-0
26 additions, 0 deletions
nix/sources.json
nix/sources.nix
+174
-0
174 additions, 0 deletions
nix/sources.nix
with
205 additions
and
0 deletions
build.nix
0 → 100644
+
5
−
0
View file @
959261fa
let
sources
=
import
./nix/sources.nix
{};
nixpkgs
=
import
sources
.
nixpkgs
{};
in
nixpkgs
.
haskellPackages
.
callPackage
./default.nix
{}
This diff is collapsed.
Click to expand it.
nix/sources.json
0 → 100644
+
26
−
0
View file @
959261fa
{
"niv"
:
{
"branch"
:
"master"
,
"description"
:
"Easy dependency management for Nix projects"
,
"homepage"
:
"https://github.com/nmattia/niv"
,
"owner"
:
"nmattia"
,
"repo"
:
"niv"
,
"rev"
:
"65a61b147f307d24bfd0a5cd56ce7d7b7cc61d2e"
,
"sha256"
:
"17mirpsx5wyw262fpsd6n6m47jcgw8k2bwcp1iwdnrlzy4dhcgqh"
,
"type"
:
"tarball"
,
"url"
:
"https://github.com/nmattia/niv/archive/65a61b147f307d24bfd0a5cd56ce7d7b7cc61d2e.tar.gz"
,
"url_template"
:
"https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixpkgs"
:
{
"branch"
:
"21.05"
,
"description"
:
"Nix Packages collection"
,
"homepage"
:
""
,
"owner"
:
"NixOS"
,
"repo"
:
"nixpkgs"
,
"rev"
:
"7e9b0dff974c89e070da1ad85713ff3c20b0ca97"
,
"sha256"
:
"1ckzhh24mgz6jd1xhfgx0i9mijk6xjqxwsshnvq789xsavrmsc36"
,
"type"
:
"tarball"
,
"url"
:
"https://github.com/NixOS/nixpkgs/archive/7e9b0dff974c89e070da1ad85713ff3c20b0ca97.tar.gz"
,
"url_template"
:
"https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
}
}
This diff is collapsed.
Click to expand it.
nix/sources.nix
0 → 100644
+
174
−
0
View file @
959261fa
# This file has been generated by Niv.
let
#
# The fetchers. fetch_<type> fetches specs of type <type>.
#
fetch_file
=
pkgs
:
name
:
spec
:
let
name
'
=
sanitizeName
name
+
"-src"
;
in
if
spec
.
builtin
or
true
then
builtins_fetchurl
{
inherit
(
spec
)
url
sha256
;
name
=
name
'
;
}
else
pkgs
.
fetchurl
{
inherit
(
spec
)
url
sha256
;
name
=
name
'
;
};
fetch_tarball
=
pkgs
:
name
:
spec
:
let
name
'
=
sanitizeName
name
+
"-src"
;
in
if
spec
.
builtin
or
true
then
builtins_fetchTarball
{
name
=
name
'
;
inherit
(
spec
)
url
sha256
;
}
else
pkgs
.
fetchzip
{
name
=
name
'
;
inherit
(
spec
)
url
sha256
;
};
fetch_git
=
name
:
spec
:
let
ref
=
if
spec
?
ref
then
spec
.
ref
else
if
spec
?
branch
then
"refs/heads/
${
spec
.
branch
}
"
else
if
spec
?
tag
then
"refs/tags/
${
spec
.
tag
}
"
else
abort
"In git source '
${
name
}
': Please specify `ref`, `tag` or `branch`!"
;
in
builtins
.
fetchGit
{
url
=
spec
.
repo
;
inherit
(
spec
)
rev
;
inherit
ref
;
};
fetch_local
=
spec
:
spec
.
path
;
fetch_builtin-tarball
=
name
:
throw
''[
${
name
}
] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`.
$ niv modify
${
name
}
-a type=tarball -a builtin=true''
;
fetch_builtin-url
=
name
:
throw
''[
${
name
}
] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`.
$ niv modify
${
name
}
-a type=file -a builtin=true''
;
#
# Various helpers
#
# https://github.com/NixOS/nixpkgs/pull/83241/files#diff-c6f540a4f3bfa4b0e8b6bafd4cd54e8bR695
sanitizeName
=
name
:
(
concatMapStrings
(
s
:
if
builtins
.
isList
s
then
"-"
else
s
)
(
builtins
.
split
"[^[:alnum:]+._?=-]+"
((
x
:
builtins
.
elemAt
(
builtins
.
match
"
\\
.*(.*)"
x
)
0
)
name
)
)
);
# The set of packages used when specs are fetched using non-builtins.
mkPkgs
=
sources
:
system
:
let
sourcesNixpkgs
=
import
(
builtins_fetchTarball
{
inherit
(
sources
.
nixpkgs
)
url
sha256
;
})
{
inherit
system
;
};
hasNixpkgsPath
=
builtins
.
any
(
x
:
x
.
prefix
==
"nixpkgs"
)
builtins
.
nixPath
;
hasThisAsNixpkgsPath
=
<
nixpkgs
>
==
./.
;
in
if
builtins
.
hasAttr
"nixpkgs"
sources
then
sourcesNixpkgs
else
if
hasNixpkgsPath
&&
!
hasThisAsNixpkgsPath
then
import
<
nixpkgs
>
{}
else
abort
''
Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
add a package called "nixpkgs" to your sources.json.
''
;
# The actual fetching function.
fetch
=
pkgs
:
name
:
spec
:
if
!
builtins
.
hasAttr
"type"
spec
then
abort
"ERROR: niv spec
${
name
}
does not have a 'type' attribute"
else
if
spec
.
type
==
"file"
then
fetch_file
pkgs
name
spec
else
if
spec
.
type
==
"tarball"
then
fetch_tarball
pkgs
name
spec
else
if
spec
.
type
==
"git"
then
fetch_git
name
spec
else
if
spec
.
type
==
"local"
then
fetch_local
spec
else
if
spec
.
type
==
"builtin-tarball"
then
fetch_builtin-tarball
name
else
if
spec
.
type
==
"builtin-url"
then
fetch_builtin-url
name
else
abort
"ERROR: niv spec
${
name
}
has unknown type
${
builtins
.
toJSON
spec
.
type
}
"
;
# If the environment variable NIV_OVERRIDE_${name} is set, then use
# the path directly as opposed to the fetched source.
replace
=
name
:
drv
:
let
saneName
=
stringAsChars
(
c
:
if
isNull
(
builtins
.
match
"[a-zA-Z0-9]"
c
)
then
"_"
else
c
)
name
;
ersatz
=
builtins
.
getEnv
"NIV_OVERRIDE_
${
saneName
}
"
;
in
if
ersatz
==
""
then
drv
else
# this turns the string into an actual Nix path (for both absolute and
# relative paths)
if
builtins
.
substring
0
1
ersatz
==
"/"
then
/.
+
ersatz
else
/.
+
builtins
.
getEnv
"PWD"
+
"/
${
ersatz
}
"
;
# Ports of functions for older nix versions
# a Nix version of mapAttrs if the built-in doesn't exist
mapAttrs
=
builtins
.
mapAttrs
or
(
f
:
set
:
with
builtins
;
listToAttrs
(
map
(
attr
:
{
name
=
attr
;
value
=
f
attr
set
.
${
attr
};
})
(
attrNames
set
))
);
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295
range
=
first
:
last
:
if
first
>
last
then
[]
else
builtins
.
genList
(
n
:
first
+
n
)
(
last
-
first
+
1
);
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257
stringToCharacters
=
s
:
map
(
p
:
builtins
.
substring
p
1
s
)
(
range
0
(
builtins
.
stringLength
s
-
1
));
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269
stringAsChars
=
f
:
s
:
concatStrings
(
map
f
(
stringToCharacters
s
));
concatMapStrings
=
f
:
list
:
concatStrings
(
map
f
list
);
concatStrings
=
builtins
.
concatStringsSep
""
;
# https://github.com/NixOS/nixpkgs/blob/8a9f58a375c401b96da862d969f66429def1d118/lib/attrsets.nix#L331
optionalAttrs
=
cond
:
as
:
if
cond
then
as
else
{};
# fetchTarball version that is compatible between all the versions of Nix
builtins_fetchTarball
=
{
url
,
name
?
null
,
sha256
}
@
attrs
:
let
inherit
(
builtins
)
lessThan
nixVersion
fetchTarball
;
in
if
lessThan
nixVersion
"1.12"
then
fetchTarball
({
inherit
url
;
}
//
(
optionalAttrs
(
!
isNull
name
)
{
inherit
name
;
}))
else
fetchTarball
attrs
;
# fetchurl version that is compatible between all the versions of Nix
builtins_fetchurl
=
{
url
,
name
?
null
,
sha256
}
@
attrs
:
let
inherit
(
builtins
)
lessThan
nixVersion
fetchurl
;
in
if
lessThan
nixVersion
"1.12"
then
fetchurl
({
inherit
url
;
}
//
(
optionalAttrs
(
!
isNull
name
)
{
inherit
name
;
}))
else
fetchurl
attrs
;
# Create the final "sources" from the config
mkSources
=
config
:
mapAttrs
(
name
:
spec
:
if
builtins
.
hasAttr
"outPath"
spec
then
abort
"The values in sources.json should not have an 'outPath' attribute"
else
spec
//
{
outPath
=
replace
name
(
fetch
config
.
pkgs
name
spec
);
}
)
config
.
sources
;
# The "config" used by the fetchers
mkConfig
=
{
sourcesFile
?
if
builtins
.
pathExists
./sources.json
then
./sources.json
else
null
,
sources
?
if
isNull
sourcesFile
then
{}
else
builtins
.
fromJSON
(
builtins
.
readFile
sourcesFile
)
,
system
?
builtins
.
currentSystem
,
pkgs
?
mkPkgs
sources
system
}:
rec
{
# The sources, i.e. the attribute set of spec name to spec
inherit
sources
;
# The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
inherit
pkgs
;
};
in
mkSources
(
mkConfig
{})
//
{
__functor
=
_
:
settings
:
mkSources
(
mkConfig
settings
);
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment