feat: create new home/ directory structure for profile-based config
New structure:
- home/base/ - Always loaded (shell, cli-tools, secrets)
- home/coding/ - Profile-independent dev tooling (editor, lsp, git, agents)
- home/profiles/ - Freely combinable profiles (gaming, media)
- home/desktop/ - Desktop-only (wm, apps, theme)
- home/server/ - Minimal server stub
Migration sources:
- home/features/cli/ → home/base/{shell,cli-tools,secrets}
- home/features/desktop/hyprland,wayland,rofi → home/desktop/wm/
- home/features/desktop/obsidian,office,webapps,crypto → home/desktop/apps/
- home/features/desktop/fonts,theme,wallpapers → home/desktop/theme/
- gaming.nix split → home/profiles/gaming/{steam,gamescope}
- media.nix split → home/profiles/media/{obs,ffmpeg,yt-dlp,kdenlive,handbrake}
Option namespaces updated:
- features.cli.* → base.shell.* / base.cliTools.* / base.secrets
- features.desktop.* → desktop.wm.* / desktop.apps.* / desktop.theme.*
- features.desktop.gaming → profiles.gaming.*
- features.desktop.media → profiles.media.*
Verified: nix flake check passes (warnings only)
This commit is contained in:
8
home/desktop/theme/default.nix
Normal file
8
home/desktop/theme/default.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
# Theme aggregator — fonts, GTK/Qt theming, and wallpapers.
|
||||
{...}: {
|
||||
imports = [
|
||||
./fonts.nix
|
||||
./theme.nix
|
||||
./wallpapers.nix
|
||||
];
|
||||
}
|
||||
24
home/desktop/theme/fonts.nix
Normal file
24
home/desktop/theme/fonts.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
# Font packages — Fira Code, JetBrains Mono Nerd Font, and supporting icon fonts.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.desktop.theme.fonts;
|
||||
in {
|
||||
options.desktop.theme.fonts.enable = mkEnableOption "install desktop fonts";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
fira-code
|
||||
fira-code-symbols
|
||||
nerd-fonts.fira-code
|
||||
nerd-fonts.jetbrains-mono
|
||||
font-manager
|
||||
font-awesome_5
|
||||
noto-fonts
|
||||
];
|
||||
};
|
||||
}
|
||||
24
home/desktop/theme/theme.nix
Normal file
24
home/desktop/theme/theme.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
# GTK and Qt theming — Dracula theme with matching icons and cursor.
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme.name = "gtk";
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
theme = {
|
||||
name = "Dracula";
|
||||
package = pkgs.dracula-theme;
|
||||
};
|
||||
iconTheme = {
|
||||
name = "Dracula";
|
||||
package = pkgs.dracula-icon-theme;
|
||||
};
|
||||
gtk4.theme = config.gtk.theme;
|
||||
};
|
||||
}
|
||||
19
home/desktop/theme/wallpapers.nix
Normal file
19
home/desktop/theme/wallpapers.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
# Wallpaper collection — copies wallpapers to Hyprland config directory.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.desktop.theme.wallpapers;
|
||||
in {
|
||||
options.desktop.theme.wallpapers = mkEnableOption "wallpapers for Hyprland";
|
||||
|
||||
config = mkIf cfg {
|
||||
xdg.configFile."hypr/wallpapers" = {
|
||||
# Wallpapers are stored relative to the home/m3tam3re directory.
|
||||
source = ../../../m3tam3re/wallpapers;
|
||||
recursive = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user