nix: set NIX_PATH per device versions at buildtime

Previously all devices would have NIX_PATH set on the common verion file
defindd in *nix/variables/versions.nix*. Now NIX_PATH is populated with
the versions of the respective device.
This commit is contained in:
steveej 2020-10-16 22:31:01 +02:00
parent 3bcf7b0397
commit 522d7279bd
10 changed files with 77 additions and 48 deletions

View file

@ -1,8 +1,6 @@
{ versionsPath }:
{
channelSources =
let
let
channelVersions = (import versionsPath);
mkChannelSource = channel:
let
@ -17,7 +15,7 @@
ref = (builtins.getAttr channel channelVersions)."ref";
rev = (builtins.getAttr channel channelVersions)."rev";
};
nix_path = builtins.foldl' (sum: elem: sum +":" + builtins.concatStringsSep "=" elem) "" [
nixPath = builtins.foldl' (sum: elem: sum +":" + builtins.concatStringsSep "=" elem) "" [
[ "nixpkgs" (mkChannelSource "channelsNixosStable") ]
[ "nixos" (mkChannelSource "channelsNixosStable" + "/nixos") ]
[ "channels-nixos-stable" (mkChannelSource "channelsNixosStable") ]
@ -25,7 +23,12 @@
[ "nixpkgs-master" (mkChannelSource "nixpkgsMaster") ]
[ "home-manager-module" (mkChannelSource "homeManagerModule") ]
];
in (import (mkChannelSource "channelsNixosStable") {}).writeText "channels.rc" ''
export NIX_PATH=${nix_path}
pkgs = import (mkChannelSource "channelsNixosStable") {};
in
{
inherit nixPath;
channelSources = pkgs.writeText "channels.rc" ''
export NIX_PATH=${nixPath}
'';
}
}

View file

@ -1,3 +1,9 @@
{ pkgs }:
let
zshCurried = import ../programs/zsh.nix { inherit pkgs; };
in
{ pkgs
, config
, ... }:
@ -20,7 +26,7 @@ in {
../programs/libreoffice.nix
../programs/neovim.nix
../programs/pass.nix
../programs/zsh.nix
zshCurried
];
nixpkgs.config = {

View file

@ -1,3 +1,9 @@
{ pkgs }:
let
zshCurried = import ../programs/zsh.nix { inherit pkgs; };
in
{ pkgs
, config,
... }:
@ -17,7 +23,7 @@ in {
../programs/libreoffice.nix
../programs/neovim.nix
../programs/pass.nix
../programs/zsh.nix
zshCurried
];
nixpkgs.config = {

View file

@ -1,3 +1,9 @@
{ pkgs }:
let
zshCurried = import ../programs/zsh.nix { inherit pkgs; };
in
{ pkgs
, config
, ... }:
@ -9,7 +15,7 @@ in {
../profiles/common.nix
../profiles/nix-channels.nix
../programs/neovim.nix
../programs/zsh.nix
zshCurried
];
nixpkgs.config = {

View file

@ -1,13 +1,8 @@
{ pkgs
, config
, ...
}:
{ pkgs }:
{ ... }:
let
channelSources = (import ../../default.nix {
versionsPath = ../../variables/versions.nix;
}).channelSources;
just-plugin =
let
plugin_file = pkgs.writeText "_just" ''
@ -71,7 +66,7 @@ in {
# don't cd into directories when executed
unsetopt AUTO_CD
source ${channelSources}
export NIX_PATH="${pkgs.nixPath}"
# print lines without termination
setopt PROMPT_CR

View file

@ -1,9 +1,12 @@
{
...
{ pkgs
, ...
}:
{
home-manager.users.steveej = import ../../../home-manager/configuration/graphical-fullblown.nix;
nixpkgs.config.packageOverrides = pkgs: with pkgs; {
nixPath = (import ../../../default.nix { versionsPath = ./versions.nix; }).nixPath;
};
home-manager.users.steveej = import ../../../home-manager/configuration/graphical-fullblown.nix { inherit pkgs; };
services.teamviewer.enable = true;
system.stateVersion = "19.09";
}

View file

@ -5,7 +5,10 @@
}:
{
home-manager.users.steveej = import ../../../home-manager/configuration/text-minimal.nix;
nixpkgs.config.packageOverrides = pkgs: with pkgs; {
nixPath = (import ../../../default.nix { versionsPath = ./versions.nix; }).nixPath;
};
home-manager.users.steveej = import ../../../home-manager/configuration/text-minimal.nix { inherit pkgs; };
services.hydra = {
enable = false;

View file

@ -6,7 +6,7 @@
imports = [
"${<home-manager-module>}/nixos"
];
home-manager.users.root = import ../../../home-manager/configuration/text-minimal.nix;
home-manager.users.root = import ../../../home-manager/configuration/text-minimal.nix { inherit pkgs; };
nixpkgs.config = {
allowBroken = false;

View file

@ -29,6 +29,10 @@
}
'';
environment.variables = {
NIX_PATH = lib.mkForce pkgs.nixPath;
};
# Fonts, I18N, Date ...
fonts.fonts = [
pkgs.corefonts

View file

@ -1,7 +1,10 @@
{
...
{ pkgs
, ...
}:
{
home-manager.users.steveej = import ../../../home-manager/configuration/graphical-removable.nix;
nixpkgs.config.packageOverrides = pkgs: with pkgs; {
nixPath = (import ../../../default.nix { versionsPath = ./versions.nix; }).nixPath;
};
home-manager.users.steveej = import ../../../home-manager/configuration/graphical-removable.nix { inherit pkgs; };
}