diff --git a/src/pkgs/files/default.nix b/src/pkgs/files/default.nix index fdd0961..d443946 100644 --- a/src/pkgs/files/default.nix +++ b/src/pkgs/files/default.nix @@ -21,6 +21,8 @@ let in { + hmInstall = callPackage ./hm-install.nix { }; + homeNixDefault = writeTextDir "etc/home.nix.default" (builtins.readFile ./raw/home.nix.default); login = callPackage ./login.nix { }; @@ -33,6 +35,8 @@ in trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-on-droid.cachix.org-1:56snoMJTXmDRC1Ei24CmKoUqvHJ9XCp+nidK7qkMQrU= ''; + nixOnDroidLinker = callPackage ./nix-on-droid-linker.nix { }; + resolvConf = writeTextDir "etc/resolv.conf" '' nameserver 1.1.1.1 nameserver 8.8.8.8 diff --git a/src/pkgs/files/hm-install.nix b/src/pkgs/files/hm-install.nix new file mode 100644 index 0000000..3c2c9d9 --- /dev/null +++ b/src/pkgs/files/hm-install.nix @@ -0,0 +1,31 @@ +# Licensed under GNU Lesser General Public License v3 or later, see COPYING. +# Copyright (c) 2019 Alexander Sosedkin and other contributors, see AUTHORS. + +{ coreutils, instDir, nix, writeScriptBin }: + +writeScriptBin "hm-install" '' + #!/usr/bin/env sh + set -e + + if [ -e $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh ]; then + echo "You already have home-manager installed." + fi + + echo "Subscribing to home-manager channel..." + ${nix}/bin/nix-channel --add https://github.com/rycee/home-manager/archive/master.tar.gz home-manager + echo "Updating channels..." + ${nix}/bin/nix-channel --update + + export NIX_PATH=$HOME/.nix-defexpr/channels''${NIX_PATH:+:}$NIX_PATH + + if [ ! -e $HOME/.config/nixpkgs/home.nix ]; then + echo "Creating an initial home-manager configuration in ~/.config/nixpkgs/home.nix ..." + ${coreutils}/bin/mkdir -p $HOME/.config/nixpkgs + ${coreutils}/bin/cp -n /etc/home.nix.default $HOME/.config/nixpkgs/home.nix + fi + + echo "Uninstalling basic-environment..." + ${nix}/bin/nix-env --uninstall basic-environment + echo "Installing home-manager..." + ${nix}/bin/nix run nixpkgs.nix -c ${nix}/bin/nix-shell '' -A install +'' diff --git a/src/pkgs/files/nix-on-droid-linker.nix b/src/pkgs/files/nix-on-droid-linker.nix new file mode 100644 index 0000000..f7f3d99 --- /dev/null +++ b/src/pkgs/files/nix-on-droid-linker.nix @@ -0,0 +1,28 @@ +# Licensed under GNU Lesser General Public License v3 or later, see COPYING. +# Copyright (c) 2019 Alexander Sosedkin and other contributors, see AUTHORS. + +{ coreutils, writeScriptBin }: + +writeScriptBin "nix-on-droid-linker" '' + #!/usr/bin/env sh + set -e + + link() { + local from="$1" + local to="$2" + + echo "Linking ~/.nix-profile/$from to /$to" + ${coreutils}/bin/mkdir -p $(dirname /$to) + ${coreutils}/bin/ln -snf $HOME/.nix-profile/$from /$to + } + + for i in login login-inner proot sh; do + link bin/$i bin/$i + done + + for i in home.nix.default nix/nix.conf resolv.conf; do + link etc/$i etc/$i + done + + link bin/env usr/bin/env +''