diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..5d231d5 --- /dev/null +++ b/default.nix @@ -0,0 +1,53 @@ +{ pkgs ? import { } }: + +rec { + basic-environment = pkgs.buildEnv { + name = "basic-environment"; + + paths = with pkgs; [ + bashInteractive + cacert + coreutils + hm-install + nix + nix-on-droid-linker + ]; + }; + + hm-install = pkgs.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..." + ${pkgs.nix}/bin/nix-channel --add https://github.com/rycee/home-manager/archive/master.tar.gz home-manager + echo "Updating channels..." + ${pkgs.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 ..." + ${pkgs.coreutils}/bin/mkdir -p $HOME/.config/nixpkgs + ${pkgs.coreutils}/bin/cp -n /etc/home.nix.default $HOME/.config/nixpkgs/home.nix + fi + + echo "Uninstalling basic-environment..." + ${pkgs.nix}/bin/nix-env --uninstall basic-environment + echo "Installing home-manager..." + ${pkgs.nix}/bin/nix run nixpkgs.nix -c ${pkgs.nix}/bin/nix-shell '' -A install + ''; + + nix-on-droid-linker = pkgs.writeScriptBin "nix-on-droid-linker" '' + #!/usr/bin/env sh + set -e + + echo "Linking ~/.nix-profile/bin/sh to /bin/sh" + ${pkgs.coreutils}/bin/ln -snf $HOME/.nix-profile/bin/sh /bin/sh + echo "Linking ~/.nix-profile/usr/bin/env to /usr/bin/env" + ${pkgs.coreutils}/bin/ln -snf $HOME/.nix-profile/bin/env /usr/bin/env + ''; +}