File tree Expand file tree Collapse file tree 3 files changed +122
-0
lines changed Expand file tree Collapse file tree 3 files changed +122
-0
lines changed Original file line number Diff line number Diff line change 1+ # Generated by npins. Do not modify; will be overwritten regularly
2+ let
3+ data = builtins . fromJSON ( builtins . readFile ./sources.json ) ;
4+ version = data . version ;
5+
6+ mkSource =
7+ spec :
8+ assert spec ? type ;
9+ let
10+ path =
11+ if spec . type == "Git" then
12+ mkGitSource spec
13+ else if spec . type == "GitRelease" then
14+ mkGitSource spec
15+ else if spec . type == "PyPi" then
16+ mkPyPiSource spec
17+ else if spec . type == "Channel" then
18+ mkChannelSource spec
19+ else
20+ builtins . throw "Unknown source type ${ spec . type } " ;
21+ in
22+ spec // { outPath = path ; } ;
23+
24+ mkGitSource =
25+ {
26+ repository ,
27+ revision ,
28+ url ? null ,
29+ hash ,
30+ branch ? null ,
31+ ...
32+ } :
33+ assert repository ? type ;
34+ # At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository
35+ # In the latter case, there we will always be an url to the tarball
36+ if url != null then
37+ ( builtins . fetchTarball {
38+ inherit url ;
39+ sha256 = hash ; # FIXME: check nix version & use SRI hashes
40+ } )
41+ else
42+ assert repository . type == "Git" ;
43+ let
44+ urlToName =
45+ url : rev :
46+ let
47+ matched = builtins . match "^.*/([^/]*)(\\ .git)?$" repository . url ;
48+
49+ short = builtins . substring 0 7 rev ;
50+
51+ appendShort = if ( builtins . match "[a-f0-9]*" rev ) != null then "-${ short } " else "" ;
52+ in
53+ "${ if matched == null then "source" else builtins . head matched } ${ appendShort } " ;
54+ name = urlToName repository . url revision ;
55+ in
56+ builtins . fetchGit {
57+ url = repository . url ;
58+ rev = revision ;
59+ inherit name ;
60+ # hash = hash;
61+ } ;
62+
63+ mkPyPiSource =
64+ { url , hash , ... } :
65+ builtins . fetchurl {
66+ inherit url ;
67+ sha256 = hash ;
68+ } ;
69+
70+ mkChannelSource =
71+ { url , hash , ... } :
72+ builtins . fetchTarball {
73+ inherit url ;
74+ sha256 = hash ;
75+ } ;
76+ in
77+ if version == 3 then
78+ builtins . mapAttrs ( _ : mkSource ) data . pins
79+ else
80+ throw "Unsupported format version ${ toString version } in sources.json. Try running `npins upgrade`"
Original file line number Diff line number Diff line change 1+ {
2+ "pins" : {
3+ "nixpkgs" : {
4+ "type" : " Channel" ,
5+ "name" : " nixpkgs-unstable" ,
6+ "url" : " https://releases.nixos.org/nixpkgs/nixpkgs-24.11pre683804.a1d92660c6b3/nixexprs.tar.xz" ,
7+ "hash" : " 0lzd1g9x7ihscdajc2g9f0jyykymw6r1lq2ir5g0shjzjf0jc5la"
8+ }
9+ },
10+ "version" : 3
11+ }
Original file line number Diff line number Diff line change 1+ let
2+ sources = import ./npins ;
3+ pkgs = import sources . nixpkgs {
4+ config . android_sdk . accept_license = true ;
5+ } ;
6+ jdk = pkgs . jdk17_headless ;
7+ # note: can use pkgs.androidenv.androidPkgs.androidsdk
8+ # but it pulls in lots of toolchains see https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/mobile/androidenv/default.nix#L18
9+ androidSdk' =
10+ ( pkgs . androidenv . composeAndroidPackages {
11+ platformVersions = [ "33" ] ;
12+ includeEmulator = false ;
13+ includeSystemImages = false ;
14+ includeNDK = false ;
15+ } ) . androidsdk ;
16+ in
17+ ( pkgs . buildFHSUserEnv {
18+ name = "android-sdk" ;
19+ targetPkgs =
20+ pkgs :
21+ ( with pkgs ; [
22+ androidSdk'
23+ glibc
24+ nixfmt-rfc-style
25+ ] ) ;
26+ runScript = pkgs . writeScript "init.sh" ''
27+ export JAVA_HOME=${ jdk }
28+ export PATH="${ jdk } /bin:$PATH"
29+ exec bash
30+ '' ;
31+ } ) . env
You can’t perform that action at this time.
0 commit comments