refactor: consolidate app configurations and utility scripts

- Move 32+ app-specific scripts from features/apps/scripts/ to features/scripts/utils/ for centralized packaging.
- Create individual Nix modules for orphaned app configurations (btop, kitty, tmux, etc.) in features/apps/ using xdg.configFile.
- Fix broken paths in core/system/makima.nix and features/apps/vscode.nix.
- Update VSCode configuration to use the modern 'profiles.default.userSettings' API, resolving deprecation warnings.
- Merge duplicate 'nomarchy-launch-walker' scripts into a single robust utility.
- Remove stale root 'config/' directory.
- Update README.md and docs/creating-themes.md to reflect the new architecture and keybindings.
- Ensure all modules are correctly imported and verified via nix flake check.
This commit is contained in:
Bernardo Magri
2026-04-12 22:32:44 +01:00
parent a7dbca80a6
commit 5f0834f30c
59 changed files with 382 additions and 78 deletions

View File

@@ -1,22 +1,5 @@
{ config, lib, pkgs, ... }:
{ ... }:
{
imports = [
./system/options.nix
./system/state.nix
./system/systemd.nix
./system/virtualization.nix
./system/fonts.nix
../themes/engine/plymouth.nix
../themes/engine/sddm.nix
./system/hardware.nix
./system/audio.nix
./system/bluetooth.nix
./system/network.nix
../features/apps/browser.nix
./system/impermanence.nix
../features/apps/makima.nix
];
time.timeZone = lib.mkDefault config.nomarchy.system.timezone;
imports = [ ./system ];
}

View File

@@ -1,16 +1,16 @@
# Menus
bindd = SUPER, SPACE, Launch apps, exec, nomarchy-menu
bindd = SUPER, SPACE, Launch apps, exec, nomarchy-launch-walker
bindd = SUPER CTRL, E, Emoji picker, exec, nomarchy-menu symbols
bindd = SUPER CTRL, C, Capture menu, exec, nomarchy-menu capture
bindd = SUPER CTRL, O, Toggle menu, exec, nomarchy-menu toggle
bindd = SUPER ALT, SPACE, Nomarchy menu, exec, nomarchy-menu
bindd = SUPER ALT, SPACE, Toggle top bar, exec, nomarchy-toggle-waybar
bindd = SUPER, ESCAPE, System menu, exec, nomarchy-menu system
bindld = , XF86PowerOff, Power menu, exec, nomarchy-menu system
bindd = SUPER, K, Show key bindings, exec, nomarchy-menu-keybindings
bindd = , XF86Calculator, Calculator, exec, gnome-calculator
# Aesthetics
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, nomarchy-toggle-waybar
bindd = SUPER SHIFT, SPACE, Nomarchy menu, exec, nomarchy-menu
bindd = SUPER CTRL, SPACE, Theme background menu, exec, nomarchy-menu background
bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, nomarchy-menu theme
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, nomarchy-hyprland-active-window-transparency-toggle

14
core/home/default.nix Normal file
View File

@@ -0,0 +1,14 @@
{ ... }:
{
imports = [
./options.nix
./state.nix
./overrides.nix
./behavior.nix
./fonts.nix
./configs.nix
./security.nix
./bash.nix
];
}

30
core/system/browser.nix Normal file
View File

@@ -0,0 +1,30 @@
{ config, pkgs, lib, ... }:
let
nomarchyLib = import ../../lib { inherit lib; };
activeThemeName = config.nomarchy.system.theme;
currentPalette = nomarchyLib.getPalette activeThemeName;
# Hex color for browser theme (base00 is background)
themeColor = "#${currentPalette.base00}";
# Detect light mode from theme name or palette
isLightTheme = nomarchyLib.isThemeLightMode {
themeName = activeThemeName;
assetsPath = ../../themes/palettes;
};
browserPolicy = {
BrowserThemeColor = themeColor;
BrowserColorScheme = if isLightTheme then "light" else "dark";
};
in
{
# Chromium policies
programs.chromium.extraOpts = lib.mkDefault browserPolicy;
# Brave browser policies via managed policy file
environment.etc."brave/policies/managed/nomarchy.json".text = lib.mkDefault (
builtins.toJSON browserPolicy
);
}

22
core/system/default.nix Normal file
View File

@@ -0,0 +1,22 @@
{ config, lib, pkgs, ... }:
{
imports = [
./options.nix
./state.nix
./systemd.nix
./virtualization.nix
./fonts.nix
./hardware.nix
./audio.nix
./bluetooth.nix
./network.nix
./impermanence.nix
./browser.nix
./makima.nix
../../themes/engine/plymouth.nix
../../themes/engine/sddm.nix
];
time.timeZone = lib.mkDefault config.nomarchy.system.timezone;
}

25
core/system/makima.nix Normal file
View File

@@ -0,0 +1,25 @@
{ config, pkgs, lib, ... }:
let
cfg = config.nomarchy.system.features.makima;
in
{
config = lib.mkIf cfg {
# If the user has makima-bin available in their overlays (as they originally used a custom package),
# this will install it. Otherwise, it will fail evaluation if not available in nixpkgs.
environment.systemPackages = [ pkgs.makima-bin ];
environment.etc."makima/AT Translated Set 2 keyboard.toml".source = ../../features/apps/makima + "/AT Translated Set 2 keyboard.toml";
systemd.services.makima = {
description = "Makima key remapping service";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
User = config.services.displayManager.autoLogin.user;
Environment = "MAKIMA_CONFIG=/etc/makima";
ExecStart = "${pkgs.makima-bin}/bin/makima";
Restart = "on-failure";
};
};
};
}