mirror of
https://github.com/nix-community/nix-on-droid.git
synced 2025-11-08 11:36:07 +01:00
Add nix-on-droid script
This commit is contained in:
parent
b7ad1d5d08
commit
5cc656fffc
3 changed files with 133 additions and 37 deletions
40
default.nix
40
default.nix
|
|
@ -1,39 +1,5 @@
|
|||
# Licensed under GNU Lesser General Public License v3 or later, see COPYING.
|
||||
# Copyright (c) 2019 Alexander Sosedkin and other contributors, see AUTHORS.
|
||||
|
||||
{ }:
|
||||
|
||||
let
|
||||
nixpkgs = import <nixpkgs> { };
|
||||
|
||||
pkgs = import ./src {
|
||||
arch = if nixpkgs.stdenv.hostPlatform.isArm then "aarch64" else "i686";
|
||||
initialBuild = false;
|
||||
};
|
||||
in
|
||||
{ pkgs ? import <nixpkgs> { } }:
|
||||
|
||||
{
|
||||
# inherit (pkgs) proot-termux;
|
||||
|
||||
basic-environment = nixpkgs.buildEnv {
|
||||
name = "basic-environment";
|
||||
|
||||
paths = [
|
||||
nixpkgs.bashInteractive
|
||||
nixpkgs.cacert
|
||||
nixpkgs.coreutils
|
||||
nixpkgs.less # since nix tools really want a pager available, #27
|
||||
nixpkgs.nix
|
||||
# pkgs.proot-termux
|
||||
pkgs.files.etc-group
|
||||
pkgs.files.etc-passwd
|
||||
pkgs.files.hm-install
|
||||
pkgs.files.home-nix-default
|
||||
pkgs.files.login
|
||||
pkgs.files.login-inner
|
||||
pkgs.files.nix-conf
|
||||
pkgs.files.nix-on-droid-linker
|
||||
pkgs.files.resolv-conf
|
||||
];
|
||||
};
|
||||
} // pkgs.files
|
||||
nix-on-droid = pkgs.callPackage ./nix-on-droid { };
|
||||
}
|
||||
|
|
|
|||
19
nix-on-droid/default.nix
Normal file
19
nix-on-droid/default.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Licensed under GNU Lesser General Public License v3 or later, see COPYING.
|
||||
# Copyright (c) 2019 Alexander Sosedkin and other contributors, see AUTHORS.
|
||||
|
||||
{ bash, coreutils, nix, runCommand }:
|
||||
|
||||
runCommand
|
||||
"nix-on-droid"
|
||||
{
|
||||
preferLocalBuild = true;
|
||||
allowSubstitutes = false;
|
||||
}
|
||||
''
|
||||
install -D -m755 ${./nix-on-droid.sh} $out/bin/nix-on-droid
|
||||
|
||||
substituteInPlace $out/bin/nix-on-droid \
|
||||
--subst-var-by bash "${bash}" \
|
||||
--subst-var-by coreutils "${coreutils}" \
|
||||
--subst-var-by nix "${nix}"
|
||||
''
|
||||
111
nix-on-droid/nix-on-droid.sh
Normal file
111
nix-on-droid/nix-on-droid.sh
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
#!@bash@/bin/bash
|
||||
|
||||
PATH=@coreutils@/bin:@nix@/bin:${PATH:+:}$PATH
|
||||
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
function errorEcho() {
|
||||
>&2 echo $@
|
||||
}
|
||||
|
||||
function doHelp() {
|
||||
echo "Usage: $0 [OPTION] COMMAND"
|
||||
echo
|
||||
echo "Options"
|
||||
echo
|
||||
echo " -v|--verbose Verbose output"
|
||||
echo " -n|--dry-run Do a dry run, only prints what actions would be taken"
|
||||
echo " -h|--help Print this help"
|
||||
echo
|
||||
echo "Options passed on to nix build"
|
||||
echo
|
||||
echo " --cores NUM"
|
||||
echo " --keep-failed"
|
||||
echo " --keep-going"
|
||||
echo " --max-jobs NUM"
|
||||
echo " --option NAME VALUE"
|
||||
echo " --show-trace"
|
||||
echo
|
||||
echo "Commands"
|
||||
echo
|
||||
echo " help Print this help"
|
||||
echo " switch Build and activate configuration"
|
||||
}
|
||||
|
||||
function doSwitch() {
|
||||
local profileDirectory="/nix/var/nix/profiles/nix-on-droid"
|
||||
|
||||
echo "Building activation package.."
|
||||
nix build \
|
||||
--no-link \
|
||||
--file "<nix-on-droid/modules>" \
|
||||
${PASSTHROUGH_OPTS[*]} \
|
||||
activationPackage
|
||||
|
||||
echo "Save profile activation package.."
|
||||
generationDir="$(nix path-info --file "<nix-on-droid/modules>" activationPackage)"
|
||||
nix-env --profile "${profileDirectory}" --set "${generationDir}"
|
||||
|
||||
echo "Run activation script.."
|
||||
"${generationDir}/activate"
|
||||
}
|
||||
|
||||
|
||||
COMMAND=
|
||||
PASSTHROUGH_OPTS=()
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
opt="$1"
|
||||
shift
|
||||
case $opt in
|
||||
help|switch)
|
||||
COMMAND="$opt"
|
||||
;;
|
||||
-h|--help)
|
||||
doHelp
|
||||
exit 0
|
||||
;;
|
||||
-n|--dry-run)
|
||||
export DRY_RUN=1
|
||||
;;
|
||||
--option)
|
||||
PASSTHROUGH_OPTS+=("$opt" "$1" "$2")
|
||||
shift 2
|
||||
;;
|
||||
--max-jobs|--cores)
|
||||
PASSTHROUGH_OPTS+=("$opt" "$1")
|
||||
shift
|
||||
;;
|
||||
--keep-failed|--keep-going|--show-trace)
|
||||
PASSTHROUGH_OPTS+=("$opt")
|
||||
;;
|
||||
-v|--verbose)
|
||||
export VERBOSE=1
|
||||
;;
|
||||
*)
|
||||
errorEcho "$0: unknown option '$opt'"
|
||||
errorEcho "Run '$0 --help' for usage help"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ -z $COMMAND ]]; then
|
||||
doHelp >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $COMMAND in
|
||||
switch)
|
||||
doSwitch
|
||||
;;
|
||||
help)
|
||||
doHelp
|
||||
;;
|
||||
*)
|
||||
errorEcho "Unknown command: $COMMAND"
|
||||
doHelp >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Loading…
Add table
Add a link
Reference in a new issue