diff --git a/home/base/cli-tools/bat.nix b/home/base/cli-tools/bat.nix deleted file mode 100644 index 9a0e213..0000000 --- a/home/base/cli-tools/bat.nix +++ /dev/null @@ -1,145 +0,0 @@ -# Bat — cat replacement with nix-colors syntax highlighting theme. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.base.cliTools.bat; - palette = config.colorScheme.palette; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.bat.enable = (mkEnableOption "enable bat with nix-colors theme") // {default = true;}; - - config = mkIf cfg.enable { - programs.bat = { - enable = true; - config = {theme = "universal";}; - themes = { - universal = { - src = pkgs.writeText "universal.tmTheme" '' - - - - - name - Universal (nix-colors) - settings - - - settings - - background - #${palette.base00} - foreground - #${palette.base05} - caret - #${palette.base05} - selection - #${palette.base02} - selectionForeground - #${palette.base05} - lineHighlight - #${palette.base01} - - - - name - Comment - scope - comment - settings - - foreground - #${palette.base03} - fontStyle - italic - - - - name - String - scope - string - settings - - foreground - #${palette.base0A} - - - - name - Number - scope - constant.numeric - settings - - foreground - #${palette.base0E} - - - - name - Keyword - scope - keyword - settings - - foreground - #${palette.base08} - - - - name - Function - scope - entity.name.function - settings - - foreground - #${palette.base0B} - - - - name - Type - scope - entity.name.type, storage.type - settings - - foreground - #${palette.base0D} - - - - name - Variable - scope - variable - settings - - foreground - #${palette.base05} - - - - name - Constant - scope - constant - settings - - foreground - #${palette.base0E} - - - - - - ''; - }; - }; - }; - }; -} diff --git a/home/base/cli-tools/carapace.nix b/home/base/cli-tools/carapace.nix deleted file mode 100644 index ea9194e..0000000 --- a/home/base/cli-tools/carapace.nix +++ /dev/null @@ -1,21 +0,0 @@ -# Carapace — multi-shell completion engine with Fish, Nushell, and Bash integration. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.cliTools.carapace; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.carapace.enable = (mkEnableOption "enable carapace completion engine") // {default = true;}; - - config = mkIf cfg.enable { - programs.carapace = { - enable = true; - enableFishIntegration = true; - enableNushellIntegration = true; - enableBashIntegration = true; - }; - }; -} diff --git a/home/base/cli-tools/default.nix b/home/base/cli-tools/default.nix deleted file mode 100644 index 3125597..0000000 --- a/home/base/cli-tools/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -# CLI tools aggregator — imports all base command-line utilities. -{...}: { - imports = [ - ./bat.nix - ./carapace.nix - ./direnv.nix - ./eza.nix - ./fzf.nix - ./lf.nix - ./nitch.nix - ./packages.nix - ./television.nix - ./zellij.nix - ./zellij-ps.nix - ./zoxide.nix - ]; -} diff --git a/home/base/cli-tools/direnv.nix b/home/base/cli-tools/direnv.nix deleted file mode 100644 index 4ca206a..0000000 --- a/home/base/cli-tools/direnv.nix +++ /dev/null @@ -1,20 +0,0 @@ -# Direnv — automatic environment loading with nix-direnv integration. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.cliTools.direnv; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.direnv.enable = (mkEnableOption "enable direnv with nix-direnv") // {default = true;}; - - config = mkIf cfg.enable { - programs.direnv = { - enable = true; - enableNushellIntegration = true; - nix-direnv.enable = true; - }; - }; -} diff --git a/home/base/cli-tools/eza.nix b/home/base/cli-tools/eza.nix deleted file mode 100644 index 2e432a8..0000000 --- a/home/base/cli-tools/eza.nix +++ /dev/null @@ -1,21 +0,0 @@ -# Eza — modern ls replacement with icons, git status, and long format by default. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.cliTools.eza; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.eza.enable = (mkEnableOption "enable eza modern ls replacement") // {default = true;}; - - config = mkIf cfg.enable { - programs.eza = { - enable = true; - enableFishIntegration = true; - enableBashIntegration = true; - extraOptions = ["-l" "--icons" "--git" "-a"]; - }; - }; -} diff --git a/home/base/cli-tools/fzf.nix b/home/base/cli-tools/fzf.nix deleted file mode 100644 index 4093298..0000000 --- a/home/base/cli-tools/fzf.nix +++ /dev/null @@ -1,41 +0,0 @@ -# Fuzzy finder with nix-colors palette and Wayland clipboard integration. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.cliTools.fzf; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.fzf.enable = (mkEnableOption "enable fuzzy finder") // {default = true;}; - - 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-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/base/cli-tools/lf.nix b/home/base/cli-tools/lf.nix deleted file mode 100644 index 50ff740..0000000 --- a/home/base/cli-tools/lf.nix +++ /dev/null @@ -1,28 +0,0 @@ -# Lf — terminal file manager with bat preview and Dracula theme. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.base.cliTools.lf; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.lf.enable = (mkEnableOption "enable lf terminal file manager") // {default = true;}; - - config = mkIf cfg.enable { - home.packages = [pkgs.lf]; - - programs.lf = { - enable = true; - settings = { - preview = true; - drawbox = true; - hidden = true; - icons = true; - previewer = "bat"; - }; - }; - }; -} diff --git a/home/base/cli-tools/nitch.nix b/home/base/cli-tools/nitch.nix deleted file mode 100644 index eac4d62..0000000 --- a/home/base/cli-tools/nitch.nix +++ /dev/null @@ -1,17 +0,0 @@ -# Nitch — minimal system information display tool. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.base.cliTools.nitch; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.nitch.enable = (mkEnableOption "enable nitch") // {default = true;}; - - config = mkIf cfg.enable { - home.packages = [pkgs.nitch]; - }; -} diff --git a/home/base/cli-tools/packages.nix b/home/base/cli-tools/packages.nix deleted file mode 100644 index aee3c41..0000000 --- a/home/base/cli-tools/packages.nix +++ /dev/null @@ -1,62 +0,0 @@ -# Essential CLI packages — core utilities always available on every host. -# NOTE: `lazylib` does not exist in nixpkgs. `lazygit` is the correct package -# (Git TUI) and is intentionally used here instead. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.base.cliTools.essentials; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.essentials.enable = (mkEnableOption "enable essential CLI packages") // {default = true;}; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - # Core utilities - coreutils - fd - htop - jq - ripgrep - - # Nix - alejandra - comma - nixd - nix-diff - nix-index - nix-update - - # Dev tools - bc - cmake - devenv - gcc - gnumake - go - httpie - just - lazygit - progress - sqlite - sqlite-vec - tldr - - # AI tools - fabric-ai - llm - - # Misc - basecamp - hyprpaper-random - libnotify - trash-cli - unzip - yazi - zip - ]; - }; -} diff --git a/home/base/cli-tools/television.nix b/home/base/cli-tools/television.nix deleted file mode 100644 index 3a74203..0000000 --- a/home/base/cli-tools/television.nix +++ /dev/null @@ -1,60 +0,0 @@ -# Television — fuzzy finder with custom channels for tldr, git-diff, and git-log. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.cliTools.television; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.television.enable = (mkEnableOption "enable television") // {default = true;}; - - 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/base/cli-tools/zellij-ps.nix b/home/base/cli-tools/zellij-ps.nix deleted file mode 100644 index 8dac702..0000000 --- a/home/base/cli-tools/zellij-ps.nix +++ /dev/null @@ -1,30 +0,0 @@ -# Zellij-ps — project-aware Zellij session manager from m3ta-nixpkgs. -# Delegates to `cli.zellij-ps` — the home-manager module namespace provided by -# m3ta-nixpkgs (inputs.m3ta-nixpkgs.nixosModules.default). This is intentional; -# `cli.*` is the convention used by m3ta-nixpkgs home-manager modules. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.cliTools.zellijPs; -in { - options.base.cliTools.zellijPs = { - # Enabled by default — base modules are always-on. - enable = (mkEnableOption "enable zellij-ps project session manager") // {default = true;}; - - projectFolders = mkOption { - type = types.listOf types.path; - description = "Project root folders scanned by zellij-ps."; - default = ["${config.home.homeDirectory}/p"]; - }; - }; - - config = mkIf cfg.enable { - cli.zellij-ps = { - enable = true; - projectFolders = cfg.projectFolders; - }; - }; -} diff --git a/home/base/cli-tools/zellij.nix b/home/base/cli-tools/zellij.nix deleted file mode 100644 index efe2c6c..0000000 --- a/home/base/cli-tools/zellij.nix +++ /dev/null @@ -1,34 +0,0 @@ -# Zellij terminal multiplexer with nix-colors theming. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.cliTools.zellij; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.zellij.enable = (mkEnableOption "enable zellij multiplexer") // {default = true;}; - - 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/base/cli-tools/zoxide.nix b/home/base/cli-tools/zoxide.nix deleted file mode 100644 index bc3e80e..0000000 --- a/home/base/cli-tools/zoxide.nix +++ /dev/null @@ -1,20 +0,0 @@ -# Zoxide — smarter cd with Fish and Nushell integration. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.cliTools.zoxide; -in { - # Enabled by default — base modules are always-on. - options.base.cliTools.zoxide.enable = (mkEnableOption "enable zoxide smarter cd") // {default = true;}; - - config = mkIf cfg.enable { - programs.zoxide = { - enable = true; - enableFishIntegration = true; - enableNushellIntegration = true; - }; - }; -} diff --git a/home/base/default.nix b/home/base/default.nix deleted file mode 100644 index daa5afb..0000000 --- a/home/base/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -# Base home-manager configuration — always loaded on every host. -# Includes shell, CLI tools, and secrets modules. -{...}: { - imports = [ - ./shell - ./cli-tools - ./secrets/secrets.nix - ]; -} diff --git a/home/base/secrets/secrets.nix b/home/base/secrets/secrets.nix deleted file mode 100644 index 324546b..0000000 --- a/home/base/secrets/secrets.nix +++ /dev/null @@ -1,24 +0,0 @@ -# Password store and secrets management via pass-wayland with OTP and import extensions. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.base.secrets; -in { - # Enabled by default — base modules are always-on. - options.base.secrets.enable = (mkEnableOption "enable secrets management") // {default = true;}; - - 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 = [pkgs.pinentry-gnome3]; - }; -} diff --git a/home/base/shell/default.nix b/home/base/shell/default.nix deleted file mode 100644 index 0b02d43..0000000 --- a/home/base/shell/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -# Shell aggregator — imports Nushell (primary), Fish, and Starship prompt. -{...}: { - imports = [ - ./nushell.nix - ./fish.nix - ./starship.nix - ]; -} diff --git a/home/base/shell/fish.nix b/home/base/shell/fish.nix deleted file mode 100644 index 6c6e3ad..0000000 --- a/home/base/shell/fish.nix +++ /dev/null @@ -1,118 +0,0 @@ -# Fish shell configuration exposed under the new base namespace. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.shell.fish; -in { - # Enabled by default — base modules are always-on. - options.base.shell.fish.enable = (mkEnableOption "enable fish shell") // {default = true;}; - - 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/base/shell/nushell.nix b/home/base/shell/nushell.nix deleted file mode 100644 index fccb7f0..0000000 --- a/home/base/shell/nushell.nix +++ /dev/null @@ -1,86 +0,0 @@ -# Primary shell configuration — Nushell with environment, aliases, and integrations. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.shell.nushell; -in { - # Enabled by default — base modules are always-on. - options.base.shell.nushell.enable = (mkEnableOption "enable nushell") // {default = true;}; - - 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-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.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 - } - ''; - - 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/base/shell/starship.nix b/home/base/shell/starship.nix deleted file mode 100644 index 5d467d6..0000000 --- a/home/base/shell/starship.nix +++ /dev/null @@ -1,70 +0,0 @@ -# Starship cross-shell prompt with nix-colors theming. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.base.shell.starship; -in { - # Enabled by default — base modules are always-on. - options.base.shell.starship.enable = (mkEnableOption "enable starship prompt") // {default = true;}; - - 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/coding/agents/agents.nix b/home/coding/agents/agents.nix deleted file mode 100644 index ed4d6a5..0000000 --- a/home/coding/agents/agents.nix +++ /dev/null @@ -1,85 +0,0 @@ -# AI agent system — OpenCode, Pi, and MCP server configuration. -# Relies on coding.agents options provided by home/common/default.nix -# (inputs.m3ta-nixpkgs.homeManagerModules.default). -{ - config, - inputs, - lib, - pkgs, - videoDrivers ? [], - ... -}: { - # Agent Git Identity configuration - # Note: Uses existing gitea SSH key (m3tam3re identity) for push auth - coding.agents.gitIdentity = { - enable = true; - name = "m3ta-chiron"; - email = "m3ta-chiron@agentmail.to"; - sshKey = "/home/m3tam3re/.ssh/gitea"; - }; - - imports = [ - # OpenCode and Pi agent configurations - ./opencode.nix - ./pi.nix - ]; - - coding.agents.skills = { - agentsInput = inputs.agents; - externalSkills = [ - { - src = inputs.skills-anthropic; - selectSkills = ["pdf" "docx" "frontend-design"]; - } - {src = inputs.skills-superpowers;} - {src = inputs.skills-vercel;} - {src = inputs.skills-basecamp;} - {src = inputs.skills-kestra;} - ]; - }; - - programs.mcp = { - enable = true; - servers = { - DeepWiki = { - url = "https://mcp.deepwiki.com/mcp"; - }; - Ref = { - command = "bash"; - args = ["-c" "REF_API_KEY=$(cat /run/agenix/ref-key) exec bunx ref-tools-mcp@latest"]; - }; - Exa = { - command = "bash"; - args = ["-c" "EXA_API_KEY=$(cat /run/agenix/exa-key) exec bunx exa-mcp-server@latest tools=web_search_exa"]; - }; - Outline = { - url = "https://wiki.az-gruppe.com/mcp"; - }; - ContextMode = { - command = "bash"; - args = ["-c" "exec bunx context-mode@latest"]; - }; - Honcho = { - command = "bash"; - args = [ - "-c" - ''exec bunx mcp-remote@latest https://mcp.honcho.dev --header "Authorization:Bearer $(cat /run/agenix/honcho-key)" --header "X-Honcho-User-Name:m3tam3re"'' - ]; - }; - }; - }; - - home.packages = with pkgs; [ - agenix-cli - agent-browser - beads - pi - (qmd.override { - vulkanSupport = videoDrivers == ["amdgpu"]; - cudaSupport = videoDrivers == ["nvidia"]; - }) - # opencode-desktop - openshell - openspec - ]; -} diff --git a/home/coding/agents/opencode.nix b/home/coding/agents/opencode.nix deleted file mode 100644 index 5f13825..0000000 --- a/home/coding/agents/opencode.nix +++ /dev/null @@ -1,260 +0,0 @@ -{ - inputs, - lib, - ... -}: { - coding.agents.opencode = { - enable = true; - agentsInput = inputs.agents; - }; - - coding.opencode = { - enable = true; - - ohMyOpencodeSettings = { - agents = { - sisyphus.model = "litellm/claude-opus-4-6"; - oracle.model = "litellm/claude-sonnet-4-6"; - librarian.model = "litellm/claude-sonnet-4-6"; - explore.model = "litellm/claude-haiku-4-5"; - multimodal-looker.model = "litellm/gpt-5.3-codex"; - prometheus.model = "litellm/claude-opus-4-6"; - metis.model = "litellm/claude-opus-4-6"; - momus.model = "litellm/claude-opus-4-6"; - atlas.model = "litellm/claude-sonnet-4-6"; - }; - categories = { - visual-engineering.model = "zai-coding-plan/glm-5.1"; - ultrabrain.model = "litellm/claude-opus-4-6"; - deep.model = "litellm/claude-sonnet-4-6"; - artistry.model = "zai-coding-plan/glm-5.1"; - quick.model = "litellm/claude-haiku-4-5"; - unspecified-low.model = "litellm/claude-sonnet-4-6"; - unspecified-high.model = "litellm/claude-opus-4-6"; - writing.model = "zai-coding-plan/glm-5.1"; - }; - }; - }; - - # Keep TUI settings in programs.opencode.tui to satisfy OpenCode v1.2.15+. - programs.opencode.tui.theme = "opencode"; - - # Override legacy default settings to avoid deprecated TUI keys in settings. - programs.opencode.settings = lib.mkForce { - plugin = ["oh-my-openagent"]; - formatter = { - alejandra = { - command = ["alejandra" "-q" "-"]; - extensions = [".nix"]; - }; - }; - - # Security: permission hardening for OpenCode - # Last matching rule wins. Glob patterns: * = any chars, ? = single char. - # ~ and $HOME are expanded to the user's home directory. - # external_directory gates paths outside the working directory. - permission = { - # External directory access: ask by default, allow safe paths - "external_directory" = { - "*" = "ask"; - "/nix/store/**" = "allow"; - "/tmp/**" = "allow"; - }; - - # Read access: allow by default, deny sensitive paths - "read" = { - "*" = "allow"; - "~/.ssh/**" = "deny"; - "~/.gnupg/**" = "deny"; - "~/.aws/**" = "deny"; - "~/.kube/**" = "deny"; - "~/.config/gh/**" = "deny"; - "~/.config/gcloud/**" = "deny"; - "~/.config/op/**" = "deny"; - "~/.config/sops/**" = "deny"; - "/run/agenix/**" = "deny"; - "~/.pi/agent/auth.json" = "deny"; - "~/.pi/agent/sessions/**" = "deny"; - "*.env" = "deny"; - "*.env.*" = "deny"; - "*.pem" = "deny"; - "*.key" = "deny"; - "*.p12" = "deny"; - "*.pfx" = "deny"; - "*id_rsa*" = "deny"; - "*id_ed25519*" = "deny"; - "*id_ecdsa*" = "deny"; - "*.example.env" = "allow"; - "*.sample.env" = "allow"; - "*.test.env" = "allow"; - ".env.example" = "allow"; - ".env.sample" = "allow"; - ".env.test" = "allow"; - "~/.ssh/*.pub" = "allow"; - "*.pub" = "allow"; - "*.csr" = "allow"; - }; - - # Edit access: ask by default, deny sensitive paths - "edit" = { - "*" = "ask"; - "~/.ssh/**" = "deny"; - "~/.gnupg/**" = "deny"; - "~/.aws/**" = "deny"; - "~/.kube/**" = "deny"; - "~/.config/gh/**" = "deny"; - "~/.config/gcloud/**" = "deny"; - "~/.config/op/**" = "deny"; - "~/.config/sops/**" = "deny"; - "/run/agenix/**" = "deny"; - "~/.pi/agent/auth.json" = "deny"; - "~/.pi/agent/sessions/**" = "deny"; - "*.env" = "deny"; - "*.env.*" = "deny"; - "*.pem" = "deny"; - "*.key" = "deny"; - "*.p12" = "deny"; - "*.pfx" = "deny"; - "*id_rsa*" = "deny"; - "*id_ed25519*" = "deny"; - "*id_ecdsa*" = "deny"; - "~/.ssh/*.pub" = "allow"; - "*.pub" = "allow"; - "*.csr" = "allow"; - }; - - # Glob patterns: same rules as read for file matching - "glob" = { - "*" = "allow"; - "~/.ssh/**" = "deny"; - "~/.gnupg/**" = "deny"; - "/run/agenix/**" = "deny"; - "*.env" = "deny"; - "*.env.*" = "deny"; - "*.pem" = "deny"; - "*.key" = "deny"; - "*.p12" = "deny"; - "*.pfx" = "deny"; - }; - - # Grep: allow search, but deny searching for secrets - "grep" = { - "*" = "allow"; - "~/.ssh/**" = "deny"; - "~/.gnupg/**" = "deny"; - "/run/agenix/**" = "deny"; - "*PASSWORD*" = "ask"; - "*SECRET*" = "ask"; - "*API_KEY*" = "ask"; - "*PRIVATE_KEY*" = "ask"; - }; - - # Bash: ask by default, deny dangerous and env-leak commands - "bash" = { - "*" = "ask"; - "git status*" = "allow"; - "git diff*" = "allow"; - "git log*" = "allow"; - "git branch*" = "allow"; - "git show*" = "allow"; - "git remote*" = "allow"; - "nix --version" = "allow"; - "nix eval*" = "allow"; - "nix build*" = "allow"; - "nix develop*" = "allow"; - "nix shell*" = "allow"; - "nix search*" = "allow"; - "alejandra*" = "allow"; - "git add*" = "allow"; - "git commit*" = "allow"; - "git push*" = "ask"; - "git pull*" = "allow"; - "rm *" = "ask"; - "rm -rf *" = "deny"; - "sudo *" = "ask"; - "env" = "deny"; - "printenv" = "deny"; - "cat /proc/*/environ" = "deny"; - "gpg *--export-secret*" = "deny"; - "ssh-add -D" = "deny"; - "docker run --privileged*" = "deny"; - "curl *| *sh" = "deny"; - "wget *| *sh" = "deny"; - }; - - # Web fetch: ask for sensitive URLs - "webfetch" = { - "*" = "ask"; - "https://api.github.com*" = "allow"; - "https://search.nixos.org*" = "allow"; - }; - - # Doom loop guard - "doom_loop" = "ask"; - }; - - # AZ-Gruppe LiteLLM endpoint + available models - provider = { - litellm = { - npm = "@ai-sdk/openai-compatible"; - name = "LiteLLM (AZ-Gruppe)"; - options.baseURL = "https://llm.az-gruppe.com/v1"; - models = { - "gpt-5.2" = { - name = "GPT-5.2"; - limit = { - context = 400000; - output = 128000; - }; - }; - "gpt-5.3-codex" = { - name = "GPT-5.3 Codex"; - limit = { - context = 400000; - output = 128000; - }; - }; - "claude-haiku-4-5" = { - name = "Claude Haiku 4.5"; - options = { - thinking = { - type = "enabled"; - budget_tokens = 16000; - }; - }; - limit = { - context = 200000; - output = 64000; - }; - }; - "claude-sonnet-4-6" = { - name = "Claude Sonnet 4.6"; - options = { - thinking = { - type = "enabled"; - budget_tokens = 16000; - }; - }; - limit = { - context = 200000; - output = 64000; - }; - }; - "claude-opus-4-6" = { - name = "Claude Opus 4.6"; - options = { - thinking = { - type = "enabled"; - budget_tokens = 16000; - }; - }; - limit = { - context = 200000; - output = 128000; - }; - }; - }; - }; - }; - }; -} diff --git a/home/coding/agents/pi.nix b/home/coding/agents/pi.nix deleted file mode 100644 index 2cada13..0000000 --- a/home/coding/agents/pi.nix +++ /dev/null @@ -1,269 +0,0 @@ -{inputs, ...}: { - coding.agents.pi = { - enable = true; - agentsInput = inputs.agents; - - modelOverrides = { - chiron = "minimax/MiniMax-M2.7"; - chiron-forge = "minimax/MiniMax-M2.7"; - }; - - # Coding rules for Pi agent - # Rules sourced from AGENTS repo - codingRules = { - # Language-specific rules - languages = [ - "nix" # Nix language conventions - ]; - - # Standard concerns from AGENTS repo - concerns = [ - "coding-style" # General coding principles - "naming" # Naming conventions (camelCase, snake_case, etc.) - "documentation" # Documentation standards - "testing" # Testing guidelines (Arrange-Act-Assert) - "git-workflow" # Conventional commits, branch naming - "git-identity" # Git identity configuration for agents - "project-structure" # Project layout conventions - ]; - - # No framework-specific rules for NixOS config - frameworks = []; - }; - - settings = { - packages = [ - "npm:@dreadedzombie/pi-init" - "npm:@plannotator/pi-extension" - "npm:@thesethrose/pi-zai-provider" - "npm:pi-agent-browser-native" - "npm:pi-beads-extension" - "npm:pi-lens" - "npm:pi-markdown-preview" - "npm:pi-mcp-adapter" - "npm:pi-powerline-footer" - "npm:pi-prompt-template-model" - "npm:pi-subagents" - "npm:pi-tool-display" - "npm:pi-web-access" - "git:github.com/hk-vk/pi-connect" - ]; - - defaultProvider = "minimax"; - defaultModel = "MiniMax-M2.7"; - defaultThinkingLevel = "high"; - }; - - # pi-guardrails: strict security config - # NOTE: Path access checks are lexical (not symlink-safe). - # NOTE: Local project .pi/extensions/guardrails.json can override same rule IDs. - # For immutable global policies, consider a wrapper or upstream patch. - guardrails = { - enable = true; - config = { - enabled = true; - applyBuiltinDefaults = true; - - onboarding = { - completed = true; - }; - - features = { - policies = true; - permissionGate = true; - pathAccess = true; - }; - - pathAccess = { - mode = "ask"; - allowedPaths = [ - "/nix/store/" - "/tmp/" - ]; - }; - - policies = { - rules = [ - # ── SSH keys ─────────────────────────────────────────── - { - id = "home-ssh"; - enabled = true; - protection = "noAccess"; - onlyIfExists = false; - patterns = [ - {pattern = "~/.ssh/**";} - {pattern = "~/.ssh/*_rsa";} - {pattern = "~/.ssh/*_ed25519";} - {pattern = "~/.ssh/*.pem";} - ]; - allowedPatterns = [ - {pattern = "~/.ssh/*.pub";} - ]; - } - - # ── GPG keys ───────────────────────────────────────── - { - id = "home-gpg"; - enabled = true; - protection = "noAccess"; - onlyIfExists = false; - patterns = [ - {pattern = "~/.gnupg/**";} - {pattern = "~/*.gpg";} - {pattern = "~/.gpg-agent.conf";} - ]; - } - - # ── AWS credentials ──────────────────────────────────── - { - id = "home-aws"; - enabled = true; - protection = "noAccess"; - onlyIfExists = false; - patterns = [ - {pattern = "~/.aws/**";} - {pattern = "~/.aws/credentials";} - {pattern = "~/.aws/config";} - ]; - } - - # ── Kubernetes configs ──────────────────────────────── - { - id = "home-kube"; - enabled = true; - protection = "noAccess"; - onlyIfExists = false; - patterns = [ - {pattern = "~/.kube/**";} - {pattern = "*kubeconfig*";} - ]; - } - - # ── Cloud CLI configs ──────────────────────────────── - { - id = "home-config"; - enabled = true; - protection = "noAccess"; - onlyIfExists = false; - patterns = [ - {pattern = "~/.config/gh/**";} - {pattern = "~/.config/gcloud/**";} - {pattern = "~/.config/op/**";} - {pattern = "~/.config/sops/**";} - ]; - } - - # ── agenix secrets ─────────────────────────────────── - { - id = "agenix-secrets"; - enabled = true; - protection = "noAccess"; - onlyIfExists = false; - patterns = [ - {pattern = "/run/agenix/**";} - ]; - } - - # ── Pi auth and sessions ──────────────────────────── - { - id = "pi-auth-sessions"; - enabled = true; - protection = "noAccess"; - onlyIfExists = false; - patterns = [ - {pattern = "~/.pi/agent/auth.json";} - {pattern = "~/.pi/agent/sessions/**";} - ]; - } - - # ── Environment files ───────────────────────────────── - { - id = "secret-files"; - enabled = true; - protection = "noAccess"; - onlyIfExists = true; - patterns = [ - {pattern = ".env";} - {pattern = ".env.*";} - {pattern = ".dev.vars";} - ]; - allowedPatterns = [ - {pattern = "*.example.env";} - {pattern = "*.sample.env";} - {pattern = "*.test.env";} - {pattern = ".env.example";} - {pattern = ".env.sample";} - {pattern = ".env.test";} - ]; - } - - # ── Private keys and certificates ─────────────────── - { - id = "private-keys"; - enabled = true; - protection = "noAccess"; - onlyIfExists = false; - patterns = [ - {pattern = "*.pem";} - {pattern = "*.key";} - {pattern = "*.p12";} - {pattern = "*.pfx";} - {pattern = "*id_rsa*";} - {pattern = "*id_ed25519*";} - {pattern = "*id_ecdsa*";} - ]; - allowedPatterns = [ - {pattern = "*.pub";} - {pattern = "*.csr";} - ]; - } - ]; - }; - - permissionGate = { - explainCommands = false; - # Auto-deny patterns: env leakage and credential dumping - autoDenyPatterns = [ - { - pattern = "\\benv\\b"; - regex = true; - description = "env command (may dump environment)"; - } - { - pattern = "\\bprintenv\\b"; - regex = true; - description = "printenv command (dumps environment variables)"; - } - { - pattern = "/proc/[0-9]+/environ"; - regex = true; - description = "reading process environment files"; - } - { - pattern = "gpg\\s+--export-secret-keys"; - regex = true; - description = "GPG secret key export"; - } - { - pattern = "gpg\\s+--export-secret-subkeys"; - regex = true; - description = "GPG secret subkey export"; - } - { - pattern = "ssh-add\\s+-D"; - regex = true; - description = "delete all SSH identities"; - } - { - pattern = "\\b(op|pass)\\s+(read|show|get)"; - regex = true; - description = "password manager read operations"; - } - ]; - }; - }; - }; - - # MCP servers auto-inherited from programs.mcp in default.nix - }; -} diff --git a/home/coding/default.nix b/home/coding/default.nix deleted file mode 100644 index 7420578..0000000 --- a/home/coding/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -# Coding environment aggregator — profile-independent development tooling. -# Imports editors, LSP servers, git configuration, the agent system, language runtimes, and optional packages. -{...}: { - imports = [ - ./editor - ./lsp - ./git/git.nix - ./agents/agents.nix - ./languages - ./packages.nix - ]; -} diff --git a/home/coding/editor/default.nix b/home/coding/editor/default.nix deleted file mode 100644 index 2f18bca..0000000 --- a/home/coding/editor/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -# Editor aggregator — delegates to m3ta-nixpkgs editor modules. -{...}: { - imports = [ - ./neovim.nix - ]; -} diff --git a/home/coding/editor/neovim.nix b/home/coding/editor/neovim.nix deleted file mode 100644 index 79c101e..0000000 --- a/home/coding/editor/neovim.nix +++ /dev/null @@ -1,7 +0,0 @@ -# NeoVim base configuration via m3ta-nixpkgs coding.editors module. -# The option `coding.editors.neovim.enable` is declared by -# inputs.m3ta-nixpkgs.homeManagerModules.default — no re-declaration here. -{...}: { - # Placeholder for host-agnostic NeoVim overrides. - # Set coding.editors.neovim.enable = true in per-host files to activate. -} diff --git a/home/coding/git/git.nix b/home/coding/git/git.nix deleted file mode 100644 index 4d91287..0000000 --- a/home/coding/git/git.nix +++ /dev/null @@ -1,41 +0,0 @@ -# Git configuration with signing, aliases, and global ignore. -# Identity and host-specific SSH keys are set per-host in home/m3tam3re/. -{ - lib, - pkgs, - ... -}: -with lib; { - programs.git = { - enable = true; - signing.format = null; - settings = { - user = { - name = lib.mkDefault "m3tam3re"; - email = lib.mkDefault "p@m3ta.dev"; - }; - core.excludesfile = "~/.gitignore_global"; - init.defaultBranch = "master"; - alias = { - st = "status"; - logd = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; - }; - }; - }; - - programs.difftastic.enable = true; - - programs.jujutsu = { - enable = true; - settings = { - user = { - email = "m@m3tam3re.com"; - name = "Sascha Koenig"; - }; - }; - }; - - home.packages = with pkgs; [ - lazygit - ]; -} diff --git a/home/coding/languages/default.nix b/home/coding/languages/default.nix deleted file mode 100644 index 586848d..0000000 --- a/home/coding/languages/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -# Language runtimes — Python, JavaScript, Rust, Go, TypeScript. -{...}: { - imports = [ - ./python.nix - ./javascript.nix - ./rust-toolchain.nix - ./go.nix - ./typescript.nix - ]; -} diff --git a/home/coding/languages/go.nix b/home/coding/languages/go.nix deleted file mode 100644 index c373f59..0000000 --- a/home/coding/languages/go.nix +++ /dev/null @@ -1,19 +0,0 @@ -# Go toolchain — compiler and language server. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.coding.languages.go; -in { - options.coding.languages.go.enable = mkEnableOption "Go toolchain"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - go - gopls - ]; - }; -} diff --git a/home/coding/languages/javascript.nix b/home/coding/languages/javascript.nix deleted file mode 100644 index 86ccf2e..0000000 --- a/home/coding/languages/javascript.nix +++ /dev/null @@ -1,25 +0,0 @@ -# JavaScript/TypeScript runtime — Node.js and Bun. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.coding.languages.javascript; - npmGlobalPrefix = "${config.home.homeDirectory}/.npm-global"; -in { - options.coding.languages.javascript.enable = mkEnableOption "JavaScript runtime (Node.js + Bun)"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - nodejs - bun - ]; - - home.file.".npmrc".text = '' - prefix=${npmGlobalPrefix} - ''; - home.sessionVariables.NPM_CONFIG_PREFIX = npmGlobalPrefix; - }; -} diff --git a/home/coding/languages/python.nix b/home/coding/languages/python.nix deleted file mode 100644 index fa0d1bc..0000000 --- a/home/coding/languages/python.nix +++ /dev/null @@ -1,35 +0,0 @@ -# Python runtime with pip and uv. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.coding.languages.python; -in { - options.coding.languages.python = { - enable = mkEnableOption "Python runtime with pip and uv"; - extraPackages = mkOption { - type = types.listOf types.package; - default = []; - example = literalExpression "[ pkgs.python3Packages.numpy ]"; - description = "Additional Python packages to include"; - }; - }; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - (pkgs.python3.withPackages (ps: - with ps; - [ - uv - ] - ++ cfg.extraPackages)) - (writeShellScriptBin "pip" "exec uv pip $@") - (writeShellScriptBin "pip3" "exec uv pip $@") - pyrefly - ruff - ]; - }; -} diff --git a/home/coding/languages/rust-toolchain.nix b/home/coding/languages/rust-toolchain.nix deleted file mode 100644 index 823a28c..0000000 --- a/home/coding/languages/rust-toolchain.nix +++ /dev/null @@ -1,20 +0,0 @@ -# Rust toolchain — compiler, package manager, and language server. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.coding.languages.rustToolchain; -in { - options.coding.languages.rustToolchain.enable = mkEnableOption "Rust toolchain"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - rustc - cargo - rust-analyzer - ]; - }; -} diff --git a/home/coding/languages/typescript.nix b/home/coding/languages/typescript.nix deleted file mode 100644 index 58a791e..0000000 --- a/home/coding/languages/typescript.nix +++ /dev/null @@ -1,19 +0,0 @@ -# TypeScript support — language server and type checking tools. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.coding.languages.typescript; -in { - options.coding.languages.typescript.enable = mkEnableOption "TypeScript support"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - typescript - typescript-language-server - ]; - }; -} diff --git a/home/coding/lsp/default.nix b/home/coding/lsp/default.nix deleted file mode 100644 index c8e11b0..0000000 --- a/home/coding/lsp/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -# LSP aggregator — language server protocol tooling. -{...}: { - imports = [ - ./servers.nix - ]; -} diff --git a/home/coding/lsp/servers.nix b/home/coding/lsp/servers.nix deleted file mode 100644 index 77bc732..0000000 --- a/home/coding/lsp/servers.nix +++ /dev/null @@ -1,23 +0,0 @@ -# LSP server configuration — language servers for the development environment. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.coding.lsp; -in { - options.coding.lsp.enable = mkEnableOption "enable LSP servers"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - # Nix - nixd - # General - typescript-language-server - tailwindcss-language-server - pyrefly - ]; - }; -} diff --git a/home/coding/packages.nix b/home/coding/packages.nix deleted file mode 100644 index 2501cd6..0000000 --- a/home/coding/packages.nix +++ /dev/null @@ -1,20 +0,0 @@ -# Additional coding packages — API clients and GUI development tools. -# Opt-in since not all coding hosts need these desktop-oriented tools. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.coding.packages; -in { - options.coding.packages.enable = mkEnableOption "additional coding packages (bruno, insomnia)"; - - config = mkIf cfg.enable { - home.packages = [ - pkgs.bruno - pkgs.insomnia - ]; - }; -} diff --git a/home/common/default.nix b/home/common/default.nix deleted file mode 100644 index a8be118..0000000 --- a/home/common/default.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ - inputs, - lib, - outputs, - pkgs, - system, - ... -}: { - imports = [ - inputs.nix-colors.homeManagerModules.default - inputs.m3ta-nixpkgs.homeManagerModules.default - ]; #imports = builtins.attrValues outputs.homeManagerModules; - nixpkgs = { - # You can add overlays here - overlays = [ - # Add overlays your own flake exports (from overlays and pkgs dir): - #outputs.overlays.additions - #outputs.overlays.modifications - outputs.overlays.temp-packages - outputs.overlays.stable-packages - outputs.overlays.locked-packages - outputs.overlays.pinned-packages - outputs.overlays.master-packages - - inputs.nur.overlays.default - inputs.m3ta-nixpkgs.overlays.default - inputs.m3ta-nixpkgs.overlays.modifications - (outputs.lib.mkLlmAgentsOverlay system) - # You can also add overlays exported from other flakes: - # neovim-nightly-overlay.overlays.default - - # Or define it inline, for example: - # (final: prev: { - # hi = final.hello.overrideAttrs (oldAttrs: { - # patches = [ ./change-hello-to-hi.patch ]; - # }); - # }) - ]; - # Configure your nixpkgs instance - config = { - # Disable if you don't want unfree packages - allowUnfree = true; - # Workaround for https://github.com/nix-community/home-manager/issues/2942 - allowUnfreePredicate = _: true; - }; - }; - - nix = { - package = lib.mkDefault pkgs.nix; - settings = { - experimental-features = ["nix-command" "flakes"]; - warn-dirty = false; - }; - }; - colorScheme = inputs.nix-colors.colorSchemes.dracula; -} diff --git a/home/desktop/apps/crypto.nix b/home/desktop/apps/crypto.nix deleted file mode 100644 index 56b0ad8..0000000 --- a/home/desktop/apps/crypto.nix +++ /dev/null @@ -1,16 +0,0 @@ -# Cryptocurrency applications — Bisq, Monero GUI, and Trezor Suite. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.desktop.apps.crypto; -in { - options.desktop.apps.crypto.enable = mkEnableOption "enable crypto applications"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [bisq2 monero-gui trezor-suite]; - }; -} diff --git a/home/desktop/apps/default.nix b/home/desktop/apps/default.nix deleted file mode 100644 index 0888cfc..0000000 --- a/home/desktop/apps/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -# Desktop apps aggregator — Obsidian, Office, web apps, crypto tools, and productivity. -{...}: { - imports = [ - ./obsidian.nix - ./office.nix - ./webapps.nix - ./crypto.nix - ./productivity.nix - ]; -} diff --git a/home/desktop/apps/obsidian.nix b/home/desktop/apps/obsidian.nix deleted file mode 100644 index 588cb98..0000000 --- a/home/desktop/apps/obsidian.nix +++ /dev/null @@ -1,25 +0,0 @@ -# Obsidian knowledge base with markdown MIME association. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.desktop.apps.obsidian; -in { - options.desktop.apps.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/desktop/apps/office.nix b/home/desktop/apps/office.nix deleted file mode 100644 index 3d9c062..0000000 --- a/home/desktop/apps/office.nix +++ /dev/null @@ -1,16 +0,0 @@ -# Office and productivity applications — LibreOffice and document tools. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.desktop.apps.office; -in { - options.desktop.apps.office.enable = mkEnableOption "install office and paperwork apps"; - - config = mkIf cfg.enable { - home.packages = [pkgs.libreoffice-fresh]; - }; -} diff --git a/home/desktop/apps/productivity.nix b/home/desktop/apps/productivity.nix deleted file mode 100644 index dd0c134..0000000 --- a/home/desktop/apps/productivity.nix +++ /dev/null @@ -1,18 +0,0 @@ -# Productivity tools — Pomodoro timer and focus utilities. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.desktop.apps.productivity; -in { - options.desktop.apps.productivity.enable = mkEnableOption "enable productivity tools"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - pomodoro-timer - ]; - }; -} diff --git a/home/desktop/apps/webapps.nix b/home/desktop/apps/webapps.nix deleted file mode 100644 index 8c34b96..0000000 --- a/home/desktop/apps/webapps.nix +++ /dev/null @@ -1,56 +0,0 @@ -# Web application desktop entries — Teams, Outlook, Basecamp, and OpenCode launchers. -{ - config, - pkgs, - ... -}: 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 = "${config.home.homeDirectory}/.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/desktop/default.nix b/home/desktop/default.nix deleted file mode 100644 index ac73f43..0000000 --- a/home/desktop/default.nix +++ /dev/null @@ -1,125 +0,0 @@ -# Desktop environment aggregator — only loaded when context=desktop. -# Includes window manager, applications, theming, and desktop session config. -{ - config, - pkgs, - ... -}: { - imports = [ - ./wm - ./apps - ./theme - ]; - - 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; - foreground = "#${config.colorScheme.palette.base05}"; - background = "#${config.colorScheme.palette.base00}"; - selection-foreground = "#${config.colorScheme.palette.base07}"; - selection-background = "#${config.colorScheme.palette.base02}"; - cursor-color = "#${config.colorScheme.palette.base05}"; - 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 - bemoji - brave - distrobox - eigent - (element-desktop.override { - commandLineArgs = "--password-store=gnome-libsecret"; - }) - launch-webapp - file-roller - hyprpanel - seahorse - sushi - ksnip - msty-studio - nwg-look - rose-pine-hyprcursor - remmina - slack - telegram-desktop - vivaldi - vivaldi-ffmpeg-codecs - vibetyper - ]; -} diff --git a/home/desktop/theme/default.nix b/home/desktop/theme/default.nix deleted file mode 100644 index 8445fe5..0000000 --- a/home/desktop/theme/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -# Theme aggregator — fonts, GTK/Qt theming, and wallpapers. -{...}: { - imports = [ - ./fonts.nix - ./theme.nix - ./wallpapers.nix - ]; -} diff --git a/home/desktop/theme/fonts.nix b/home/desktop/theme/fonts.nix deleted file mode 100644 index 95eb69c..0000000 --- a/home/desktop/theme/fonts.nix +++ /dev/null @@ -1,24 +0,0 @@ -# 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 - ]; - }; -} diff --git a/home/desktop/theme/theme.nix b/home/desktop/theme/theme.nix deleted file mode 100644 index c78c598..0000000 --- a/home/desktop/theme/theme.nix +++ /dev/null @@ -1,24 +0,0 @@ -# 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; - }; -} diff --git a/home/desktop/theme/wallpapers.nix b/home/desktop/theme/wallpapers.nix deleted file mode 100644 index bcf6c34..0000000 --- a/home/desktop/theme/wallpapers.nix +++ /dev/null @@ -1,19 +0,0 @@ -# Wallpaper collection — copies wallpapers to Hyprland config directory. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.desktop.theme.wallpapers.enable; -in { - options.desktop.theme.wallpapers.enable = 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; - }; - }; -} diff --git a/home/desktop/wm/default.nix b/home/desktop/wm/default.nix deleted file mode 100644 index 796b018..0000000 --- a/home/desktop/wm/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -# Window manager aggregator — Hyprland, Wayland tools, and Rofi launcher. -{...}: { - imports = [ - ./hyprland.nix - ./wayland.nix - ./rofi.nix - ]; -} diff --git a/home/desktop/wm/hyprland.nix b/home/desktop/wm/hyprland.nix deleted file mode 100644 index 75e3cd8..0000000 --- a/home/desktop/wm/hyprland.nix +++ /dev/null @@ -1,318 +0,0 @@ -# Hyprland window manager with keybindings, window rules, idle/lock, and hyprpaper. -{ - config, - lib, - ... -}: -with lib; let - cfg = config.desktop.wm.hyprland; -in { - options.desktop.wm.hyprland.enable = mkEnableOption "Hyprland window manager"; - - 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" - "wl-paste --type image --watch cliphist store" - "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; - "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 = [ - "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" - "match:class wlogout, fullscreen on" - "match:title wlogout, float on" - "match:title wlogout, fullscreen on" - "match:class mpv, float on" - "match:class mpv, idle_inhibit focus" - "match:class mpv, opacity 1.0 override" - "match:title ^(Media viewer)$, float on" - "match:title ^(Volume Control)$, float on" - "match:title ^(Picture-in-Picture)$, float on" - "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" - "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" - "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, $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; - on-timeout = "hyprlock"; - } - { - timeout = 420; - 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/desktop/wm/rofi.nix b/home/desktop/wm/rofi.nix deleted file mode 100644 index d3c3a76..0000000 --- a/home/desktop/wm/rofi.nix +++ /dev/null @@ -1,207 +0,0 @@ -# Rofi application launcher with nix-colors theme, pass integration, and project opener. -{ - config, - pkgs, - lib, - ... -}: -with lib; let - cfg = config.desktop.wm.rofi; -in { - options.desktop.wm.rofi.enable = mkEnableOption "enable rofi"; - - config = mkIf cfg.enable { - programs.rofi = { - enable = true; - package = pkgs.rofi.override { - plugins = [ - pkgs.rofi-calc - pkgs.rofi-emoji - pkgs.stable.rofi-file-browser - ]; - }; - pass = { - enable = true; - package = pkgs.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 { - 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/desktop/wm/wayland.nix b/home/desktop/wm/wayland.nix deleted file mode 100644 index 1429d35..0000000 --- a/home/desktop/wm/wayland.nix +++ /dev/null @@ -1,30 +0,0 @@ -# Wayland extra tooling — screenshot, clipboard, cursor, and display utilities. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.desktop.wm.wayland; -in { - options.desktop.wm.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/lib/default.nix b/home/lib/default.nix deleted file mode 100644 index 6fb9798..0000000 --- a/home/lib/default.nix +++ /dev/null @@ -1,95 +0,0 @@ -# home/lib/default.nix -# Profile loading utilities for home-manager configurations. -# -# Usage: -# let homeLib = import ../lib { inherit lib; }; -# in { -# imports = [ -# (homeLib.mkHomeConfig { profiles = ["coding" "gaming"]; context = "desktop"; }) -# ]; -# } -{lib}: let - # Infrastructure layer — nixpkgs overlays, nix-colors, m3ta-nixpkgs modules. - # Always loaded on every host. - commonModule = ../common; - - # Base user environment — shell (nushell, starship), CLI tools, secrets. - # Always loaded on every host. - baseModule = ../base; - - # Context-specific modules — desktop and server are mutually exclusive. - contextModuleMap = { - desktop = ../desktop; - server = ../server; - }; - - # Profile modules — freely combinable additions on top of base + context. - profileModuleMap = { - coding = ../coding; - gaming = ../profiles/gaming; - media = ../profiles/media; - }; -in { - # Generate a home-manager module with imports based on profiles and context. - # - # Args: - # profiles: list of profile names (e.g. ["coding" "gaming" "media"]) - # context: host context, one of "desktop" | "server" | null - # - # Returns: a home-manager module attrset with imports and assertions. - # Desktop and server contexts are mutually exclusive by design — passing - # any value other than "desktop", "server", or null causes an assertion - # failure at evaluation time. - mkHomeConfig = { - profiles ? [], - context ? null, - }: let - contextImport = - 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 - (profileName: ! builtins.hasAttr profileName profileModuleMap) - profiles; - - # Only import known profiles; the assertion below catches unknowns. - activeProfiles = - builtins.filter - (profileName: builtins.hasAttr profileName profileModuleMap) - profiles; - - profileImports = map (profileName: profileModuleMap.${profileName}) activeProfiles; - - contextStr = - if context == null - then "null" - else context; - in { - imports = - [commonModule baseModule] - ++ contextImport - ++ profileImports; - - assertions = [ - { - assertion = builtins.elem context ["desktop" "server" null]; - message = - "m3ta home: context must be 'desktop', 'server', or null" - + " (got: '${contextStr}')"; - } - { - assertion = unknownProfiles == []; - message = - "m3ta home: unknown profiles requested:" - + " [ ${builtins.concatStringsSep " " unknownProfiles} ]." - + " Valid profiles are:" - + " [ ${builtins.concatStringsSep " " (builtins.attrNames profileModuleMap)} ]"; - } - ]; - }; -} diff --git a/home/m3tam3re/home-server.nix b/home/m3tam3re/home-server.nix deleted file mode 100644 index 90762c1..0000000 --- a/home/m3tam3re/home-server.nix +++ /dev/null @@ -1,121 +0,0 @@ -# This is a default home.nix generated by the follwing hone-manager command -# -# home-manager init ./ -{ - config, - lib, - pkgs, - ... -}: { - # Home Manager needs a bit of information about you and the paths it should - # manage. - home.username = lib.mkDefault "your-name"; - home.homeDirectory = lib.mkDefault "/home/${config.home.username}"; - - # This value determines the Home Manager release that your configuration is - # compatible with. This helps avoid breakage when a new Home Manager release - # introduces backwards incompatible changes. - # - # You should not change this value, even if you update Home Manager. If you do - # want to update the value, then make sure to first check the Home Manager - # release notes. - home.stateVersion = "26.05"; # Updated to adopt HM 26.05 defaults. - - # The home.packages option allows you to install Nix packages into your - # environment. - home.packages = with pkgs; [ - # # Adds the 'hello' command to your environment. It prints a friendly - # # "Hello, world!" when run. - # pkgs.hello - - # # It is sometimes useful to fine-tune packages, for example, by applying - # # overrides. You can do that directly here, just don't forget the - # # parentheses. Maybe you want to install Nerd Fonts with a limited number of - # # fonts? - # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) - - # # You can also create simple shell scripts directly inside your - # # configuration. For example, this adds a command 'my-hello' to your - # # environment: - # (pkgs.writeShellScriptBin "my-hello" '' - # echo "Hello, ${config.home.username}!" - # '') - ]; - - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. - home.file = { - # # Building this configuration will create a copy of 'dotfiles/screenrc' in - # # the Nix store. Activating the configuration will then make '~/.screenrc' a - # # symlink to the Nix store copy. - # ".screenrc".source = dotfiles/screenrc; - - # # You can also set the file content immediately. - # ".gradle/gradle.properties".text = '' - # org.gradle.console=verbose - # org.gradle.daemon.idletimeout=3600000 - # ''; - }; - - # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. If you don't want to manage your shell through Home - # Manager then you have to manually source 'hm-session-vars.sh' located at - # either - # - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # /etc/profiles/per-user/m3tam3re/etc/profile.d/hm-session-vars.sh - # - home.sessionVariables = { - # EDITOR = "emacs"; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - - programs.git = { - enable = true; - signing.format = null; - settings = { - user = { - name = "m3tm3re"; - email = "p@m3ta.dev"; - }; - core.excludesfile = "~/.gitignore_global"; - init.defaultBranch = "master"; - alias = { - st = "status"; - logd = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; - }; - }; - }; - # programs.zellij-ps = { - # enable = true; - # projectFolders = [ - # "${config.home.homeDirectory}/p/c" - # "${config.home.homeDirectory}/p" - # "${config.home.homeDirectory}/.config" - # ]; - # layout = '' - # layout { - # pane size=1 borderless=true { - # plugin location="zellij:tab-bar" - # } - # pane size="70%" command="nvim" - # pane split_direction="vertical" { - # pane - # pane command="unimatrix" - # } - # pane size=1 borderless=true { - # plugin location="zellij:status-bar" - # } - # } - # ''; - # }; -} diff --git a/home/m3tam3re/home.nix b/home/m3tam3re/home.nix deleted file mode 100644 index a3e7ccb..0000000 --- a/home/m3tam3re/home.nix +++ /dev/null @@ -1,262 +0,0 @@ -# This is a default home.nix generated by the follwing hone-manager command -# -# home-manager init ./ -{ - config, - lib, - pkgs, - ... -}: { - # Home Manager needs a bit of information about you and the paths it should - # manage. - home.username = lib.mkDefault "your-name"; - home.homeDirectory = lib.mkDefault "/home/${config.home.username}"; - - # This value determines the Home Manager release that your configuration is - # compatible with. This helps avoid breakage when a new Home Manager release - # introduces backwards incompatible changes. - # - # You should not change this value, even if you update Home Manager. If you do - # want to update the value, then make sure to first check the Home Manager - # release notes. - home.stateVersion = "26.05"; # Updated to adopt HM 26.05 defaults. - - # The home.packages option allows you to install Nix packages into your - # environment. - home.packages = with pkgs; [ - libgtop - # # Adds the 'hello' command to your environment. It prints a friendly - # # "Hello, world!" when run. - # pkgs.hello - - # # It is sometimes useful to fine-tune packages, for example, by applying - # # overrides. You can do that directly here, just don't forget the - # # parentheses. Maybe you want to install Nerd Fonts with a limited number of - # # fonts? - # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) - - # # You can also create simple shell scripts directly inside your - # # configuration. For example, this adds a command 'my-hello' to your - # # environment: - # (pkgs.writeShellScriptBin "my-hello" '' - # echo "Hello, ${config.home.username}!" - # '') - ]; - - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. - home.file = { - # # Building this configuration will create a copy of 'dotfiles/screenrc' in - # # the Nix store. Activating the configuration will then make '~/.screenrc' a - # # symlink to the Nix store copy. - # ".screenrc".source = dotfiles/screenrc; - - # # You can also set the file content immediately. - # ".gradle/gradle.properties".text = '' - # org.gradle.console=verbose - # org.gradle.daemon.idletimeout=3600000 - # ''; - }; - - # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. If you don't want to manage your shell through Home - # Manager then you have to manually source 'hm-session-vars.sh' located at - # either - # - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # /etc/profiles/per-user/m3tam3re/etc/profile.d/hm-session-vars.sh - # - home.sessionVariables = { - # EDITOR = "emacs"; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - - services.cliphist = { - enable = true; - allowImages = true; - }; - - programs.git = { - enable = true; - signing.format = null; - settings = { - user = { - name = "m3tm3re"; - email = "p@m3ta.dev"; - }; - core.excludesfile = "~/.gitignore_global"; - init.defaultBranch = "master"; - alias = { - st = "status"; - logd = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; - }; - }; - }; - - programs.difftastic.enable = true; - - programs.jujutsu = { - enable = true; - settings = { - user = { - email = "m@m3tam3re.com"; - name = "Sascha Koenig"; - }; - }; - }; - - programs.ssh = { - enable = true; - enableDefaultConfig = false; - matchBlocks = { - "AZ-CLD-1" = { - hostname = "152.53.186.119"; - user = "sascha.koenig"; - port = 2022; - identityFile = "~/.ssh/sascha.koenig"; - }; - "AZ-PRM-1" = { - hostname = "192.168.152.76"; - user = "sascha.koenig"; - port = 2022; - identityFile = "~/.ssh/sascha.koenig"; - }; - "github.com" = { - hostname = "github.com"; - user = "m3tam3re"; - port = 22; - identityFile = "~/.ssh/github"; - }; - "nikhil" = { - hostname = "91.99.176.80"; - user = "nikhilmaddirala"; - identityFile = "~/.ssh/m3tam3re"; - }; - "code.m3ta.dev" = { - hostname = "code.m3ta.dev"; - user = "m3tam3re"; - identityFile = "~/.ssh/gitea"; - }; - "git.az-gruppe.com" = { - hostname = "git.az-gruppe.com"; - port = 2022; - user = "sascha.koenig"; - identityFile = "~/.ssh/sascha.koenig"; - }; - "lkk-nix-1" = { - hostname = "89.58.10.189"; - user = "lkk-admin"; - identityFile = "~/.ssh/lkk-admin"; - }; - "m3-r1" = { - hostname = "202.61.226.110"; - user = "m3tam3re"; - identityFile = "~/.ssh/m3tam3re"; - }; - "lkk-prod-test" = { - hostname = "192.168.122.215"; - user = "root"; - identityFile = "~/.ssh/m3tam3re"; - }; - "lkk-prod-1" = { - hostname = "192.168.0.24"; - user = "root"; - identityFile = "~/.ssh/m3tam3re"; - }; - "lkk-prod-2" = { - hostname = "192.168.0.20"; - user = "root"; - identityFile = "~/.ssh/m3tam3re"; - }; - "m3-deck" = { - hostname = "192.168.178.193"; - user = "m3tam3re"; - identityFile = "~/.ssh/m3tam3re"; - }; - "m3-kratos-vm" = { - hostname = "192.168.122.43"; - user = "m3tam3re"; - identityFile = "~/.ssh/m3tam3re"; - }; - "m3-helios" = { - hostname = "192.168.178.210"; - user = "m3tam3re"; - identityFile = "~/.ssh/m3tam3re"; - }; - "m3-ares" = { - hostname = "192.168.1.30"; - user = "m3tam3re"; - identityFile = "~/.ssh/m3tam3re"; - }; - "m3-atlas" = { - hostname = "152.53.85.162"; - user = "m3tam3re"; - identityFile = "~/.ssh/m3tam3re"; - }; - "m3-hermes" = { - hostname = "204.168.229.93"; - user = "m3tam3re"; - identityFile = "~/.ssh/m3tam3re"; - }; - "m3-zelda" = { - hostname = "95.217.189.186"; - user = "m3tam3re"; - identityFile = "~/.ssh/m3tam3re"; - }; - "m3-skynet" = { - hostname = "m3-skynet"; - user = "admin"; - identityFile = "~/.ssh/m3tam3re"; - }; - "m3-prox-1" = { - hostname = "192.168.1.110"; - user = "root"; - identityFile = "~/.ssh/m3tam3re"; - }; - "shp-old" = { - hostname = "95.217.3.250"; - port = 2222; - user = "m3tam3re"; - identityFile = "~/.ssh/self-host-playbook"; - }; - "shp-1" = { - hostname = "95.217.189.186"; - port = 2222; - user = "m3tam3re"; - identityFile = "~/.ssh/self-host-playbook"; - }; - }; - }; - # programs.zellij-ps = { - # enable = true; - # projectFolders = [ - # "${config.home.homeDirectory}/p/c" - # "${config.home.homeDirectory}/p" - # "${config.home.homeDirectory}/.config" - # ]; - # layout = '' - # layout { - # pane size=1 borderless=true { - # plugin location="zellij:tab-bar" - # } - # pane size="70%" command="nvim" - # pane split_direction="vertical" { - # pane - # pane command="unimatrix" - # } - # pane size=1 borderless=true { - # plugin location="zellij:status-bar" - # } - # } - # ''; - # }; -} diff --git a/home/m3tam3re/m3-aether.nix b/home/m3tam3re/m3-aether.nix deleted file mode 100644 index fac6499..0000000 --- a/home/m3tam3re/m3-aether.nix +++ /dev/null @@ -1,25 +0,0 @@ -# m3-aether — cloud VM. -# Context: server | Profiles: (none) -{lib, ...}: let - homeLib = import ../lib {inherit lib;}; -in { - imports = [ - (homeLib.mkHomeConfig { - profiles = []; - context = "server"; - }) - ./home-server.nix - ]; - - # Base CLI tools (new namespace) - base = { - shell = { - fish.enable = true; - starship.enable = true; - }; - cliTools = { - fzf.enable = true; - nitch.enable = true; - }; - }; -} diff --git a/home/m3tam3re/m3-ares.nix b/home/m3tam3re/m3-ares.nix deleted file mode 100644 index a1d1cfe..0000000 --- a/home/m3tam3re/m3-ares.nix +++ /dev/null @@ -1,142 +0,0 @@ -# m3-ares — TUXEDO laptop desktop workstation. -# Context: desktop | Profiles: coding, gaming, media -{ - config, - lib, - ... -}: let - homeLib = import ../lib {inherit lib;}; -in - 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; - }; - 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; - }; - apps = { - crypto.enable = true; - obsidian.enable = true; - office.enable = true; - }; - theme = { - fonts.enable = true; - wallpapers.enable = true; - }; - }; - - # Coding environment - coding = { - editors = { - neovim.enable = true; - zed.enable = true; - }; - lsp.enable = true; - packages.enable = true; - languages = { - python.enable = true; - javascript.enable = true; - rustToolchain.enable = true; - go.enable = true; - typescript.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 = { - 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" - ]; - }; - }; - }) - ]; - } diff --git a/home/m3tam3re/m3-atlas.nix b/home/m3tam3re/m3-atlas.nix deleted file mode 100644 index 248fe23..0000000 --- a/home/m3tam3re/m3-atlas.nix +++ /dev/null @@ -1,29 +0,0 @@ -# m3-atlas — primary server, Traefik hub and container host. -# Context: server | Profiles: coding -{lib, ...}: let - homeLib = import ../lib {inherit lib;}; -in { - imports = [ - (homeLib.mkHomeConfig { - profiles = ["coding"]; - context = "server"; - }) - ./home-server.nix - ]; - - # Base CLI tools (new namespace) - base = { - shell = { - nushell.enable = true; - starship.enable = true; - }; - cliTools = { - fzf.enable = true; - nitch.enable = true; - zellij.enable = true; - }; - }; - - # Coding environment - coding.editors.neovim.enable = true; -} diff --git a/home/m3tam3re/m3-daedalus.nix b/home/m3tam3re/m3-daedalus.nix deleted file mode 100644 index 124dc4a..0000000 --- a/home/m3tam3re/m3-daedalus.nix +++ /dev/null @@ -1,127 +0,0 @@ -# m3-daedalus — portable laptop (standalone home-manager). -# Context: desktop | Profiles: coding, media -{ - config, - lib, - ... -}: let - homeLib = import ../lib {inherit lib;}; -in - 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; - }; - 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; - }; - 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; - }; - lsp.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 = { - 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" - ]; - }; - }; - }) - ]; - } diff --git a/home/m3tam3re/m3-helios.nix b/home/m3tam3re/m3-helios.nix deleted file mode 100644 index 12fb021..0000000 --- a/home/m3tam3re/m3-helios.nix +++ /dev/null @@ -1,25 +0,0 @@ -# m3-helios — AdGuard DNS and internal routing server. -# Context: server | Profiles: (none) -{lib, ...}: let - homeLib = import ../lib {inherit lib;}; -in { - imports = [ - (homeLib.mkHomeConfig { - profiles = []; - context = "server"; - }) - ./home-server.nix - ]; - - # Base CLI tools (new namespace) - base = { - shell = { - fish.enable = true; - starship.enable = true; - }; - cliTools = { - fzf.enable = true; - nitch.enable = true; - }; - }; -} diff --git a/home/m3tam3re/m3-hermes.nix b/home/m3tam3re/m3-hermes.nix deleted file mode 100644 index fe8d193..0000000 --- a/home/m3tam3re/m3-hermes.nix +++ /dev/null @@ -1,25 +0,0 @@ -# m3-hermes — secondary server. -# Context: server | Profiles: (none) -{lib, ...}: let - homeLib = import ../lib {inherit lib;}; -in { - imports = [ - (homeLib.mkHomeConfig { - profiles = []; - context = "server"; - }) - ./home-server.nix - ]; - - # Base CLI tools (new namespace) - base = { - shell = { - fish.enable = true; - starship.enable = true; - }; - cliTools = { - fzf.enable = true; - nitch.enable = true; - }; - }; -} diff --git a/home/m3tam3re/m3-kratos.nix b/home/m3tam3re/m3-kratos.nix deleted file mode 100644 index 5f01fbf..0000000 --- a/home/m3tam3re/m3-kratos.nix +++ /dev/null @@ -1,138 +0,0 @@ -# m3-kratos — AMD desktop workstation. -# Context: desktop | Profiles: coding, gaming, media -{ - config, - lib, - ... -}: let - homeLib = import ../lib {inherit lib;}; -in - 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; - }; - 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; - }; - apps = { - crypto.enable = true; - obsidian.enable = true; - office.enable = true; - }; - theme = { - fonts.enable = true; - wallpapers.enable = true; - }; - }; - - # Coding environment - coding = { - editors = { - neovim.enable = true; - zed.enable = true; - }; - lsp.enable = true; - languages = { - python.enable = true; - javascript.enable = true; - rustToolchain.enable = true; - go.enable = true; - typescript.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 = { - 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" - ]; - }; - }; - }) - ]; - } diff --git a/home/m3tam3re/wallpapers/wallhaven-28kdom_2560x1440.png b/home/m3tam3re/wallpapers/wallhaven-28kdom_2560x1440.png deleted file mode 100644 index 326dfd6..0000000 Binary files a/home/m3tam3re/wallpapers/wallhaven-28kdom_2560x1440.png and /dev/null differ diff --git a/home/m3tam3re/wallpapers/wallhaven-8o8y5o_2560x1440.png b/home/m3tam3re/wallpapers/wallhaven-8o8y5o_2560x1440.png deleted file mode 100644 index cf48678..0000000 Binary files a/home/m3tam3re/wallpapers/wallhaven-8o8y5o_2560x1440.png and /dev/null differ diff --git a/home/m3tam3re/wallpapers/wallhaven-k72v6q_2560x1440.png b/home/m3tam3re/wallpapers/wallhaven-k72v6q_2560x1440.png deleted file mode 100644 index 6c42354..0000000 Binary files a/home/m3tam3re/wallpapers/wallhaven-k72v6q_2560x1440.png and /dev/null differ diff --git a/home/m3tam3re/wallpapers/wallhaven-l3o7j2_2560x1440.png b/home/m3tam3re/wallpapers/wallhaven-l3o7j2_2560x1440.png deleted file mode 100644 index 7f3b1cb..0000000 Binary files a/home/m3tam3re/wallpapers/wallhaven-l3o7j2_2560x1440.png and /dev/null differ diff --git a/home/m3tam3re/wallpapers/wallhaven-lmmo8r.jpg b/home/m3tam3re/wallpapers/wallhaven-lmmo8r.jpg deleted file mode 100644 index 9c37339..0000000 Binary files a/home/m3tam3re/wallpapers/wallhaven-lmmo8r.jpg and /dev/null differ diff --git a/home/profiles/gaming/default.nix b/home/profiles/gaming/default.nix deleted file mode 100644 index 7b1f663..0000000 --- a/home/profiles/gaming/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -# Gaming profile aggregator — Steam platform, Gamescope session, and AMD GPU tools. -{...}: { - imports = [ - ./steam.nix - ./gamescope.nix - ./gpu.nix - ]; -} diff --git a/home/profiles/gaming/gamescope.nix b/home/profiles/gaming/gamescope.nix deleted file mode 100644 index 6f975cd..0000000 --- a/home/profiles/gaming/gamescope.nix +++ /dev/null @@ -1,16 +0,0 @@ -# Gamescope — Valve's micro-compositor for Steam gaming sessions. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.profiles.gaming.gamescope; -in { - options.profiles.gaming.gamescope.enable = mkEnableOption "enable Gamescope session"; - - config = mkIf cfg.enable { - home.packages = [pkgs.gamescope]; - }; -} diff --git a/home/profiles/gaming/gpu.nix b/home/profiles/gaming/gpu.nix deleted file mode 100644 index ad8c85c..0000000 --- a/home/profiles/gaming/gpu.nix +++ /dev/null @@ -1,21 +0,0 @@ -# AMD GPU tools — ROCm runtime, monitoring, and Vulkan utilities for gaming. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.profiles.gaming.gpu; -in { - options.profiles.gaming.gpu.enable = mkEnableOption "enable AMD GPU tools"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - rocmPackages.rocm-runtime - rocmPackages.rocm-smi - rocmPackages.rocminfo - vulkan-tools - ]; - }; -} diff --git a/home/profiles/gaming/steam.nix b/home/profiles/gaming/steam.nix deleted file mode 100644 index 92a24c1..0000000 --- a/home/profiles/gaming/steam.nix +++ /dev/null @@ -1,21 +0,0 @@ -# Steam gaming platform with Steam Deck compatibility tools and gaming utilities. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.profiles.gaming.steam; -in { - options.profiles.gaming.steam.enable = mkEnableOption "enable Steam gaming"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - gamemode - goverlay - mangohud - protonplus - ]; - }; -} diff --git a/home/profiles/media/default.nix b/home/profiles/media/default.nix deleted file mode 100644 index 0f453a5..0000000 --- a/home/profiles/media/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -# Media profile aggregator — OBS, FFmpeg, yt-dlp, Kdenlive, and HandBrake. -{...}: { - imports = [ - ./obs.nix - ./ffmpeg.nix - ./yt-dlp.nix - ./kdenlive.nix - ./handbrake.nix - ]; -} diff --git a/home/profiles/media/ffmpeg.nix b/home/profiles/media/ffmpeg.nix deleted file mode 100644 index 287e32c..0000000 --- a/home/profiles/media/ffmpeg.nix +++ /dev/null @@ -1,24 +0,0 @@ -# FFmpeg — full-featured multimedia processing toolchain. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.profiles.media.ffmpeg; -in { - options.profiles.media.ffmpeg.enable = mkEnableOption "enable FFmpeg tools"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - amf - ffmpeg_6-full - gst_all_1.gstreamer - gst_all_1.gst-vaapi - pamixer - pavucontrol - qpwgraph - ]; - }; -} diff --git a/home/profiles/media/handbrake.nix b/home/profiles/media/handbrake.nix deleted file mode 100644 index f14ff5d..0000000 --- a/home/profiles/media/handbrake.nix +++ /dev/null @@ -1,21 +0,0 @@ -# HandBrake — open-source video transcoder. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.profiles.media.handbrake; -in { - options.profiles.media.handbrake.enable = mkEnableOption "enable HandBrake transcoder"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - handbrake - gimp - inkscape - libation - ]; - }; -} diff --git a/home/profiles/media/kdenlive.nix b/home/profiles/media/kdenlive.nix deleted file mode 100644 index f3a4dbd..0000000 --- a/home/profiles/media/kdenlive.nix +++ /dev/null @@ -1,16 +0,0 @@ -# Kdenlive — KDE non-linear video editor. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.profiles.media.kdenlive; -in { - options.profiles.media.kdenlive.enable = mkEnableOption "enable Kdenlive video editor"; - - config = mkIf cfg.enable { - home.packages = [pkgs.kdePackages.kdenlive]; - }; -} diff --git a/home/profiles/media/obs.nix b/home/profiles/media/obs.nix deleted file mode 100644 index 2a6f22c..0000000 --- a/home/profiles/media/obs.nix +++ /dev/null @@ -1,21 +0,0 @@ -# OBS Studio — open broadcaster software for streaming and recording. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.profiles.media.obs; -in { - options.profiles.media.obs.enable = mkEnableOption "enable OBS Studio"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - v4l-utils - ]; - - # OBS is managed via NixOS programs.obs-studio at the system level. - # Home-manager only installs supporting tools. - }; -} diff --git a/home/profiles/media/yt-dlp.nix b/home/profiles/media/yt-dlp.nix deleted file mode 100644 index 5c9e088..0000000 --- a/home/profiles/media/yt-dlp.nix +++ /dev/null @@ -1,32 +0,0 @@ -# yt-dlp and media playback — YouTube downloader with MPV integration. -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config.profiles.media.ytDlp; -in { - options.profiles.media.ytDlp.enable = mkEnableOption "enable yt-dlp and media playback"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - plexamp - unimatrix - webcord - ]; - - 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/server/default.nix b/home/server/default.nix deleted file mode 100644 index 2c6d8ea..0000000 --- a/home/server/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -# Server context home-manager configuration — minimal headless setup. -# Loaded on server hosts: m3-atlas, m3-helios, m3-aether. -{...}: { - # Server hosts use the base and coding modules directly. - # No desktop environment or GUI applications. -}