mirror of
https://github.com/nix-community/nix-on-droid.git
synced 2025-11-08 19:46: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.
|
{ pkgs ? import <nixpkgs> { } }:
|
||||||
# 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
|
|
||||||
|
|
||||||
{
|
{
|
||||||
# inherit (pkgs) proot-termux;
|
nix-on-droid = pkgs.callPackage ./nix-on-droid { };
|
||||||
|
}
|
||||||
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
|
|
||||||
|
|
|
||||||
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