Files
nix-config/home/home.nix

79 lines
2.1 KiB
Nix

{
config,
pkgs,
lib,
...
}: let
readScriptsRecursively = dir: let
entries = builtins.readDir dir; # This gives an attrset of filenames -> { "type": "regular"|"directory", ...}
names = builtins.attrNames entries;
in
# We convert all items to a list of name/value pairs; then flatten them
lib.attrsets.listToAttrs (lib.concatMap (
entry: let
fullPath = "${dir}/${entry}";
entryInfo = entries.${entry}; # e.g., {type="regular"|"directory",size=...}
in
if entryInfo.type == "directory"
then
# Recursively read sub-directory
builtins.attrValues (readScriptsRecursively fullPath)
else
# For a file, produce an attribute set item
[
{
name = entry;
value = fullPath;
}
]
)
names);
scripts = readScriptsRecursively ./scripts;
scriptDerivations =
lib.attrsets.mapAttrs (
scriptName: scriptPath:
pkgs.writeShellApplication {
name = scriptName;
# Pick whatever runtime dependencies you need
runtimeInputs = with pkgs; [
# Example: netcat, bashInteractive, curl, etc.
netcat
];
# The text of the shell script is read directly from the file
text = builtins.readFile scriptPath;
}
)
scripts;
in {
home.username = "synchronous";
home.homeDirectory = "/home/synchronous";
imports = [
./programs/programs.nix
./services/services.nix
./wallpapers/default.nix
./fonts/default.nix # need to manage fonts in two places becuase life sucks nix sucks
];
home.activation.copyScripts = lib.mkAfter ''
mkdir -p ~/.scripts
cp ${./nixos-rebuild.sh} ~/.scripts/
chmod -R u+w ~/.scripts/
'';
home.stateVersion = "24.11"; # Please read the comment before changing.
# home.packages = with pkgs; [xrandr procps polybar bspwm sxhkd polybar-pulseaudio-control bluez];
home.sessionVariables = {
EDITOR = "nvim";
HOME = "/home/synchronous";
XDG_CACHE_HOME = "$HOME/.cache";
};
programs.home-manager.enable = true;
}