summaryrefslogtreecommitdiff
path: root/install.sh
blob: a109c36b9c22bfe2d85f2ee3d93e978a6e8a4aff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env bash
#
set -euxo pipefail
#
if [[ -z "$1" ]]; then
  echo "usage: install.sh <file.nix>"
  echo "where <file.nix> is something from the 'profiles' directory"
  exit 1
else
  #
  mkdir -p ~/.config/nixpkgs
  NIXDIR="$HOME/.config/nixpkgs"
  HOMEFILE="$NIXDIR/home.nix"
  NIXFILE="$(pwd)/$1"
  #
  # start from scratch
  rm "$HOMEFILE"
  ln -s "$NIXFILE" "$HOMEFILE"
  rm "$NIXDIR/config.nix"
  ln -s "$(pwd)/lib/config.nix" "$NIXDIR/config.nix"
  #
  # the notmuch config location is by default ~/.notmuch-config, but home-manager
  # puts it at ~/.config/notmuch/notmuchrc (which makes sense) and then sets
  # NOTMUCH_CONFIG. however, if a program for some reason doesn't read
  # NOTMUCH_CONFIG (emacs), then it won't find the right config file, so I
  # override with a symlink.
  #
  mkdir -p ~/.config/notmuch
  [[ -e ~/.notmuch-config ]] || ln -s ~/.config/notmuch/notmuchrc ~/.notmuch-config
  #
  # symlinking must occur before initial generation. now we can install, and
  # pin our own nixpkgs.
  #
  #nix-channel --update
  NIX_PATH=$HOME/.nix-defexpr/channels${NIX_PATH:+:}$NIX_PATH \
      nix-shell . -A install
      #nix-shell '<home-manager>' -A install
fi