Merge pull request #93 from Pacman99/home-manager-only
users: Initial home-manager only configurations(non-nixos systems)
This commit is contained in:
commit
5e2f4d09ef
4 changed files with 70 additions and 6 deletions
37
README.md
37
README.md
|
@ -131,6 +131,43 @@ They are placed in the git staging area automatically because they would be
|
|||
invisible to the flake otherwise, but it is best to move what you need from
|
||||
them directly into your hosts file and commit that instead.
|
||||
|
||||
## Home Manager Integration
|
||||
The home-manager nixos module is available for each host. It is meant
|
||||
to be used in the user profiles, you can find an example in the nixos user profile
|
||||
|
||||
The home-manager configuration for each user in each system is available in the
|
||||
outputs as homeConfigurations and the activation packages in hmActivationPackages.
|
||||
|
||||
This allows you to just build the home-manager environment without the rest of the
|
||||
system configuration. The feature is useful on systems without nixos or root access.
|
||||
|
||||
Lets say you want to activate the home configuration for the user `nixos` in the
|
||||
host `NixOS`.
|
||||
|
||||
With the flk script:
|
||||
```sh
|
||||
# You can build it using
|
||||
flk home NixOS nixos
|
||||
# and activate with
|
||||
./result/activate
|
||||
|
||||
# Or do both like this
|
||||
flk home NixOS nixos switch
|
||||
```
|
||||
|
||||
This can also be done manually:
|
||||
```sh
|
||||
|
||||
# With hmActivationPackages, what the flk script uses
|
||||
nix build ./#hmActivationPackages.NixOS.nixos
|
||||
|
||||
# Or with homeConfigurations,
|
||||
nix build ./#homeConfigurations.NixOS.nixos.home.activationPackage
|
||||
# this is hard to debug though, due to nix build's fallback to packages
|
||||
|
||||
# The configuration can then be activated like before
|
||||
```
|
||||
|
||||
## Build an ISO
|
||||
|
||||
You can make an ISO and customize it by modifying the [niximg](./hosts/niximg.nix)
|
||||
|
|
23
flake.nix
23
flake.nix
|
@ -29,7 +29,8 @@
|
|||
inherit (builtins) attrValues;
|
||||
inherit (flake-utils.lib) eachDefaultSystem flattenTreeSystem;
|
||||
inherit (nixos.lib) recursiveUpdate;
|
||||
inherit (self.lib) overlays nixosModules genPackages pkgImport;
|
||||
inherit (self.lib) overlays nixosModules genPackages pkgImport
|
||||
genHomeActivationPackages;
|
||||
|
||||
externOverlays = [ nur.overlay devshell.overlay ];
|
||||
externModules = [
|
||||
|
@ -52,6 +53,11 @@
|
|||
inherit (pkgs) lib;
|
||||
});
|
||||
|
||||
homeConfigurations =
|
||||
builtins.mapAttrs
|
||||
(_: config: config.config.home-manager.users)
|
||||
self.nixosConfigurations;
|
||||
|
||||
overlay = import ./pkgs;
|
||||
|
||||
lib = import ./lib {
|
||||
|
@ -90,10 +96,17 @@
|
|||
in
|
||||
pkgImport nixos overlays system;
|
||||
|
||||
packages = flattenTreeSystem system
|
||||
(genPackages {
|
||||
inherit self pkgs;
|
||||
});
|
||||
packages =
|
||||
let
|
||||
packages' = flattenTreeSystem system
|
||||
(genPackages {
|
||||
inherit self pkgs;
|
||||
});
|
||||
|
||||
homeActivationPackages = genHomeActivationPackages
|
||||
self.homeConfigurations;
|
||||
in
|
||||
recursiveUpdate packages' homeActivationPackages;
|
||||
in
|
||||
{
|
||||
inherit packages;
|
||||
|
|
|
@ -73,6 +73,15 @@ in
|
|||
(recursiveUpdate cachixAttrs modulesAttrs)
|
||||
profilesAttrs;
|
||||
|
||||
genHomeActivationPackages = hmConfigs: {
|
||||
hmActivationPackages =
|
||||
builtins.mapAttrs
|
||||
(_: x: builtins.mapAttrs
|
||||
(_: cfg: cfg.home.activationPackage)
|
||||
x)
|
||||
hmConfigs;
|
||||
};
|
||||
|
||||
genPackages = { self, pkgs }:
|
||||
let
|
||||
inherit (self) overlay overlays;
|
||||
|
|
|
@ -12,7 +12,7 @@ let
|
|||
|
||||
flk = pkgs.writeShellScriptBin "flk" ''
|
||||
if [[ -z "$1" ]]; then
|
||||
echo "Usage: $(basename "$0") [ iso | up | install {host} | {host} [switch|boot|test] ]"
|
||||
echo "Usage: $(basename "$0") [ iso | up | install {host} | {host} [switch|boot|test] | home {host} {user} [switch] ]"
|
||||
elif [[ "$1" == "up" ]]; then
|
||||
mkdir -p $DEVSHELL_ROOT/up
|
||||
hostname=$(hostname)
|
||||
|
@ -27,6 +27,11 @@ let
|
|||
nix build $DEVSHELL_ROOT#nixosConfigurations.niximg.${build}.isoImage "${"\${@:2}"}"
|
||||
elif [[ "$1" == "install" ]]; then
|
||||
sudo nixos-install --flake "$DEVSHELL_ROOT#$2" "${"\${@:3}"}"
|
||||
elif [[ "$1" == "home" ]]; then
|
||||
nix build ./#hmActivationPackages.$2.$3
|
||||
if [[ "$4" == "switch" ]]; then
|
||||
./result/activate && unlink result
|
||||
fi
|
||||
else
|
||||
sudo nixos-rebuild --flake "$DEVSHELL_ROOT#$1" "${"\${@:2}"}"
|
||||
fi
|
||||
|
|
Loading…
Reference in a new issue