# Home Manager: everything in your home directory. { config, lib, ... }: { imports = [ ./files.nix ./desktop.nix ./apps.nix ./services.nix ./shell.nix ./theming.nix ./packages.nix ]; options.dot = { repoPath = lib.mkOption { type = lib.types.str; default = "${config.home.homeDirectory}/git/dot"; description = "Where this repo is checked out."; }; liveConfig = lib.mkOption { type = lib.types.bool; default = true; description = '' Link the hand-edited configs that no module writes (scripts, Eww, startup.lua, init.lua, stylesheets, themes) straight to the checkout at repoPath, as the old symlink.sh did: an edit takes effect the next time the program reads it, with no rebuild. Off, they are copied into the Nix store and change only on a rebuild (the test VM does this, since it has no checkout). ''; }; }; config = { # A file or directory of config/: linked to the checkout when liveConfig is # on (edits apply at once), copied into the store otherwise. lib.dot.link = rel: if config.dot.liveConfig then config.lib.file.mkOutOfStoreSymlink "${config.dot.repoPath}/config/${rel}" else ../../config + "/${rel}"; home = { username = "vizie"; homeDirectory = "/home/vizie"; stateVersion = "26.05"; }; xdg.enable = true; xdg.userDirs = { enable = true; createDirectories = true; extraConfig.XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects"; }; programs.home-manager.enable = true; }; }