Skip to content

Instantly share code, notes, and snippets.

@573
Last active April 28, 2022 11:03
Show Gist options
  • Save 573/034993196868494bde76d043a6ce72ec to your computer and use it in GitHub Desktop.
Save 573/034993196868494bde76d043a6ce72ec to your computer and use it in GitHub Desktop.
how to initially set up home-manager

Put this in a vim buffer and in command mode run :w !bash to execute buffer contents via bash:

If you get something along

/nix/store/61mibb0k5mxnsxzb4x2737cbysn4c5ha-home-manager/bin/home-manager: line 71: NIX_PATH: unbound variable

check if you have run this already:

. ~/.nix-profile/etc/profile.d/nix.sh

In the home.nix this translates to:

profileExtra = ''
. "${config.home.profileDirectory}/etc/profile.d/nix.sh"                                          
'';
nix-shell --show-trace -E 'with import (builtins.fetchTarball { url = "https://github.com/NixOS/nixpkgs/archive/release-20.03.tar.gz";sha256 = "03sifcpkc3prszaycd6snvpxam66phmj0b7m4723l5dmmsyq4bkw";}) {}; mkShell { buildInputs = [ (callPackage ~/.config/nixpkgs/home-sources.nix {}).home-manager ]; }' -I nixpkgs=channel:nixos-20.03 --run "home-manager -I nixpkgs=channel:nixos-20.03 -b backup -f ~/.config/nixpkgs/home.nix switch"

try as well

NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs/archive/6834d03bb5614e0bf3b5f272728fdef25e8397c9.tar.gz nix-shell --show-trace -E 'with import <nixpkgs> {}; mkShell { buildInputs = [ (callPackage ~/.config/nixpkgs/home-sources.nix {}).home-manager ]; }' --run "home-manager -b backup -f ~/.config/nixpkgs/home.nix switch"

but then with

{ pkgs ? import <nixpkgs> {} }:
with pkgs;
{
  home-manager = let
    src = builtins.fetchGit {
      name = "home-manager";
      url = https://github.com/nix-community/home-manager;
      ref = "master";
    };
  in callPackage "${src}/home-manager" { path = "${src}"; };
}

as nixpkgs tracks a commit from master.

Assuming https://discourse.nixos.org/t/home-manager-installation-questions/7204/5

TODO divnix/digga#10
https://github.com/rycee/home-manager/blob/master/modules/misc/xdg.nix
https://github.com/jonringer/nixpkgs-config/blob/master/vim.nix
https://github.com/NixOS/nixpkgs/blob/d9e6beab26fea286c4d2a31c6c9d52c608214a40/nixos/modules/services/misc/nix-daemon.nix
nix-community/home-manager#1267
https://discourse.nixos.org/t/can-i-run-nix-instantiate-eval-strict-on-my-configuration-nix/7105/3
https://discourse.nixos.org/t/home-manager-real-dry-run/5663
https://tech.ingolf-wagner.de/nixos/nix-instantiate/
https://github.com/rycee/home-manager/blob/0869e237007aa48f458c9d9ba9080280565a7160/doc/release-notes/rl-2009.adoc#state-version-changes
https://github.com/rycee/home-manager/search?q=config.xdg.&unscoped_q=config.xdg.
On behalf of xdg (xdg = { enable = true; }) https://github.com/jwiegley/nix-config/blob/master/config/home.nix#L632
nix.conf nix-darwin/nix-darwin#149

Troubleshooting

With NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs/archive/80097e57c90cd95ef55589a5fa9e06bad51d3746.tar.gz

builder for '/nix/store/a15325qpw668z3h2lz6db718a6h1sz3j-cmake-boot-3.18.4.drv' failed with exit code 2

With (...)d28565a1c6d6127b8bb13c76dbec425c0806ccaf(...)

builder for '/nix/store/jfn9a3x9hjmclm5128sml6cn30m4m5in-llvm-10.0.1.drv' failed with exit code 2

I tried setting (IDK if/how that impacts the build)

  nix.useSandbox = false;
  nix.trustedBinaryCaches = [ "https://hydra.nixos.org/" ];

