From bdd64b51d2e75f8138b25f9dae03f568c6a71f2c Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Fri, 1 Apr 2022 00:41:57 +0200 Subject: [PATCH] [HomeManager] Big enhancement to home manager! Specific user config is loaded _directly_ from the system config TODO: verify that "home.nix" actually exists before trying to import it Also refactor "home.nix" in /etc/nixos/users and import them intelligently --- home-manager.nix | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/home-manager.nix b/home-manager.nix index 6e642f8..de85ce8 100644 --- a/home-manager.nix +++ b/home-manager.nix @@ -4,6 +4,9 @@ let cfg = config.aviallon.home-manager; usersCfg = config.users; defaultUsers = attrNames (filterAttrs (name: value: value.isNormalUser) usersCfg.users); + hmUserCfg = u: config.home-manager.users.${u}; + userCfg = u: config.users.users.${u}; + getUserCfgPath = u: "${(userCfg u).home}/.config/nixpkgs/home.nix"; in { imports = [ @@ -45,11 +48,38 @@ in }); users.groups = genAttrs cfg.users (u: { } ); - # systemd.tmpfiles.rules = concatLists (forEach cfg.users (u: - # [ - # "d ${usersCfg.users.${u}.home}/.config/nixpkgs 0700 ${u} ${u} -" - # "C ${usersCfg.users.${u}.home}/.config/nixpkgs/home.nix 0600 ${u} ${u} - ${cfg.defaultHomeFile}" - # ] - # )); + #environment.systemPackages = with pkgs; [ + # home-manager + #]; + + home-manager.users = genAttrs cfg.users (u: { + home.username = "${u}"; + home.homeDirectory = "${(userCfg u).home}"; + home.stateVersion = mkDefault config.system.stateVersion; + + programs.bash.enable = mkDefault true; + qt.enable = mkDefault true; + services.kdeconnect.enable = mkDefault true; + programs.powerline-go = { + enable = mkDefault true; + modules = [ "host" "ssh" "cwd" "gitlite" "jobs" "exit" ]; + #modulesRight = [ "venv" "git" ]; + newline = mkDefault true; + }; + + # nixpkgs.config.allowUnfree = mkDefault true; + + imports = [ + (import (getUserCfgPath u) { + config = config.home-manager; + pkgs = (import { + config = (hmUserCfg u).nixpkgs.config; + # overlays = ifEnable ((hmUserCfg u).nixpkgs ? overlays) (hmUserCfg u).nixpkgs.overlays; + }); + inherit lib; + }) + ]; + + }); }; }