feat: use xdg config dirs

This commit is contained in:
Barrett Ruth 2026-02-14 22:15:49 -05:00
parent f9f756d80b
commit da24197c65
Signed by: barrett
GPG key ID: A6C96C9349D2FC81
9 changed files with 90 additions and 61 deletions

View file

@ -7,32 +7,51 @@
}:
{
imports =
[
./modules/bootstrap.nix
./modules/theme.nix
./modules/shell.nix
./modules/terminal.nix
./modules/git.nix
./modules/editor.nix
./modules/packages.nix
]
++ lib.optionals hostConfig.isLinux [
./modules/hyprland.nix
./modules/ui.nix
];
imports = [
./modules/bootstrap.nix
./modules/theme.nix
./modules/shell.nix
./modules/terminal.nix
./modules/git.nix
./modules/editor.nix
./modules/packages.nix
]
++ lib.optionals hostConfig.isLinux [
./modules/hyprland.nix
./modules/ui.nix
];
config = {
theme = "midnight";
home.username = "barrett";
home.homeDirectory =
if hostConfig.isDarwin
then "/Users/${config.home.username}"
else "/home/${config.home.username}";
if hostConfig.isDarwin then "/Users/${config.home.username}" else "/home/${config.home.username}";
home.stateVersion = "24.11";
xdg.enable = true;
xdg.userDirs = lib.mkIf hostConfig.isLinux {
enable = true;
createDirectories = true;
desktop = "${config.home.homeDirectory}/Desktop";
documents = "${config.home.homeDirectory}/Documents";
download = "${config.home.homeDirectory}/Downloads";
music = "${config.home.homeDirectory}/Music";
pictures = "${config.home.homeDirectory}/Pictures";
publicShare = "${config.home.homeDirectory}/Public";
templates = "${config.home.homeDirectory}/Templates";
videos = "${config.home.homeDirectory}/Videos";
};
home.sessionVariables = lib.mkIf hostConfig.isLinux {
XDG_DESKTOP_DIR = config.xdg.userDirs.desktop;
XDG_DOCUMENTS_DIR = config.xdg.userDirs.documents;
XDG_DOWNLOAD_DIR = config.xdg.userDirs.download;
XDG_MUSIC_DIR = config.xdg.userDirs.music;
XDG_PICTURES_DIR = config.xdg.userDirs.pictures;
XDG_PUBLICSHARE_DIR = config.xdg.userDirs.publicShare;
XDG_TEMPLATES_DIR = config.xdg.userDirs.templates;
XDG_VIDEOS_DIR = config.xdg.userDirs.videos;
};
targets.genericLinux.enable = hostConfig.isLinux && !hostConfig.isNixOS;
news.display = "silent";

View file

@ -9,24 +9,27 @@ let
homeDir = config.home.homeDirectory;
repoDir = "${homeDir}/.config/nix";
directories =
[
"dev"
"Downloads"
"Pictures"
]
++ lib.optionals hostConfig.isLinux [
"Pictures/Screensavers"
"Pictures/Screenshots"
"Pictures/wp"
];
directories = [ "dev" ];
pictureSubdirs = [
"Screensavers"
"Screenshots"
"wp"
];
in
{
home.activation.createDirectories = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
for dir in ${lib.concatStringsSep " " directories}; do
run mkdir -p "$HOME/$dir"
done
'';
home.activation.createDirectories = lib.hm.dag.entryAfter [ "writeBoundary" ] (
''
for dir in ${lib.concatStringsSep " " directories}; do
run mkdir -p "$HOME/$dir"
done
''
+ lib.optionalString hostConfig.isLinux ''
for dir in ${lib.concatStringsSep " " pictureSubdirs}; do
run mkdir -p "${config.xdg.userDirs.pictures}/$dir"
done
''
);
home.activation.cleanDanglingLinks = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
for link in "$HOME/.nix-profile" "$HOME/.nix-defexpr"; do
@ -37,7 +40,7 @@ in
home.activation.linkWallpapers = lib.mkIf hostConfig.isLinux (
lib.hm.dag.entryAfter [ "createDirectories" ] ''
src="${repoDir}/config/screen"
dest="$HOME/Pictures/Screensavers"
dest="${config.xdg.userDirs.pictures}/Screensavers"
if [ -d "$src" ]; then
for f in "$src"/*; do
[ -f "$f" ] || continue

View file

@ -61,7 +61,7 @@ in
xdg.configFile."hypr/hyprpaper.conf".text = ''
wallpaper {
monitor =
path = ${config.home.homeDirectory}/Pictures/Screensavers/wallpaper.jpg
path = ${config.xdg.userDirs.pictures}/Screensavers/wallpaper.jpg
}
splash = false
@ -75,7 +75,7 @@ in
background {
monitor =
path = ${config.home.homeDirectory}/Pictures/Screensavers/lock.jpg
path = ${config.xdg.userDirs.pictures}/Screensavers/lock.jpg
}
animations {

View file

@ -88,8 +88,7 @@ in
};
home.file.".local/share/fonts" = lib.mkIf hostConfig.isLinux {
source =
config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.config/nix/fonts";
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.config/nix/fonts";
};
home.activation.checkFonts = lib.hm.dag.entryAfter [ "writeBoundary" ] ''

View file

@ -170,7 +170,13 @@ in
format = "{icon}";
format-charging = "{icon}";
format-full = "{icon}";
format-icons = ["" "" "" "" ""];
format-icons = [
""
""
""
""
""
];
states = {
hi = 30;
mid = 20;