in ~/config/nixpkgs/config.nix and then restarted the build with (latest "green" commit on master, https://status.nixos.org/):

NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs/archive/30c2fb65feaf1068b1c413a0b75470afd351c291.tar.gz nix-shell --show-trace -E 'with import <nixpkgs> {}; mkShell { buildInputs = [ (callPackage ~/.config/nixpkgs/home-sources.nix {}).home-manager ]; }' --run "home-manager -b backup -f ~/.config/nixpkgs/home.nix switch"

Fails as well:

RPATH of binary /nix/store/5944gb4vv6d2njpcv9ym1s4nk9i8qm7f-autogen-5.18.16-bin/bin/autogen contains a forbidden reference to /tmp/nix-build-autogen-5.18.16.drv-0/ builder for '/nix/store/s5sjp5mx3qkyp6hjra78w2bjrdhxv2m8-autogen-5.18.16.drv' failed with exit code 1

Trying with home-manager release-20.09 and ("green" commit on release-20.09)

NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs/archive/85abeab48b5feda4b163e5bb32f50aad1164e415.tar.gz nix-shell --show-trace -E 'with import <nixpkgs> {}; mkShell { buildInputs = [ (callPackage ~/.config/nixpkgs/home-sources.nix {}).home-manager ]; }' --run "home-manager -b backup -f ~/.config/nixpkgs/home.nix switch"

Failing

RPATH of binary /nix/store/w01la776lpvg0r16bcbwi7l343y4ss0g-autogen-5.18.16-bin/bin/autogen contains a forbidden reference to /tmp/nix-build-autogen-5.18.16.drv-0/ builder for '/nix/store/dryipwqnp3igvk9qb3wnk3y77blg9fpy-autogen-5.18.16.drv' failed with exit code 1

Retrying with nix reinstall

Remove /nix first then use https://releases.nixos.org/nix/nix-2.3.8/install (via https://releases.nixos.org/)

Use as nix.conf:

sandbox = false
trusted-substituters = https://hydra.nixos.org/
allowed-users = me root
use-sqlite-wal = false

If errors:

NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs/archive/85abeab48b5feda4b163e5bb32f50aad1164e415.tar.gz nix-shell -p nix-info --run "nix-info -m"

Failing same (autogen) error.

Probably related, also mentioned in HM page NixOS/nix#2033

https://dopp.sk/posts/NixOS_channels/
NixOS/nix#4110 and links therein
Retrying (https://nix.dev/reference/pinning-nixpkgs.html):

NIX_PATH=nixpkgs=http://nixos.org/channels/nixos-20.09/nixexprs.tar.xz:home-manager=https://github.com/nix-community/home-manager/archive/release-20.09.tar.gz ...

Took the hint from NixOS/nixpkgs#106165 to deactivate my overlays first, then reinstalled, succeeded. So first:

cd ~/.config/nixpkgs/overlays
for name in *\.nix; do newname=${name%\.nix}.preinstall-deactivated-nix; mv $name $newname; done

And then (using pinning approach, https://nix.dev/reference/pinning-nixpkgs.html):

NIX_PATH=nixpkgs=http://nixos.org/channels/nixos-20.09/nixexprs.tar.xz:home-manager=https://github.com/nix-community/home-manager/archive/release-20.09.tar.gz nix-shell --show-trace -E 'with import {}; mkShell { buildInputs = [ (callPackage ~/.config/nixpkgs/home-sources.nix {}).home-manager ]; }' --run "home-manager -b backup -f ~/.config/nixpkgs/home.nix switch"

succeeds ! (TODO Find offending overlay or add the one mentioned in NixOS/nixpkgs#106165)

Right now testing:

NIX_PATH=nixpkgs=https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz:home-manager=https://github.com/nix-community/home-manager/archive/master.tar.gz nix-shell --show-trace -E 'with import {}; mkShell { buildInputs = [ (callPackage ~/.config/nixpkgs/home-sources.nix {}).home-manager ]; }' --run "home-manager -b backup -f ~/.config/nixpkgs/home.nix switch"

Succeeds!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment