{ config, options, pkgs, ... }: let # hacky way of inheriting a nixos option into home manager inheritOption = name: let path = pkgs.lib.splitString "." name; option = pkgs.lib.getAttrFromPath path options; value = pkgs.lib.getAttrFromPath path config; in # setting `value` doesn’t work (always is default value in other modules) option // { default = value; }; in { imports = [ (import "${(import ../../nix/sources.nix).home-manager}/nixos") ]; users.users.simon = { isNormalUser = true; extraGroups = [ "adbusers" "dialout" "libvirtd" "lp" "networkmanager" "video" "wheel" ]; openssh.authorizedKeys.keys = config.sbruder.pubkeys.trustedKeys; initialPassword = "foobar"; # for vm }; home-manager.useUserPackages = true; home-manager.useGlobalPkgs = true; home-manager.users.simon = { lib, pkgs, ... }: { options.sbruder = { full = inheritOption "sbruder.full"; gui.enable = inheritOption "sbruder.gui.enable"; games.enable = inheritOption "sbruder.games.enable"; unfree = { allowAssets = inheritOption "sbruder.unfree.allowAssets"; allowSoftware = inheritOption "sbruder.unfree.allowSoftware"; }; }; imports = [ ./modules ]; config = { home.stateVersion = "20.09"; }; }; }