From d59a6b82b64df7076bd1be5a8a70c64638329d35 Mon Sep 17 00:00:00 2001 From: m3tm3re Date: Sun, 26 Apr 2026 11:29:49 +0200 Subject: [PATCH] chore: remove features.old archive and format all files - Delete home/features.old/ (archived old flat feature modules) - All content migrated to new profile-based structure - Run alejandra formatter over 13 changed files - nix flake check passes cleanly --- home/features.old/cli/AGENTS.md | 65 ---- home/features.old/cli/default.nix | 230 ------------- home/features.old/cli/fish.nix | 116 ------- home/features.old/cli/fzf.nix | 40 --- home/features.old/cli/nitch.nix | 15 - home/features.old/cli/nushell.nix | 91 ----- home/features.old/cli/secrets.nix | 22 -- home/features.old/cli/starship.nix | 68 ---- home/features.old/cli/television.nix | 64 ---- home/features.old/cli/zellij.nix | 32 -- home/features.old/desktop/AGENTS.md | 79 ----- home/features.old/desktop/coding.nix | 23 -- home/features.old/desktop/crypto.nix | 15 - home/features.old/desktop/default.nix | 162 --------- home/features.old/desktop/fonts.nix | 24 -- home/features.old/desktop/gaming.nix | 22 -- home/features.old/desktop/hyprland.nix | 323 ------------------ home/features.old/desktop/media.nix | 55 --- home/features.old/desktop/obsidian.nix | 25 -- home/features.old/desktop/office.nix | 18 - home/features.old/desktop/rofi.nix | 206 ----------- home/features.old/desktop/theme.nix | 22 -- home/features.old/desktop/wallpapers.nix | 18 - home/features.old/desktop/wayland.nix | 29 -- home/features.old/desktop/webapps.nix | 55 --- home/lib/default.nix | 30 +- home/m3tam3re/m3-aether.nix | 11 +- home/m3tam3re/m3-ares.nix | 230 +++++++------ home/m3tam3re/m3-atlas.nix | 10 +- home/m3tam3re/m3-daedalus.nix | 216 ++++++------ home/m3tam3re/m3-helios.nix | 11 +- home/m3tam3re/m3-hermes.nix | 11 +- home/m3tam3re/m3-kratos.nix | 221 ++++++------ hosts/m3-aether/hardware-configuration.nix | 52 +-- hosts/m3-ares/services/postgres.nix | 5 +- hosts/m3-atlas/services/containers/kestra.nix | 16 +- hosts/m3-helios/hardware-configuration.nix | 52 +-- hosts/m3-hermes/hardware-configuration.nix | 8 +- 38 files changed, 430 insertions(+), 2262 deletions(-) delete mode 100644 home/features.old/cli/AGENTS.md delete mode 100644 home/features.old/cli/default.nix delete mode 100644 home/features.old/cli/fish.nix delete mode 100644 home/features.old/cli/fzf.nix delete mode 100644 home/features.old/cli/nitch.nix delete mode 100644 home/features.old/cli/nushell.nix delete mode 100644 home/features.old/cli/secrets.nix delete mode 100644 home/features.old/cli/starship.nix delete mode 100644 home/features.old/cli/television.nix delete mode 100644 home/features.old/cli/zellij.nix delete mode 100644 home/features.old/desktop/AGENTS.md delete mode 100644 home/features.old/desktop/coding.nix delete mode 100644 home/features.old/desktop/crypto.nix delete mode 100644 home/features.old/desktop/default.nix delete mode 100644 home/features.old/desktop/fonts.nix delete mode 100644 home/features.old/desktop/gaming.nix delete mode 100644 home/features.old/desktop/hyprland.nix delete mode 100644 home/features.old/desktop/media.nix delete mode 100644 home/features.old/desktop/obsidian.nix delete mode 100644 home/features.old/desktop/office.nix delete mode 100644 home/features.old/desktop/rofi.nix delete mode 100644 home/features.old/desktop/theme.nix delete mode 100644 home/features.old/desktop/wallpapers.nix delete mode 100644 home/features.old/desktop/wayland.nix delete mode 100644 home/features.old/desktop/webapps.nix diff --git a/home/features.old/cli/AGENTS.md b/home/features.old/cli/AGENTS.md deleted file mode 100644 index 24f1920..0000000 --- a/home/features.old/cli/AGENTS.md +++ /dev/null @@ -1,65 +0,0 @@ -# CLI FEATURES (home-manager) - -**Shell and terminal tooling with Fish + Nushell dual configuration** - -## OVERVIEW -8 CLI modules with integrated tooling across Fish and Nushell shells. - -## STRUCTURE -``` -cli/ -├── default.nix # Imports + shared tools (bat, eza, direnv) -├── fish.nix # Fish shell + aliases -├── fzf.nix # Fuzzy finder -├── nitch.nix # System info tool -├── nushell.nix # Nushell + aliases -├── secrets.nix # Password-store integration -├── starship.nix # Shell prompt -└── zellij.nix # Terminal multiplexer -``` - -## WHERE TO LOOK - -| Task | Location | Notes | -|------|----------|-------| -| Add CLI tool | default.nix home.packages | Check if shell integration needed | -| Shell aliases | fish.nix or nushell.nix | Kept in sync between shells | -| Prompt config | starship.nix | Uses nerd-fonts symbols | -| Secret access | secrets.nix | Agenix integration | - -## CONVENTIONS - -### Shell Integration Pattern -Tools with shell hooks enabled in both Fish and Nushell: -- **carapace**: Completions -- **zoxide**: Smart cd -- **eza**: ls replacement -- **direnv**: Directory environments -- **fzf**: Fuzzy finding - -### NixOS Rebuild Aliases (both shells) -``` -nr/nrs - nixos-rebuild [switch] -snr/snrs - sudo nixos-rebuild [switch] -hms - home-manager switch -``` - -### Bat Theme -Custom `universal` theme generated from nix-colors palette in default.nix (lines 34-157). - -### Secrets Integration -Fish/Nushell source `$HOME/.secrets` if `secrets.enable = true` (CLI secrets feature). - -## ANTI-PATTERNS - -- **DON'T** add aliases to only one shell - keep Fish/Nushell in sync -- **DON'T** use `programs.bash` - Nushell is default shell -- **DON'T** bypass carapace for completions - integrated by default - -## NOTES - -- zellij-ps custom package for project session management -- Default shell set to Nushell in hosts/common/default.nix -- Bat theme dynamically generated (no external theme files) -- lf file manager uses bat for previews -- Agenix CLI (agenix-cli) included for secret management diff --git a/home/features.old/cli/default.nix b/home/features.old/cli/default.nix deleted file mode 100644 index 3ab556e..0000000 --- a/home/features.old/cli/default.nix +++ /dev/null @@ -1,230 +0,0 @@ -{ - config, - pkgs, - videoDrivers, - ... -}: { - imports = [ - ./fish.nix - ./fzf.nix - ./nitch.nix - ./nushell.nix - ./secrets.nix - ./starship.nix - ./television.nix - ./zellij.nix - ]; - - programs.carapace = { - enable = true; - enableFishIntegration = true; - enableNushellIntegration = true; - enableBashIntegration = true; - }; - - programs.zoxide = { - enable = true; - enableFishIntegration = true; - enableNushellIntegration = true; - }; - - programs.bat = { - enable = true; - config = {theme = "universal";}; - themes = { - universal = { - src = pkgs.writeText "universal.tmTheme" '' - - - - - name - Universal (nix-colors) - settings - - - settings - - background - #${config.colorScheme.palette.base00} - foreground - #${config.colorScheme.palette.base05} - caret - #${config.colorScheme.palette.base05} - selection - #${config.colorScheme.palette.base02} - selectionForeground - #${config.colorScheme.palette.base05} - lineHighlight - #${config.colorScheme.palette.base01} - - - - name - Comment - scope - comment - settings - - foreground - #${config.colorScheme.palette.base03} - fontStyle - italic - - - - name - String - scope - string - settings - - foreground - #${config.colorScheme.palette.base0A} - - - - name - Number - scope - constant.numeric - settings - - foreground - #${config.colorScheme.palette.base0E} - - - - name - Keyword - scope - keyword - settings - - foreground - #${config.colorScheme.palette.base08} - - - - name - Function - scope - entity.name.function - settings - - foreground - #${config.colorScheme.palette.base0B} - - - - name - Type - scope - entity.name.type, storage.type - settings - - foreground - #${config.colorScheme.palette.base0D} - - - - name - Variable - scope - variable - settings - - foreground - #${config.colorScheme.palette.base05} - - - - name - Constant - scope - constant - settings - - foreground - #${config.colorScheme.palette.base0E} - - - - - - ''; - }; - }; - }; - - programs.direnv = { - enable = true; - enableNushellIntegration = true; - nix-direnv.enable = true; - }; - - programs.eza = { - enable = true; - enableFishIntegration = true; - enableBashIntegration = true; - extraOptions = ["-l" "--icons" "--git" "-a"]; - }; - - programs.lf = { - enable = true; - settings = { - preview = true; - drawbox = true; - hidden = true; - icons = true; - theme = "Dracula"; - previewer = "bat"; - }; - }; - - cli.zellij-ps = { - enable = true; - projectFolders = ["/home/m3tam3re/p"]; - }; - - home.packages = with pkgs; [ - basecamp - comma - coreutils - devenv - fabric-ai - fd - gcc - go - htop - httpie - hyprpaper-random - jq - just - lazygit - llm - lf - nix-index - nix-update - libnotify - nushellPlugins.skim - progress - ripgrep - rocmPackages.rocm-smi - rocmPackages.rocminfo - rocmPackages.rocm-runtime - sqlite - sqlite-vec - tldr - pomodoro-timer - trash-cli - unimatrix - unzip - vulkan-tools - wttrbar - wireguard-tools - yazi - zellij-ps - zip - ]; -} diff --git a/home/features.old/cli/fish.nix b/home/features.old/cli/fish.nix deleted file mode 100644 index 7d80aea..0000000 --- a/home/features.old/cli/fish.nix +++ /dev/null @@ -1,116 +0,0 @@ -{ - config, - lib, - ... -}: -with lib; let - cfg = config.features.cli.fish; -in { - options.features.cli.fish.enable = mkEnableOption "enable fish shell"; - - config = mkIf cfg.enable { - programs.fish = { - enable = true; - interactiveShellInit = '' - # Fish colors using universal nix-colors palette - # Text colors - set -g fish_color_normal ${config.colorScheme.palette.base05} # text - set -g fish_color_param ${config.colorScheme.palette.base05} # text - set -g fish_color_comment ${config.colorScheme.palette.base03} # muted - set -g fish_color_autosuggestion ${config.colorScheme.palette.base03} # muted - - # Command colors - set -g fish_color_command ${config.colorScheme.palette.base0D} # accent6 (blue) - set -g fish_color_quote ${config.colorScheme.palette.base0A} # accent3 (yellow) - set -g fish_color_redirection ${config.colorScheme.palette.base0E} # accent7 (purple) - set -g fish_color_end ${config.colorScheme.palette.base08} # accent1 (red) - set -g fish_color_error ${config.colorScheme.palette.base08} # accent1 (red) - set -g fish_color_operator ${config.colorScheme.palette.base0C} # accent5 (cyan) - set -g fish_color_escape ${config.colorScheme.palette.base09} # accent2 (orange) - - # Path colors - set -g fish_color_cwd ${config.colorScheme.palette.base0B} # accent4 (green) - set -g fish_color_cwd_root ${config.colorScheme.palette.base08} # accent1 (red) - set -g fish_color_valid_path --underline - - # Interactive colors - set -g fish_color_match ${config.colorScheme.palette.base0B} # accent4 (green) - set -g fish_color_selection --background=${config.colorScheme.palette.base02} # overlay - set -g fish_color_search_match --background=${config.colorScheme.palette.base02} # overlay - set -g fish_color_history_current --bold - set -g fish_color_user ${config.colorScheme.palette.base0B} # accent4 (green) - set -g fish_color_host ${config.colorScheme.palette.base0D} # accent6 (blue) - set -g fish_color_cancel -r - - # Pager colors - set -g fish_pager_color_completion normal - set -g fish_pager_color_description ${config.colorScheme.palette.base03} # muted - set -g fish_pager_color_prefix ${config.colorScheme.palette.base0E} # accent7 (purple) - set -g fish_pager_color_progress ${config.colorScheme.palette.base0B} # accent4 (green) - ''; - loginShellInit = '' - set -x NIX_PATH nixpkgs=channel:nixos-unstable - set -x NIX_LOG info - set -x WEBKIT_DISABLE_COMPOSITING_MODE 1 - set -x TERMINAL ghostty - set -x EDITOR nvim - set -x VISUAL zed - set -x XDG_DATA_HOME $HOME/.local/share - set -x FZF_CTRL_R_OPTS " - --preview='bat --color=always -n {}' - --preview-window up:3:hidden:wrap - --bind 'ctrl-/:toggle-preview' - --bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort' - --color header:bold - --header 'Press CTRL-Y to copy command into clipboard'" - set -x FZF_DEFAULT_COMMAND fd --type f --exclude .git --follow --hidden - set -x FZF_CTRL_T_COMMAND "$FZF_DEFAULT_COMMAND" - set -x FLAKE $HOME/p/nixos/nixos-config - source /run/agenix/${config.home.username}-secrets - - if test (tty) = "/dev/tty1" - exec uwsm start -F /run/current-system/sw/bin/Hyprland - end - if test (tty) = "/dev/tty2" - exec gamescope -O HDMI-A-1 -W 1920 -H 1080 --adaptive-sync --hdr-enabled --rt --steam -- steam -pipewire-dmabuf -tenfoot - end - ''; - shellAbbrs = { - ".." = "cd .."; - "..." = "cd ../.."; - b = "yazi"; - ls = "eza"; - l = "eza -l --icons --git -a"; - lt = "eza --tree --level=2 --long --icons --git"; - grep = "rg"; - ps = "procs"; - just = "just --unstable"; - node = "bun"; - npx = "bunx"; - fs = "du -ah . | sort -hr | head -n 10"; - - n = "nix"; - nd = "nix develop -c $SHELL"; - ns = "nix shell"; - nsn = "nix shell nixpkgs#"; - nb = "nix build"; - nbn = "nix build nixpkgs#"; - nf = "nix flake"; - - nr = "sudo nixos-rebuild --flake ."; - nrs = "sudo nixos-rebuild switch --flake .#(uname -n)"; - snr = "sudo nixos-rebuild --flake ."; - snrs = "sudo nixos-rebuild --flake . switch"; - hm = "home-manager --flake ."; - hms = "home-manager --flake . switch"; - hmr = "cd ~/projects/nix-configurations; nix flake lock --update-input dotfiles; home-manager --flake .#(whoami)@(hostname) switch"; - - tsu = "sudo tailscale up"; - tsd = "sudo tailscale down"; - - vi = "nvim"; - vim = "nvim"; - }; - }; - }; -} diff --git a/home/features.old/cli/fzf.nix b/home/features.old/cli/fzf.nix deleted file mode 100644 index ce65606..0000000 --- a/home/features.old/cli/fzf.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ - config, - lib, - ... -}: -with lib; let - cfg = config.features.cli.fzf; -in { - options.features.cli.fzf.enable = mkEnableOption "enable fuzzy finder"; - - config = mkIf cfg.enable { - programs.fzf = { - enable = true; - enableFishIntegration = true; - colors = { - "fg" = "#${config.colorScheme.palette.base05}"; - "bg" = "#${config.colorScheme.palette.base00}"; - "hl" = "#${config.colorScheme.palette.base0E}"; - "fg+" = "#${config.colorScheme.palette.base05}"; - "bg+" = "#${config.colorScheme.palette.base02}"; - "hl+" = "#${config.colorScheme.palette.base0E}"; - "info" = "#${config.colorScheme.palette.base09}"; - "prompt" = "#${config.colorScheme.palette.base0B}"; - "pointer" = "#${config.colorScheme.palette.base08}"; - "marker" = "#${config.colorScheme.palette.base08}"; - "spinner" = "#${config.colorScheme.palette.base09}"; - "header" = "#${config.colorScheme.palette.base03}"; - }; - defaultOptions = [ - "--preview='bat --color=always -n {}'" - "--bind 'ctrl-/:toggle-preview'" - "--header 'Press CTRL-Y to copy command into clipboard'" - "--bind 'ctrl-/:toggle-preview'" - "--bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort'" - ]; - defaultCommand = "fd --type f --exclude .git --follow --hidden"; - changeDirWidgetCommand = "fd --type d --exclude .git --follow --hidden"; - }; - }; -} diff --git a/home/features.old/cli/nitch.nix b/home/features.old/cli/nitch.nix deleted file mode 100644 index 1177299..0000000 --- a/home/features.old/cli/nitch.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.features.cli.nitch; -in { - options.features.cli.nitch.enable = mkEnableOption "enable nitch"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [nitch]; - }; -} diff --git a/home/features.old/cli/nushell.nix b/home/features.old/cli/nushell.nix deleted file mode 100644 index 16d1cba..0000000 --- a/home/features.old/cli/nushell.nix +++ /dev/null @@ -1,91 +0,0 @@ -{ - config, - lib, - ... -}: -with lib; let - cfg = config.features.cli.nushell; -in { - options.features.cli.nushell.enable = mkEnableOption "enable nushell"; - - config = mkIf cfg.enable { - programs.nushell = { - enable = true; - envFile.text = '' - $env.config.show_banner = false - $env.NIX_PATH = "nixpkgs=channel:nixos-unstable" - $env.NIX_LOG = "iunfo" - $env.WEBKIT_DISABLE_COMPOSITING_MODE = "1" - $env.TERMINAL = "ghostty" - $env.EDITOR = "nvim" - $env.VISUAL = "zeditor" - $env.FZF_DEFAULT_COMMAND = "fd --type f --exclude .git --follow --hidden" - $env.FZF_DEFAULT_OPTS = "--preview='bat --color=always -n {}' --bind 'ctrl-/:toggle-preview' --header 'Press CTRL-Y to copy command into clipboard' --bind 'ctrl-/:toggle-preview' --bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort' --color bg:#282a36,bg+:#44475a,fg:#f8f8f2,fg+:#f8f8f2,header:#6272a4,hl:#bd93f9,hl+:#bd93f9,info:#ffb86c,marker:#ff79c6,pointer:#ff79c6,prompt:#50fa7b,spinner:#ffb86c" - $env.XDG_DATA_HOME = $"($env.HOME)/.local/share" - $env.FZF_DEFAULT_COMMAND = "fd --type f --exclude .git --follow --hidden" - $env.SSH_AUTH_SOCK = "/run/user/1000/gnupg/S.gpg-agent.ssh" - $env.PATH = ($env.PATH | split row (char esep) | append $"($env.HOME)/.cache/.bun/bin" | append $"($env.HOME)/.npm-global/bin" | uniq) - $env.NPM_CONFIG_PREFIX = $"($env.HOME)/.npm-global" - $env.FLAKE = $"($env.HOME)/p/NIX/nixos-config" - - # Load kestractl-env from agenix - if ("/run/agenix/kestractl-env" | path exists) { - open /run/agenix/kestractl-env - | lines - | where {($in | str trim | str length) > 0} - | parse "{key}={value}" - | update value {str trim -c '"'} - | transpose -r -d - | load-env - } - ''; - - # if (tty) == "/dev/tty1" { - # exec uwsm start -S -F /run/current-system/sw/bin/Hyprland - # } - # if (tty) == "/dev/tty2" { - # exec gamescope -O HDMI-A-1 -W 1920 -H 1080 --adaptive-sync --hdr-enabled --rt --steam -- steam -pipewire-dmabuf -tenfoot - # } - configFile.text = '' - # Aliases - alias .. = cd .. - alias ... = cd ... - alias h = cd $env.HOME - alias b = yazi - alias lt = eza --tree --level=2 --long --icons --git - alias grep = rg - alias just = just --unstable - - alias node = bun - alias npx = bunx - - alias n = nix - alias nd = nix develop -c $nu.current-shell - alias ns = nix shell - alias nsn = nix shell nixpkgs# - alias nb = nix build - alias nbn = nix build nixpkgs# - alias nf = nix flake - - alias nr = sudo nixos-rebuild --flake . - alias nrs = sudo nixos-rebuild switch --flake .#(sys host | get hostname) - alias snr = sudo nixos-rebuild --flake . - alias snrs = sudo nixos-rebuild --flake . switch - alias hm = home-manager --flake . - alias hms = home-manager --flake . switch - alias hmr = do { cd ~/projects/nix-configurations; nix flake lock --update-input dotfiles; home-manager --flake .#(whoami)@(hostname) switch } - - alias tsu = sudo tailscale up - alias tsd = sudo tailscale down - - alias vi = nvim - alias vim = nvim - - if (which tv | is-not-empty) { - mkdir ($nu.data-dir | path join "vendor/autoload") - tv init nu | save -f ($nu.data-dir | path join "vendor/autoload/tv.nu") - } - ''; - }; - }; -} diff --git a/home/features.old/cli/secrets.nix b/home/features.old/cli/secrets.nix deleted file mode 100644 index c1848f3..0000000 --- a/home/features.old/cli/secrets.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.features.cli.secrets; -in { - options.features.cli.secrets.enable = mkEnableOption "enable secrets"; - - config = mkIf cfg.enable { - programs.password-store = { - enable = true; - package = - pkgs.pass-wayland.withExtensions - (exts: [exts.pass-otp exts.pass-import]); - settings = {PASSWORD_STORE_DIR = "$XDG_DATA_HOME/password-store";}; - }; - home.packages = with pkgs; [pinentry-gnome3]; - }; -} diff --git a/home/features.old/cli/starship.nix b/home/features.old/cli/starship.nix deleted file mode 100644 index 0861293..0000000 --- a/home/features.old/cli/starship.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - config, - lib, - ... -}: -with lib; let - cfg = config.features.cli.starship; -in { - options.features.cli.starship.enable = mkEnableOption "enable starship prompt"; - - config = mkIf cfg.enable { - programs.starship = { - enable = true; - enableFishIntegration = true; - enableNushellIntegration = true; - settings = { - format = "$all$character"; - palette = "universal"; - - palettes.universal = { - background = "#${config.colorScheme.palette.base00}"; - surface = "#${config.colorScheme.palette.base01}"; - muted = "#${config.colorScheme.palette.base03}"; - text = "#${config.colorScheme.palette.base05}"; - bright = "#${config.colorScheme.palette.base07}"; - accent1 = "#${config.colorScheme.palette.base08}"; - accent2 = "#${config.colorScheme.palette.base09}"; - accent3 = "#${config.colorScheme.palette.base0A}"; - accent4 = "#${config.colorScheme.palette.base0B}"; - accent5 = "#${config.colorScheme.palette.base0C}"; - accent6 = "#${config.colorScheme.palette.base0D}"; - accent7 = "#${config.colorScheme.palette.base0E}"; - }; - - character = { - success_symbol = "[❯](accent7)"; - error_symbol = "[❯](accent1)"; - }; - - directory = { - style = "accent6"; - truncation_length = 3; - truncate_to_repo = false; - }; - - git_branch = { - style = "accent7"; - }; - - git_status = { - style = "accent5"; - }; - - cmd_duration = { - style = "accent3"; - }; - - hostname = { - style = "accent4"; - }; - - username = { - style_user = "accent2"; - }; - }; - }; - }; -} diff --git a/home/features.old/cli/television.nix b/home/features.old/cli/television.nix deleted file mode 100644 index bc1b036..0000000 --- a/home/features.old/cli/television.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - config, - lib, - ... -}: -with lib; let - cfg = config.features.cli.television; -in { - options.features.cli.television.enable = mkEnableOption "enable nitch"; - - config = mkIf cfg.enable { - programs.television = { - enable = true; - channels = { - tldr = { - metadata = { - description = "Browse TLDR pages"; - name = "tldr"; - requirements = [ - "tldr" - ]; - }; - preview = { - command = "tldr '{}'"; - }; - source = { - command = "tldr --list"; - }; - }; - git-diff = { - metadata = { - description = "A channel to select files from git diff commands"; - name = "git-diff"; - requirements = [ - "git" - ]; - }; - preview = { - command = "git diff HEAD --color=always -- '{}'"; - }; - source = { - command = "git diff --name-only HEAD"; - }; - }; - git-log = { - metadata = { - description = "A channel to select from git log entries"; - name = "git-log"; - requirements = [ - "git" - ]; - }; - preview = { - command = "git show -p --stat --pretty=fuller --color=always '{0}'"; - }; - source = { - command = "git log --oneline --date=short --pretty=\"format:%h %s %an %cd\" \"$@\""; - output = "{split: :0}"; - }; - }; - }; - }; - }; -} diff --git a/home/features.old/cli/zellij.nix b/home/features.old/cli/zellij.nix deleted file mode 100644 index bd38e5b..0000000 --- a/home/features.old/cli/zellij.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - config, - lib, - ... -}: -with lib; let - cfg = config.features.cli.zellij; -in { - options.features.cli.zellij.enable = mkEnableOption "enable tmux"; - - config = mkIf cfg.enable { - programs.zellij = { - enable = true; - settings = { - theme = "universal"; - themes.universal = { - bg = "#${config.colorScheme.palette.base00}"; - fg = "#${config.colorScheme.palette.base05}"; - black = "#${config.colorScheme.palette.base01}"; - red = "#${config.colorScheme.palette.base08}"; - green = "#${config.colorScheme.palette.base0B}"; - yellow = "#${config.colorScheme.palette.base0A}"; - blue = "#${config.colorScheme.palette.base0D}"; - magenta = "#${config.colorScheme.palette.base0E}"; - cyan = "#${config.colorScheme.palette.base0C}"; - white = "#${config.colorScheme.palette.base07}"; - orange = "#${config.colorScheme.palette.base09}"; - }; - }; - }; - }; -} diff --git a/home/features.old/desktop/AGENTS.md b/home/features.old/desktop/AGENTS.md deleted file mode 100644 index 1c9fbb7..0000000 --- a/home/features.old/desktop/AGENTS.md +++ /dev/null @@ -1,79 +0,0 @@ -# DESKTOP FEATURES (home-manager) - -**Wayland/Hyprland environment with color-coordinated tooling** - -## OVERVIEW -12 modular desktop features with nix-colors (Dracula) integration across all components. - -## STRUCTURE -``` -desktop/ -├── default.nix # Imports + XDG + Kitty config -├── coding.nix # Development tools (VSCode, etc.) -├── crypto.nix # Crypto wallets/tools -├── fonts.nix # Font packages -├── gaming.nix # Gaming tools/Steam -├── hyprland.nix # Hyprland WM configuration -├── media.nix # Media players/editors -├── office.nix # LibreOffice, document tools -├── rofi.nix # Application launcher -├── theme.nix # GTK/Qt theming -├── wayland.nix # Wayland utilities -└── webapps.nix # Browser-based apps -``` - -## WHERE TO LOOK - -| Task | Location | Notes | -|------|----------|-------| -| Add desktop app | Relevant feature .nix | Update home.packages | -| Configure Hyprland | hyprland.nix | Window manager settings | -| Fix colors | Check colorScheme references | Uses config.colorScheme.palette.base* | -| Add font | fonts.nix | Increases system closure size | - -## CONVENTIONS - -### Color Scheme Integration -All color-aware tools reference `config.colorScheme.palette.base00` through `base0F`: -- **base00-07**: Grayscale (dark to light) -- **base08**: Red/errors -- **base09**: Orange -- **base0A**: Yellow/strings -- **base0B**: Green/functions -- **base0C**: Cyan -- **base0D**: Blue/types -- **base0E**: Purple/constants -- **base0F**: Brown - -Template: -```nix -foreground = "#${config.colorScheme.palette.base05}"; -background = "#${config.colorScheme.palette.base00}"; -``` - -### Session Variables -Set in default.nix for Wayland/Hyprland: -```nix -NIXOS_OZONE_WL = "1"; -QT_QPA_PLATFORM = "wayland"; -XDG_CURRENT_DESKTOP = "Hyprland"; -``` - -### XDG Defaults -- **PDF**: okular -- **Text**: nvim -- **Browser**: Zen (io.github.zen_browser.zen) -- **Archive**: file-roller - -## ANTI-PATTERNS - -- **DON'T** hardcode hex colors - use colorScheme palette -- **DON'T** install fonts globally - keep in user packages -- **DON'T** bypass XDG defaults - set in mimeApps - -## NOTES - -- Kitty terminal configured in default.nix (not separate file) -- Bibata-Modern-Ice cursor theme hardcoded -- Session path includes cargo, npm-global, bun -- Desktop features are always-enabled (no feature flags in this dir) diff --git a/home/features.old/desktop/coding.nix b/home/features.old/desktop/coding.nix deleted file mode 100644 index b6a12bf..0000000 --- a/home/features.old/desktop/coding.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.features.desktop.coding; -in { - options.features.desktop.coding.enable = - mkEnableOption "install coding related stuff"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - bruno - insomnia - ]; - coding.editors = { - neovim.enable = true; - zed.enable = true; - }; - }; -} diff --git a/home/features.old/desktop/crypto.nix b/home/features.old/desktop/crypto.nix deleted file mode 100644 index f8132b5..0000000 --- a/home/features.old/desktop/crypto.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.features.desktop.crypto; -in { - options.features.desktop.crypto.enable = mkEnableOption "Enable Crypto"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [bisq2 monero-gui trezor-suite]; - }; -} diff --git a/home/features.old/desktop/default.nix b/home/features.old/desktop/default.nix deleted file mode 100644 index 33c3780..0000000 --- a/home/features.old/desktop/default.nix +++ /dev/null @@ -1,162 +0,0 @@ -{ - config, - pkgs, - ... -}: { - imports = [ - ./coding.nix - ./crypto.nix - ./fonts.nix - ./gaming.nix - ./hyprland.nix - ./media.nix - ./obsidian.nix - ./office.nix - ./rofi.nix - ./theme.nix - ./wallpapers.nix - ./wayland.nix - ./webapps.nix - ]; - - xdg = { - enable = true; - configFile."mimeapps.list".force = true; - mimeApps = { - enable = true; - associations.added = { - "application/zip" = ["org.gnome.FileRoller.desktop"]; - "application/csv" = ["calc.desktop"]; - "application/pdf" = ["okularApplication_pdf.desktop"]; - }; - defaultApplications = { - "application/zip" = ["org.gnome.FileRoller.desktop"]; - "application/csv" = ["calc.desktop"]; - "application/pdf" = ["okularApplication_pdf.desktop"]; - "application/md" = ["nvim.desktop"]; - "application/text" = ["nvim.desktop"]; - "x-scheme-handler/http" = ["io.github.zen_browser.zen"]; - "x-scheme-handler/https" = ["io.github.zen_browser.zen"]; - }; - }; - userDirs = { - enable = true; - createDirectories = true; - setSessionVariables = true; - }; - }; - - home.sessionVariables = { - WEBKIT_DISABLE_COMPOSITING_MODE = "1"; - NIXOS_OZONE_WL = "1"; - TERMINAL = "ghostty"; - QT_QPA_PLATFORM = "wayland"; - XDG_CURRENT_DESKTOP = "Hyprland"; - XDG_SESSION_TYPE = "wayland"; - XDG_SESSION_DESKTOP = "Hyprland"; - }; - home.sessionPath = ["\${XDG_BIN_HOME}" "\${HOME}/.cargo/bin" "$HOME/.npm-global/bin" "$HOME/.cache/.bun/bin"]; - - fonts.fontconfig.enable = true; - - programs.ghostty = { - enable = true; - enableFishIntegration = true; - enableBashIntegration = true; - settings = { - font-family = "Fira Code"; - copy-on-select = true; - - # Base colors from nix-colors - foreground = "#${config.colorScheme.palette.base05}"; - background = "#${config.colorScheme.palette.base00}"; - selection-foreground = "#${config.colorScheme.palette.base07}"; - selection-background = "#${config.colorScheme.palette.base02}"; - - # Cursor - cursor-color = "#${config.colorScheme.palette.base05}"; - - # Palette (16 colors) - palette = [ - "0=#${config.colorScheme.palette.base01}" - "1=#${config.colorScheme.palette.base08}" - "2=#${config.colorScheme.palette.base0B}" - "3=#${config.colorScheme.palette.base0A}" - "4=#${config.colorScheme.palette.base0D}" - "5=#${config.colorScheme.palette.base0E}" - "6=#${config.colorScheme.palette.base0C}" - "7=#${config.colorScheme.palette.base05}" - "8=#${config.colorScheme.palette.base03}" - "9=#${config.colorScheme.palette.base08}" - "10=#${config.colorScheme.palette.base0B}" - "11=#${config.colorScheme.palette.base0A}" - "12=#${config.colorScheme.palette.base0D}" - "13=#${config.colorScheme.palette.base0E}" - "14=#${config.colorScheme.palette.base0C}" - "15=#${config.colorScheme.palette.base07}" - ]; - }; - }; - - home.pointerCursor = { - gtk.enable = true; - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Ice"; - size = 20; - }; - - home.packages = with pkgs; [ - appimage-run - # blueberry - bemoji - brave - # brightnessctl - # clipman - distrobox - eigent - (element-desktop.override { - commandLineArgs = "--password-store=gnome-libsecret"; - }) - launch-webapp - # eww - # firefox-devedition - file-roller - hyprpanel - seahorse - sushi - # glib - # google-chrome - # gsettings-desktop-schemas - # graphviz - ksnip - msty-studio - nwg-look - # opencode-desktop - # pamixer - # pavucontrol - # libsForQt5.qtstyleplugins - # stable.nyxt - # pcmanfm - rose-pine-hyprcursor - # qt5ct - # qt6.qtwayland - #rustdesk - # socat - # unrar - # unzip - # usbutils - # v4l-utils - remmina - slack - telegram-desktop - vivaldi - vivaldi-ffmpeg-codecs - vibetyper - # wl-clipboard - # wlogout - # wtype - # xdg-utils - # ydotool - # zip - ]; -} diff --git a/home/features.old/desktop/fonts.nix b/home/features.old/desktop/fonts.nix deleted file mode 100644 index cb69db2..0000000 --- a/home/features.old/desktop/fonts.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.features.desktop.fonts; -in { - options.features.desktop.fonts.enable = - mkEnableOption "install additional fonts for desktop apps"; - - 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 - ]; - }; -} diff --git a/home/features.old/desktop/gaming.nix b/home/features.old/desktop/gaming.nix deleted file mode 100644 index 6cc7414..0000000 --- a/home/features.old/desktop/gaming.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.features.desktop.gaming; -in { - options.features.desktop.gaming.enable = - mkEnableOption "install gaming related stuff"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - gamescope - gamemode - goverlay - mangohud - protonplus - ]; - }; -} diff --git a/home/features.old/desktop/hyprland.nix b/home/features.old/desktop/hyprland.nix deleted file mode 100644 index 090c809..0000000 --- a/home/features.old/desktop/hyprland.nix +++ /dev/null @@ -1,323 +0,0 @@ -{ - config, - lib, - ... -}: -with lib; let - cfg = config.features.desktop.hyprland; -in { - options.features.desktop.hyprland.enable = - mkEnableOption "Hyprland related stuff"; - - config = mkIf cfg.enable { - wayland.windowManager.hyprland = { - settings = { - xwayland = { - force_zero_scaling = true; - }; - - exec-once = [ - "hyprpanel" - "while ! hyprpaper-random; do sleep 0.5; done" - "wl-paste --type text --watch cliphist store" # Stores only text data - "wl-paste --type image --watch cliphist store" # Stores only image data "wl-paste -p -t text --watch clipman store -P --histpath=\"~/.local/share/clipman-primary.json\"" - "vibetyper" - ]; - - env = [ - "XCURSOR_SIZE,32" - "HYPRCURSOR_THEME,Bibata-Modern-Ice" - "WLR_NO_HARDWARE_CURSORS,1" - "GTK_THEME,Dracula" - "XDG_CURRENT_DESKTOP,Hyprland" - "XDG_SESSION_TYPE,wayland" - "XDG_SESSION_DESKTOP,Hyprland" - "XKB_DEFAULT_LAYOUT,de" - "NIXOS_OZONE_WL,1" - ]; - - input = { - kb_layout = "de,us"; - kb_variant = ""; - kb_model = ""; - kb_rules = ""; - kb_options = "ctrl:nocaps"; - follow_mouse = 1; - }; - - general = { - gaps_in = 5; - gaps_out = 5; - border_size = 1; - # Keeping the existing active border as requested - "col.active_border" = "rgba(9742b5ee) rgba(9742b5ee) 45deg"; - "col.inactive_border" = "rgba(${config.colorScheme.palette.base03}aa)"; - layout = "dwindle"; - }; - - decoration = { - shadow = { - enabled = true; - range = 60; - render_power = 3; - color = "rgba(${config.colorScheme.palette.base00}66)"; - offset = "1 2"; - scale = 0.97; - }; - rounding = 8; - blur = { - enabled = true; - size = 3; - passes = 3; - }; - active_opacity = 0.9; - inactive_opacity = 0.5; - }; - - animations = { - enabled = true; - bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; - animation = [ - "windows, 1, 7, myBezier" - "windowsOut, 1, 7, default, popin 80%" - "border, 1, 10, default" - "borderangle, 1, 8, default" - "fade, 1, 7, default" - "workspaces, 1, 6, default" - ]; - }; - - dwindle = { - pseudotile = true; - preserve_split = true; - }; - - master = { - new_status = "master"; - }; - - device = [ - { - name = "epic-mouse-v1"; - sensitivity = -0.5; - } - { - name = "zsa-technology-labs-moonlander-mark-i"; - kb_layout = "us"; - } - { - name = "keychron-keychron-k7"; - kb_layout = "us"; - } - ]; - windowrule = [ - # Floating dialogs - "match:class file_progress, float on" - "match:class confirm, float on" - "match:class dialog, float on" - "match:class download, float on" - "match:class notification, float on" - "match:class error, float on" - "match:class splash, float on" - "match:class confirmreset, float on" - "match:title Open File, float on" - "match:title branchdialog, float on" - "match:class pavucontrol-qt, float on" - "match:class pavucontrol, float on" - "match:class class:^(espanso)$, float on" - # wlogout - "match:class wlogout, fullscreen on" - "match:title wlogout, float on" - "match:title wlogout, fullscreen on" - # mpv - "match:class mpv, float on" - "match:class mpv, idle_inhibit focus" - "match:class mpv, opacity 1.0 override" - # Media/Volume/PiP - "match:title ^(Media viewer)$, float on" - "match:title ^(Volume Control)$, float on" - "match:title ^(Picture-in-Picture)$, float on" - # Pomodoro timer - "match:title ^(floating-pomodoro)$, float on" - "match:title ^(floating-pomodoro)$, size 250 50" - "match:title ^(floating-pomodoro)$, move 12 (monitor_h-150)" - "match:title ^(floating-pomodoro)$, pin on" - # Streamlabs overlays - "match:initial_title .*streamlabs.com.*, float on" - "match:initial_title .*streamlabs.com.*, pin on" - "match:initial_title .*streamlabs.com.*, size 800 400" - "match:initial_title .*alert-box.*, move 100%-820 102" - "match:initial_title .*chat-box.*, move 100%-820 512" - "match:initial_title .*streamlabs.com.*, opacity 0.5 override" - "match:initial_title .*streamlabs.com.*, idle_inhibit focus" - "match:initial_title .*streamlabs.com.*, no_anim on" - "match:initial_title .*streamlabs.com.*, decorate off" - "match:initial_title .*streamlabs.com.*, no_shadow on" - "match:initial_title .*streamlabs.com.*, no_blur on" - # Vibetyper recording indicator - "match:class ^vibe-typer$, match:title ^Recording Indicator$, no_blur on" - "border_color rgb(ffffff), match:xwayland 1" - ]; - "$mainMod" = "SUPER"; - "$terminal" = "ghostty"; - - bind = [ - "$mainMod, return, exec, $terminal nu -c zellij-ps" - # "$mainMod, t, exec, warp-terminal" - "$mainMod, t, exec, $terminal -e nu -c 'nitch; exec nu'" - "$mainMod SHIFT, t, exec, launch-timer" - "$mainMod, n, exec, $terminal -e nvim" - "$mainMod, z, exec, uwsm app -- zeditor" - "$mainMod, o, exec, hyprctl dispatch setprop activewindow opaque toggle" - "$mainMod, r, exec, hyprctl dispatch focuswindow \"initialtitle:.*alert-box.*\" && hyprctl dispatch moveactive exact 4300 102 && hyprctl dispatch focuswindow \"initialtitle:.*chat-box.*\" && hyprctl dispatch moveactive exact 4300 512" - "$mainMod, b, exec, uwsm app -- thunar" - "$mainMod SHIFT, B, exec, uwsm app -- vivaldi" - "$mainMod, Escape, exec, uwsm app -- wlogout -p layer-shell" - "$mainMod, Space, togglefloating" - "$mainMod, q, killactive" - "$mainMod, M, exit" - "$mainMod, F, fullscreen" - "$mainMod SHIFT, V, togglefloating" - "$mainMod, D, exec, uwsm app -- rofi -show drun -run-command \"uwsm app -- {cmd}\"" - "$mainMod, V, exec, uwsm app -- cliphist list | rofi -dmenu | cliphist decode | wl-copy" - "$mainMod, C, exec, bash -c 'FILE=/tmp/screenshot_$(date +%s).png; grim -g \"$(slurp)\" \"$FILE\" && ksnip \"$FILE\"'" - "$mainMod SHIFT, S, exec, uwsm app -- rofi -show emoji" - "$mainMod, P, exec, uwsm app -- rofi-pass" - "$mainMod SHIFT, P, pseudo" - "$mainMod, R, exec, stt-ptt start" - "$mainMod, S, exec, stt-ptt start" - "$mainMod, J, togglesplit" - "$mainMod, h, movefocus, l" - "$mainMod, l, movefocus, r" - "$mainMod, k, movefocus, u" - "$mainMod, j, movefocus, d" - "$mainMod, 1, workspace, 1" - "$mainMod, 2, workspace, 2" - "$mainMod, 3, workspace, 3" - "$mainMod, 4, workspace, 4" - "$mainMod, 5, workspace, 5" - "$mainMod, 6, workspace, 6" - "$mainMod, 7, workspace, 7" - "$mainMod, 8, workspace, 8" - "$mainMod, 9, workspace, 9" - "$mainMod, 0, workspace, 10" - "$mainMod SHIFT, 1, movetoworkspace, 1" - "$mainMod SHIFT, 2, movetoworkspace, 2" - "$mainMod SHIFT, 3, movetoworkspace, 3" - "$mainMod SHIFT, 4, movetoworkspace, 4" - "$mainMod SHIFT, 5, movetoworkspace, 5" - "$mainMod SHIFT, 6, movetoworkspace, 6" - "$mainMod SHIFT, 7, movetoworkspace, 7" - "$mainMod SHIFT, 8, movetoworkspace, 8" - "$mainMod SHIFT, 9, movetoworkspace, 9" - "$mainMod SHIFT, 0, movetoworkspace, 10" - "$mainMod, mouse_down, workspace, e+1" - "$mainMod, mouse_up, workspace, e-1" - ]; - bindr = [ - "$mainMod, R, exec, stt-ptt stop" - "$mainMod, S, exec, stt-ptt format-stop" - ]; - bindm = [ - "$mainMod, mouse:272, movewindow" - "$mainMod, mouse:273, resizewindow" - ]; - }; - }; - services.hypridle = { - enable = true; - settings = { - general = { - before_sleep_cmd = "hyprlock"; - after_sleep_cmd = "hyprctl dispatch dpms on"; - inhibit_sleep = 3; - }; - - listener = [ - { - timeout = 300; # 5 min - on-timeout = "hyprlock"; - } - { - timeout = 420; # 5.5 min - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - ]; - }; - }; - - services.hyprpaper.enable = true; - - programs.hyprlock = { - enable = true; - settings = { - "$font" = "JetBrainsMono Nerd Font"; - "$base" = "rgb(${config.colorScheme.palette.base00})"; - "$text" = "rgb(${config.colorScheme.palette.base05})"; - "$textAlpha" = "${config.colorScheme.palette.base05}"; - "$accentAlpha" = "${config.colorScheme.palette.base0D}"; - "$red" = "rgb(${config.colorScheme.palette.base08})"; - "$yellow" = "rgb(${config.colorScheme.palette.base0A})"; - - general = { - hide_cursor = true; - }; - - background = { - monitor = ""; - path = "${config.home.homeDirectory}/.config/hypr/wallpapers/wallhaven-lmmo8r.jpg"; - blur_passes = 0; - color = "rgb(${config.colorScheme.palette.base00})"; - }; - - label = [ - { - monitor = ""; - text = "$TIME"; - color = "$text"; - font_size = 90; - font_family = "$font"; - position = "30, 0"; - halign = "left"; - valign = "top"; - } - { - monitor = ""; - text = ''cmd[update:43200000] echo "$(date +"%A, %d %B %Y")"''; - color = "$text"; - font_size = 25; - font_family = "$font"; - position = "30, -150"; - halign = "left"; - valign = "top"; - } - ]; - - input-field = [ - { - monitor = ""; - size = "300, 60"; - outline_thickness = 4; - dots_size = 0.2; - dots_spacing = 0.2; - dots_center = true; - outer_color = "rgb(${config.colorScheme.palette.base0D})"; - inner_color = "rgb(${config.colorScheme.palette.base00})"; - font_color = "rgb(${config.colorScheme.palette.base05})"; - fade_on_empty = false; - placeholder_text = ''󰌾 Logged in as $USER''; - hide_input = false; - check_color = "rgb(${config.colorScheme.palette.base0D})"; - fail_color = "rgb(${config.colorScheme.palette.base08})"; - fail_text = ''$FAIL ($ATTEMPTS)''; - capslock_color = "rgb(${config.colorScheme.palette.base0A})"; - position = "0, -35"; - halign = "center"; - valign = "center"; - } - ]; - }; - }; - }; -} diff --git a/home/features.old/desktop/media.nix b/home/features.old/desktop/media.nix deleted file mode 100644 index 39f4d01..0000000 --- a/home/features.old/desktop/media.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.features.desktop.media; -in { - options.features.desktop.media.enable = - mkEnableOption "enable media features"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - # handbrake - # kdePackages.kdenlive - # makemkv - # mediainfo - amf - ffmpeg_6-full - gimp - gst_all_1.gstreamer - gst_all_1.gst-vaapi - handbrake - inkscape - kdePackages.kdenlive - libation - #makemkv - pamixer - pavucontrol - qpwgraph - v4l-utils - plexamp - # uxplay - # vlc - webcord - # yt-dlp - unimatrix - ]; - - programs = { - mpv = { - enable = true; - bindings = { - WHEEL_UP = "seek 10"; - WHEEL_DOWN = "seek -10"; - }; - config = { - profile = "gpu-hq"; - ytdl-format = "bestvideo+bestaudio"; - }; - }; - }; - }; -} diff --git a/home/features.old/desktop/obsidian.nix b/home/features.old/desktop/obsidian.nix deleted file mode 100644 index c03b766..0000000 --- a/home/features.old/desktop/obsidian.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - config, - lib, - ... -}: -with lib; let - cfg = config.features.desktop.obsidian; -in { - options.features.desktop.obsidian.enable = - mkEnableOption "enable Obsidian knowledge base"; - - config = mkIf cfg.enable { - programs.obsidian.enable = true; - - xdg.mimeApps = { - enable = true; - associations.added = { - "text/markdown" = ["obsidian.desktop"]; - }; - defaultApplications = { - "text/markdown" = ["obsidian.desktop"]; - }; - }; - }; -} diff --git a/home/features.old/desktop/office.nix b/home/features.old/desktop/office.nix deleted file mode 100644 index 0eddd32..0000000 --- a/home/features.old/desktop/office.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.features.desktop.office; -in { - options.features.desktop.office.enable = - mkEnableOption "install office and paperwork stuff"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - libreoffice-fresh - ]; - }; -} diff --git a/home/features.old/desktop/rofi.nix b/home/features.old/desktop/rofi.nix deleted file mode 100644 index e17c9a6..0000000 --- a/home/features.old/desktop/rofi.nix +++ /dev/null @@ -1,206 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: -with lib; let - cfg = config.features.desktop.rofi; -in { - options.features.desktop.rofi.enable = mkEnableOption "enable rofi"; - - config = mkIf cfg.enable { - programs.rofi = with pkgs; { - enable = true; - package = rofi.override { - plugins = [ - rofi-calc - rofi-emoji - stable.rofi-file-browser - ]; - }; - pass = { - enable = true; - package = rofi-pass-wayland; - }; - terminal = "${pkgs.ghostty}/bin/ghostty"; - font = "Fira Code"; - extraConfig = { - show-icons = true; - disable-history = false; - modi = "drun,calc,emoji,filebrowser"; - kb-primary-paste = "Control+V,Shift+Insert"; - kb-secondary-paste = "Control+v,Insert"; - }; - theme = let - inherit (config.colorScheme) palette; - in - builtins.toString (pkgs.writeText "rofi-universal-theme.rasi" '' - * { - /* Universal theme colors from nix-colors */ - background: #${palette.base00}; - surface: #${palette.base01}; - overlay: #${palette.base02}; - muted: #${palette.base03}; - subtle: #${palette.base04}; - text: #${palette.base05}; - bright-text: #${palette.base06}; - highlight: #${palette.base07}; - accent1: #${palette.base08}; - accent2: #${palette.base09}; - accent3: #${palette.base0A}; - accent4: #${palette.base0B}; - accent5: #${palette.base0C}; - accent6: #${palette.base0D}; - accent7: #${palette.base0E}; - accent8: #${palette.base0F}; - - /* Global properties */ - background-color: @background; - text-color: @text; - font: "Fira Code 12"; - border: 0; - margin: 0; - padding: 0; - spacing: 0; - } - - window { - background-color: @background; - border: 1px; - border-color: @accent7; - border-radius: 6px; - width: 40%; - padding: 16px; - } - - inputbar { - children: [ prompt, entry ]; - spacing: 12px; - padding: 8px; - border-radius: 4px; - background-color: @surface; - } - - prompt { - text-color: @accent7; - background-color: transparent; - } - - entry { - placeholder: "Search..."; - placeholder-color: @subtle; - text-color: @text; - background-color: transparent; - cursor-color: @accent7; - } - - message { - background-color: @surface; - border-radius: 4px; - padding: 8px; - margin: 8px 0; - } - - textbox { - text-color: @text; - background-color: transparent; - } - - listview { - background-color: transparent; - margin: 8px 0 0; - lines: 10; - columns: 1; - fixed-height: true; - scrollbar: false; - } - - element { - background-color: transparent; - text-color: @text; - padding: 8px; - border-radius: 4px; - spacing: 8px; - } - - element normal.normal { - background-color: transparent; - text-color: @text; - } - - element selected.normal { - background-color: @accent7; - text-color: @background; - } - - element alternate.normal { - background-color: transparent; - text-color: @text; - } - - element-icon { - background-color: transparent; - size: 24px; - } - - element-text { - background-color: transparent; - text-color: inherit; - vertical-align: 0.5; - } - - mode-switcher { - spacing: 0; - background-color: @surface; - border-radius: 4px; - margin: 8px 0 0; - } - - button { - padding: 8px 16px; - background-color: transparent; - text-color: @text; - border-radius: 4px; - } - - button selected { - background-color: @accent7; - text-color: @background; - } - - /* Scrollbar */ - scrollbar { - width: 4px; - border: 0; - handle-color: @accent7; - handle-width: 4px; - padding: 0; - } - ''); - }; - cli.rofi-project-opener = { - enable = true; - projectDirs = { - AI = { - path = "~/p/AI"; - args = ""; - }; - CHAT = { - path = "~/p/CHAT"; - args = "--agent chiron"; - }; - MISC = { - path = "~/p/MISC"; - args = "--agent chiron-forge"; - }; - NIX = { - path = "~/p/NIX"; - args = ""; - }; - }; - terminal = pkgs.ghostty; - terminalCommand = "opencode %a"; - }; - }; -} diff --git a/home/features.old/desktop/theme.nix b/home/features.old/desktop/theme.nix deleted file mode 100644 index ee2aa17..0000000 --- a/home/features.old/desktop/theme.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - pkgs, - ... -}: { - 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; - }; -} diff --git a/home/features.old/desktop/wallpapers.nix b/home/features.old/desktop/wallpapers.nix deleted file mode 100644 index fbc6a27..0000000 --- a/home/features.old/desktop/wallpapers.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.features.desktop.wallpapers; -in { - options.features.desktop.wallpapers = mkEnableOption "Wallpapers for Hyprland"; - - config = mkIf cfg { - xdg.configFile."hypr/wallpapers" = { - source = ../../m3tam3re/wallpapers; - recursive = true; - }; - }; -} diff --git a/home/features.old/desktop/wayland.nix b/home/features.old/desktop/wayland.nix deleted file mode 100644 index 506b182..0000000 --- a/home/features.old/desktop/wayland.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.features.desktop.wayland; -in { - options.features.desktop.wayland.enable = mkEnableOption "wayland extra tools and config"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - grim - hyprcursor - hyprlock - hyprpaper - qt6.qtwayland - slurp - waypipe - wl-clipboard - wf-recorder - wl-mirror - wlogout - wtype - ydotool - ]; - }; -} diff --git a/home/features.old/desktop/webapps.nix b/home/features.old/desktop/webapps.nix deleted file mode 100644 index 57ed3fc..0000000 --- a/home/features.old/desktop/webapps.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - pkgs, - lib, - ... -}: let - icons = { - teams = pkgs.fetchurl { - url = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/microsoft-teams.svg"; - sha256 = "sha256-Pr9QS8nnXJq97r4/G3c6JXi34zxHl0ps9gcyI8cN/s8="; - }; - outlook = pkgs.fetchurl { - url = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/microsoft-outlook.svg"; - sha256 = "sha256-3u8t5QNHFZvrAegxBiGicO4PjtMWhEaQSCv7MSSfLLc="; - }; - opencode = pkgs.fetchurl { - url = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/opencode-dark.svg"; - sha256 = "1lms4f8habamvdh2qqqz9psx4py9wx23mmlkkds44pvrbq3bkj3n"; - }; - }; -in { - xdg.desktopEntries = { - teams = { - name = "Microsoft Teams"; - exec = "launch-webapp https://teams.microsoft.com"; - comment = "Open Microsoft Teams as a Desktop App"; - categories = ["Application" "Network" "Chat"]; - terminal = false; - icon = icons.teams; - }; - outlook = { - name = "Microsoft Outlook"; - exec = "launch-webapp https://outlook.office.com/mail/"; - comment = "Open Microsoft Outlook as a Desktop App"; - categories = ["Application" "Network"]; - terminal = false; - icon = icons.outlook; - }; - basecamp = { - name = "Basecamp"; - exec = "launch-webapp https://3.basecamp.com/5996442/"; - comment = "Open Basecamp as a Desktop App"; - categories = ["Application" "Network"]; - terminal = false; - icon = "/home/sascha.koenig/.local/share/icons/basecamp-logo.png"; - }; - opencode = { - name = "Opencode"; - exec = "rofi-project-opener"; - comment = "Open Opencode Terminal App"; - categories = ["Application" "Development"]; - terminal = false; - icon = icons.opencode; - }; - }; -} diff --git a/home/lib/default.nix b/home/lib/default.nix index adb2a77..6fb9798 100644 --- a/home/lib/default.nix +++ b/home/lib/default.nix @@ -8,9 +8,7 @@ # (homeLib.mkHomeConfig { profiles = ["coding" "gaming"]; context = "desktop"; }) # ]; # } -{ lib }: - -let +{lib}: let # Infrastructure layer — nixpkgs overlays, nix-colors, m3ta-nixpkgs modules. # Always loaded on every host. commonModule = ../common; @@ -31,7 +29,6 @@ let gaming = ../profiles/gaming; media = ../profiles/media; }; - in { # Generate a home-manager module with imports based on profiles and context. # @@ -46,36 +43,41 @@ in { mkHomeConfig = { profiles ? [], context ? null, - }: - let + }: let contextImport = - if context == "desktop" then [ contextModuleMap.desktop ] - else if context == "server" then [ contextModuleMap.server ] + if context == "desktop" + then [contextModuleMap.desktop] + else if context == "server" + then [contextModuleMap.server] else []; # Partition profiles into known and unknown for assertion + safe import. - unknownProfiles = builtins.filter + unknownProfiles = + builtins.filter (profileName: ! builtins.hasAttr profileName profileModuleMap) profiles; # Only import known profiles; the assertion below catches unknowns. - activeProfiles = builtins.filter + activeProfiles = + builtins.filter (profileName: builtins.hasAttr profileName profileModuleMap) profiles; profileImports = map (profileName: profileModuleMap.${profileName}) activeProfiles; - contextStr = if context == null then "null" else context; - + contextStr = + if context == null + then "null" + else context; in { imports = - [ commonModule baseModule ] + [commonModule baseModule] ++ contextImport ++ profileImports; assertions = [ { - assertion = builtins.elem context [ "desktop" "server" null ]; + assertion = builtins.elem context ["desktop" "server" null]; message = "m3ta home: context must be 'desktop', 'server', or null" + " (got: '${contextStr}')"; diff --git a/home/m3tam3re/m3-aether.nix b/home/m3tam3re/m3-aether.nix index a24412e..fac6499 100644 --- a/home/m3tam3re/m3-aether.nix +++ b/home/m3tam3re/m3-aether.nix @@ -1,15 +1,11 @@ # m3-aether — cloud VM. # Context: server | Profiles: (none) -{ - lib, - ... -}: -let - homeLib = import ../lib { inherit lib; }; +{lib, ...}: let + homeLib = import ../lib {inherit lib;}; in { imports = [ (homeLib.mkHomeConfig { - profiles = [ ]; + profiles = []; context = "server"; }) ./home-server.nix @@ -26,5 +22,4 @@ in { nitch.enable = true; }; }; - } diff --git a/home/m3tam3re/m3-ares.nix b/home/m3tam3re/m3-ares.nix index ee7593a..4cdfb3b 100644 --- a/home/m3tam3re/m3-ares.nix +++ b/home/m3tam3re/m3-ares.nix @@ -4,133 +4,131 @@ config, lib, ... -}: -let - homeLib = import ../lib { inherit lib; }; +}: let + homeLib = import ../lib {inherit lib;}; in -with lib; { - imports = [ - (homeLib.mkHomeConfig { - profiles = [ "coding" "gaming" "media" ]; - context = "desktop"; - }) - ./home.nix - ]; + with lib; { + imports = [ + (homeLib.mkHomeConfig { + profiles = ["coding" "gaming" "media"]; + context = "desktop"; + }) + ./home.nix + ]; - config = mkMerge [ - { - # Base CLI tools (new namespace) - base = { - shell = { - fish.enable = true; - nushell.enable = true; - starship.enable = true; + config = mkMerge [ + { + # Base CLI tools (new namespace) + base = { + shell = { + fish.enable = true; + nushell.enable = true; + starship.enable = true; + }; + cliTools = { + fzf.enable = true; + nitch.enable = true; + television.enable = true; + }; + secrets.enable = true; }; - cliTools = { - fzf.enable = true; - nitch.enable = true; - television.enable = true; + + # Desktop features (new namespace) + desktop = { + wm = { + hyprland.enable = true; + rofi.enable = true; + wayland.enable = true; + }; + apps = { + crypto.enable = true; + obsidian.enable = true; + office.enable = true; + }; + theme = { + fonts.enable = true; + wallpapers.enable = true; + }; }; - secrets.enable = true; - }; - - # Desktop features (new namespace) - desktop = { - wm = { - hyprland.enable = true; - rofi.enable = true; - wayland.enable = true; + # Coding environment + coding = { + editors = { + neovim.enable = true; + zed.enable = true; + }; + lsp.enable = true; }; - apps = { - crypto.enable = true; - obsidian.enable = true; - office.enable = true; + + # Gaming profile features + profiles.gaming = { + steam.enable = true; + gamescope.enable = true; }; - theme = { - fonts.enable = true; - wallpapers.enable = true; + + # Media profile features + profiles.media = { + obs.enable = true; + ffmpeg.enable = true; + kdenlive.enable = true; + ytDlp.enable = true; }; - }; - # Coding environment - coding = { - editors = { - neovim.enable = true; - zed.enable = true; - }; - lsp.enable = true; - }; - - # Gaming profile features - profiles.gaming = { - steam.enable = true; - gamescope.enable = true; - }; - - # Media profile features - profiles.media = { - obs.enable = true; - ffmpeg.enable = true; - kdenlive.enable = true; - ytDlp.enable = true; - }; - - xdg = { - enable = true; - configFile."mimeapps.list".force = true; - mimeApps = { + xdg = { enable = true; - associations.added = { - "application/zip" = [ "org.gnome.FileRoller.desktop" ]; - "application/csv" = [ "calc.desktop" ]; - "application/pdf" = [ "vivaldi-stable.desktop" ]; - "x-scheme-handler/http" = [ "vivaldi-stable.desktop" ]; - "x-scheme-handler/https" = [ "vivaldi-stable.desktop" ]; - }; - defaultApplications = { - "application/zip" = [ "org.gnome.FileRoller.desktop" ]; - "application/csv" = [ "calc.desktop" ]; - "application/pdf" = [ "vivaldi-stable.desktop" ]; - "application/md" = [ "dev.zed.Zed.desktop" ]; - "application/text" = [ "dev.zed.Zed.desktop" ]; - "x-scheme-handler/http" = [ "vivaldi-stable.desktop" ]; - "x-scheme-handler/https" = [ "vivaldi-stable.desktop" ]; + configFile."mimeapps.list".force = true; + mimeApps = { + enable = true; + associations.added = { + "application/zip" = ["org.gnome.FileRoller.desktop"]; + "application/csv" = ["calc.desktop"]; + "application/pdf" = ["vivaldi-stable.desktop"]; + "x-scheme-handler/http" = ["vivaldi-stable.desktop"]; + "x-scheme-handler/https" = ["vivaldi-stable.desktop"]; + }; + defaultApplications = { + "application/zip" = ["org.gnome.FileRoller.desktop"]; + "application/csv" = ["calc.desktop"]; + "application/pdf" = ["vivaldi-stable.desktop"]; + "application/md" = ["dev.zed.Zed.desktop"]; + "application/text" = ["dev.zed.Zed.desktop"]; + "x-scheme-handler/http" = ["vivaldi-stable.desktop"]; + "x-scheme-handler/https" = ["vivaldi-stable.desktop"]; + }; }; }; - }; - } + } - # Host-specific Hyprland monitor and workspace layout - (mkIf config.desktop.wm.hyprland.enable { - wayland.windowManager.hyprland = { - enable = true; - settings = { - exec-once = [ "tuxedo-backlight" ]; - monitor = [ - "eDP-1,preferred,0x0,1.25" - "HDMI-A-1,1920x1080@120,2560x0,1" - ]; - workspace = [ - "1, monitor:eDP-1, default:true" - "2, monitor:eDP-1" - "3, monitor:eDP-1" - "4, monitor:HDMI-A-1," - "5, monitor:HDMI-A-1,border:false,rounding:false" - "6, monitor:HDMI-A-1" - ]; - windowrule = [ - "match:class dev.zed.Zed, workspace 1" - "match:class Msty, workspace 1" - "match:class ^(com.obsproject.Studio)$, workspace 2" - "match:class ^(brave-browser)$, workspace 4, opacity 1.0" - "match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0" - "match:class ^steam_app_\\d+$, fullscreen on" - "match:class ^steam_app_\\d+$, workspace 5" - "match:class ^steam_app_\\d+$, idle_inhibit focus" - ]; + # Host-specific Hyprland monitor and workspace layout + (mkIf config.desktop.wm.hyprland.enable { + wayland.windowManager.hyprland = { + enable = true; + settings = { + exec-once = ["tuxedo-backlight"]; + monitor = [ + "eDP-1,preferred,0x0,1.25" + "HDMI-A-1,1920x1080@120,2560x0,1" + ]; + workspace = [ + "1, monitor:eDP-1, default:true" + "2, monitor:eDP-1" + "3, monitor:eDP-1" + "4, monitor:HDMI-A-1," + "5, monitor:HDMI-A-1,border:false,rounding:false" + "6, monitor:HDMI-A-1" + ]; + windowrule = [ + "match:class dev.zed.Zed, workspace 1" + "match:class Msty, workspace 1" + "match:class ^(com.obsproject.Studio)$, workspace 2" + "match:class ^(brave-browser)$, workspace 4, opacity 1.0" + "match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0" + "match:class ^steam_app_\\d+$, fullscreen on" + "match:class ^steam_app_\\d+$, workspace 5" + "match:class ^steam_app_\\d+$, idle_inhibit focus" + ]; + }; }; - }; - }) - ]; -} + }) + ]; + } diff --git a/home/m3tam3re/m3-atlas.nix b/home/m3tam3re/m3-atlas.nix index 161798f..248fe23 100644 --- a/home/m3tam3re/m3-atlas.nix +++ b/home/m3tam3re/m3-atlas.nix @@ -1,15 +1,11 @@ # m3-atlas — primary server, Traefik hub and container host. # Context: server | Profiles: coding -{ - lib, - ... -}: -let - homeLib = import ../lib { inherit lib; }; +{lib, ...}: let + homeLib = import ../lib {inherit lib;}; in { imports = [ (homeLib.mkHomeConfig { - profiles = [ "coding" ]; + profiles = ["coding"]; context = "server"; }) ./home-server.nix diff --git a/home/m3tam3re/m3-daedalus.nix b/home/m3tam3re/m3-daedalus.nix index 3c09562..124dc4a 100644 --- a/home/m3tam3re/m3-daedalus.nix +++ b/home/m3tam3re/m3-daedalus.nix @@ -4,126 +4,124 @@ config, lib, ... -}: -let - homeLib = import ../lib { inherit lib; }; +}: let + homeLib = import ../lib {inherit lib;}; in -with lib; { - imports = [ - (homeLib.mkHomeConfig { - profiles = [ "coding" "media" ]; - context = "desktop"; - }) - ./home.nix - ]; + with lib; { + imports = [ + (homeLib.mkHomeConfig { + profiles = ["coding" "media"]; + context = "desktop"; + }) + ./home.nix + ]; - config = mkMerge [ - { - # Base CLI tools (new namespace) - base = { - shell = { - fish.enable = true; - nushell.enable = true; - starship.enable = true; + config = mkMerge [ + { + # Base CLI tools (new namespace) + base = { + shell = { + fish.enable = true; + nushell.enable = true; + starship.enable = true; + }; + cliTools = { + fzf.enable = true; + nitch.enable = true; + television.enable = true; + }; + secrets.enable = true; }; - cliTools = { - fzf.enable = true; - nitch.enable = true; - television.enable = true; - }; - secrets.enable = true; - }; - - # Desktop features (new namespace) - desktop = { - wm = { - hyprland.enable = false; - rofi.enable = true; - wayland.enable = false; + # Desktop features (new namespace) + desktop = { + wm = { + hyprland.enable = false; + rofi.enable = true; + wayland.enable = false; + }; + apps = { + obsidian.enable = true; + office.enable = false; + crypto.enable = false; + }; + theme = { + fonts.enable = true; + wallpapers.enable = false; + }; }; - apps = { - obsidian.enable = true; - office.enable = false; - crypto.enable = false; - }; - theme = { - fonts.enable = true; - wallpapers.enable = false; - }; - }; - # Coding environment - coding = { - editors = { - neovim.enable = true; - zed.enable = true; + # Coding environment + coding = { + editors = { + neovim.enable = true; + zed.enable = true; + }; + lsp.enable = true; }; - lsp.enable = true; - }; - # Media profile features - profiles.media = { - obs.enable = false; - ffmpeg.enable = false; - kdenlive.enable = false; - ytDlp.enable = true; - }; + # Media profile features + profiles.media = { + obs.enable = false; + ffmpeg.enable = false; + kdenlive.enable = false; + ytDlp.enable = true; + }; - xdg = { - enable = true; - configFile."mimeapps.list".force = true; - mimeApps = { + xdg = { enable = true; - associations.added = { - "application/zip" = [ "org.gnome.FileRoller.desktop" ]; - "application/csv" = [ "calc.desktop" ]; - "application/pdf" = [ "vivaldi-stable.desktop" ]; - "x-scheme-handler/http" = [ "vivaldi-stable.desktop" ]; - "x-scheme-handler/https" = [ "vivaldi-stable.desktop" ]; - }; - defaultApplications = { - "application/zip" = [ "org.gnome.FileRoller.desktop" ]; - "application/csv" = [ "calc.desktop" ]; - "application/pdf" = [ "vivaldi-stable.desktop" ]; - "application/md" = [ "dev.zed.Zed.desktop" ]; - "application/text" = [ "dev.zed.Zed.desktop" ]; - "x-scheme-handler/http" = [ "vivaldi-stable.desktop" ]; - "x-scheme-handler/https" = [ "vivaldi-stable.desktop" ]; + configFile."mimeapps.list".force = true; + mimeApps = { + enable = true; + associations.added = { + "application/zip" = ["org.gnome.FileRoller.desktop"]; + "application/csv" = ["calc.desktop"]; + "application/pdf" = ["vivaldi-stable.desktop"]; + "x-scheme-handler/http" = ["vivaldi-stable.desktop"]; + "x-scheme-handler/https" = ["vivaldi-stable.desktop"]; + }; + defaultApplications = { + "application/zip" = ["org.gnome.FileRoller.desktop"]; + "application/csv" = ["calc.desktop"]; + "application/pdf" = ["vivaldi-stable.desktop"]; + "application/md" = ["dev.zed.Zed.desktop"]; + "application/text" = ["dev.zed.Zed.desktop"]; + "x-scheme-handler/http" = ["vivaldi-stable.desktop"]; + "x-scheme-handler/https" = ["vivaldi-stable.desktop"]; + }; }; }; - }; - } + } - # Host-specific Hyprland layout — only applies when hyprland is enabled - (mkIf config.desktop.wm.hyprland.enable { - wayland.windowManager.hyprland = { - enable = true; - settings = { - monitor = [ - "eDP-1,preferred,0x0,1.25" - "HDMI-A-1,preferred,2560x0,1" - ]; - workspace = [ - "1, monitor:eDP-1, default:true" - "2, monitor:eDP-1" - "3, monitor:eDP-1" - "4, monitor:HDMI-A-1" - "5, monitor:HDMI-A-1,border:false,rounding:false" - "6, monitor:HDMI-A-1" - ]; - windowrule = [ - "match:class dev.zed.Zed, workspace 1" - "match:class Msty, workspace 1" - "match:class ^(com.obsproject.Studio)$, workspace 2" - "match:class ^(brave-browser)$, workspace 4, opacity 1.0" - "match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0" - "match:class ^steam_app_\\d+$, fullscreen on" - "match:class ^steam_app_\\d+$, workspace 5" - "match:class ^steam_app_\\d+$, idle_inhibit focus" - ]; + # Host-specific Hyprland layout — only applies when hyprland is enabled + (mkIf config.desktop.wm.hyprland.enable { + wayland.windowManager.hyprland = { + enable = true; + settings = { + monitor = [ + "eDP-1,preferred,0x0,1.25" + "HDMI-A-1,preferred,2560x0,1" + ]; + workspace = [ + "1, monitor:eDP-1, default:true" + "2, monitor:eDP-1" + "3, monitor:eDP-1" + "4, monitor:HDMI-A-1" + "5, monitor:HDMI-A-1,border:false,rounding:false" + "6, monitor:HDMI-A-1" + ]; + windowrule = [ + "match:class dev.zed.Zed, workspace 1" + "match:class Msty, workspace 1" + "match:class ^(com.obsproject.Studio)$, workspace 2" + "match:class ^(brave-browser)$, workspace 4, opacity 1.0" + "match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0" + "match:class ^steam_app_\\d+$, fullscreen on" + "match:class ^steam_app_\\d+$, workspace 5" + "match:class ^steam_app_\\d+$, idle_inhibit focus" + ]; + }; }; - }; - }) - ]; -} + }) + ]; + } diff --git a/home/m3tam3re/m3-helios.nix b/home/m3tam3re/m3-helios.nix index 17df42f..12fb021 100644 --- a/home/m3tam3re/m3-helios.nix +++ b/home/m3tam3re/m3-helios.nix @@ -1,15 +1,11 @@ # m3-helios — AdGuard DNS and internal routing server. # Context: server | Profiles: (none) -{ - lib, - ... -}: -let - homeLib = import ../lib { inherit lib; }; +{lib, ...}: let + homeLib = import ../lib {inherit lib;}; in { imports = [ (homeLib.mkHomeConfig { - profiles = [ ]; + profiles = []; context = "server"; }) ./home-server.nix @@ -26,5 +22,4 @@ in { nitch.enable = true; }; }; - } diff --git a/home/m3tam3re/m3-hermes.nix b/home/m3tam3re/m3-hermes.nix index e79822d..fe8d193 100644 --- a/home/m3tam3re/m3-hermes.nix +++ b/home/m3tam3re/m3-hermes.nix @@ -1,15 +1,11 @@ # m3-hermes — secondary server. # Context: server | Profiles: (none) -{ - lib, - ... -}: -let - homeLib = import ../lib { inherit lib; }; +{lib, ...}: let + homeLib = import ../lib {inherit lib;}; in { imports = [ (homeLib.mkHomeConfig { - profiles = [ ]; + profiles = []; context = "server"; }) ./home-server.nix @@ -26,5 +22,4 @@ in { nitch.enable = true; }; }; - } diff --git a/home/m3tam3re/m3-kratos.nix b/home/m3tam3re/m3-kratos.nix index 7d23493..333bbbd 100644 --- a/home/m3tam3re/m3-kratos.nix +++ b/home/m3tam3re/m3-kratos.nix @@ -4,129 +4,128 @@ config, lib, ... -}: -let - homeLib = import ../lib { inherit lib; }; +}: let + homeLib = import ../lib {inherit lib;}; in -with lib; { - imports = [ - (homeLib.mkHomeConfig { - profiles = [ "coding" "gaming" "media" ]; - context = "desktop"; - }) - ./home.nix - ]; + with lib; { + imports = [ + (homeLib.mkHomeConfig { + profiles = ["coding" "gaming" "media"]; + context = "desktop"; + }) + ./home.nix + ]; - config = mkMerge [ - { - # Base CLI tools (new namespace) - base = { - shell = { - nushell.enable = true; - starship.enable = true; + config = mkMerge [ + { + # Base CLI tools (new namespace) + base = { + shell = { + nushell.enable = true; + starship.enable = true; + }; + cliTools = { + fzf.enable = true; + nitch.enable = true; + television.enable = true; + }; + secrets.enable = true; }; - cliTools = { - fzf.enable = true; - nitch.enable = true; - television.enable = true; - }; - secrets.enable = true; - }; - # Desktop features (new namespace) - desktop = { - wm = { - hyprland.enable = true; - rofi.enable = true; - wayland.enable = true; + # Desktop features (new namespace) + desktop = { + wm = { + hyprland.enable = true; + rofi.enable = true; + wayland.enable = true; + }; + apps = { + crypto.enable = true; + obsidian.enable = true; + office.enable = true; + }; + theme = { + fonts.enable = true; + wallpapers.enable = true; + }; }; - apps = { - crypto.enable = true; - obsidian.enable = true; - office.enable = true; + + # Coding environment + coding = { + editors = { + neovim.enable = true; + zed.enable = true; + }; + lsp.enable = true; }; - theme = { - fonts.enable = true; - wallpapers.enable = true; + + # Gaming profile features + profiles.gaming = { + steam.enable = true; + gamescope.enable = true; }; - }; - # Coding environment - coding = { - editors = { - neovim.enable = true; - zed.enable = true; + # Media profile features + profiles.media = { + obs.enable = true; + ffmpeg.enable = true; + kdenlive.enable = true; + ytDlp.enable = true; }; - lsp.enable = true; - }; - # Gaming profile features - profiles.gaming = { - steam.enable = true; - gamescope.enable = true; - }; - - # Media profile features - profiles.media = { - obs.enable = true; - ffmpeg.enable = true; - kdenlive.enable = true; - ytDlp.enable = true; - }; - - xdg = { - enable = true; - configFile."mimeapps.list".force = true; - mimeApps = { + xdg = { enable = true; - associations.added = { - "application/zip" = [ "org.gnome.FileRoller.desktop" ]; - "application/csv" = [ "calc.desktop" ]; - "application/pdf" = [ "vivaldi-stable.desktop" ]; - "x-scheme-handler/http" = [ "vivaldi-stable.desktop" ]; - "x-scheme-handler/https" = [ "vivaldi-stable.desktop" ]; - }; - defaultApplications = { - "application/zip" = [ "org.gnome.FileRoller.desktop" ]; - "application/csv" = [ "calc.desktop" ]; - "application/pdf" = [ "vivaldi-stable.desktop" ]; - "application/md" = [ "dev.zed.Zed.desktop" ]; - "application/text" = [ "dev.zed.Zed.desktop" ]; - "x-scheme-handler/http" = [ "vivaldi-stable.desktop" ]; - "x-scheme-handler/https" = [ "vivaldi-stable.desktop" ]; + configFile."mimeapps.list".force = true; + mimeApps = { + enable = true; + associations.added = { + "application/zip" = ["org.gnome.FileRoller.desktop"]; + "application/csv" = ["calc.desktop"]; + "application/pdf" = ["vivaldi-stable.desktop"]; + "x-scheme-handler/http" = ["vivaldi-stable.desktop"]; + "x-scheme-handler/https" = ["vivaldi-stable.desktop"]; + }; + defaultApplications = { + "application/zip" = ["org.gnome.FileRoller.desktop"]; + "application/csv" = ["calc.desktop"]; + "application/pdf" = ["vivaldi-stable.desktop"]; + "application/md" = ["dev.zed.Zed.desktop"]; + "application/text" = ["dev.zed.Zed.desktop"]; + "x-scheme-handler/http" = ["vivaldi-stable.desktop"]; + "x-scheme-handler/https" = ["vivaldi-stable.desktop"]; + }; }; }; - }; - } + } - # Host-specific Hyprland monitor and workspace layout (dual 1440p monitors) - (mkIf config.desktop.wm.hyprland.enable { - wayland.windowManager.hyprland = { - enable = true; - settings = { - monitor = [ - "DP-1,2560x1440@144,0x0,1" - "DP-2,2560x1440@144,2560x0,1" - ]; - workspace = [ - "1, monitor:DP-1, default:true" - "2, monitor:DP-1" - "3, monitor:DP-1" - "4, monitor:DP-2" - "5, monitor:DP-2" - "6, monitor:DP-2" - "7, monitor:DP-2" - ]; - windowrule = [ - "match:class dev.zed.Zed, workspace 1" - "match:class Msty, workspace 1" - "match:class ^(com.obsproject.Studio)$, workspace 2" - "match:class ^(brave-browser)$, workspace 4, opacity 1.0" - "match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0" - "match:class ^steam_app_\\d+$, idle_inhibit focus" - ]; + # Host-specific Hyprland monitor and workspace layout (dual 1440p monitors) + (mkIf config.desktop.wm.hyprland.enable { + wayland.windowManager.hyprland = { + enable = true; + settings = { + monitor = [ + "DP-1,2560x1440@144,0x0,1" + "DP-2,2560x1440@144,2560x0,1" + ]; + workspace = [ + "1, monitor:DP-1, default:true" + "2, monitor:DP-1" + "3, monitor:DP-1" + "4, monitor:DP-2" + "5, monitor:DP-2" + "6, monitor:DP-2" + "7, monitor:DP-2" + ]; + windowrule = [ + "match:class dev.zed.Zed, workspace 1" + "match:class Msty, workspace 1" + "match:class ^(com.obsproject.Studio)$, workspace 2" + "match:class ^(brave-browser)$, workspace 4, opacity 1.0" + "match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0" + "match:class ^steam_app_\\d+$, idle_inhibit focus" + ]; + }; }; - }; - }) - ]; -} + }) + ]; + } diff --git a/hosts/m3-aether/hardware-configuration.nix b/hosts/m3-aether/hardware-configuration.nix index 4e571c8..7caa8fe 100644 --- a/hosts/m3-aether/hardware-configuration.nix +++ b/hosts/m3-aether/hardware-configuration.nix @@ -1,24 +1,28 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = - [ (modulesPath + "/profiles/qemu-guest.nix") - ]; - - boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.ens18.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; -} +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = []; + boot.extraModulePackages = []; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.ens18.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/hosts/m3-ares/services/postgres.nix b/hosts/m3-ares/services/postgres.nix index 4b8feec..eb46ca8 100644 --- a/hosts/m3-ares/services/postgres.nix +++ b/hosts/m3-ares/services/postgres.nix @@ -1,7 +1,4 @@ -{ - pkgs, - ... -}: { +{pkgs, ...}: { services.postgresql = { enable = true; package = pkgs.postgresql_17; diff --git a/hosts/m3-atlas/services/containers/kestra.nix b/hosts/m3-atlas/services/containers/kestra.nix index 87ceb79..8882d8c 100644 --- a/hosts/m3-atlas/services/containers/kestra.nix +++ b/hosts/m3-atlas/services/containers/kestra.nix @@ -1,9 +1,9 @@ -{ config, ... }: { +{config, ...}: { virtualisation.oci-containers.containers."kestra" = { image = "docker.io/kestra/kestra:latest"; - environmentFiles = [ config.age.secrets.kestra-env.path ]; - cmd = [ "server" "standalone" "--config" "/etc/config/application.yaml"]; - ports = [ "127.0.0.1:3018:8080" ]; + environmentFiles = [config.age.secrets.kestra-env.path]; + cmd = ["server" "standalone" "--config" "/etc/config/application.yaml"]; + ports = ["127.0.0.1:3018:8080"]; user = "root"; volumes = [ "/var/run/docker.sock:/var/run/docker.sock" @@ -11,8 +11,7 @@ "kestra_data:/app/storage" "/tmp/kestra-wd:/tmp/kestra-wd" ]; - extraOptions = - [ "--add-host=postgres:10.89.0.1" "--ip=10.89.0.18" "--network=web" ]; + extraOptions = ["--add-host=postgres:10.89.0.1" "--ip=10.89.0.18" "--network=web"]; }; systemd.tmpfiles.rules = [ @@ -21,12 +20,11 @@ # Traefik configuration specific to littlelink services.traefik.dynamicConfigOptions.http = { - services.kestra.loadBalancer.servers = - [{ url = "http://localhost:3018/"; }]; + services.kestra.loadBalancer.servers = [{url = "http://localhost:3018/";}]; routers.kestra = { rule = "Host(`k.m3ta.dev`)"; - tls = { certResolver = "godaddy"; }; + tls = {certResolver = "godaddy";}; service = "kestra"; entrypoints = "websecure"; }; diff --git a/hosts/m3-helios/hardware-configuration.nix b/hosts/m3-helios/hardware-configuration.nix index 4e571c8..7caa8fe 100644 --- a/hosts/m3-helios/hardware-configuration.nix +++ b/hosts/m3-helios/hardware-configuration.nix @@ -1,24 +1,28 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = - [ (modulesPath + "/profiles/qemu-guest.nix") - ]; - - boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.ens18.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; -} +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = []; + boot.extraModulePackages = []; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.ens18.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/hosts/m3-hermes/hardware-configuration.nix b/hosts/m3-hermes/hardware-configuration.nix index 419024b..d52e1a3 100644 --- a/hosts/m3-hermes/hardware-configuration.nix +++ b/hosts/m3-hermes/hardware-configuration.nix @@ -1,7 +1,13 @@ # Do not modify this file! It was generated by 'nixos-generate-config' # and may be overwritten by future invocations. Please make changes # to configuration.nix instead. -{config, lib, pkgs, modulesPath, ...}: { +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];