From 0171582307a328a5ad6b63d75b75d07433634fe1 Mon Sep 17 00:00:00 2001 From: moons Date: Mon, 27 Jul 2026 05:51:17 +0900 Subject: [PATCH] delete --- .../actions/update-flake-input/action.yaml | 260 --- .github/workflows/nixos-ci.yml | 150 -- .github/workflows/renovate.yml | 31 - .github/workflows/update-flake-inputs.yml | 106 -- .gitignore | 12 - .sops.yaml | 18 - AGENTS.md | 423 ----- README.md | 191 --- docs/fingerprint.md | 68 - docs/install.md | 157 -- docs/iso-build.md | 26 - docs/sops-key.md | 17 - flake.lock | 1511 ----------------- flake.nix | 120 -- flake/formatter.nix | 48 - flake/git-hooks.nix | 43 - hosts/default.nix | 113 -- hosts/installer/default.nix | 193 --- hosts/internal-app-01/default.nix | 6 - .../hardware-configuration.nix | 40 - hosts/nix-example/default.nix | 6 - hosts/nix-example/hardware-configuration.nix | 43 - hosts/ops/default.nix | 56 - hosts/ops/hardware-configuration.nix | 44 - hosts/x1g13/default.nix | 10 - hosts/x1g13/disko.nix | 99 -- hosts/x1g13/hardware-configuration.nix | 33 - images/avatar.jpg | Bin 42497 -> 0 bytes modules/applications/1password.nix | 26 - modules/applications/arduino.nix | 29 - modules/applications/btop/default.nix | 23 - modules/applications/btop/dracula.theme | 89 - modules/applications/btop/home.nix | 25 - modules/applications/btop/system.nix | 20 - modules/applications/chrome.nix | 44 - modules/applications/claude/default.nix | 23 - modules/applications/claude/home.nix | 27 - modules/applications/claude/system.nix | 20 - modules/applications/codex-desktop.nix | 65 - modules/applications/codex.nix | 20 - modules/applications/default.nix | 47 - modules/applications/direnv.nix | 16 - modules/applications/discord.nix | 23 - modules/applications/docker.nix | 34 - modules/applications/fcitx5/config | 69 - modules/applications/fcitx5/default.nix | 23 - modules/applications/fcitx5/home.nix | 24 - modules/applications/fcitx5/system.nix | 68 - modules/applications/ghostty/config | 40 - modules/applications/ghostty/default.nix | 23 - modules/applications/ghostty/dracula.theme | 45 - modules/applications/ghostty/home.nix | 83 - modules/applications/ghostty/system.nix | 26 - modules/applications/git/default.nix | 35 - modules/applications/git/home.nix | 111 -- modules/applications/git/system.nix | 21 - modules/applications/gnome.nix | 94 - modules/applications/gnupg/default.nix | 23 - modules/applications/gnupg/home.nix | 22 - modules/applications/gnupg/system.nix | 20 - modules/applications/greetd.nix | 26 - modules/applications/grok.nix | 24 - modules/applications/gtk/default.nix | 23 - modules/applications/gtk/home.nix | 36 - modules/applications/gtk/system.nix | 20 - modules/applications/java/default.nix | 23 - modules/applications/java/home.nix | 23 - modules/applications/java/system.nix | 27 - modules/applications/kde.nix | 19 - modules/applications/ly/default.nix | 36 - modules/applications/nautilus.nix | 22 - modules/applications/nh.nix | 27 - modules/applications/niri/default.nix | 23 - modules/applications/niri/defaultKeyBind.nix | 166 -- modules/applications/niri/home.nix | 255 --- modules/applications/niri/system.nix | 24 - modules/applications/nix-index/default.nix | 23 - modules/applications/nix-index/home.nix | 21 - modules/applications/nix-index/system.nix | 20 - modules/applications/noctalia/default.nix | 23 - modules/applications/noctalia/home.nix | 225 --- modules/applications/noctalia/system.nix | 32 - modules/applications/opencode.nix | 20 - modules/applications/openssh.nix | 23 - modules/applications/slack.nix | 24 - modules/applications/ssh/default.nix | 23 - modules/applications/ssh/home.nix | 63 - modules/applications/ssh/system.nix | 23 - modules/applications/swayidle.nix | 96 -- modules/applications/swaylock/default.nix | 23 - modules/applications/swaylock/home.nix | 48 - modules/applications/swaylock/system.nix | 26 - modules/applications/tailscale.nix | 118 -- modules/applications/vicinae.nix | 66 - modules/applications/vim/default.nix | 23 - modules/applications/vim/home/autocmds.nix | 8 - modules/applications/vim/home/colorscheme.nix | 6 - modules/applications/vim/home/default.nix | 64 - modules/applications/vim/home/keymaps.nix | 202 --- modules/applications/vim/home/language.nix | 13 - modules/applications/vim/home/lsp.nix | 65 - modules/applications/vim/home/options.nix | 50 - .../applications/vim/home/plugins/default.nix | 7 - .../vim/home/plugins/editor/autopairs.nix | 3 - .../vim/home/plugins/editor/blink-cmp.nix | 56 - .../vim/home/plugins/editor/comment.nix | 3 - .../vim/home/plugins/editor/conform.nix | 27 - .../vim/home/plugins/editor/copilot.nix | 11 - .../vim/home/plugins/editor/default.nix | 23 - .../vim/home/plugins/editor/flash.nix | 9 - .../vim/home/plugins/editor/git-conflict.nix | 9 - .../vim/home/plugins/editor/git.nix | 11 - .../vim/home/plugins/editor/gitsigns.nix | 25 - .../vim/home/plugins/editor/glance.nix | 9 - .../vim/home/plugins/editor/lsp-signature.nix | 11 - .../vim/home/plugins/editor/snacks.nix | 32 - .../vim/home/plugins/editor/spectre.nix | 10 - .../vim/home/plugins/editor/surround.nix | 3 - .../vim/home/plugins/editor/todo-comments.nix | 9 - .../vim/home/plugins/editor/treesitter.nix | 17 - .../vim/home/plugins/editor/trouble.nix | 3 - .../vim/home/plugins/editor/wakatime.nix | 4 - .../vim/home/plugins/ui/barbar.nix | 26 - .../vim/home/plugins/ui/blankline.nix | 20 - .../vim/home/plugins/ui/colorizer.nix | 26 - .../vim/home/plugins/ui/default.nix | 20 - .../vim/home/plugins/ui/dropbar.nix | 3 - .../vim/home/plugins/ui/lightbulb.nix | 6 - .../vim/home/plugins/ui/lualine.nix | 25 - .../vim/home/plugins/ui/markview.nix | 9 - .../vim/home/plugins/ui/neo-tree.nix | 37 - .../vim/home/plugins/ui/scrollbar.nix | 9 - .../vim/home/plugins/ui/toggleterm.nix | 3 - .../vim/home/plugins/ui/treesitter.nix | 3 - .../applications/vim/home/plugins/ui/ufo.nix | 24 - .../vim/home/plugins/ui/web-devicons.nix | 4 - .../vim/home/plugins/ui/which-key.nix | 4 - .../vim/home/plugins/ui/zen-mode.nix | 9 - modules/applications/vim/system.nix | 22 - modules/applications/vscode/default.nix | 23 - modules/applications/vscode/home.nix | 304 ---- modules/applications/vscode/system.nix | 20 - modules/applications/wayland.nix | 51 - modules/applications/yazi.nix | 153 -- modules/applications/zed/default.nix | 21 - modules/applications/zed/home.nix | 66 - modules/applications/zellij/default.nix | 23 - modules/applications/zellij/home.nix | 83 - modules/applications/zellij/system.nix | 20 - modules/applications/zoom.nix | 17 - modules/applications/zoxide.nix | 20 - modules/applications/zsh/default.nix | 23 - modules/applications/zsh/home.nix | 59 - modules/applications/zsh/system.nix | 13 - modules/default.nix | 9 - modules/drivers/default.nix | 5 - modules/drivers/intel-drivers.nix | 25 - modules/features/application/browser.nix | 13 - .../features/application/communication.nix | 17 - modules/features/application/default.nix | 6 - modules/features/boot/default.nix | 8 - modules/features/boot/power.nix | 13 - modules/features/boot/secure-boot.nix | 13 - modules/features/boot/storage-crypto.nix | 30 - modules/features/boot/uefi.nix | 13 - modules/features/cli/base.nix | 46 - modules/features/cli/default.nix | 7 - modules/features/cli/interactive.nix | 26 - modules/features/cli/shell.nix | 16 - modules/features/connect/bluetooth.nix | 13 - modules/features/connect/default.nix | 6 - modules/features/connect/wifi.nix | 13 - modules/features/default.nix | 14 - modules/features/dev/agent.nix | 23 - modules/features/dev/arduino.nix | 13 - modules/features/dev/bun.nix | 20 - modules/features/dev/default.nix | 12 - modules/features/dev/dns.nix | 20 - modules/features/dev/drawio.nix | 20 - modules/features/dev/java.nix | 13 - modules/features/dev/nix.nix | 20 - modules/features/dev/python.nix | 23 - modules/features/gui/audio.nix | 13 - modules/features/gui/camera.nix | 13 - modules/features/gui/capture.nix | 22 - modules/features/gui/default.nix | 14 - modules/features/gui/desktop.nix | 48 - modules/features/gui/editor.nix | 16 - modules/features/gui/file-manager.nix | 13 - modules/features/gui/graphic.nix | 13 - modules/features/gui/jp-input.nix | 13 - modules/features/gui/password.nix | 17 - modules/features/gui/terminal.nix | 22 - modules/features/identity/default.nix | 6 - modules/features/identity/fingerprint.nix | 13 - modules/features/identity/ssh-default-key.nix | 34 - modules/features/network/default.nix | 5 - modules/features/network/tailscale.nix | 75 - modules/features/services/container.nix | 13 - modules/features/services/default.nix | 7 - modules/features/services/kde.nix | 13 - modules/features/services/quem-guest.nix | 13 - modules/features/storage/default.nix | 5 - modules/features/storage/nfs-client.nix | 13 - modules/integrations/default.nix | 5 - modules/integrations/home-manager.nix | 25 - modules/system/audio.nix | 22 - modules/system/boot/default.nix | 17 - modules/system/boot/nfs.nix | 19 - modules/system/boot/uefi.nix | 20 - modules/system/camera.nix | 36 - modules/system/default.nix | 22 - modules/system/disko.nix | 10 - modules/system/fingerprint.nix | 28 - modules/system/fonts.nix | 43 - modules/system/gc.nix | 10 - modules/system/hardware/bluetooth.nix | 22 - modules/system/hardware/default.nix | 14 - modules/system/hardware/gui.nix | 19 - modules/system/locale.nix | 18 - modules/system/network/default.nix | 27 - modules/system/network/root_ca.crt | 13 - modules/system/network/wifi.nix | 38 - modules/system/nix.nix | 28 - modules/system/power.nix | 37 - modules/system/quem.nix | 17 - modules/system/secret.nix | 14 - modules/system/secure-boot.nix | 36 - modules/system/sops.nix | 41 - modules/system/user/default.nix | 11 - modules/system/user/moons.nix | 31 - modules/system/version.nix | 22 - overlays/default.nix | 6 - profiles/interfaces/cli-interactive.nix | 7 - profiles/interfaces/cli-minimal.nix | 9 - profiles/interfaces/gui.nix | 19 - profiles/platforms/desktop.nix | 3 - profiles/platforms/laptop.nix | 11 - profiles/platforms/thinkpad.nix | 7 - profiles/platforms/vm.nix | 7 - profiles/workloads/dev.nix | 16 - profiles/workloads/personal.nix | 6 - profiles/workloads/remote.nix | 5 - profiles/workloads/secure-storage.nix | 4 - profiles/workloads/srv.nix | 6 - profiles/workloads/tailscale/client.nix | 8 - profiles/workloads/tailscale/server.nix | 12 - renovate.json | 13 - secrets/common/system.yaml | 46 - shells/android.nix | 15 - shells/default.nix | 6 - shells/dotnix.nix | 35 - 252 files changed, 10356 deletions(-) delete mode 100644 .github/actions/update-flake-input/action.yaml delete mode 100644 .github/workflows/nixos-ci.yml delete mode 100644 .github/workflows/renovate.yml delete mode 100644 .github/workflows/update-flake-inputs.yml delete mode 100644 .sops.yaml delete mode 100644 AGENTS.md delete mode 100644 README.md delete mode 100644 docs/fingerprint.md delete mode 100644 docs/install.md delete mode 100644 docs/iso-build.md delete mode 100644 docs/sops-key.md delete mode 100644 flake.lock delete mode 100644 flake.nix delete mode 100644 flake/formatter.nix delete mode 100644 flake/git-hooks.nix delete mode 100644 hosts/default.nix delete mode 100644 hosts/installer/default.nix delete mode 100644 hosts/internal-app-01/default.nix delete mode 100644 hosts/internal-app-01/hardware-configuration.nix delete mode 100644 hosts/nix-example/default.nix delete mode 100644 hosts/nix-example/hardware-configuration.nix delete mode 100644 hosts/ops/default.nix delete mode 100644 hosts/ops/hardware-configuration.nix delete mode 100644 hosts/x1g13/default.nix delete mode 100644 hosts/x1g13/disko.nix delete mode 100644 hosts/x1g13/hardware-configuration.nix delete mode 100644 images/avatar.jpg delete mode 100644 modules/applications/1password.nix delete mode 100644 modules/applications/arduino.nix delete mode 100644 modules/applications/btop/default.nix delete mode 100644 modules/applications/btop/dracula.theme delete mode 100644 modules/applications/btop/home.nix delete mode 100644 modules/applications/btop/system.nix delete mode 100644 modules/applications/chrome.nix delete mode 100644 modules/applications/claude/default.nix delete mode 100644 modules/applications/claude/home.nix delete mode 100644 modules/applications/claude/system.nix delete mode 100644 modules/applications/codex-desktop.nix delete mode 100644 modules/applications/codex.nix delete mode 100644 modules/applications/default.nix delete mode 100644 modules/applications/direnv.nix delete mode 100644 modules/applications/discord.nix delete mode 100644 modules/applications/docker.nix delete mode 100644 modules/applications/fcitx5/config delete mode 100644 modules/applications/fcitx5/default.nix delete mode 100644 modules/applications/fcitx5/home.nix delete mode 100644 modules/applications/fcitx5/system.nix delete mode 100644 modules/applications/ghostty/config delete mode 100644 modules/applications/ghostty/default.nix delete mode 100644 modules/applications/ghostty/dracula.theme delete mode 100644 modules/applications/ghostty/home.nix delete mode 100644 modules/applications/ghostty/system.nix delete mode 100644 modules/applications/git/default.nix delete mode 100644 modules/applications/git/home.nix delete mode 100644 modules/applications/git/system.nix delete mode 100644 modules/applications/gnome.nix delete mode 100644 modules/applications/gnupg/default.nix delete mode 100644 modules/applications/gnupg/home.nix delete mode 100644 modules/applications/gnupg/system.nix delete mode 100644 modules/applications/greetd.nix delete mode 100644 modules/applications/grok.nix delete mode 100644 modules/applications/gtk/default.nix delete mode 100644 modules/applications/gtk/home.nix delete mode 100644 modules/applications/gtk/system.nix delete mode 100644 modules/applications/java/default.nix delete mode 100644 modules/applications/java/home.nix delete mode 100644 modules/applications/java/system.nix delete mode 100644 modules/applications/kde.nix delete mode 100644 modules/applications/ly/default.nix delete mode 100644 modules/applications/nautilus.nix delete mode 100644 modules/applications/nh.nix delete mode 100644 modules/applications/niri/default.nix delete mode 100644 modules/applications/niri/defaultKeyBind.nix delete mode 100644 modules/applications/niri/home.nix delete mode 100644 modules/applications/niri/system.nix delete mode 100644 modules/applications/nix-index/default.nix delete mode 100644 modules/applications/nix-index/home.nix delete mode 100644 modules/applications/nix-index/system.nix delete mode 100644 modules/applications/noctalia/default.nix delete mode 100644 modules/applications/noctalia/home.nix delete mode 100644 modules/applications/noctalia/system.nix delete mode 100644 modules/applications/opencode.nix delete mode 100644 modules/applications/openssh.nix delete mode 100644 modules/applications/slack.nix delete mode 100644 modules/applications/ssh/default.nix delete mode 100644 modules/applications/ssh/home.nix delete mode 100644 modules/applications/ssh/system.nix delete mode 100644 modules/applications/swayidle.nix delete mode 100644 modules/applications/swaylock/default.nix delete mode 100644 modules/applications/swaylock/home.nix delete mode 100644 modules/applications/swaylock/system.nix delete mode 100644 modules/applications/tailscale.nix delete mode 100644 modules/applications/vicinae.nix delete mode 100644 modules/applications/vim/default.nix delete mode 100644 modules/applications/vim/home/autocmds.nix delete mode 100644 modules/applications/vim/home/colorscheme.nix delete mode 100644 modules/applications/vim/home/default.nix delete mode 100644 modules/applications/vim/home/keymaps.nix delete mode 100644 modules/applications/vim/home/language.nix delete mode 100644 modules/applications/vim/home/lsp.nix delete mode 100644 modules/applications/vim/home/options.nix delete mode 100644 modules/applications/vim/home/plugins/default.nix delete mode 100644 modules/applications/vim/home/plugins/editor/autopairs.nix delete mode 100644 modules/applications/vim/home/plugins/editor/blink-cmp.nix delete mode 100644 modules/applications/vim/home/plugins/editor/comment.nix delete mode 100644 modules/applications/vim/home/plugins/editor/conform.nix delete mode 100644 modules/applications/vim/home/plugins/editor/copilot.nix delete mode 100644 modules/applications/vim/home/plugins/editor/default.nix delete mode 100644 modules/applications/vim/home/plugins/editor/flash.nix delete mode 100644 modules/applications/vim/home/plugins/editor/git-conflict.nix delete mode 100644 modules/applications/vim/home/plugins/editor/git.nix delete mode 100644 modules/applications/vim/home/plugins/editor/gitsigns.nix delete mode 100644 modules/applications/vim/home/plugins/editor/glance.nix delete mode 100644 modules/applications/vim/home/plugins/editor/lsp-signature.nix delete mode 100644 modules/applications/vim/home/plugins/editor/snacks.nix delete mode 100644 modules/applications/vim/home/plugins/editor/spectre.nix delete mode 100644 modules/applications/vim/home/plugins/editor/surround.nix delete mode 100644 modules/applications/vim/home/plugins/editor/todo-comments.nix delete mode 100644 modules/applications/vim/home/plugins/editor/treesitter.nix delete mode 100644 modules/applications/vim/home/plugins/editor/trouble.nix delete mode 100644 modules/applications/vim/home/plugins/editor/wakatime.nix delete mode 100644 modules/applications/vim/home/plugins/ui/barbar.nix delete mode 100644 modules/applications/vim/home/plugins/ui/blankline.nix delete mode 100644 modules/applications/vim/home/plugins/ui/colorizer.nix delete mode 100644 modules/applications/vim/home/plugins/ui/default.nix delete mode 100644 modules/applications/vim/home/plugins/ui/dropbar.nix delete mode 100644 modules/applications/vim/home/plugins/ui/lightbulb.nix delete mode 100644 modules/applications/vim/home/plugins/ui/lualine.nix delete mode 100644 modules/applications/vim/home/plugins/ui/markview.nix delete mode 100644 modules/applications/vim/home/plugins/ui/neo-tree.nix delete mode 100644 modules/applications/vim/home/plugins/ui/scrollbar.nix delete mode 100644 modules/applications/vim/home/plugins/ui/toggleterm.nix delete mode 100644 modules/applications/vim/home/plugins/ui/treesitter.nix delete mode 100644 modules/applications/vim/home/plugins/ui/ufo.nix delete mode 100644 modules/applications/vim/home/plugins/ui/web-devicons.nix delete mode 100644 modules/applications/vim/home/plugins/ui/which-key.nix delete mode 100644 modules/applications/vim/home/plugins/ui/zen-mode.nix delete mode 100644 modules/applications/vim/system.nix delete mode 100644 modules/applications/vscode/default.nix delete mode 100644 modules/applications/vscode/home.nix delete mode 100644 modules/applications/vscode/system.nix delete mode 100644 modules/applications/wayland.nix delete mode 100644 modules/applications/yazi.nix delete mode 100644 modules/applications/zed/default.nix delete mode 100644 modules/applications/zed/home.nix delete mode 100644 modules/applications/zellij/default.nix delete mode 100644 modules/applications/zellij/home.nix delete mode 100644 modules/applications/zellij/system.nix delete mode 100644 modules/applications/zoom.nix delete mode 100644 modules/applications/zoxide.nix delete mode 100644 modules/applications/zsh/default.nix delete mode 100644 modules/applications/zsh/home.nix delete mode 100644 modules/applications/zsh/system.nix delete mode 100644 modules/default.nix delete mode 100644 modules/drivers/default.nix delete mode 100644 modules/drivers/intel-drivers.nix delete mode 100644 modules/features/application/browser.nix delete mode 100644 modules/features/application/communication.nix delete mode 100644 modules/features/application/default.nix delete mode 100644 modules/features/boot/default.nix delete mode 100644 modules/features/boot/power.nix delete mode 100644 modules/features/boot/secure-boot.nix delete mode 100644 modules/features/boot/storage-crypto.nix delete mode 100644 modules/features/boot/uefi.nix delete mode 100644 modules/features/cli/base.nix delete mode 100644 modules/features/cli/default.nix delete mode 100644 modules/features/cli/interactive.nix delete mode 100644 modules/features/cli/shell.nix delete mode 100644 modules/features/connect/bluetooth.nix delete mode 100644 modules/features/connect/default.nix delete mode 100644 modules/features/connect/wifi.nix delete mode 100644 modules/features/default.nix delete mode 100644 modules/features/dev/agent.nix delete mode 100644 modules/features/dev/arduino.nix delete mode 100644 modules/features/dev/bun.nix delete mode 100644 modules/features/dev/default.nix delete mode 100644 modules/features/dev/dns.nix delete mode 100644 modules/features/dev/drawio.nix delete mode 100644 modules/features/dev/java.nix delete mode 100644 modules/features/dev/nix.nix delete mode 100644 modules/features/dev/python.nix delete mode 100644 modules/features/gui/audio.nix delete mode 100644 modules/features/gui/camera.nix delete mode 100644 modules/features/gui/capture.nix delete mode 100644 modules/features/gui/default.nix delete mode 100644 modules/features/gui/desktop.nix delete mode 100644 modules/features/gui/editor.nix delete mode 100644 modules/features/gui/file-manager.nix delete mode 100644 modules/features/gui/graphic.nix delete mode 100644 modules/features/gui/jp-input.nix delete mode 100644 modules/features/gui/password.nix delete mode 100644 modules/features/gui/terminal.nix delete mode 100644 modules/features/identity/default.nix delete mode 100644 modules/features/identity/fingerprint.nix delete mode 100644 modules/features/identity/ssh-default-key.nix delete mode 100644 modules/features/network/default.nix delete mode 100644 modules/features/network/tailscale.nix delete mode 100644 modules/features/services/container.nix delete mode 100644 modules/features/services/default.nix delete mode 100644 modules/features/services/kde.nix delete mode 100644 modules/features/services/quem-guest.nix delete mode 100644 modules/features/storage/default.nix delete mode 100644 modules/features/storage/nfs-client.nix delete mode 100644 modules/integrations/default.nix delete mode 100644 modules/integrations/home-manager.nix delete mode 100644 modules/system/audio.nix delete mode 100644 modules/system/boot/default.nix delete mode 100644 modules/system/boot/nfs.nix delete mode 100644 modules/system/boot/uefi.nix delete mode 100644 modules/system/camera.nix delete mode 100644 modules/system/default.nix delete mode 100644 modules/system/disko.nix delete mode 100644 modules/system/fingerprint.nix delete mode 100644 modules/system/fonts.nix delete mode 100644 modules/system/gc.nix delete mode 100644 modules/system/hardware/bluetooth.nix delete mode 100644 modules/system/hardware/default.nix delete mode 100644 modules/system/hardware/gui.nix delete mode 100644 modules/system/locale.nix delete mode 100644 modules/system/network/default.nix delete mode 100644 modules/system/network/root_ca.crt delete mode 100644 modules/system/network/wifi.nix delete mode 100644 modules/system/nix.nix delete mode 100644 modules/system/power.nix delete mode 100644 modules/system/quem.nix delete mode 100644 modules/system/secret.nix delete mode 100644 modules/system/secure-boot.nix delete mode 100644 modules/system/sops.nix delete mode 100644 modules/system/user/default.nix delete mode 100644 modules/system/user/moons.nix delete mode 100644 modules/system/version.nix delete mode 100644 overlays/default.nix delete mode 100644 profiles/interfaces/cli-interactive.nix delete mode 100644 profiles/interfaces/cli-minimal.nix delete mode 100644 profiles/interfaces/gui.nix delete mode 100644 profiles/platforms/desktop.nix delete mode 100644 profiles/platforms/laptop.nix delete mode 100644 profiles/platforms/thinkpad.nix delete mode 100644 profiles/platforms/vm.nix delete mode 100644 profiles/workloads/dev.nix delete mode 100644 profiles/workloads/personal.nix delete mode 100644 profiles/workloads/remote.nix delete mode 100644 profiles/workloads/secure-storage.nix delete mode 100644 profiles/workloads/srv.nix delete mode 100644 profiles/workloads/tailscale/client.nix delete mode 100644 profiles/workloads/tailscale/server.nix delete mode 100644 renovate.json delete mode 100644 secrets/common/system.yaml delete mode 100644 shells/android.nix delete mode 100644 shells/default.nix delete mode 100644 shells/dotnix.nix diff --git a/.github/actions/update-flake-input/action.yaml b/.github/actions/update-flake-input/action.yaml deleted file mode 100644 index 552be60..0000000 --- a/.github/actions/update-flake-input/action.yaml +++ /dev/null @@ -1,260 +0,0 @@ -name: Update Flake Input -description: Update one GitHub-backed Nix flake input and create a pull request -inputs: - input-name: - description: Name of the flake input to update - required: true - github-token: - description: Token used to query GitHub, push the update branch, and manage the pull request - required: true - base-branch: - description: Branch targeted by the pull request - required: false - default: main - minimum-release-age-days: - description: Minimum age of the target commit in days - required: false - default: "3" - skip-delay: - description: Update to the latest revision without applying the minimum age - required: false - default: "false" - auto-merge: - description: Enable squash auto-merge on the pull request - required: false - default: "true" - pr-labels: - description: Comma-separated labels to add when they already exist in the repository - required: false - default: dependencies,automated -outputs: - updated: - description: Whether flake.lock changed - value: ${{ steps.update.outputs.updated }} - current-version: - description: Previous locked revision - value: ${{ steps.update.outputs.current_version }} - new-version: - description: New locked revision - value: ${{ steps.update.outputs.new_version }} - pr-url: - description: URL of the created or updated pull request - value: ${{ steps.pull-request.outputs.pr_url }} -runs: - using: composite - steps: - - name: Update flake input - id: update - shell: bash - env: - GH_TOKEN: ${{ inputs.github-token }} - INPUT_NAME: ${{ inputs.input-name }} - MINIMUM_RELEASE_AGE_DAYS: ${{ inputs.minimum-release-age-days }} - SKIP_DELAY: ${{ inputs.skip-delay }} - run: | - set -euo pipefail - - if [[ ! "$MINIMUM_RELEASE_AGE_DAYS" =~ ^[0-9]+$ ]]; then - echo "::error::minimum-release-age-days must be a non-negative integer" - exit 1 - fi - - node_key="$( - jq -er --arg input "$INPUT_NAME" ' - .nodes.root.inputs[$input] - | if type == "array" then .[0] else . end - ' flake.lock - )" - input_type="$(jq -r --arg node "$node_key" '.nodes[$node].locked.type // ""' flake.lock)" - input_owner="$(jq -r --arg node "$node_key" '.nodes[$node].locked.owner // ""' flake.lock)" - input_repo="$(jq -r --arg node "$node_key" '.nodes[$node].locked.repo // ""' flake.lock)" - input_ref="$(jq -r --arg node "$node_key" '.nodes[$node].original.ref // ""' flake.lock)" - current_rev="$(jq -er --arg node "$node_key" '.nodes[$node].locked.rev' flake.lock)" - - if [ "$input_type" != "github" ] || [ -z "$input_owner" ] || [ -z "$input_repo" ]; then - echo "::error::${INPUT_NAME} is not a GitHub-backed flake input" - exit 1 - fi - - echo "Input: $INPUT_NAME" - echo "Repository: ${input_owner}/${input_repo}" - echo "Current revision: $current_rev" - - if [ "$SKIP_DELAY" = "true" ]; then - nix flake update "$INPUT_NAME" - else - cutoff="$(date --utc --date="${MINIMUM_RELEASE_AGE_DAYS} days ago" +%Y-%m-%dT%H:%M:%SZ)" - api_args=( - --method GET - "repos/${input_owner}/${input_repo}/commits" - -f "until=$cutoff" - -f per_page=1 - ) - if [ -n "$input_ref" ]; then - api_args+=(-f "sha=$input_ref") - fi - - echo "Selecting the newest commit no later than $cutoff" - target_data="$(gh api "${api_args[@]}" --jq '.[0] | {sha: .sha, date: .commit.committer.date}')" - target_rev="$(jq -er '.sha' <<< "$target_data")" - target_date="$(jq -er '.date' <<< "$target_data")" - - if [ "$target_rev" = "$current_rev" ]; then - echo "The input is already at the newest eligible revision" - { - echo "updated=false" - echo "current_version=$current_rev" - echo "new_version=$current_rev" - } >> "$GITHUB_OUTPUT" - exit 0 - fi - - current_date="$( - gh api "repos/${input_owner}/${input_repo}/commits/${current_rev}" \ - --jq '.commit.committer.date' - )" - current_timestamp="$(date --date="$current_date" +%s)" - target_timestamp="$(date --date="$target_date" +%s)" - - if [ "$target_timestamp" -lt "$current_timestamp" ]; then - echo "The newest eligible revision is older than the current revision; skipping" - { - echo "updated=false" - echo "current_version=$current_rev" - echo "new_version=$current_rev" - } >> "$GITHUB_OUTPUT" - exit 0 - fi - - nix flake update "$INPUT_NAME" \ - --override-input "$INPUT_NAME" "github:${input_owner}/${input_repo}/${target_rev}" - fi - - if git diff --quiet -- flake.lock; then - echo "No lock file changes were produced" - { - echo "updated=false" - echo "current_version=$current_rev" - echo "new_version=$current_rev" - } >> "$GITHUB_OUTPUT" - exit 0 - fi - - new_node_key="$( - jq -er --arg input "$INPUT_NAME" ' - .nodes.root.inputs[$input] - | if type == "array" then .[0] else . end - ' flake.lock - )" - new_rev="$(jq -er --arg node "$new_node_key" '.nodes[$node].locked.rev' flake.lock)" - - echo "New revision: $new_rev" - { - echo "updated=true" - echo "current_version=$current_rev" - echo "new_version=$new_rev" - echo "input_owner=$input_owner" - echo "input_repo=$input_repo" - } >> "$GITHUB_OUTPUT" - - name: Create or update pull request - id: pull-request - if: steps.update.outputs.updated == 'true' - shell: bash - env: - GH_TOKEN: ${{ inputs.github-token }} - INPUT_NAME: ${{ inputs.input-name }} - BASE_BRANCH: ${{ inputs.base-branch }} - CURRENT_REV: ${{ steps.update.outputs.current_version }} - NEW_REV: ${{ steps.update.outputs.new_version }} - INPUT_OWNER: ${{ steps.update.outputs.input_owner }} - INPUT_REPO: ${{ steps.update.outputs.input_repo }} - MINIMUM_RELEASE_AGE_DAYS: ${{ inputs.minimum-release-age-days }} - SKIP_DELAY: ${{ inputs.skip-delay }} - AUTO_MERGE: ${{ inputs.auto-merge }} - PR_LABELS: ${{ inputs.pr-labels }} - run: | - set -euo pipefail - - branch_suffix="$(tr -c 'A-Za-z0-9._-' '-' <<< "$INPUT_NAME" | sed 's/-$//')" - branch="update-flake-${branch_suffix}" - current_short="${CURRENT_REV:0:8}" - new_short="${NEW_REV:0:8}" - title="chore(nix): update ${INPUT_NAME} to ${new_short}" - - if [ "$SKIP_DELAY" = "true" ]; then - age_note="The minimum release age check was skipped for this manually requested update." - else - age_note="The target commit is at least ${MINIMUM_RELEASE_AGE_DAYS} days old." - fi - - body="$( - printf '%s\n' \ - "Automated update of the \`${INPUT_NAME}\` flake input." \ - "" \ - "- Previous revision: [\`${current_short}\`](https://github.com/${INPUT_OWNER}/${INPUT_REPO}/commit/${CURRENT_REV})" \ - "- New revision: [\`${new_short}\`](https://github.com/${INPUT_OWNER}/${INPUT_REPO}/commit/${NEW_REV})" \ - "- Changes: [compare](https://github.com/${INPUT_OWNER}/${INPUT_REPO}/compare/${CURRENT_REV}...${NEW_REV})" \ - "" \ - "$age_note" - )" - - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add flake.lock - git switch -C "$branch" - git commit -m "$title" - - git fetch origin "refs/heads/${branch}:refs/remotes/origin/${branch}" || true - git push --force-with-lease origin "HEAD:refs/heads/${branch}" - - label_args=() - available_labels="$(gh label list --limit 100 --json name --jq '.[].name')" - IFS=',' read -ra requested_labels <<< "$PR_LABELS" - for label in "${requested_labels[@]}"; do - label="$(xargs <<< "$label")" - if [ -n "$label" ] && grep -Fxq "$label" <<< "$available_labels"; then - label_args+=(--add-label "$label") - elif [ -n "$label" ]; then - echo "::warning::Skipping missing pull request label: $label" - fi - done - - pr_number="$( - gh pr list \ - --state open \ - --head "$branch" \ - --json number \ - --jq '.[0].number // empty' - )" - - if [ -n "$pr_number" ]; then - gh pr edit "$pr_number" \ - --title "$title" \ - --body "$body" \ - "${label_args[@]}" - else - gh pr create \ - --base "$BASE_BRANCH" \ - --head "$branch" \ - --title "$title" \ - --body "$body" - pr_number="$( - gh pr list \ - --state open \ - --head "$branch" \ - --json number \ - --jq '.[0].number' - )" - if [ "${#label_args[@]}" -gt 0 ]; then - gh pr edit "$pr_number" "${label_args[@]}" - fi - fi - - if [ "$AUTO_MERGE" = "true" ]; then - gh pr merge "$pr_number" --auto --squash || - echo "::warning::Auto-merge could not be enabled; check the repository merge settings" - fi - - pr_url="$(gh pr view "$pr_number" --json url --jq '.url')" - echo "pr_url=$pr_url" >> "$GITHUB_OUTPUT" - echo "Pull request: $pr_url" diff --git a/.github/workflows/nixos-ci.yml b/.github/workflows/nixos-ci.yml deleted file mode 100644 index 6a5658c..0000000 --- a/.github/workflows/nixos-ci.yml +++ /dev/null @@ -1,150 +0,0 @@ -name: NixOS CI -on: - pull_request: - branches: - - main - push: - branches: - - main - workflow_dispatch: -permissions: - contents: read -concurrency: - group: nixos-ci-${{ github.event.pull_request.number || github.run_id }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} -jobs: - validate: - name: Validate flake - runs-on: ubuntu-latest - timeout-minutes: 30 - outputs: - hosts: ${{ steps.hosts.outputs.hosts }} - steps: - - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Install Nix - uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0 - with: - extra_nix_config: | - experimental-features = nix-command flakes - accept-flake-config = true - access-tokens = github.com=${{ github.token }} - - name: Check flake and evaluate all outputs - run: nix flake check --all-systems --no-build --show-trace - - name: Discover NixOS hosts - id: hosts - run: | - hosts=$(nix eval --json '.#nixosConfigurations' --apply 'configs: builtins.attrNames configs') - echo "hosts=$hosts" >> "$GITHUB_OUTPUT" - echo "Discovered hosts: $hosts" - build: - name: Build ${{ matrix.host }} - needs: validate - if: ${{ needs.validate.outputs.hosts != '[]' }} - runs-on: ubuntu-latest - timeout-minutes: 120 - strategy: - fail-fast: false - matrix: - host: ${{ fromJSON(needs.validate.outputs.hosts) }} - steps: - - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Install Nix - uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0 - with: - extra_nix_config: | - experimental-features = nix-command flakes - accept-flake-config = true - access-tokens = github.com=${{ github.token }} - - name: Build NixOS system - run: | - nix build ".#nixosConfigurations.${{ matrix.host }}.config.system.build.toplevel" \ - --no-link \ - --print-build-logs \ - --show-trace - report-main-status: - name: Report main status - needs: - - validate - - build - if: ${{ always() && !cancelled() && github.event_name == 'push' && github.ref == 'refs/heads/main' }} - runs-on: ubuntu-latest - timeout-minutes: 5 - permissions: - contents: read - issues: write - env: - CI_FAILED: ${{ needs.validate.result == 'failure' || needs.build.result == 'failure' }} - JOB_RESULTS: ${{ toJSON(needs) }} - steps: - - name: Create or resolve failure issue - uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9 - with: - script: | - const owner = context.repo.owner; - const repo = context.repo.repo; - const title = "NixOS CI is failing on main"; - const marker = ""; - const failed = process.env.CI_FAILED === "true"; - const jobs = JSON.parse(process.env.JOB_RESULTS); - const failedJobs = Object.entries(jobs) - .filter(([, job]) => job.result === "failure") - .map(([name]) => `\`${name}\``) - .join(", "); - const runUrl = `${context.serverUrl}/${owner}/${repo}/actions/runs/${context.runId}`; - const commitUrl = `${context.serverUrl}/${owner}/${repo}/commit/${context.sha}`; - const issues = await github.paginate(github.rest.issues.listForRepo, { - owner, - repo, - state: "open", - per_page: 100, - }); - const existing = issues.find( - (issue) => !issue.pull_request && issue.title === title && issue.body?.includes(marker), - ); - - if (failed) { - const body = [ - marker, - "The NixOS CI workflow failed after a push to `main`.", - "", - `- Failed jobs: ${failedJobs || "unknown"}`, - `- Commit: [\`${context.sha.slice(0, 7)}\`](${commitUrl})`, - `- Workflow run: [${context.runId}](${runUrl})`, - "", - "This issue is updated on subsequent failures and closed automatically after CI recovers.", - ].join("\n"); - - if (existing) { - await github.rest.issues.update({ - owner, - repo, - issue_number: existing.number, - body, - }); - } else { - await github.rest.issues.create({ owner, repo, title, body }); - } - return; - } - - if (existing) { - await github.rest.issues.createComment({ - owner, - repo, - issue_number: existing.number, - body: `CI recovered in [workflow run ${context.runId}](${runUrl}).`, - }); - await github.rest.issues.update({ - owner, - repo, - issue_number: existing.number, - state: "closed", - state_reason: "completed", - }); - } diff --git a/.github/workflows/renovate.yml b/.github/workflows/renovate.yml deleted file mode 100644 index d141841..0000000 --- a/.github/workflows/renovate.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Renovate -on: - schedule: - # Every day at 03:00 JST (18:00 UTC on the previous day). - - cron: "0 18 * * *" - workflow_dispatch: -permissions: - contents: read -concurrency: - group: renovate - cancel-in-progress: false -jobs: - renovate: - name: Update GitHub Actions dependencies - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - # Use a PAT or GitHub App token so Renovate PRs trigger the other workflows. - - name: Run Renovate - uses: renovatebot/github-action@3064367f740a1a91cca218698a63902689cce200 # v46.1.20 - with: - renovate-version: 43.262.1 - token: ${{ secrets.RENOVATE_TOKEN }} - env: - LOG_LEVEL: info - RENOVATE_PLATFORM: github - RENOVATE_REPOSITORIES: ${{ github.repository }} diff --git a/.github/workflows/update-flake-inputs.yml b/.github/workflows/update-flake-inputs.yml deleted file mode 100644 index 2ab924a..0000000 --- a/.github/workflows/update-flake-inputs.yml +++ /dev/null @@ -1,106 +0,0 @@ -name: Update Flake Inputs -on: - schedule: - # Every day at 03:30 JST (18:30 UTC on the previous day). - - cron: "30 18 * * *" - workflow_dispatch: - inputs: - input: - description: Update only this flake input (empty updates all inputs) - required: false - type: string - skip-delay: - description: Update to the latest revision without the three-day delay - required: false - default: false - type: boolean - auto-merge: - description: Enable auto-merge after required checks pass - required: false - default: true - type: boolean -permissions: - contents: write - pull-requests: write -concurrency: - group: update-flake-inputs - cancel-in-progress: false -jobs: - discover: - name: Discover flake inputs - runs-on: ubuntu-latest - timeout-minutes: 5 - outputs: - matrix: ${{ steps.inputs.outputs.matrix }} - steps: - - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Build update matrix - id: inputs - env: - REQUESTED_INPUT: ${{ inputs.input }} - run: | - set -euo pipefail - - github_inputs="$( - jq -c ' - . as $lock - | [ - $lock.nodes.root.inputs - | to_entries[] - | .key as $name - | ( - .value - | if type == "array" then .[0] else . end - ) as $node - | select($lock.nodes[$node].locked.type == "github") - | $name - ] - | sort - ' flake.lock - )" - - if [ -n "$REQUESTED_INPUT" ]; then - if ! jq -e --arg input "$REQUESTED_INPUT" 'index($input) != null' <<< "$github_inputs" >/dev/null; then - echo "::error::Unknown or unsupported flake input: $REQUESTED_INPUT" - exit 1 - fi - matrix="$(jq -cn --arg input "$REQUESTED_INPUT" '{input: [$input]}')" - else - matrix="$(jq -cn --argjson inputs "$github_inputs" '{input: $inputs}')" - fi - - echo "matrix=$matrix" >> "$GITHUB_OUTPUT" - echo "Update matrix: $matrix" - update: - name: Update ${{ matrix.input }} - needs: discover - if: ${{ needs.discover.outputs.matrix != '{"input":[]}' }} - runs-on: ubuntu-latest - timeout-minutes: 30 - strategy: - fail-fast: false - max-parallel: 4 - matrix: ${{ fromJSON(needs.discover.outputs.matrix) }} - steps: - - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - token: ${{ secrets.RENOVATE_TOKEN }} - - name: Install Nix - uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0 - with: - extra_nix_config: | - experimental-features = nix-command flakes - accept-flake-config = true - access-tokens = github.com=${{ secrets.RENOVATE_TOKEN }} - - name: Update input - uses: ./.github/actions/update-flake-input - with: - input-name: ${{ matrix.input }} - github-token: ${{ secrets.RENOVATE_TOKEN }} - skip-delay: ${{ github.event_name == 'workflow_dispatch' && inputs.skip-delay }} - auto-merge: ${{ github.event_name != 'workflow_dispatch' || inputs.auto-merge }} diff --git a/.gitignore b/.gitignore index bc1a813..0dd052a 100644 --- a/.gitignore +++ b/.gitignore @@ -14,15 +14,3 @@ !/flake.nix !/flake.lock -!/renovate.json - -!shells/ -!hosts/ -!overlays/ -!profiles/ -!modules/ -!docs/ -!images/ -!secrets/ - -!/flake/ diff --git a/.sops.yaml b/.sops.yaml deleted file mode 100644 index 0aefbf7..0000000 --- a/.sops.yaml +++ /dev/null @@ -1,18 +0,0 @@ -keys: - - &admin_yubikey1 age1yubikey1qvy5y8kxqc63y7fk0tfv43u499a8z8q332ff087lythry9cc6hdxxkznc6t - - &host_x1g13 age12g85cuvg4kjfr79lqf5fx2k0d82tchrgv88xgkt7ukk2cfcsw98s2rjyat - - &host_ops age18rtm2dq2r62zvnhwdq0gkm24hu85r7zyleyk3jqv22zpdtw064eq7ay7dl - - &host_internal-app-01 age1mcp5gma7y0k59equhzqfsnn0ed335ljjtn0k08ua77htlxf0x54qsravch -creation_rules: - - path_regex: ^secrets/common/[^/]+\.ya?ml$ - key_groups: - - age: - - *admin_yubikey1 - - *host_x1g13 - - *host_ops - - *host_internal-app-01 - - path_regex: ^secrets/hosts/x1g13/[^/]+\.ya?ml$ - key_groups: - - age: - - *admin_yubikey1 - - *host_x1g13 diff --git a/AGENTS.md b/AGENTS.md deleted file mode 100644 index 4b9a436..0000000 --- a/AGENTS.md +++ /dev/null @@ -1,423 +0,0 @@ -# AGENTS.md - -NixOS + Home Manager flake (v2)。flake-parts ベース。 - -## Commands - -```sh -nix flake update # flake の更新 -nix fmt # フォーマット (treefmt: nixfmt, deadnix, statix, shfmt, shellcheck, prettier, yamlfmt, taplo, oxfmt) -nix develop .#dotnix # 開発シェル (pre-commit hooks, sops, age 入り) -sudo nixos-rebuild build --flake .# # ビルド確認 -sudo nixos-rebuild switch --flake .# # 適用 -``` - -## Conventions - -- User: `moons`, locale: `ja_JP.UTF-8`, timezone: `Asia/Tokyo` -- Commits: conventional commits (`feat:`, `chore:`, `fix:`, etc.) -- リモート: `git@github.com:moons-14/dotfiles.git` -- `environment.systemPackages` にパッケージを追加する際はパッケージ名の横に簡単な説明をコメントで追加する -- 警告を抑制する設定は書かない。根本原因を調査して修正する -- home-manager の `sharedModules` 内で `lib.hm.*` を使う場合は、そのモジュール関数の引数で `lib` を受け取る必要がある(NixOSモジュールの `lib` とは別スコープ) -- `useGlobalPkgs = true` なので、home-manager 内で `nixpkgs.config` を設定しない(NixOSレベルで一括設定) -- `allowUnfree` は `hosts/default.nix` でグローバルに設定済み。各モジュールで個別設定しない -- pre-commit hooks が `git-hooks.nix` で設定済み(treefmt, gitleaks, deadnix, statix, shellcheck)。dev shell で自動有効化 - -## Secrets - -- **sops-nix** + **age** + **YubiKey** で秘密管理 -- `.sops.yaml` で暗号化ルール定義、`secrets/` に暗号化済み YAML を配置 -- `modules/system/sops.nix` で sops-nix を import、`services.pcscd` (YubiKey用) を有効化 -- `modules/system/secret.nix` で `sops.secrets` を宣言 -- 平文の秘密をコミットしない(gitleaks が pre-commit で検出) - -## Architecture - -``` -flake.nix -├── hosts/default.nix # mkSystem でホスト構成を生成 -│ ├── modules/ # 全モジュール(常にインポートされる) -│ │ ├── applications/ # アプリケーション設定 -│ │ ├── system/ # システム設定 -│ │ ├── drivers/ # ドライバ設定 -│ │ ├── features/ # 機能バンドル(application/systemを束ねる) -│ │ └── integrations/ # home-manager 統合 -│ └── profiles/ # ホストごとに有効化するfeaturesの組み合わせ -│ ├── interfaces/ # 操作インターフェース (CLI/GUI) -│ ├── platforms/ # ハードウェア (desktop/laptop/thinkpad/vm) -│ └── workloads/ # 用途 (dev/personal/srv/remote/secure-storage) -├── overlays/ # nixpkgs オーバーレイ -├── shells/ # devShells (dotnix) -└── flake/ # formatter.nix, git-hooks.nix -``` - -### 評価の流れ - -``` -profile (featuresの有効化) - → features (application/systemの有効化 + パッケージ追加) - → applications (system.nix + home.nix) - → system (NixOS設定) -``` - -## Layer Design - -### `modules/system/` — NixOS システム設定 - -OS全体に影響する設定。`config.my.system.*` namespace。 - -- audio, boot, camera, disko, fingerprint, fonts, gc, hardware, locale, network, nix, power, secure-boot, sops, user, version, secret -- 常にインポートされるが、`enable` オプションで実効性を制御 -- home-manager の設定は含めない - -### `modules/applications/` — アプリケーション設定 - -個別に有効/無効を切り替えたいアプリケーション。`config.my.applications.*` namespace。 - -- NixOS設定のみ、または NixOS + Home Manager の両方 -- Complex Module は system.nix と home.nix に分離 - -### `modules/drivers/` — ドライバ設定 - -ハードウェア固有のドライバ。`config.my.drivers.*` namespace。 - -### `modules/features/` — 機能バンドル - -application や system より抽象度の高い「機能」単位で、複数の application/system を束ねて有効化する層。`config.my.features.*` namespace。 - -**features がやること:** - -1. 複数の `my.applications.*.enable` / `my.system.*.enable` をまとめて有効化 -2. application/system に属さないパッケージや設定を直接記述(`environment.systemPackages`、`home.activation` 等) -3. 追加オプションの受け渡し(例: tailscale の `acceptDns` を feature から application に passthrough) - -**features がやらないこと:** - -- 個別アプリケーションの詳細設定(これは applications 層の責務) - -### `profiles/` — ホスト構成 - -features の `enable` を指定するだけの薄い層。ロジックは書かない。 -`profiles/` から `my.system.*.enable` / `my.applications.*.enable` を直接指定しない。 -必要な場合は必ず `modules/features/` に feature 層を作り、profile では `my.features.*.enable` のみ指定する。 - -| カテゴリ | 役割 | 例 | -| ------------- | -------------------- | ------------------------------------------ | -| `interfaces/` | 操作インターフェース | cli-minimal, cli-interactive, gui | -| `platforms/` | ハードウェア固有設定 | desktop, laptop, thinkpad, vm | -| `workloads/` | 用途・ワークロード | dev, personal, srv, remote, secure-storage | - -profiles は継承可能: - -```nix -# cli-interactive.nix -{ - imports = [ ./cli-minimal.nix ]; - my.features.cli.interactive.enable = true; -} -``` - -### `hosts/` — ホスト定義 - -`mkSystem` でホストを定義。profiles のリストを指定: - -```nix -nix-example = mkSystem { - host = "nix-example"; - system = "x86_64-linux"; - profiles = [ - "interfaces/cli-interactive" - "platforms/vm" - "workloads/dev" - ]; -}; -``` - -`specialArgs` で `inputs`, `username`, `unstable`, `host` が全モジュールに渡される。 - -**注意:** `installer` ホストは `mkSystem` を使わず直接 `nixosSystem` で定義(インストーラ用)。 - -## Module Patterns - -### Simple Module(NixOS のみ) - -home-manager の設定を含まない。1ファイルで完結: - -```nix -# modules/system/audio.nix -{ lib, config, ... }: -let - cfg = config.my.system.audio; -in -{ - options.my.system.audio = { - enable = lib.mkEnableOption "Audio support (PipeWire)"; - }; - - config = lib.mkIf cfg.enable { - # NixOS設定をここに書く - }; -} -``` - -### Simple Module(Home Manager のみ) - -NixOS設定を含まず、home-manager のみ: - -```nix -# modules/applications/zoom.nix -{ pkgs, lib, config, ... }: -let - cfg = config.my.applications.zoom; -in -{ - options.my.applications.zoom = { - enable = lib.mkEnableOption "Zoom video conferencing"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - { - home.packages = with pkgs; [ - zoom-us # Video conferencing application - ]; - } - ]; - }; -} -``` - -### Complex Module(NixOS + Home Manager) - -ディレクトリ構造で system と home を分離: - -``` -modules/applications// -├── default.nix # マスター enable + imports -├── system.nix # NixOS 設定 -├── home.nix # Home Manager 設定 -└── (other files) # 設定ファイル等 -``` - -**default.nix** — `enable` のみ宣言。`system.enable`/`homeManager.enable` は sub-file に任せる: - -```nix -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications. = { - enable = lib.mkEnableOption ""; - }; - - config = lib.mkIf cfg.enable { - my.applications..system.enable = lib.mkDefault true; - my.applications..homeManager.enable = lib.mkDefault true; - }; -} -``` - -**system.nix:** - -```nix -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications..system; -in -{ - options.my.applications..system = { - enable = lib.mkEnableOption " system configuration"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - # Description - ]; - }; -} -``` - -**home.nix** — `home-manager.sharedModules` を使用: - -```nix -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.; - hmCfg = config.my.applications..homeManager; -in -{ - options.my.applications..homeManager = { - enable = lib.mkEnableOption " home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf hmCfg.enable { - # home-manager 設定をここに書く - }; - } - ]; -} -``` - -**注意点:** - -- `default.nix` では `enable` のみ宣言。`system.enable`/`homeManager.enable` は `system.nix`/`home.nix` で宣言する(重複宣言エラー回避) -- home.nix で親の `cfg` を参照する場合は `cfg` と `hmCfg` の両方を let で定義 -- Complex Module の home-manager 設定は `home-manager.sharedModules` で記述(`home-manager.users.` は使わない) - -### Feature Module - -**application/system を束ねる場合:** - -```nix -# modules/features/services/container.nix -{ lib, config, ... }: -let - cfg = config.my.features.services.container; -in -{ - options.my.features.services.container = { - enable = lib.mkEnableOption "Container runtime (Docker)"; - }; - - config = lib.mkIf cfg.enable { - my.applications.docker.enable = true; - }; -} -``` - -**パッケージを直接追加する場合(application/system に属さない):** - -```nix -# modules/features/gui/capture.nix -{ pkgs, lib, config, ... }: -let - cfg = config.my.features.gui.capture; -in -{ - options.my.features.gui.capture = { - enable = lib.mkEnableOption "Screen capture tools"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - slurp # Tool for selecting a region of the screen - grim # Screenshot tool for Wayland - ]; - }; -} -``` - -**オプションを passthrough する場合:** - -```nix -# modules/features/network/tailscale.nix -{ - options.my.features.network.tailscale = { - enable = lib.mkEnableOption "Tailscale VPN"; - acceptDns = lib.mkOption { type = lib.types.bool; default = false; }; - }; - - config = lib.mkIf cfg.enable { - my.applications.tailscale = { - enable = true; - inherit (cfg) acceptDns; - }; - }; -} -``` - -**home.activation を使う場合(identity 等):** - -```nix -# modules/features/identity/ssh-default-key.nix -config.home-manager.sharedModules = [ - ( - { lib, ... }: - { - config = lib.mkIf cfg.enable { - home.activation.generateSshKey = lib.hm.dag.entryAfter [ "writeBoundary" ] '' - # shell script here - ''; - }; - } - ) -]; -``` - -### Profile - -features の有効化のみを記述: - -```nix -# profiles/platforms/laptop.nix -{ - my.features = { - boot.power.enable = true; - connect = { - wifi.enable = true; - bluetooth.enable = true; - }; - gui.camera.enable = true; - identity.fingerprint.enable = true; - network.tailscale.enable = true; - }; -} -``` - -## Adding New Features — Checklist - -### 新しいアプリケーションを追加する場合 - -1. `modules/applications/` にモジュール作成(Simple or Complex) -2. `modules/applications/default.nix` の `imports` に追加 -3. `modules/features/` の適切なカテゴリに feature を作成(既存の feature に追記でも可) -4. `modules/features//default.nix` の `imports` に追加 -5. `profiles/` の適切な profile で feature を有効化 - -### 新しいシステム設定を追加する場合 - -1. `modules/system/` にモジュール作成(Simple Module) -2. `modules/system/default.nix` の `imports` に追加 -3. `modules/features/` の適切なカテゴリに feature を作成 -4. `modules/features//default.nix` の `imports` に追加 -5. `profiles/` の適切な profile で feature を有効化 - -### 新しいホストを追加する場合 - -1. `hosts//default.nix` を作成(`hardware-configuration.nix` を import) -2. `hosts/default.nix` の `flake.nixosConfigurations` に `mkSystem` で追加 -3. profiles のリストを指定 - -## Key Technical Notes - -- **nixpkgs channel**: `nixos-26.05` (stable) + `nixpkgs-unstable` -- **unstable パッケージ**: `specialArgs.unstable` 経由で参照(`unstable.`) -- **llm-agents**: `inputs.llm-agents.packages.${pkgs.stdenv.hostPlatform.system}.` で参照。overlay も `hosts/default.nix` でグローバルに適用 -- **nixvim**: `nixpkgs.source = pkgs.path` と `nixpkgs.config.allowUnfree = true` を vim/home/default.nix で設定 -- **home-manager**: `useGlobalPkgs = true`, `useUserPackages = true`, `backupFileExtension = "backup"` -- **hostname**: `specialArgs.host` から `modules/system/network/default.nix` で `networking.hostName` に設定 -- **stateVersion**: `config.my.stateVersions.nixos` / `config.my.stateVersions.homeManager` で管理(`modules/system/version.nix`) -- **disko**: `modules/system/disko.nix` で disk パーティション管理。ホスト固有の `disko.nix` を import -- **stylix**: `inputs.stylix` でテーマ管理 diff --git a/README.md b/README.md deleted file mode 100644 index bf8ae74..0000000 --- a/README.md +++ /dev/null @@ -1,191 +0,0 @@ -# dotfiles - -My NixOS + Home Manager configurations built with flake-parts. - -## Overview - -- **OS**: NixOS 26.05 (stable) + nixpkgs-unstable -- **Window Manager**: Niri (Wayland) -- **Shell**: Zsh -- **Terminal**: Ghostty -- **Editor**: Neovim (nixvim), VSCode -- **Launcher**: Vicinae -- **Theme**: Stylix (Dracula) -- **Secrets**: sops-nix + age + YubiKey - -## Hosts - -| Host | Description | Profiles | -| ------------- | --------------- | -------------------------------------------- | -| `x1g13` | ThinkPad laptop | gui, thinkpad, dev, personal, secure-storage | -| `nix-example` | VM | cli-interactive, vm, dev, remote | -| `installer` | NixOS installer | (standalone) | - -## Directory Structure - -``` -. -├── flake.nix # Flake inputs and outputs -├── flake/ -│ ├── formatter.nix # treefmt configuration (nixfmt, deadnix, statix, etc.) -│ └── git-hooks.nix # pre-commit hooks -├── hosts/ -│ ├── default.nix # mkSystem helper and host definitions -│ ├── x1g13/ # ThinkPad host config -│ ├── nix-example/ # VM host config -│ └── installer/ # Installer ISO config -├── modules/ -│ ├── applications/ # Application configs (NixOS + Home Manager) -│ │ ├── niri/ # Wayland compositor -│ │ ├── ghostty/ # Terminal emulator -│ │ ├── vim/ # Neovim (nixvim) -│ │ ├── vscode/ # VSCode -│ │ ├── zsh/ # Shell -│ │ ├── zellij/ # Terminal multiplexer -│ │ ├── git/ # Git config -│ │ ├── docker.nix # Container runtime -│ │ ├── tailscale.nix # VPN -│ │ ├── claude/ # Claude Code -│ │ ├── opencode.nix # OpenCode -│ │ └── ... # chrome, discord, zoom, slack, etc. -│ ├── system/ # NixOS system configs -│ │ ├── audio.nix # PipeWire -│ │ ├── boot/ # Bootloader (systemd-boot, lanzaboote) -│ │ ├── disko.nix # Disk partitioning -│ │ ├── fonts.nix # Fonts -│ │ ├── network/ # Networking -│ │ ├── sops.nix # Secrets management -│ │ ├── user/ # User accounts -│ │ └── ... -│ ├── features/ # Feature bundles (abstraction layer) -│ │ ├── application/ # browser, communication -│ │ ├── boot/ # UEFI -│ │ ├── cli/ # base, interactive, shell -│ │ ├── connect/ # WiFi, Bluetooth -│ │ ├── dev/ # agent, nix, python, bun, java, arduino -│ │ ├── gui/ # desktop, terminal, audio, editor, capture -│ │ ├── identity/ # SSH key, fingerprint -│ │ ├── network/ # Tailscale -│ │ ├── services/ # container, KDE -│ │ └── storage/ # disko -│ ├── drivers/ # Hardware drivers (Intel) -│ └── integrations/ # Home Manager integration -├── profiles/ -│ ├── interfaces/ # cli-minimal, cli-interactive, gui -│ ├── platforms/ # desktop, laptop, thinkpad, vm -│ └── workloads/ # dev, personal, srv, remote, secure-storage -├── overlays/ # nixpkgs overlays -├── shells/ # devShells (pre-commit hooks, sops, age) -├── secrets/ # Encrypted secrets (sops) -└── docs/ # Documentation -``` - -## Architecture - -``` -profile (enable features) - → features (bundle applications/system + add packages) - → applications (system.nix + home.nix) - → system (NixOS config) -``` - -### Module Patterns - -**Simple Module** — Single file for NixOS-only or Home Manager-only configs: - -```nix -{ lib, config, ... }: -let cfg = config.my.system.audio; -in { - options.my.system.audio.enable = lib.mkEnableOption "Audio"; - config = lib.mkIf cfg.enable { ... }; -} -``` - -**Complex Module** — Directory with `default.nix`, `system.nix`, `home.nix`: - -``` -modules/applications// -├── default.nix # Master enable + imports -├── system.nix # NixOS config -└── home.nix # Home Manager config (sharedModules) -``` - -**Feature Module** — Bundles multiple applications/system modules: - -```nix -{ lib, config, ... }: -let cfg = config.my.features.gui.desktop; -in { - options.my.features.gui.desktop.enable = lib.mkEnableOption "Desktop"; - config = lib.mkIf cfg.enable { - my.applications = { niri.enable = true; gtk.enable = true; ... }; - }; -} -``` - -**Profile** — Thin layer that only enables features: - -```nix -{ - my.features = { - gui.desktop.enable = true; - dev.agent.enable = true; - }; -} -``` - -## Packages - -### CLI - -- **Shell**: Zsh with zoxide, direnv -- **Terminal multiplexer**: Zellij -- **Editor**: Neovim (nixvim) -- **Tools**: ripgrep, curl, wget, htop, btop, fastfetch, unzip, unrar - -### GUI - -- **Compositor**: Niri -- **Terminal**: Ghostty, Alacritty -- **Editor**: VSCode -- **Browser**: Chrome -- **Launcher**: Vicinae -- **File manager**: Nautilus -- **Communication**: Discord, Zoom, Slack - -### Development - -- **AI agents**: Claude Code, Codex, OpenCode, Grok -- **Languages**: Python, Bun (JavaScript/TypeScript), Java, Arduino -- **Container**: Docker -- **Nix**: nh, nixfmt, deadnix, statix - -### System - -- **VPN**: Tailscale -- **Secrets**: sops-nix, age -- **Boot**: systemd-boot, lanzaboote (Secure Boot) -- **Disk**: disko -- **Theme**: Stylix - -## Commands - -```sh -nix flake update # Update flake inputs -nix fmt # Format code -nix develop .#dotnix # Enter dev shell -sudo nixos-rebuild switch --flake .# # Apply config -sudo nixos-rebuild build --flake .# # Build without applying -``` - -## Inspired - -- [Zaney/zaneyos](https://gitlab.com/Zaney/zaneyos) -- [fa0311/.zshrc](https://gist.github.com/fa0311/d37d53ff39c73c54c883379e8e3732df) -- [AsianLovesLinux/Niri](https://github.com/AsianLovesLinux/Niri) -- [natsukium/dotfiles](https://github.com/natsukium/dotfiles) -- [dracula](https://github.com/dracula) -- [akazdayo/nix-configs](https://github.com/akazdayo/nix-configs) -- [yutakobayashidev/dotnix](https://github.com/yutakobayashidev/dotnix) -- [kawaemon/dotfiles](https://github.com/kawaemon/dotfiles) diff --git a/docs/fingerprint.md b/docs/fingerprint.md deleted file mode 100644 index 2875af3..0000000 --- a/docs/fingerprint.md +++ /dev/null @@ -1,68 +0,0 @@ -# Fingerprint Commands - -This note covers the basic `fprintd` commands used by the fingerprint module. - -## Enroll a new fingerprint - -Register a fingerprint for the current user: - -```sh -fprintd-enroll $USER -``` - -To enroll a specific finger, pass the finger name: - -```sh -fprintd-enroll -f right-index-finger $USER -``` - -Common finger names include: - -- `left-thumb` -- `left-index-finger` -- `right-thumb` -- `right-index-finger` - -Follow the prompts and swipe or touch the sensor until enrollment completes. - -## List enrolled fingerprints - -Show fingerprints registered for the current user: - -```sh -fprintd-list $USER -``` - -You can also list fingerprints for another user: - -```sh -fprintd-list -``` - -## Delete fingerprints - -Delete one enrolled fingerprint for the current user: - -```sh -fprintd-delete -``` - -Delete all enrolled fingerprints for the current user: - -```sh -fprintd-delete $USER -``` - -Delete fingerprints for another user: - -```sh -fprintd-delete -``` - -## Verify authentication - -Test fingerprint authentication for the current user: - -```sh -fprintd-verify -``` diff --git a/docs/install.md b/docs/install.md deleted file mode 100644 index cd5786a..0000000 --- a/docs/install.md +++ /dev/null @@ -1,157 +0,0 @@ -# NixOSインストール手順 - -## 事前準備 - -1. [ISOビルド](iso-build.md)を参照してISOを作成 -2. USBに書き込んで対象マシンでブート - -## ネットワーク接続 - -### 有線LAN - -DHCPで自動設定される。 - -### WiFi(有線が使えない場合) - -```bash -nmcli device wifi connect --ask -``` - -## SSH接続 - -コンソールに表示されたIPアドレスに接続: - -```bash -ssh root@ -``` - -## インストール手順 - -### 1. dotfilesのクローン - -```bash -git clone git@github.com:moons-14/dotfiles.git ~/dotfiles -``` - -### 2. SSHホストキーの生成 - -新しいホスト用のSSHホストキーを生成: - -```bash -ssh-keygen -t ed25519 -f /tmp/ssh_host_ed25519_key -N "" -``` - -### 3. age公開鍵の取得 - -SSHホストキーからage公開鍵を取得: - -```bash -ssh-to-age -i /tmp/ssh_host_ed25519_key.pub -``` - -出力されたage公開鍵をコピー。 - -### 4. .sops.yamlの編集 - -```bash -cd ~/dotfiles -vim .sops.yaml -``` - -以下を追加: - -```yaml -keys: - - &host_ - -creation_rules: - - path_regex: ^secrets/hosts//[^/]+\.ya?ml$ - key_groups: - - age: - - *admin_yubikey1 - - *host_ -``` - -### 5. シークレットの再暗号化 - -```bash -sops updatekeys secrets/common/system.yaml -sops updatekeys secrets/hosts//*.yaml -``` - -### 6. disko設定の作成 - -新しいホスト用の`hosts//disko.nix`を作成。 - -#### シンプル構成(暗号化なし) - -```nix -_: -{ - disko.enableConfig = true; - - disko.devices.disk.main = { - type = "disk"; - device = "/dev/sda"; - content = { - type = "gpt"; - partitions = { - ESP = { - size = "512M"; - type = "EF00"; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - }; - }; - root = { - size = "100%"; - content = { - type = "filesystem"; - format = "ext4"; - mountpoint = "/"; - }; - }; - }; - }; - }; -} -``` - -#### LUKS暗号化 + btrfs - -`hosts/x1g13/disko.nix`を参照。 - -### 7. ディスクのパーティション - -```bash -cd ~/dotfiles -nix run github:nix-community/disko -- --mode disko hosts//disko.nix -``` - -### 8. ホストキーのコピー - -```bash -mkdir -p /mnt/etc/ssh -cp /tmp/ssh_host_ed25519_key* /mnt/etc/ssh/ -chmod 600 /mnt/etc/ssh/ssh_host_ed25519_key -``` - -### 9. NixOSインストール - -```bash -nixos-install --flake ~/dotfiles# -``` - -### 10. 再起動 - -```bash -reboot -``` - -## インストール後の確認 - -- SSHでログインできるか -- sopsシークレットが復号できるか -- diskoでパーティションが正しく設定されているか diff --git a/docs/iso-build.md b/docs/iso-build.md deleted file mode 100644 index d62af15..0000000 --- a/docs/iso-build.md +++ /dev/null @@ -1,26 +0,0 @@ -# カスタムISOビルド - -## ビルド - -```bash -nix build .#nixosConfigurations.installer.config.system.build.isoImage -``` - -## ISO書き込み - -```bash -# USBデバイスの確認 -lsblk - -# 書き込み(/dev/sdXは実際のデバイスに置き換える) -sudo dd if=./result/nixos-minimal-*.iso of=/dev/sdX bs=4M status=progress -sync -``` - -## ISOの特徴 - -- SSH鍵認証でrootログイン可能 -- 有線LANはDHCPで自動設定 -- WiFiは`nmcli`で手動設定可能 -- disko/sops/ageなどのツールを内蔵 -- ブート時にIPアドレスとヘルプを表示 diff --git a/docs/sops-key.md b/docs/sops-key.md deleted file mode 100644 index 8dbc9d3..0000000 --- a/docs/sops-key.md +++ /dev/null @@ -1,17 +0,0 @@ -# Generate Sops key file - -```bash -mkdir -p ~/.config/sops/age -chmod 700 ~/.config/sops/age - -age-plugin-yubikey --identity --slot 1 \ - > ~/.config/sops/age/yubikey-identity.txt - -chmod 600 ~/.config/sops/age/yubikey-identity.txt -``` - -## Edit sops file - -```bash -sops secrets/common/system.yaml -``` diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 49b2b26..0000000 --- a/flake.lock +++ /dev/null @@ -1,1511 +0,0 @@ -{ - "nodes": { - "base16": { - "inputs": { - "fromYaml": "fromYaml" - }, - "locked": { - "lastModified": 1755819240, - "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", - "owner": "SenchoPens", - "repo": "base16.nix", - "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "base16.nix", - "type": "github" - } - }, - "base16-fish": { - "flake": false, - "locked": { - "lastModified": 1765809053, - "narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=", - "owner": "tomyun", - "repo": "base16-fish", - "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", - "type": "github" - }, - "original": { - "owner": "tomyun", - "repo": "base16-fish", - "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", - "type": "github" - } - }, - "base16-helix": { - "flake": false, - "locked": { - "lastModified": 1776754714, - "narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=", - "owner": "tinted-theming", - "repo": "base16-helix", - "rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-helix", - "type": "github" - } - }, - "base16-vim": { - "flake": false, - "locked": { - "lastModified": 1732806396, - "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", - "owner": "tinted-theming", - "repo": "base16-vim", - "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-vim", - "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", - "type": "github" - } - }, - "bun2nix": { - "inputs": { - "flake-parts": [ - "llm-agents", - "flake-parts" - ], - "nixpkgs": [ - "llm-agents", - "nixpkgs" - ], - "systems": [ - "llm-agents", - "systems" - ], - "treefmt-nix": [ - "llm-agents", - "treefmt-nix" - ] - }, - "locked": { - "lastModified": 1784665499, - "narHash": "sha256-9BMxlTxCCDAeoNLtb1a/st7udtTIJep+wpUzquA29VU=", - "owner": "nix-community", - "repo": "bun2nix", - "rev": "0f2a1f0b6f42cebe3b149bf62d38754c5e0e9729", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "bun2nix", - "type": "github" - } - }, - "codex-desktop-linux": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1784823421, - "narHash": "sha256-/EM7Cr2Ai0VjNbKv+eIW0+iXT/NBW6WbPkCbf9w+u/o=", - "owner": "ilysenko", - "repo": "codex-desktop-linux", - "rev": "efcf40b5ab41323c8fa8eef5526c6a50c45fd8cd", - "type": "github" - }, - "original": { - "owner": "ilysenko", - "repo": "codex-desktop-linux", - "type": "github" - } - }, - "crane": { - "locked": { - "lastModified": 1784407669, - "narHash": "sha256-gcFMcRjw0ZSn380Rx2QLlU1goUQeSrKX/DF12omI6+o=", - "owner": "ipetkov", - "repo": "crane", - "rev": "1316b7d278ad77a16aec024b71d971366e123bec", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "disko": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1781152676, - "narHash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=", - "owner": "nix-community", - "repo": "disko", - "rev": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "disko", - "type": "github" - } - }, - "firefox-gnome-theme": { - "flake": false, - "locked": { - "lastModified": 1782007937, - "narHash": "sha256-PbnJr+eB+9Czol3ReI83dUgEhcn0sDK6TSy6ODTQm88=", - "owner": "rafaelmardojai", - "repo": "firefox-gnome-theme", - "rev": "981bd332015397fb1ca033fa982bd61635160c78", - "type": "github" - }, - "original": { - "owner": "rafaelmardojai", - "repo": "firefox-gnome-theme", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "NixOS", - "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "NixOS", - "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_4": { - "flake": false, - "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_5": { - "flake": false, - "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "NixOS", - "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, - "locked": { - "lastModified": 1782949081, - "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "llm-agents", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1782949081, - "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1778716662, - "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": [ - "stylix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1782949081, - "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "fromYaml": { - "flake": false, - "locked": { - "lastModified": 1731966426, - "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", - "owner": "SenchoPens", - "repo": "fromYaml", - "rev": "106af9e2f715e2d828df706c386a685698f3223b", - "type": "github" - }, - "original": { - "owner": "SenchoPens", - "repo": "fromYaml", - "type": "github" - } - }, - "ghostty": { - "inputs": { - "flake-compat": "flake-compat", - "home-manager": "home-manager", - "nixpkgs": "nixpkgs_2", - "systems": "systems_2", - "zig": "zig", - "zon2nix": "zon2nix" - }, - "locked": { - "lastModified": 1784838920, - "narHash": "sha256-MTNHCKPqwjVcYh+DglaR3cQugMCz1kWDajV/nx2PDhw=", - "owner": "moons-14", - "repo": "ghostty", - "rev": "5c258c2530878166893d805fba7079b9742f1fc5", - "type": "github" - }, - "original": { - "owner": "moons-14", - "repo": "ghostty", - "type": "github" - } - }, - "git-hooks-nix": { - "inputs": { - "flake-compat": "flake-compat_2", - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1784288435, - "narHash": "sha256-ReRHaLgr/uVqdD8afFSn+myXIfpHeOhP0yYe0TJqAA8=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "43b3c1ab9d40fb1dbb008f451988a91e375825e9", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "gnome-shell": { - "flake": false, - "locked": { - "host": "gitlab.gnome.org", - "lastModified": 1776175984, - "narHash": "sha256-RJFlFW8GiMei6oqUGrMkGEvVqOH8U7Q8abc1yK4VKD8=", - "owner": "GNOME", - "repo": "gnome-shell", - "rev": "e0fdc4c13250e9a9b8ea9594c83925274f4a5dca", - "type": "gitlab" - }, - "original": { - "host": "gitlab.gnome.org", - "owner": "GNOME", - "ref": "50.1", - "repo": "gnome-shell", - "type": "gitlab" - } - }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "ghostty", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1782657028, - "narHash": "sha256-PHTCpYZCMzJYS3phhywqRAZphKVr2zjvlGYa+H20ZZ4=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "4ad9aaae70c9aaab504127f926c0fa9cfbc2b365", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_2": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1784350909, - "narHash": "sha256-ZWyzLbS1yKUTeFJLmdVuWNnHttL333/ldJbEE+KzCrM=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "4ce190229c73d44536caa7072f6308fb2d8feeb3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "release-26.05", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_3": { - "inputs": { - "nixpkgs": [ - "nix-hazkey", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1778444552, - "narHash": "sha256-f18pIiR9q/p1vHY93gmAum7aHhQOG49oGvAB9+lptRo=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "dcebe66f958673729896eec2de4abfd86ef22d21", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "lanzaboote": { - "inputs": { - "crane": "crane", - "nixpkgs": [ - "nixpkgs" - ], - "pre-commit": "pre-commit", - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1784568171, - "narHash": "sha256-t17AqLEhPG6m27ipkp8mJd8Ug0XkdANFDVsgyIFBZcQ=", - "owner": "nix-community", - "repo": "lanzaboote", - "rev": "f4b0aef3dba28677a5ca4b3416827aade60b5a0b", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "lanzaboote", - "type": "github" - } - }, - "llm-agents": { - "inputs": { - "bun2nix": "bun2nix", - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_4", - "systems": "systems_3", - "treefmt-nix": "treefmt-nix" - }, - "locked": { - "lastModified": 1784838505, - "narHash": "sha256-v9wgz4KSm259C+Yb9/Y/tPyylXto/bTyOQyiV599Ads=", - "owner": "numtide", - "repo": "llm-agents.nix", - "rev": "b358b1d5b458d6bd9814d02b70fcd3c0cd61886f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "llm-agents.nix", - "type": "github" - } - }, - "niri-flake": { - "inputs": { - "niri-stable": "niri-stable", - "niri-unstable": "niri-unstable", - "nixpkgs": "nixpkgs_5", - "nixpkgs-stable": "nixpkgs-stable", - "xwayland-satellite-stable": "xwayland-satellite-stable", - "xwayland-satellite-unstable": "xwayland-satellite-unstable" - }, - "locked": { - "lastModified": 1784686714, - "narHash": "sha256-6HCWRBQq/U2NPY2msnnysnWczZYzEzhS1UZURmrr2f0=", - "owner": "sodiboo", - "repo": "niri-flake", - "rev": "4dfd38bad6150c07be6cc3fd7682787765092eea", - "type": "github" - }, - "original": { - "owner": "sodiboo", - "repo": "niri-flake", - "type": "github" - } - }, - "niri-stable": { - "flake": false, - "locked": { - "lastModified": 1756556321, - "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", - "owner": "YaLTeR", - "repo": "niri", - "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", - "type": "github" - }, - "original": { - "owner": "YaLTeR", - "ref": "v25.08", - "repo": "niri", - "type": "github" - } - }, - "niri-unstable": { - "flake": false, - "locked": { - "lastModified": 1784570726, - "narHash": "sha256-9EMn69JBcFWFgUM7f0VBAX+jBby5b9H3M59U75+5yI4=", - "owner": "YaLTeR", - "repo": "niri", - "rev": "7f26c3ee804fb6ed458ef7fb0e3c794f14e0b3bc", - "type": "github" - }, - "original": { - "owner": "YaLTeR", - "repo": "niri", - "type": "github" - } - }, - "nix-hazkey": { - "inputs": { - "home-manager": "home-manager_3", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1779529080, - "narHash": "sha256-CHa5L3I71NbPUNJp1gmmwbh91tKsZPyuRK50mLHjAVY=", - "owner": "aster-void", - "repo": "nix-hazkey", - "rev": "24cb2926666836988e78ceebeb67ad6c5a387ac3", - "type": "github" - }, - "original": { - "owner": "aster-void", - "repo": "nix-hazkey", - "type": "github" - } - }, - "nix-index-database": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1784440659, - "narHash": "sha256-Q5kNLlWngt7TaIIZoxDKWMHjiSaNRVqr70FqWCRRfr4=", - "owner": "nix-community", - "repo": "nix-index-database", - "rev": "4f8d52a3598b0dc7db7a5e7b419e3edd9d1ecfdb", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nix-index-database", - "type": "github" - } - }, - "nixos-hardware": { - "inputs": { - "nixpkgs": "nixpkgs_6" - }, - "locked": { - "lastModified": 1784723954, - "narHash": "sha256-1CfD8ZUjCkTgjsneLZ/lxCHhgDfqxxE7/GX0MmsgiqA=", - "owner": "NixOS", - "repo": "nixos-hardware", - "rev": "a017f5b72210026af5b3ac5949f08d94380a6fbd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "master", - "repo": "nixos-hardware", - "type": "github" - } - }, - "nixos-wsl": { - "inputs": { - "flake-compat": "flake-compat_4", - "nixpkgs": "nixpkgs_7" - }, - "locked": { - "lastModified": 1784642409, - "narHash": "sha256-hcbDqFuySAJawljt5r0sKBCJKYnbtGD0T/ZIozH1Dq0=", - "owner": "nix-community", - "repo": "NixOS-WSL", - "rev": "eaeb18da90024448a60eb1ec7132eafa4003404e", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "NixOS-WSL", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1772773019, - "narHash": "sha256-E1bxHxNKfDoQUuvriG71+f+s/NT0qWkImXsYZNFFfCs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "aca4d95fce4914b3892661bcb80b8087293536c6", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1782614948, - "narHash": "sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC+eBu2zKlp8=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "db3f255737b94216eb71cce308e2912cf6bc2d7c", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs-libxml2": { - "locked": { - "lastModified": 1751274312, - "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1782847189, - "narHash": "sha256-twXPFqFsrrY5r28Zh7Homgcp2gUMBgQ6WDS98Q/3xFI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b6018f87da91d19d0ab4cf979885689b469cdd41", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-25.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1784555310, - "narHash": "sha256-/FCliTPgiuV1owejZFNx3Ch9irdvkOfOFl+HHZ+DrtM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "421eebfd0ec7bccd4abe826ce62d7e6e83129493", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_10": { - "locked": { - "lastModified": 1772542754, - "narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "8c809a146a140c5c8806f13399592dbcb1bb5dc4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1778869304, - "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1782545840, - "narHash": "sha256-CAi8oAZaE6pTkcYQBnnOlvmfMgG/p1AO0FohKKN3J7I=", - "rev": "3d46470bb3030020f7e1361f33514854f5bfa86d", - "type": "tarball", - "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1023445.3d46470bb303/nixexprs.tar.xz" - }, - "original": { - "type": "tarball", - "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1782918843, - "narHash": "sha256-ETYnV9U7Sr+A45dohzZdfCZKOss4qrTkO+wgNZNvEc0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e8273b29fe1390ec8d4603f2477357555291432e", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1784555310, - "narHash": "sha256-/FCliTPgiuV1owejZFNx3Ch9irdvkOfOFl+HHZ+DrtM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "421eebfd0ec7bccd4abe826ce62d7e6e83129493", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1784497964, - "narHash": "sha256-vlHUuqAcbcH2RKmHbPiuQzbv1pnzzavXnI62RD0bqCU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "241313f4e8e508cb9b13278c2b0fa25b9ca27163", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1767892417, - "narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=", - "rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba", - "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz" - }, - "original": { - "type": "tarball", - "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1783776592, - "narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1784707089, - "narHash": "sha256-2V/6imsUgB7mPZlHY54oeVBRDoZbPKnvzwkAHUSSufk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b3fe9581c9061c749abef42b6d4ee7b7c05c33fa", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-26.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1770107345, - "narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixvim": { - "inputs": { - "flake-parts": "flake-parts_3", - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems_4" - }, - "locked": { - "lastModified": 1782919967, - "narHash": "sha256-pRwjfB5HQJ3m8J8bOR43pPHtHI7VUJSqwLA3P06cOY0=", - "owner": "nix-community", - "repo": "nixvim", - "rev": "667c8471f4a0fb24d702d1a61af8609f1a5f1ba6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "nixos-26.05", - "repo": "nixvim", - "type": "github" - } - }, - "noctalia": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1784838755, - "narHash": "sha256-aTAnFf29sIVE9hpolWePKscnJfkJRdyFxEkdeP4y9YQ=", - "owner": "noctalia-dev", - "repo": "noctalia", - "rev": "45ec7e33885540427d766c4a54e8f813dfdc9db9", - "type": "github" - }, - "original": { - "owner": "noctalia-dev", - "repo": "noctalia", - "type": "github" - } - }, - "nur": { - "inputs": { - "flake-parts": [ - "stylix", - "flake-parts" - ], - "nixpkgs": [ - "stylix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1783439237, - "narHash": "sha256-WUr8JF2v3n4Y30E5dxv4sAgNJXpVDBoCQNoQ/V4+n4o=", - "owner": "nix-community", - "repo": "NUR", - "rev": "b70bb66c7bcd162642f3a609bc16843c7059f503", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "NUR", - "type": "github" - } - }, - "pre-commit": { - "inputs": { - "flake-compat": "flake-compat_3", - "nixpkgs": [ - "lanzaboote", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1784288435, - "narHash": "sha256-ReRHaLgr/uVqdD8afFSn+myXIfpHeOhP0yYe0TJqAA8=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "43b3c1ab9d40fb1dbb008f451988a91e375825e9", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "root": { - "inputs": { - "codex-desktop-linux": "codex-desktop-linux", - "disko": "disko", - "flake-parts": "flake-parts", - "ghostty": "ghostty", - "git-hooks-nix": "git-hooks-nix", - "home-manager": "home-manager_2", - "lanzaboote": "lanzaboote", - "llm-agents": "llm-agents", - "niri-flake": "niri-flake", - "nix-hazkey": "nix-hazkey", - "nix-index-database": "nix-index-database", - "nixos-hardware": "nixos-hardware", - "nixos-wsl": "nixos-wsl", - "nixpkgs": "nixpkgs_8", - "nixpkgs-unstable": "nixpkgs-unstable", - "nixvim": "nixvim", - "noctalia": "noctalia", - "services-flake": "services-flake", - "sops-nix": "sops-nix", - "stylix": "stylix", - "systems": "systems_6", - "treefmt-nix": "treefmt-nix_2", - "vicinae": "vicinae", - "vicinae-extensions": "vicinae-extensions" - } - }, - "rust-overlay": { - "inputs": { - "nixpkgs": [ - "lanzaboote", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1784438913, - "narHash": "sha256-NYF7ZM5ip0u+w1pBFDpIGEbrbgN/wpnLFAmBkWkYMXw=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "afacd6819d3765a05814ee8e3de74c77d42ac799", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "services-flake": { - "locked": { - "lastModified": 1784799366, - "narHash": "sha256-aK4fmqmGbk0J2sUhex79NAZTd1002DNWNsfubO6aic0=", - "owner": "juspay", - "repo": "services-flake", - "rev": "eed1ab55413afbb8fd7bc929076c73894e5104e0", - "type": "github" - }, - "original": { - "owner": "juspay", - "repo": "services-flake", - "type": "github" - } - }, - "sops-nix": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1783174389, - "narHash": "sha256-aCWC8ngycU7OdJrU2+Je3qf+1a2ykuBvpPhZT/9tXMc=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "f1406619a3884cd5c47992a70b8b35c9c0fcb4c9", - "type": "github" - }, - "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" - } - }, - "soulver-cpp": { - "inputs": { - "nixpkgs": "nixpkgs_11", - "nixpkgs-libxml2": "nixpkgs-libxml2" - }, - "locked": { - "lastModified": 1783621734, - "narHash": "sha256-YBFO+aurlz2y2hTRN1Kl0RjX6JzHn0mYBmt4zb436Yg=", - "owner": "vicinaehq", - "repo": "soulver-cpp", - "rev": "00e926e2bd03118638c88981f6a67bfa107210c2", - "type": "github" - }, - "original": { - "owner": "vicinaehq", - "repo": "soulver-cpp", - "type": "github" - } - }, - "stylix": { - "inputs": { - "base16": "base16", - "base16-fish": "base16-fish", - "base16-helix": "base16-helix", - "base16-vim": "base16-vim", - "firefox-gnome-theme": "firefox-gnome-theme", - "flake-parts": "flake-parts_4", - "gnome-shell": "gnome-shell", - "nixpkgs": [ - "nixpkgs" - ], - "nur": "nur", - "systems": "systems_5", - "tinted-kitty": "tinted-kitty", - "tinted-schemes": "tinted-schemes", - "tinted-tmux": "tinted-tmux", - "tinted-zed": "tinted-zed" - }, - "locked": { - "lastModified": 1784676123, - "narHash": "sha256-ndyanKzw90yX2nUVFmTuYqXidUNymtMfgmIHyNdhht0=", - "owner": "nix-community", - "repo": "stylix", - "rev": "66714e5ce44269ecc58c20d9196da8dbe1b27a31", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "stylix", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_2": { - "flake": false, - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_4": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_6": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_8": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "tinted-kitty": { - "flake": false, - "locked": { - "lastModified": 1735730497, - "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", - "owner": "tinted-theming", - "repo": "tinted-kitty", - "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "tinted-kitty", - "type": "github" - } - }, - "tinted-schemes": { - "flake": false, - "locked": { - "lastModified": 1781968807, - "narHash": "sha256-yYO3Vw2M0y3TAUqt+9+Mj0zwP3XDTF5/PXcPhhFQ1ZM=", - "owner": "tinted-theming", - "repo": "schemes", - "rev": "2ccef2f4b22e3cab5a9292811f7133a07eeba4a7", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "schemes", - "type": "github" - } - }, - "tinted-tmux": { - "flake": false, - "locked": { - "lastModified": 1782012462, - "narHash": "sha256-2iDiD8DQLwS1lGuD9TS8WlvNyDoTs6krWntJbtB2zGo=", - "owner": "tinted-theming", - "repo": "tinted-tmux", - "rev": "8c4e750f738a742bd73377ee41d3dadedebedef4", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "tinted-tmux", - "type": "github" - } - }, - "tinted-zed": { - "flake": false, - "locked": { - "lastModified": 1782009766, - "narHash": "sha256-VUhBjpGvWqHI7rWeyMYb/u87YJSXHKfVV6S+IelWeO8=", - "owner": "tinted-theming", - "repo": "base16-zed", - "rev": "5e8350bcd354e3241ab681a265fa6ef060c40be1", - "type": "github" - }, - "original": { - "owner": "tinted-theming", - "repo": "base16-zed", - "type": "github" - } - }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "llm-agents", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1784369104, - "narHash": "sha256-47cxbcZODibHv3rELFQ9vZly0vUNkND/atn/U7HLeb0=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "df3c0640565d04a0261253cdd89fce78ec50168a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "treefmt-nix_2": { - "inputs": { - "nixpkgs": "nixpkgs_9" - }, - "locked": { - "lastModified": 1784369104, - "narHash": "sha256-47cxbcZODibHv3rELFQ9vZly0vUNkND/atn/U7HLeb0=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "df3c0640565d04a0261253cdd89fce78ec50168a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "vicinae": { - "inputs": { - "nixpkgs": "nixpkgs_10", - "soulver-cpp": "soulver-cpp", - "systems": "systems_7" - }, - "locked": { - "lastModified": 1784839524, - "narHash": "sha256-B87U5HDB/6JPxSnNQwnIiwtqUWvyxzqs7lV/GPzva68=", - "owner": "vicinaehq", - "repo": "vicinae", - "rev": "632ca79e9f8fc9721384921f28ec069ff48aaf53", - "type": "github" - }, - "original": { - "owner": "vicinaehq", - "repo": "vicinae", - "type": "github" - } - }, - "vicinae-extensions": { - "inputs": { - "flake-compat": "flake-compat_5", - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems_8", - "vicinae": "vicinae_2" - }, - "locked": { - "lastModified": 1784504910, - "narHash": "sha256-fzPBEJZiRvc/FNMdpbdcfaZzF01U4IQenHW9IQFzhos=", - "owner": "vicinaehq", - "repo": "extensions", - "rev": "ca74eede9a778a9373c8f5fd221b0a5026dcd1ef", - "type": "github" - }, - "original": { - "owner": "vicinaehq", - "repo": "extensions", - "type": "github" - } - }, - "vicinae_2": { - "inputs": { - "nixpkgs": [ - "vicinae-extensions", - "nixpkgs" - ], - "systems": [ - "vicinae-extensions", - "systems" - ] - }, - "locked": { - "lastModified": 1780277152, - "narHash": "sha256-P3YrDLnggsMsSoiX/ox3CS6GkZtY37XQVon/QR6Agw8=", - "owner": "vicinaehq", - "repo": "vicinae", - "rev": "67290dff5b2191a6cb6dd78b31d623eeef3acdec", - "type": "github" - }, - "original": { - "owner": "vicinaehq", - "repo": "vicinae", - "type": "github" - } - }, - "xwayland-satellite-stable": { - "flake": false, - "locked": { - "lastModified": 1755491097, - "narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=", - "owner": "Supreeeme", - "repo": "xwayland-satellite", - "rev": "388d291e82ffbc73be18169d39470f340707edaa", - "type": "github" - }, - "original": { - "owner": "Supreeeme", - "ref": "v0.7", - "repo": "xwayland-satellite", - "type": "github" - } - }, - "xwayland-satellite-unstable": { - "flake": false, - "locked": { - "lastModified": 1784679892, - "narHash": "sha256-Mb7jpqnrcYCfNSItIkkHpuR3YxWFxPuIBfcwNKlRBkk=", - "owner": "Supreeeme", - "repo": "xwayland-satellite", - "rev": "8d135d3b2854b30fd01ea6cd6c27e523dd50a839", - "type": "github" - }, - "original": { - "owner": "Supreeeme", - "repo": "xwayland-satellite", - "type": "github" - } - }, - "zig": { - "inputs": { - "flake-compat": [ - "ghostty", - "flake-compat" - ], - "nixpkgs": [ - "ghostty", - "nixpkgs" - ], - "systems": [ - "ghostty", - "systems" - ] - }, - "locked": { - "lastModified": 1782609341, - "narHash": "sha256-OfCPJFS/2Z2ZyjE4adR7PL+ZEqvDQFi2XNI1L8s6wKU=", - "owner": "mitchellh", - "repo": "zig-overlay", - "rev": "5386fea92c45b154bbeb52d14ef5504f82eda86c", - "type": "github" - }, - "original": { - "owner": "mitchellh", - "repo": "zig-overlay", - "type": "github" - } - }, - "zon2nix": { - "inputs": { - "nixpkgs": [ - "ghostty", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1784117571, - "narHash": "sha256-Hvnmnuu0VpHiZl+8z+UkMoxC7JZJvRYBqu2Asb0ZJOE=", - "owner": "jcollie", - "repo": "zon2nix", - "rev": "0ce628fb78309cdb13d098ae9c6fdbf87c75d25b", - "type": "github" - }, - "original": { - "owner": "jcollie", - "ref": "main", - "repo": "zon2nix", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 17fead2..0000000 --- a/flake.nix +++ /dev/null @@ -1,120 +0,0 @@ -{ - description = "moons NixOS configurations"; - - inputs = { - # NixOS - nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05"; - nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - - home-manager = { - url = "github:nix-community/home-manager/release-26.05"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # Hardware / Platform - nixos-hardware.url = "github:NixOS/nixos-hardware/master"; - nixos-wsl.url = "github:nix-community/NixOS-WSL"; - - # Desktop - niri-flake.url = "github:sodiboo/niri-flake"; - - stylix = { - url = "github:nix-community/stylix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # Terminal - ghostty = { - url = "github:moons-14/ghostty"; - }; - - # Shell / Launcher - vicinae.url = "github:vicinaehq/vicinae"; - - vicinae-extensions = { - url = "github:vicinaehq/extensions"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - noctalia = { - url = "github:noctalia-dev/noctalia"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # Editor - nixvim = { - url = "github:nix-community/nixvim/nixos-26.05"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # Secrets management - sops-nix = { - url = "github:Mic92/sops-nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # Disk management - disko = { - url = "github:nix-community/disko"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # Boot - lanzaboote = { - url = "github:nix-community/lanzaboote"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # Flake framework - flake-parts.url = "github:hercules-ci/flake-parts"; - - # Code formatting and git hooks - treefmt-nix.url = "github:numtide/treefmt-nix"; - git-hooks-nix.url = "github:cachix/git-hooks.nix"; - - # Dev services - services-flake.url = "github:juspay/services-flake"; - - # LLM agents - llm-agents = { - url = "github:numtide/llm-agents.nix"; - }; - - codex-desktop-linux = { - url = "github:ilysenko/codex-desktop-linux"; - }; - - # Index / Search - nix-index-database = { - url = "github:nix-community/nix-index-database"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - # Systems - systems.url = "github:nix-systems/default-linux"; - - # Japanese Input Method - nix-hazkey = { - url = "github:aster-void/nix-hazkey"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - }; - - outputs = - inputs@{ - flake-parts, - systems, - ... - }: - flake-parts.lib.mkFlake { inherit inputs; } { - systems = import systems; - - imports = [ - ./overlays - ./hosts - ./shells - ./flake/formatter.nix - ./flake/git-hooks.nix - ]; - }; -} diff --git a/flake/formatter.nix b/flake/formatter.nix deleted file mode 100644 index 88a637e..0000000 --- a/flake/formatter.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ inputs, ... }: -{ - imports = [ - inputs.treefmt-nix.flakeModule - ]; - - perSystem = - { system, ... }: - let - unstable = import inputs.nixpkgs-unstable { - inherit system; - config = { - allowUnfree = true; - }; - }; - in - { - treefmt = { - projectRootFile = "flake.nix"; - - programs = { - nixfmt.enable = true; - deadnix.enable = true; - statix.enable = true; - - shfmt.enable = true; - shellcheck.enable = true; - - prettier = { - enable = true; - package = unstable.prettier; - }; - yamlfmt.enable = true; - taplo.enable = true; - oxfmt.enable = true; - }; - - settings = { - excludes = [ - ".git/**" - "*.lock" - ".direnv/**" - "*.age" - ]; - }; - }; - }; -} diff --git a/flake/git-hooks.nix b/flake/git-hooks.nix deleted file mode 100644 index 31ffd2c..0000000 --- a/flake/git-hooks.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ inputs, ... }: -{ - imports = [ - inputs.git-hooks-nix.flakeModule - ]; - - perSystem = - { - pkgs, - config, - ... - }: - { - pre-commit.settings = { - hooks = { - treefmt = { - enable = true; - - package = config.treefmt.build.wrapper; - }; - - gitleaks = { - enable = true; - name = "gitleaks"; - description = "Detect hardcoded secrets"; - - entry = "${pkgs.gitleaks}/bin/gitleaks dir --no-banner --redact --verbose ."; - - pass_filenames = false; - - stages = [ - "pre-commit" - "pre-push" - ]; - }; - - deadnix.enable = true; - statix.enable = true; - shellcheck.enable = true; - }; - }; - }; -} diff --git a/hosts/default.nix b/hosts/default.nix deleted file mode 100644 index a454377..0000000 --- a/hosts/default.nix +++ /dev/null @@ -1,113 +0,0 @@ -{ - inputs, - config, - lib, - ... -}: -let - inherit (inputs.nixpkgs.lib) nixosSystem; - - username = "moons"; - - mkSystem = - { - host, - system, - profiles ? [ ], - extraModules ? [ ], - }: - let - unstable = import inputs.nixpkgs-unstable { - inherit system; - config = { - allowUnfree = true; - }; - }; - in - assert lib.assertMsg (lib.elem system config.systems) - "mkSystem: system '${system}' not in valid systems: ${lib.generators.toPretty { } config.systems}"; - nixosSystem { - inherit system; - modules = [ - { - nixpkgs.config.allowUnfree = true; - nixpkgs.overlays = builtins.attrValues inputs.self.overlays; - } - ../modules - ./${host}/default.nix - ] - ++ map (p: ../profiles/${p}.nix) profiles - ++ extraModules; - specialArgs = { - inherit - inputs - username - unstable - host - ; - }; - }; - - nixosConfigurations = { - nix-example = mkSystem { - host = "nix-example"; - system = "x86_64-linux"; - profiles = [ - "interfaces/cli-interactive" - "platforms/vm" - "workloads/dev" - "workloads/remote" - ]; - }; - ops = mkSystem { - host = "ops"; - system = "x86_64-linux"; - profiles = [ - "interfaces/cli-interactive" - "platforms/vm" - "workloads/remote" - ]; - }; - - internal-app-01 = mkSystem { - host = "internal-app-01"; - system = "x86_64-linux"; - profiles = [ - "interfaces/cli-interactive" - "platforms/vm" - "workloads/srv" - ]; - }; - x1g13 = mkSystem { - host = "x1g13"; - system = "x86_64-linux"; - profiles = [ - "interfaces/gui" - "platforms/thinkpad" - "workloads/dev" - "workloads/personal" - "workloads/secure-storage" - "workloads/tailscale/client" - ]; - }; - - installer = nixosSystem { - system = "x86_64-linux"; - modules = [ - ./installer/default.nix - ]; - specialArgs = { - inherit inputs; - }; - }; - }; -in -{ - flake = { - inherit nixosConfigurations; - - checks.x86_64-linux = lib.mapAttrs' ( - name: nixos: lib.nameValuePair "nixos-${name}" nixos.config.system.build.toplevel - ) nixosConfigurations; - }; -} diff --git a/hosts/installer/default.nix b/hosts/installer/default.nix deleted file mode 100644 index 11a508b..0000000 --- a/hosts/installer/default.nix +++ /dev/null @@ -1,193 +0,0 @@ -{ - pkgs, - lib, - modulesPath, - ... -}: -{ - imports = [ - "${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix" - ]; - - boot.zfs.forceImportRoot = false; - - networking = { - hostName = "nixos-installer"; - - networkmanager = { - enable = true; - wifi.powersave = false; - }; - }; - - services.openssh = { - enable = true; - settings = { - PermitRootLogin = "prohibit-password"; - PasswordAuthentication = false; - KbdInteractiveAuthentication = false; - PubkeyAuthentication = "yes"; - }; - }; - - users.users.root.openssh.authorizedKeys.keys = [ - "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIKhxDkucmeCor6CKoXAua7DgDSzuXrZOtpdkyzQxz5+aAAAABHNzaDo= moons@moons14.com" - "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIN6hZJyng/5LgFKPjR6uZAd/00UkO0vN0uQOoIvfSELdAAAABHNzaDo= moons@moons14.com" - ]; - - environment.systemPackages = with pkgs; [ - git # Clone dotfiles repository - disko # Disk partitioning - sops # Secrets management - age # Age encryption - ssh-to-age # Convert SSH keys to age - age-plugin-yubikey # YubiKey support - yubikey-manager # YubiKey management - pcsc-tools # Smart card tools - mkpasswd # Password hash generation - rsync # File synchronization - vim # Text editor - wget # Download files - curl # HTTP client - jq # JSON processor - parted # Partition tools - cryptsetup # LUKS encryption - btrfs-progs # Btrfs filesystem tools - ]; - - services.pcscd.enable = true; - - environment.etc."installer-help.txt".text = '' - - ╔══════════════════════════════════════════════════════════════╗ - ║ NixOS Installer ISO ║ - ╠══════════════════════════════════════════════════════════════╣ - ║ ║ - ║ SSH Access: ║ - ║ ssh root@ ║ - ║ ║ - ║ Network Setup: ║ - ║ Wired: Auto-configured via DHCP ║ - ║ WiFi: nmcli device wifi connect --ask ║ - ║ ║ - ║ Installation Workflow: ║ - ║ ║ - ║ 1. Clone dotfiles: ║ - ║ git clone git@github.com:moons-14/dotfiles.git ~/dotfiles║ - ║ ║ - ║ 2. Generate SSH host key for new host: ║ - ║ ssh-keygen -t ed25519 -f /tmp/ssh_host_ed25519_key -N "" ║ - ║ ║ - ║ 3. Get age public key from SSH host key: ║ - ║ ssh-to-age -i /tmp/ssh_host_ed25519_key.pub ║ - ║ ║ - ║ 4. Add age key to .sops.yaml: ║ - ║ cd ~/dotfiles ║ - ║ # Edit .sops.yaml and add the age key ║ - ║ # Add new host entry to creation_rules ║ - ║ ║ - ║ 5. Re-encrypt secrets: ║ - ║ sops updatekeys secrets/common/system.yaml ║ - ║ sops updatekeys secrets/hosts//*.yaml ║ - ║ ║ - ║ 6. Create disko.nix for new host: ║ - ║ # Check disk devices ║ - ║ lsblk -f ║ - ║ ║ - ║ # Create hosts//disko.nix ║ - ║ # Example: LUKS + btrfs ║ - ║ # See hosts/x1g13/disko.nix for reference ║ - ║ ║ - ║ 7. Partition disk with disko: ║ - ║ nix run github:nix-community/disko -- \ ║ - ║ --mode disko hosts//disko.nix ║ - ║ ║ - ║ 8. Copy host key to installed system: ║ - ║ mkdir -p /mnt/etc/ssh ║ - ║ cp /tmp/ssh_host_ed25519_key* /mnt/etc/ssh/ ║ - ║ chmod 600 /mnt/etc/ssh/ssh_host_ed25519_key ║ - ║ ║ - ║ 9. Install NixOS: ║ - ║ nixos-install --flake ~/dotfiles# ║ - ║ ║ - ║ Disko Configuration Examples: ║ - ║ ║ - ║ Simple (no encryption): ║ - ║ disko.devices.disk.main = { ║ - ║ type = "disk"; ║ - ║ device = "/dev/sda"; ║ - ║ content = { ║ - ║ type = "gpt"; ║ - ║ partitions = { ║ - ║ ESP = { size = "512M"; type = "EF00"; ║ - ║ content = { type = "filesystem"; ║ - ║ format = "vfat"; mountpoint = "/boot"; }; }; ║ - ║ root = { size = "100%"; ║ - ║ content = { type = "filesystem"; ║ - ║ format = "ext4"; mountpoint = "/"; }; }; ║ - ║ }; ║ - ║ }; ║ - ║ }; ║ - ║ ║ - ║ LUKS + btrfs (see hosts/x1g13/disko.nix): ║ - ║ - Use partuuid for device path ║ - ║ - Set askPassword = true for LUKS ║ - ║ - Configure btrfs subvolumes ║ - ║ ║ - ╚══════════════════════════════════════════════════════════════╝ - - ''; - - systemd.services.installer-banner = { - description = "Display installer help on console"; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - Type = "oneshot"; - ExecStart = "${pkgs.coreutils}/bin/cat /etc/installer-help.txt"; - StandardOutput = "tty"; - TTYPath = "/dev/tty1"; - }; - }; - - systemd.services.display-ip = { - description = "Display IP address on console"; - wantedBy = [ "multi-user.target" ]; - after = [ "network-online.target" ]; - wants = [ "network-online.target" ]; - serviceConfig = { - Type = "oneshot"; - ExecStart = pkgs.writeShellScript "display-ip" '' - sleep 2 - echo "" - echo "=== Network Interfaces ===" - ${pkgs.iproute2}/bin/ip -4 addr show | ${pkgs.gnugrep}/bin/grep inet - echo "" - echo "=== SSH Access ===" - for ip in $(${pkgs.iproute2}/bin/ip -4 addr show | ${pkgs.gnugrep}/bin/grep -oP 'inet \K[\d.]+' | ${pkgs.gnugrep}/bin/grep -v '127.0.0.1'); do - echo " ssh root@$ip" - done - echo "" - ''; - StandardOutput = "tty"; - TTYPath = "/dev/tty1"; - }; - }; - - nix = { - settings = { - experimental-features = [ - "nix-command" - "flakes" - ]; - trusted-users = [ "root" ]; - }; - - extraOptions = '' - experimental-features = nix-command flakes - ''; - }; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - - system.stateVersion = "26.05"; -} diff --git a/hosts/internal-app-01/default.nix b/hosts/internal-app-01/default.nix deleted file mode 100644 index 2db9801..0000000 --- a/hosts/internal-app-01/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ ... }: -{ - imports = [ - ./hardware-configuration.nix - ]; -} diff --git a/hosts/internal-app-01/hardware-configuration.nix b/hosts/internal-app-01/hardware-configuration.nix deleted file mode 100644 index 8dafc0b..0000000 --- a/hosts/internal-app-01/hardware-configuration.nix +++ /dev/null @@ -1,40 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ lib, modulesPath, ... }: - -{ - imports = [ - (modulesPath + "/profiles/qemu-guest.nix") - ]; - - boot.initrd.availableKernelModules = [ - "ata_piix" - "uhci_hcd" - "virtio_pci" - "virtio_scsi" - "sd_mod" - "sr_mod" - ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = { - device = "/dev/disk/by-uuid/1b12ab98-2537-4207-a3f4-bb8ba7b53b00"; - fsType = "ext4"; - }; - - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/8365-C778"; - fsType = "vfat"; - options = [ - "fmask=0077" - "dmask=0077" - ]; - }; - - swapDevices = [ ]; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; -} diff --git a/hosts/nix-example/default.nix b/hosts/nix-example/default.nix deleted file mode 100644 index 2db9801..0000000 --- a/hosts/nix-example/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ ... }: -{ - imports = [ - ./hardware-configuration.nix - ]; -} diff --git a/hosts/nix-example/hardware-configuration.nix b/hosts/nix-example/hardware-configuration.nix deleted file mode 100644 index 9eab558..0000000 --- a/hosts/nix-example/hardware-configuration.nix +++ /dev/null @@ -1,43 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ - lib, - modulesPath, - ... -}: -{ - imports = [ - (modulesPath + "/profiles/qemu-guest.nix") - ]; - - boot.initrd.availableKernelModules = [ - "ata_piix" - "uhci_hcd" - "virtio_pci" - "virtio_scsi" - "sd_mod" - "sr_mod" - ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = { - device = "/dev/disk/by-uuid/8f0eaec6-5dc9-4821-aa8d-fb6809b5a5bf"; - fsType = "ext4"; - }; - - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/201C-961B"; - fsType = "vfat"; - options = [ - "fmask=0077" - "dmask=0077" - ]; - }; - - swapDevices = [ ]; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; -} diff --git a/hosts/ops/default.nix b/hosts/ops/default.nix deleted file mode 100644 index c366061..0000000 --- a/hosts/ops/default.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ ... }: -{ - imports = [ - ./hardware-configuration.nix - ]; - - networking = { - useDHCP = false; - - interfaces = { - ens18 = { - useDHCP = false; - ipv4.addresses = [ - { - address = "10.50.128.20"; - prefixLength = 24; - } - ]; - }; - - ens19 = { - useDHCP = false; - ipv4.addresses = [ - { - address = "10.50.7.101"; - prefixLength = 24; - } - ]; - }; - - ens20 = { - useDHCP = false; - ipv4.routes = [ - { - address = "10.50.64.0"; - prefixLength = 24; - via = "10.50.82.1"; - } - ]; - ipv4.addresses = [ - { - address = "10.50.82.10"; - prefixLength = 24; - } - ]; - }; - - }; - - defaultGateway = { - address = "10.50.128.1"; - interface = "ens18"; - }; - - }; -} diff --git a/hosts/ops/hardware-configuration.nix b/hosts/ops/hardware-configuration.nix deleted file mode 100644 index 1979d6d..0000000 --- a/hosts/ops/hardware-configuration.nix +++ /dev/null @@ -1,44 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ - lib, - modulesPath, - ... -}: - -{ - imports = [ - (modulesPath + "/profiles/qemu-guest.nix") - ]; - - boot.initrd.availableKernelModules = [ - "ata_piix" - "uhci_hcd" - "virtio_pci" - "virtio_scsi" - "sd_mod" - "sr_mod" - ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = { - device = "/dev/disk/by-uuid/69fa2193-1e4f-438a-8898-5de8a3f36e5b"; - fsType = "ext4"; - }; - - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/D09B-4277"; - fsType = "vfat"; - options = [ - "fmask=0077" - "dmask=0077" - ]; - }; - - swapDevices = [ ]; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; -} diff --git a/hosts/x1g13/default.nix b/hosts/x1g13/default.nix deleted file mode 100644 index 481a888..0000000 --- a/hosts/x1g13/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ ... }: -{ - imports = [ - ./hardware-configuration.nix - ./disko.nix - ]; - - boot.initrd.luks.devices.cryptroot.device = - "/dev/disk/by-partuuid/311d0f9c-f35f-42e6-b6fc-a4d67dd21b2e"; -} diff --git a/hosts/x1g13/disko.nix b/hosts/x1g13/disko.nix deleted file mode 100644 index 6569d4c..0000000 --- a/hosts/x1g13/disko.nix +++ /dev/null @@ -1,99 +0,0 @@ -_: -let - espPart = "/dev/disk/by-partuuid/a53e3b19-67de-40de-9ded-3eac3117689a"; - - nixosPart = "/dev/disk/by-partuuid/311d0f9c-f35f-42e6-b6fc-a4d67dd21b2e"; - - btrfsMountOptions = [ - "compress=zstd" - "noatime" - "ssd" - "space_cache=v2" - ]; -in -{ - disko.enableConfig = true; - - disko.devices.disk = { - esp = { - type = "disk"; - device = espPart; - destroy = false; - - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - mountOptions = [ - "umask=0077" - ]; - }; - }; - - nixos = { - type = "disk"; - device = nixosPart; - destroy = false; - - content = { - type = "luks"; - name = "cryptroot"; - - askPassword = true; - - settings = { - allowDiscards = true; - }; - - extraFormatArgs = [ - "--type" - "luks2" - "--pbkdf" - "argon2id" - "--label" - "NixOS-LUKS" - ]; - - content = { - type = "btrfs"; - extraArgs = [ - "-f" - "-L" - "NixOS" - ]; - - subvolumes = { - "@root" = { - mountpoint = "/"; - mountOptions = btrfsMountOptions; - }; - - "@home" = { - mountpoint = "/home"; - mountOptions = btrfsMountOptions; - }; - - "@nix" = { - mountpoint = "/nix"; - mountOptions = btrfsMountOptions; - }; - - "@log" = { - mountpoint = "/var/log"; - mountOptions = btrfsMountOptions; - }; - - "@swap" = { - mountpoint = "/.swapvol"; - mountOptions = [ - "noatime" - ]; - - swap.swapfile.size = "32G"; - }; - }; - }; - }; - }; - }; -} diff --git a/hosts/x1g13/hardware-configuration.nix b/hosts/x1g13/hardware-configuration.nix deleted file mode 100644 index 775079e..0000000 --- a/hosts/x1g13/hardware-configuration.nix +++ /dev/null @@ -1,33 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ - config, - lib, - modulesPath, - ... -}: - -{ - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.availableKernelModules = [ - "xhci_pci" - "thunderbolt" - "nvme" - "usb_storage" - "sd_mod" - ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - swapDevices = [ ]; - - networking.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} diff --git a/images/avatar.jpg b/images/avatar.jpg deleted file mode 100644 index 98cde4eba9e2a9d294575e39075034e00329854c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42497 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 diff --git a/modules/applications/1password.nix b/modules/applications/1password.nix deleted file mode 100644 index b47ea8a..0000000 --- a/modules/applications/1password.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications."1password"; -in -{ - options.my.applications."1password" = { - enable = lib.mkEnableOption "1Password password manager"; - }; - - config = lib.mkIf cfg.enable { - programs._1password.enable = true; - programs._1password-gui = { - enable = true; - polkitPolicyOwners = [ "moons" ]; - }; - - programs.ssh.startAgent = lib.mkForce false; - programs.gnupg.agent.enableSSHSupport = lib.mkForce false; - - services.gnome.gcr-ssh-agent.enable = lib.mkForce false; - }; -} diff --git a/modules/applications/arduino.nix b/modules/applications/arduino.nix deleted file mode 100644 index 2945d55..0000000 --- a/modules/applications/arduino.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.arduino; - arduinoIdeX11 = pkgs.arduino-ide.overrideAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.makeWrapper ]; - - postFixup = (old.postFixup or "") + '' - wrapProgram $out/bin/arduino-ide \ - --add-flags "--ozone-platform=x11" - ''; - }); -in -{ - options.my.applications.arduino = { - enable = lib.mkEnableOption "Arduino development tools"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - arduino-cli # Arduino command-line interface - arduinoIdeX11 # Arduino IDE with X11 support - ]; - }; -} diff --git a/modules/applications/btop/default.nix b/modules/applications/btop/default.nix deleted file mode 100644 index 1e27b13..0000000 --- a/modules/applications/btop/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.btop; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.btop = { - enable = lib.mkEnableOption "btop system monitor"; - }; - - config = lib.mkIf cfg.enable { - my.applications.btop.system.enable = lib.mkDefault true; - my.applications.btop.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/btop/dracula.theme b/modules/applications/btop/dracula.theme deleted file mode 100644 index a0355f3..0000000 --- a/modules/applications/btop/dracula.theme +++ /dev/null @@ -1,89 +0,0 @@ -#Bashtop theme with nord palette (https://www.nordtheme.com) -#by Justin Zobel - -# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255" -# example for white: "#ffffff", "#ff" or "255 255 255". - -# All graphs and meters can be gradients -# For single color graphs leave "mid" and "end" variable empty. -# Use "start" and "end" variables for two color gradient -# Use "start", "mid" and "end" for three color gradient - -# Main background, empty for terminal default, need to be empty if you want transparent background -theme[main_bg]="#282A36" - -# Main text color -theme[main_fg]="#BD93F9" - -# Title color for boxes -theme[title]="#f8f8f2" - -# Higlight color for keyboard shortcuts -theme[hi_fg]="#ff79c6" - -# Background color of selected item in processes box -theme[selected_bg]="#44475A" - -# Foreground color of selected item in processes box -theme[selected_fg]="#ECEFF4" - -# Color of inactive/disabled text -theme[inactive_fg]="#6272a4" - -# Misc colors for processes box including mini cpu graphs, details memory graph and details status text -theme[proc_misc]="#BD93F9" - -# Cpu box outline color -theme[cpu_box]="#ff79c6" - -# Memory/disks box outline color -theme[mem_box]="#ff79c6" - -# Net up/down box outline color -theme[net_box]="#ff79c6" - -# Processes box outline color -theme[proc_box]="#ff79c6" - -# Box divider line and small boxes line color -theme[div_line]="#ff79c6" - -# Temperature graph colors -theme[temp_start]="#bd93f9" -theme[temp_mid]="#bd93f9" -theme[temp_end]="#bd93f9" - -# CPU graph colors -theme[cpu_start]="#bd93f9" -theme[cpu_mid]="#bd93f9" -theme[cpu_end]="#bd93f9" - -# Mem/Disk free meter -theme[free_start]="#bd93f9" -theme[free_mid]="#bd93f9" -theme[free_end]="#bd93f9" - -# Mem/Disk cached meter -theme[cached_start]="#bd93f9" -theme[cached_mid]="#bd93f9" -theme[cached_end]="#bd93f9" - -# Mem/Disk available meter -theme[available_start]="#bd93f9" -theme[available_mid]="#bd93f9" -theme[available_end]="#bd93f9" - -# Mem/Disk used meter -theme[used_start]="#bd93f9" -theme[used_mid]="#bd93f9" -theme[used_end]="#bd93f9" - -# Download graph colors -theme[download_start]="#bd93f9" -theme[download_mid]="#bd93f9" -theme[download_end]="#bd93f9" - -# Upload graph colors -theme[upload_start]="#bd93f9" -theme[upload_mid]="#bd93f9" -theme[upload_end]="#bd93f9" diff --git a/modules/applications/btop/home.nix b/modules/applications/btop/home.nix deleted file mode 100644 index 41ee0cc..0000000 --- a/modules/applications/btop/home.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.btop.homeManager; -in -{ - options.my.applications.btop.homeManager = { - enable = lib.mkEnableOption "btop home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf cfg.enable { - programs.btop = { - enable = true; - settings.color_theme = "dracula"; - themes.dracula = builtins.readFile ./dracula.theme; - }; - }; - } - ]; -} diff --git a/modules/applications/btop/system.nix b/modules/applications/btop/system.nix deleted file mode 100644 index ae68aee..0000000 --- a/modules/applications/btop/system.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.btop.system; -in -{ - options.my.applications.btop.system = { - enable = lib.mkEnableOption "btop system configuration"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - btop # Resource monitor that shows usage and stats - ]; - }; -} diff --git a/modules/applications/chrome.nix b/modules/applications/chrome.nix deleted file mode 100644 index 8e6acd8..0000000 --- a/modules/applications/chrome.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.chrome; -in -{ - options.my.applications.chrome = { - enable = lib.mkEnableOption "Google Chrome browser"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - { - home.packages = with pkgs; [ - google-chrome # Popular web browser from Google - ]; - - xdg.desktopEntries."google-chrome" = { - name = "Google Chrome"; - genericName = "Web Browser"; - exec = "${pkgs.google-chrome}/bin/google-chrome-stable --enable-features=TouchpadOverscrollHistoryNavigation %U"; - terminal = false; - icon = "google-chrome"; - categories = [ - "Network" - "WebBrowser" - ]; - startupNotify = true; - type = "Application"; - }; - - xdg.mimeApps.defaultApplications = { - "text/html" = "google-chrome.desktop"; - "x-scheme-handler/http" = "google-chrome.desktop"; - "x-scheme-handler/https" = "google-chrome.desktop"; - }; - } - ]; - }; -} diff --git a/modules/applications/claude/default.nix b/modules/applications/claude/default.nix deleted file mode 100644 index 91c914c..0000000 --- a/modules/applications/claude/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.claude; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.claude = { - enable = lib.mkEnableOption "Claude Code AI assistant"; - }; - - config = lib.mkIf cfg.enable { - my.applications.claude.system.enable = lib.mkDefault true; - my.applications.claude.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/claude/home.nix b/modules/applications/claude/home.nix deleted file mode 100644 index 0afcdca..0000000 --- a/modules/applications/claude/home.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.claude.homeManager; -in -{ - options.my.applications.claude.homeManager = { - enable = lib.mkEnableOption "Claude Code home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf cfg.enable { - home.file.".claude/settings.json".text = builtins.toJSON { - statusLine = { - type = "command"; - command = "bun x ccusage statusline --no-offline"; - padding = 0; - }; - }; - }; - } - ]; -} diff --git a/modules/applications/claude/system.nix b/modules/applications/claude/system.nix deleted file mode 100644 index ac776a9..0000000 --- a/modules/applications/claude/system.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.claude.system; -in -{ - options.my.applications.claude.system = { - enable = lib.mkEnableOption "Claude Code system configuration"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = [ - pkgs.llm-agents.claude-code # AI coding assistant - ]; - }; -} diff --git a/modules/applications/codex-desktop.nix b/modules/applications/codex-desktop.nix deleted file mode 100644 index 4071170..0000000 --- a/modules/applications/codex-desktop.nix +++ /dev/null @@ -1,65 +0,0 @@ -{ - inputs, - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.codexDesktop; - codexCliPackage = pkgs.llm-agents.codex; - codexDesktopPackage = - inputs.codex-desktop-linux.packages.${pkgs.stdenv.hostPlatform.system}.codex-desktop-computer-use-ui; - codexDesktopLauncher = pkgs.makeDesktopItem { - name = "codex"; - desktopName = "Codex"; - genericName = "ChatGPT Desktop"; - comment = "Run Codex Desktop on Linux"; - exec = "env CODEX_CLI_PATH=${lib.getExe' codexCliPackage "codex"} BAMF_DESKTOP_FILE_HINT=codex.desktop CHROME_DESKTOP=codex.desktop ${lib.getExe' codexDesktopPackage "codex-desktop"} %u"; - icon = "codex-desktop"; - terminal = false; - categories = [ "Development" ]; - keywords = [ - "codex" - "chatgpt" - "openai" - "ai" - "assistant" - ]; - startupNotify = true; - startupWMClass = "codex-desktop"; - actions = { - new-window = { - name = "New Window"; - exec = "env CODEX_CLI_PATH=${lib.getExe' codexCliPackage "codex"} BAMF_DESKTOP_FILE_HINT=codex.desktop CHROME_DESKTOP=codex.desktop CODEX_MULTI_LAUNCH=1 ${lib.getExe' codexDesktopPackage "codex-desktop"} --new-instance"; - }; - }; - extraConfig = { - X-GNOME-WMClass = "codex-desktop"; - }; - }; -in -{ - imports = [ - inputs.codex-desktop-linux.nixosModules.default - ]; - - options.my.applications.codexDesktop = { - enable = lib.mkEnableOption "ChatGPT Desktop for Linux"; - }; - - config = lib.mkIf cfg.enable { - my.applications.codex.enable = true; - - programs.codexDesktopLinux = { - enable = true; - package = codexDesktopPackage; - cliPackage = codexCliPackage; - computerUseUi.enable = true; - }; - - environment.systemPackages = [ - codexDesktopLauncher # Vicinae-searchable Codex Desktop launcher alias - ]; - }; -} diff --git a/modules/applications/codex.nix b/modules/applications/codex.nix deleted file mode 100644 index 264061f..0000000 --- a/modules/applications/codex.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.codex; -in -{ - options.my.applications.codex = { - enable = lib.mkEnableOption "Codex AI coding assistant"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = [ - pkgs.llm-agents.codex # OpenAI Codex CLI - ]; - }; -} diff --git a/modules/applications/default.nix b/modules/applications/default.nix deleted file mode 100644 index 152f56b..0000000 --- a/modules/applications/default.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - imports = [ - ./1password.nix - ./arduino.nix - ./btop - ./chrome.nix - ./claude - ./codex-desktop.nix - ./codex.nix - ./direnv.nix - ./discord.nix - ./docker.nix - ./fcitx5 - ./ghostty - ./git - ./gnupg - ./grok.nix - ./gnome.nix - ./greetd.nix - ./ly - ./gtk - ./java - ./kde.nix - ./nautilus.nix - ./nh.nix - ./niri - ./nix-index - ./noctalia - ./opencode.nix - ./openssh.nix - ./slack.nix - ./ssh - ./swayidle.nix - ./swaylock - ./tailscale.nix - ./vicinae.nix - ./vim - ./vscode - ./wayland.nix - ./yazi.nix - ./zed - ./zellij - ./zoom.nix - ./zoxide.nix - ./zsh - ]; -} diff --git a/modules/applications/direnv.nix b/modules/applications/direnv.nix deleted file mode 100644 index 75d1009..0000000 --- a/modules/applications/direnv.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.applications.direnv; -in -{ - options.my.applications.direnv = { - enable = lib.mkEnableOption "direnv environment variable manager"; - }; - - config = lib.mkIf cfg.enable { - programs.direnv = { - enable = true; - nix-direnv.enable = true; - }; - }; -} diff --git a/modules/applications/discord.nix b/modules/applications/discord.nix deleted file mode 100644 index 28b121c..0000000 --- a/modules/applications/discord.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.discord; -in -{ - options.my.applications.discord = { - enable = lib.mkEnableOption "Discord (Vesktop)"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - { - programs.vesktop = { - enable = true; - }; - } - ]; - }; -} diff --git a/modules/applications/docker.nix b/modules/applications/docker.nix deleted file mode 100644 index e6f4ba7..0000000 --- a/modules/applications/docker.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.docker; -in -{ - options.my.applications.docker = { - enable = lib.mkEnableOption "Docker container runtime"; - }; - - config = lib.mkIf cfg.enable { - virtualisation.docker = { - enable = true; - autoPrune = { - enable = true; - dates = "weekly"; - }; - daemon.settings = { - ipv6 = true; - "fixed-cidr-v6" = "fd00:30::/64"; - ip6tables = true; - }; - }; - - environment.systemPackages = with pkgs; [ - docker # Container runtime - oxker # Docker TUI Tool - ]; - }; -} diff --git a/modules/applications/fcitx5/config b/modules/applications/fcitx5/config deleted file mode 100644 index a11fae8..0000000 --- a/modules/applications/fcitx5/config +++ /dev/null @@ -1,69 +0,0 @@ -[Hotkey] -# トリガーキーを押すたびに切り替える -EnumerateWithTriggerKeys=False -# 一時的に第1入力メソッドに切り替える -AltTriggerKeys= -# 切り替え時は第1入力メソッドをスキップする -EnumerateSkipFirst=False -# Time limit in milliseconds for triggering modifier key shortcuts -ModifierOnlyKeyTimeout=250 - -[Hotkey/TriggerKeys] -1=Zenkaku_Hankaku - -[Hotkey/ActivateKeys] -0=Henkan - -[Hotkey/DeactivateKeys] -0=Muhenkan - -[Hotkey/PrevPage] -0=Up - -[Hotkey/NextPage] -0=Down - -[Hotkey/PrevCandidate] -0=Shift+Tab - -[Hotkey/NextCandidate] -0=Tab - -[Hotkey/TogglePreedit] -0=Control+Alt+P - -[Behavior] -# デフォルトで有効にする -ActiveByDefault=False -# フォーカス時に状態をリセット -resetStateWhenFocusIn=No -# 入力状態を共有する -ShareInputState=No -# アプリケーションにプリエディットを表示する -PreeditEnabledByDefault=True -# 入力メソッドを切り替える際に入力メソッドの情報を表示する -ShowInputMethodInformation=True -# フォーカスを変更する際に入力メソッドの情報を表示する -showInputMethodInformationWhenFocusIn=False -# 入力メソッドの情報をコンパクトに表示する -CompactInputMethodInformation=True -# 第1入力メソッドの情報を表示する -ShowFirstInputMethodInformation=True -# デフォルトのページサイズ -DefaultPageSize=5 -# XKB オプションより優先する -OverrideXkbOption=False -# カスタム XKB オプション -CustomXkbOption= -# Force Enabled Addons -EnabledAddons= -# Force Disabled Addons -DisabledAddons= -# Preload input method to be used by default -PreloadInputMethod=True -# パスワード欄に入力メソッドを許可する -AllowInputMethodForPassword=False -# パスワード入力時にプリエディットテキストを表示する -ShowPreeditForPassword=False -# ユーザーデータを保存する間隔(分) -AutoSavePeriod=30 diff --git a/modules/applications/fcitx5/default.nix b/modules/applications/fcitx5/default.nix deleted file mode 100644 index 11c198e..0000000 --- a/modules/applications/fcitx5/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.fcitx5; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.fcitx5 = { - enable = lib.mkEnableOption "fcitx5 input method"; - }; - - config = lib.mkIf cfg.enable { - my.applications.fcitx5.system.enable = lib.mkDefault true; - my.applications.fcitx5.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/fcitx5/home.nix b/modules/applications/fcitx5/home.nix deleted file mode 100644 index 94f5452..0000000 --- a/modules/applications/fcitx5/home.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.fcitx5.homeManager; -in -{ - options.my.applications.fcitx5.homeManager = { - enable = lib.mkEnableOption "fcitx5 home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf cfg.enable { - home.file.".config/fcitx5/config" = { - recursive = true; - source = ./config; - }; - }; - } - ]; -} diff --git a/modules/applications/fcitx5/system.nix b/modules/applications/fcitx5/system.nix deleted file mode 100644 index 79212d1..0000000 --- a/modules/applications/fcitx5/system.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - pkgs, - lib, - config, - inputs, - ... -}: -let - system = pkgs.stdenv.hostPlatform.system; - - cfg = config.my.applications.fcitx5.system; -in -{ - options.my.applications.fcitx5.system = { - enable = lib.mkEnableOption "fcitx5 system configuration"; - }; - - imports = [ - inputs.nix-hazkey.nixosModules.hazkey - ]; - - config = lib.mkIf cfg.enable { - - services.hazkey = { - enable = true; - server.package = inputs.nix-hazkey.packages.${system}.hazkey-server.override { - enableVulkan = true; - }; - installHazkeySettings = false; - installFcitx5Addon = false; - }; - - environment.systemPackages = [ inputs.nix-hazkey.packages.${system}.hazkey-settings ]; - - i18n.inputMethod = { - enable = true; - type = "fcitx5"; - fcitx5 = { - waylandFrontend = true; - addons = with pkgs; [ - inputs.nix-hazkey.packages.${system}.fcitx5-hazkey - fcitx5-mozc-ut - fcitx5-gtk - kdePackages.fcitx5-qt - qt6Packages.fcitx5-configtool - ]; - settings.inputMethod = { - GroupOrder = { - "0" = "Default"; - }; - "Groups/0" = { - Name = "Default"; - "Default Layout" = "jp"; - DefaultIM = "mozc"; - }; - "Groups/0/Items/0" = { - Name = "keyboard-jp"; - Layout = ""; - }; - "Groups/0/Items/1" = { - Name = "mozc"; - Layout = ""; - }; - }; - }; - }; - }; -} diff --git a/modules/applications/ghostty/config b/modules/applications/ghostty/config deleted file mode 100644 index e58b323..0000000 --- a/modules/applications/ghostty/config +++ /dev/null @@ -1,40 +0,0 @@ -theme = dracula -background-blur-radius = 20 -background-opacity = 0.9 -font-family = BlexMono Nerd Font Mono -mouse-hide-while-typing = true -window-decoration = true - - -# keybind - -# Copy/Paste -keybind = performable:ctrl+shift+c=copy_to_clipboard -keybind = ctrl+shift+v=paste_from_clipboard - -# create new tab -keybind = ctrl+shift+t=new_tab - -# move tabs -keybind = ctrl+alt+left_bracket=previous_tab -keybind = ctrl+alt+right_bracket=next_tab - -# close tab -keybind = ctrl+alt+q=close_window - -# font size -keybind = ctrl+shift+semicolon=increase_font_size:1 -keybind = ctrl+shift+minus=increase_font_size:1 - - -# quick terminal -keybind = global:super+space=toggle_quick_terminal -quick-terminal-position = top -quick-terminal-size = 100% -gtk-quick-terminal-layer = overlay -quick-terminal-keyboard-interactivity = exclusive -quick-terminal-autohide = false -quit-after-last-window-closed = false - -shell-integration-features = ssh-terminfo,ssh-env - diff --git a/modules/applications/ghostty/default.nix b/modules/applications/ghostty/default.nix deleted file mode 100644 index 966e80c..0000000 --- a/modules/applications/ghostty/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.ghostty; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.ghostty = { - enable = lib.mkEnableOption "ghostty terminal emulator"; - }; - - config = lib.mkIf cfg.enable { - my.applications.ghostty.system.enable = lib.mkDefault true; - my.applications.ghostty.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/ghostty/dracula.theme b/modules/applications/ghostty/dracula.theme deleted file mode 100644 index 413226e..0000000 --- a/modules/applications/ghostty/dracula.theme +++ /dev/null @@ -1,45 +0,0 @@ -# MIT License -# -# Copyright (c) 2023 Dracula Theme -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -palette = 0=#21222c -palette = 1=#ff5555 -palette = 2=#50fa7b -palette = 3=#f1fa8c -palette = 4=#bd93f9 -palette = 5=#ff79c6 -palette = 6=#8be9fd -palette = 7=#f8f8f2 -palette = 8=#6272a4 -palette = 9=#ff6e6e -palette = 10=#69ff94 -palette = 11=#ffffa5 -palette = 12=#d6acff -palette = 13=#ff92df -palette = 14=#a4ffff -palette = 15=#ffffff -background = #282a36 -foreground = #f8f8f2 -cursor-color = #f8f8f2 -cursor-text = #282a36 -selection-foreground = #f8f8f2 -selection-background = #44475a - diff --git a/modules/applications/ghostty/home.nix b/modules/applications/ghostty/home.nix deleted file mode 100644 index 706c08c..0000000 --- a/modules/applications/ghostty/home.nix +++ /dev/null @@ -1,83 +0,0 @@ -{ - pkgs, - lib, - config, - inputs, - ... -}: -let - cfg = config.my.applications.ghostty.homeManager; - - system = pkgs.stdenv.hostPlatform.system; - - ghosttyPkg = inputs.ghostty.packages.${system}.ghostty-releasefast; -in -{ - options.my.applications.ghostty.homeManager = { - enable = lib.mkEnableOption "ghostty home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - ( - { lib, ... }: - { - config = lib.mkIf cfg.enable { - programs.ghostty = { - enable = true; - - package = ghosttyPkg; - - systemd.enable = true; - - settings = { - theme = "dracula"; - - background-blur-radius = 20; - background-opacity = 0.9; - - font-family = "BlexMono Nerd Font Mono"; - - mouse-hide-while-typing = true; - - window-decoration = "auto"; - - keybind = [ - # Copy/Paste - "performable:ctrl+shift+c=copy_to_clipboard" - "ctrl+shift+v=paste_from_clipboard" - - # Create new tab - "ctrl+shift+t=new_tab" - - # Move tabs - "ctrl+alt+left_bracket=previous_tab" - "ctrl+alt+right_bracket=next_tab" - - # Close window - "ctrl+alt+q=close_window" - - # Font size - "ctrl+shift+semicolon=increase_font_size:1" - "ctrl+shift+minus=decrease_font_size:1" - ]; - - # Quick terminal - quick-terminal-position = "top"; - quick-terminal-size = "98%,100%"; - - quick-terminal-autohide = false; - quick-terminal-keyboard-interactivity = "on-demand"; - gtk-quick-terminal-layer = "top"; - - quit-after-last-window-closed = false; - - shell-integration-features = "no-ssh-env,no-ssh-terminfo"; - }; - }; - - xdg.configFile."ghostty/themes/dracula".source = ./dracula.theme; - }; - } - ) - ]; -} diff --git a/modules/applications/ghostty/system.nix b/modules/applications/ghostty/system.nix deleted file mode 100644 index 3791a3f..0000000 --- a/modules/applications/ghostty/system.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - pkgs, - lib, - config, - inputs, - ... -}: -let - cfg = config.my.applications.ghostty.system; - - system = pkgs.stdenv.hostPlatform.system; - - ghosttyPkg = inputs.ghostty.packages.${system}.ghostty-releasefast; -in -{ - options.my.applications.ghostty.system = { - enable = lib.mkEnableOption "ghostty system configuration"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = [ - ghosttyPkg # A fast and minimal terminal emulator for Wayland - ghosttyPkg.terminfo # Terminfo database for ghostty - ]; - }; -} diff --git a/modules/applications/git/default.nix b/modules/applications/git/default.nix deleted file mode 100644 index 8064501..0000000 --- a/modules/applications/git/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.git; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.git = { - enable = lib.mkEnableOption "git version control"; - - userName = lib.mkOption { - type = lib.types.singleLineStr; - default = "moons"; - description = "Default Git user.name."; - }; - - userEmail = lib.mkOption { - type = lib.types.singleLineStr; - default = "moons@moons14.com"; - description = "Default Git user.email."; - }; - }; - - config = lib.mkIf cfg.enable { - my.applications.git.system.enable = lib.mkDefault true; - my.applications.git.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/git/home.nix b/modules/applications/git/home.nix deleted file mode 100644 index 7e4d957..0000000 --- a/modules/applications/git/home.nix +++ /dev/null @@ -1,111 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.git; - hmCfg = config.my.applications.git.homeManager; - - signingKeyPath = ".ssh/1password-git-signing.pub"; - signingKeyFile = "~/${signingKeyPath}"; - - gitSshSign = pkgs.writeShellScript "git-ssh-sign" '' - one_password_sock="$HOME/.1password/agent.sock" - - if { [ -n "''${SSH_CONNECTION:-}" ] || [ -n "''${SSH_CLIENT:-}" ]; } \ - && [ -n "''${SSH_AUTH_SOCK:-}" ] \ - && [ -S "$SSH_AUTH_SOCK" ]; then - exec ${pkgs.openssh}/bin/ssh-keygen "$@" - fi - - if [ -S "$one_password_sock" ]; then - export SSH_AUTH_SOCK="$one_password_sock" - exec ${pkgs.openssh}/bin/ssh-keygen "$@" - fi - - if [ -n "''${SSH_AUTH_SOCK:-}" ] && [ -S "$SSH_AUTH_SOCK" ]; then - exec ${pkgs.openssh}/bin/ssh-keygen "$@" - fi - - echo "git ssh signing failed: no forwarded SSH agent or 1Password agent socket found" >&2 - echo "expected: forwarded SSH_AUTH_SOCK or $one_password_sock" >&2 - exit 1 - ''; -in -{ - options.my.applications.git.homeManager = { - enable = lib.mkEnableOption "git home-manager configuration"; - - signingPublicKey = lib.mkOption { - type = lib.types.nullOr lib.types.singleLineStr; - default = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPLwReAiwhXoO34S2+MrvqUhi8IWp4IzUq4OSp3niJdq 1password-git-signing"; - example = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPLwReAiwhXoO34S2+MrvqUhi8IWp4IzUq4OSp3niJdq 1password-git-signing"; - description = "SSH public key copied from the 1Password SSH key item used for Git signing."; - }; - - signingKey = lib.mkOption { - type = lib.types.str; - default = signingKeyFile; - readOnly = true; - description = "SSH public key path used for Git commit and tag signing."; - }; - }; - - config = lib.mkIf hmCfg.enable { - assertions = [ - { - assertion = hmCfg.signingPublicKey != null && hmCfg.signingPublicKey != ""; - message = "my.applications.git.homeManager.signingPublicKey must be set to the public key copied from 1Password."; - } - ]; - - home-manager.sharedModules = [ - { - home.file.${signingKeyPath}.text = hmCfg.signingPublicKey + "\n"; - - programs.git = { - enable = true; - - ignores = [ - ".direnv/" - ".envrc" - "!.envrc.example" - ]; - - signing = { - key = hmCfg.signingKey; - format = "ssh"; - signByDefault = true; - }; - - settings = { - user.name = cfg.userName; - user.email = cfg.userEmail; - - push.default = "simple"; - credential.helper = "cache --timeout=7200"; - init.defaultBranch = "main"; - log.decorate = "full"; - log.date = "iso"; - merge.conflictStyle = "diff3"; - - gpg.ssh.program = "${gitSshSign}"; - - alias = { - br = "branch --sort=-committerdate"; - co = "checkout"; - df = "diff"; - com = "commit -a"; - gs = "stash"; - gp = "pull"; - lg = "log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%d%Creset %s %C(green)(%cr)%C(bold blue) <%an>%Creset' --abbrev-commit"; - st = "status"; - }; - }; - }; - } - ]; - }; -} diff --git a/modules/applications/git/system.nix b/modules/applications/git/system.nix deleted file mode 100644 index 4120fa0..0000000 --- a/modules/applications/git/system.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.git.system; -in -{ - options.my.applications.git.system = { - enable = lib.mkEnableOption "git system configuration"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - git # Distributed version control system - gh # GitHub CLI - ]; - }; -} diff --git a/modules/applications/gnome.nix b/modules/applications/gnome.nix deleted file mode 100644 index b080997..0000000 --- a/modules/applications/gnome.nix +++ /dev/null @@ -1,94 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.gnome; -in -{ - options.my.applications.gnome = { - enable = lib.mkEnableOption "GNOME desktop environment"; - }; - - config = lib.mkIf cfg.enable { - services.desktopManager.gnome.enable = true; - - # ly is the display manager for switching between installed sessions. - services.displayManager.gdm.enable = lib.mkForce false; - - home-manager.sharedModules = [ - { - dconf.settings = { - "org/gnome/desktop/sound" = { - event-sounds = false; - input-feedback-sounds = false; - }; - - "org/gnome/desktop/wm/keybindings" = { - close = [ "q" ]; - show-desktop = [ ]; - }; - - "org/gnome/settings-daemon/plugins/media-keys" = { - home = [ ]; - screensaver = [ "l" ]; - custom-keybindings = [ - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/" - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/" - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/" - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/" - ]; - }; - - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { - name = "Open Terminal"; - command = "ghostty"; - binding = "t"; - }; - - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = { - name = "Run Application"; - command = "vicinae toggle"; - binding = "d"; - }; - - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2" = { - name = "Open File Manager"; - command = "nautilus --new-window"; - binding = "e"; - }; - - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3" = { - name = "Clipboard History"; - command = "vicinae vicinae://extensions/vicinae/clipboard/history"; - binding = "v"; - }; - - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4" = { - name = "Log Out"; - command = "gnome-session-quit --logout --no-prompt"; - binding = "e"; - }; - - "org/gnome/shell" = { - favorite-apps = [ - "google-chrome.desktop" - "code.desktop" - "com.mitchellh.ghostty.desktop" - "slack.desktop" - "vesktop.desktop" - ]; - }; - }; - } - ]; - - environment.systemPackages = with pkgs; [ - gnome-tweaks # GNOME desktop customization tool - gnome-extension-manager # GNOME Shell extension manager - ]; - }; -} diff --git a/modules/applications/gnupg/default.nix b/modules/applications/gnupg/default.nix deleted file mode 100644 index fa6a410..0000000 --- a/modules/applications/gnupg/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.gnupg; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.gnupg = { - enable = lib.mkEnableOption "GnuPG agent"; - }; - - config = lib.mkIf cfg.enable { - my.applications.gnupg.system.enable = lib.mkDefault true; - my.applications.gnupg.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/gnupg/home.nix b/modules/applications/gnupg/home.nix deleted file mode 100644 index 1021f45..0000000 --- a/modules/applications/gnupg/home.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - lib, - config, - ... -}: -let - hmCfg = config.my.applications.gnupg.homeManager; -in -{ - options.my.applications.gnupg.homeManager = { - enable = lib.mkEnableOption "GnuPG home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf hmCfg.enable { - services.gpg-agent.enable = false; - services.gpg-agent.enableSshSupport = false; - }; - } - ]; -} diff --git a/modules/applications/gnupg/system.nix b/modules/applications/gnupg/system.nix deleted file mode 100644 index 930a39b..0000000 --- a/modules/applications/gnupg/system.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.gnupg.system; -in -{ - options.my.applications.gnupg.system = { - enable = lib.mkEnableOption "GnuPG system configuration"; - }; - - config = lib.mkIf cfg.enable { - programs.gnupg.agent = { - enable = true; - enableSSHSupport = false; - }; - }; -} diff --git a/modules/applications/greetd.nix b/modules/applications/greetd.nix deleted file mode 100644 index 09f00e4..0000000 --- a/modules/applications/greetd.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.greetd; -in -{ - options.my.applications.greetd = { - enable = lib.mkEnableOption "greetd login manager"; - }; - - config = lib.mkIf cfg.enable { - services.greetd = { - enable = true; - settings = { - default_session = { - user = "greeter"; - command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd niri-session"; - }; - }; - }; - }; -} diff --git a/modules/applications/grok.nix b/modules/applications/grok.nix deleted file mode 100644 index 24d8faf..0000000 --- a/modules/applications/grok.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.grok; - - grok = pkgs.llm-agents.grok.overrideAttrs (_old: { - versionCheckProgram = "${placeholder "out"}/libexec/grok/grok-launcher"; - }); -in -{ - options.my.applications.grok = { - enable = lib.mkEnableOption "Grok AI assistant"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = [ - grok - ]; - }; -} diff --git a/modules/applications/gtk/default.nix b/modules/applications/gtk/default.nix deleted file mode 100644 index bc3bb9b..0000000 --- a/modules/applications/gtk/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.gtk; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.gtk = { - enable = lib.mkEnableOption "GTK theme configuration"; - }; - - config = lib.mkIf cfg.enable { - my.applications.gtk.system.enable = lib.mkDefault true; - my.applications.gtk.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/gtk/home.nix b/modules/applications/gtk/home.nix deleted file mode 100644 index 58cfdce..0000000 --- a/modules/applications/gtk/home.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.gtk.homeManager; -in -{ - options.my.applications.gtk.homeManager = { - enable = lib.mkEnableOption "GTK home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf cfg.enable { - gtk = { - enable = true; - theme = { - name = "Dracula"; - package = pkgs.dracula-theme; - }; - cursorTheme = { - package = pkgs.adwaita-icon-theme; - name = "Adwaita"; - }; - iconTheme = { - package = pkgs.papirus-icon-theme; - name = "Papirus-Dark"; - }; - }; - }; - } - ]; -} diff --git a/modules/applications/gtk/system.nix b/modules/applications/gtk/system.nix deleted file mode 100644 index c3434fc..0000000 --- a/modules/applications/gtk/system.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.gtk.system; -in -{ - options.my.applications.gtk.system = { - enable = lib.mkEnableOption "GTK system configuration"; - }; - - config = lib.mkIf cfg.enable { - programs.dconf.enable = true; - programs.seahorse.enable = true; - - services.gnome.gnome-keyring.enable = true; - }; -} diff --git a/modules/applications/java/default.nix b/modules/applications/java/default.nix deleted file mode 100644 index ef8ecb5..0000000 --- a/modules/applications/java/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.java; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.java = { - enable = lib.mkEnableOption "Java runtime"; - }; - - config = lib.mkIf cfg.enable { - my.applications.java.system.enable = lib.mkDefault true; - my.applications.java.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/java/home.nix b/modules/applications/java/home.nix deleted file mode 100644 index 3661470..0000000 --- a/modules/applications/java/home.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.java.homeManager; -in -{ - options.my.applications.java.homeManager = { - enable = lib.mkEnableOption "Java home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf cfg.enable { - programs.java = { - enable = true; - }; - }; - } - ]; -} diff --git a/modules/applications/java/system.nix b/modules/applications/java/system.nix deleted file mode 100644 index ec6f1b8..0000000 --- a/modules/applications/java/system.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.java.system; -in -{ - options.my.applications.java.system = { - enable = lib.mkEnableOption "Java system configuration"; - }; - - config = lib.mkIf cfg.enable { - programs.java = { - enable = true; - package = pkgs.jdk25; - }; - - environment.systemPackages = with pkgs; [ - jdk25 # Java Development Kit 25 - maven # Java Build Tool - gradle # Java Build Tool - ]; - }; -} diff --git a/modules/applications/kde.nix b/modules/applications/kde.nix deleted file mode 100644 index b5f462e..0000000 --- a/modules/applications/kde.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.kde; -in -{ - options.my.applications.kde = { - enable = lib.mkEnableOption "KDE Connect"; - }; - - config = lib.mkIf cfg.enable { - programs.kdeconnect = { - enable = true; - }; - }; -} diff --git a/modules/applications/ly/default.nix b/modules/applications/ly/default.nix deleted file mode 100644 index 3b3aea4..0000000 --- a/modules/applications/ly/default.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: -let - cfg = config.my.applications.ly; - indyzLinuxfire = pkgs.fetchurl { - url = "https://codeberg.org/attachments/f336d6ac-8331-4323-91fc-0e4619803401"; - hash = "sha256-fRm0wlkq9/GdLrVBOzMEnQG/i2ng+uGIzq0u9hu3m9g="; - }; -in -{ - options.my.applications.ly = { - enable = lib.mkEnableOption "ly TUI display manager"; - }; - - config = lib.mkIf cfg.enable { - services.displayManager.defaultSession = lib.mkDefault "niri"; - - services.displayManager.ly = { - enable = true; - settings = { - default_session = "niri"; - - animate = true; - animation = "dur_file"; - dur_file_path = "${indyzLinuxfire}"; - dur_offset_alignment = "center"; - - full_color = true; - }; - }; - }; -} diff --git a/modules/applications/nautilus.nix b/modules/applications/nautilus.nix deleted file mode 100644 index 4293dd5..0000000 --- a/modules/applications/nautilus.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.nautilus; -in -{ - options.my.applications.nautilus = { - enable = lib.mkEnableOption "Nautilus file manager"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - nautilus # GNOME file manager - gvfs # GNOME virtual file system - sushi # Nautilus file previewer - ]; - }; -} diff --git a/modules/applications/nh.nix b/modules/applications/nh.nix deleted file mode 100644 index b5e9cb0..0000000 --- a/modules/applications/nh.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - username, - lib, - config, - ... -}: -let - cfg = config.my.applications.nh; -in -{ - options.my.applications.nh = { - enable = lib.mkEnableOption "nh Nix CLI helper"; - }; - - config = lib.mkIf cfg.enable { - programs.nh = { - enable = true; - flake = "/home/${username}/dotfiles"; - - clean = { - enable = true; - dates = "weekly"; - extraArgs = "--keep-since 14d --keep 10"; - }; - }; - }; -} diff --git a/modules/applications/niri/default.nix b/modules/applications/niri/default.nix deleted file mode 100644 index f42e307..0000000 --- a/modules/applications/niri/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.niri; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.niri = { - enable = lib.mkEnableOption "niri window manager"; - }; - - config = lib.mkIf cfg.enable { - my.applications.niri.system.enable = lib.mkDefault true; - my.applications.niri.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/niri/defaultKeyBind.nix b/modules/applications/niri/defaultKeyBind.nix deleted file mode 100644 index e745297..0000000 --- a/modules/applications/niri/defaultKeyBind.nix +++ /dev/null @@ -1,166 +0,0 @@ -{ - "Mod+Shift+Slash".action.show-hotkey-overlay = { }; - - "XF86AudioRaiseVolume" = { - allow-when-locked = true; - action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.1+" - ]; - }; - "XF86AudioLowerVolume" = { - allow-when-locked = true; - action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.1-" - ]; - }; - "XF86AudioMute" = { - allow-when-locked = true; - action.spawn = [ - "wpctl" - "set-mute" - "@DEFAULT_AUDIO_SINK@" - "toggle" - ]; - }; - "XF86AudioMicMute" = { - allow-when-locked = true; - action.spawn = [ - "wpctl" - "set-mute" - "@DEFAULT_AUDIO_SOURCE@" - "toggle" - ]; - }; - - "Mod+Q".action.close-window = { }; - - "Mod+Left".action.focus-column-left = { }; - "Mod+Down".action.focus-window-down = { }; - "Mod+Up".action.focus-window-up = { }; - "Mod+Right".action.focus-column-right = { }; - "Mod+H".action.focus-column-left = { }; - "Mod+J".action.focus-window-down = { }; - "Mod+K".action.focus-window-up = { }; - "Mod+L".action.focus-column-right = { }; - - "Mod+Ctrl+Left".action.move-column-left = { }; - "Mod+Ctrl+Down".action.move-window-down = { }; - "Mod+Ctrl+Up".action.move-window-up = { }; - "Mod+Ctrl+Right".action.move-column-right = { }; - "Mod+Ctrl+H".action.move-column-left = { }; - "Mod+Ctrl+J".action.move-window-down = { }; - "Mod+Ctrl+K".action.move-window-up = { }; - "Mod+Ctrl+L".action.move-column-right = { }; - - "Mod+Home".action.focus-column-first = { }; - "Mod+End".action.focus-column-last = { }; - "Mod+Ctrl+Home".action.move-column-to-first = { }; - "Mod+Ctrl+End".action.move-column-to-last = { }; - - "Mod+Shift+Left".action.focus-monitor-left = { }; - "Mod+Shift+Down".action.focus-monitor-down = { }; - "Mod+Shift+Up".action.focus-monitor-up = { }; - "Mod+Shift+Right".action.focus-monitor-right = { }; - "Mod+Shift+H".action.focus-monitor-left = { }; - "Mod+Shift+J".action.focus-monitor-down = { }; - "Mod+Shift+K".action.focus-monitor-up = { }; - "Mod+Shift+L".action.focus-monitor-right = { }; - - "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { }; - "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { }; - "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { }; - "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { }; - "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = { }; - "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = { }; - "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = { }; - "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = { }; - - "Mod+Page_Down".action.focus-workspace-down = { }; - "Mod+Page_Up".action.focus-workspace-up = { }; - "Mod+U".action.focus-workspace-down = { }; - "Mod+I".action.focus-workspace-up = { }; - "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { }; - "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { }; - "Mod+Ctrl+U".action.move-column-to-workspace-down = { }; - "Mod+Ctrl+I".action.move-column-to-workspace-up = { }; - - "Mod+Shift+Page_Down".action.move-workspace-down = { }; - "Mod+Shift+Page_Up".action.move-workspace-up = { }; - "Mod+Shift+U".action.move-workspace-down = { }; - "Mod+Shift+I".action.move-workspace-up = { }; - - "Mod+WheelScrollDown" = { - cooldown-ms = 150; - action.focus-workspace-down = { }; - }; - "Mod+WheelScrollUp" = { - cooldown-ms = 150; - action.focus-workspace-up = { }; - }; - "Mod+Ctrl+WheelScrollDown" = { - cooldown-ms = 150; - action.move-column-to-workspace-down = { }; - }; - "Mod+Ctrl+WheelScrollUp" = { - cooldown-ms = 150; - action.move-column-to-workspace-up = { }; - }; - - "Mod+WheelScrollRight".action.focus-column-right = { }; - "Mod+WheelScrollLeft".action.focus-column-left = { }; - "Mod+Ctrl+WheelScrollRight".action.move-column-right = { }; - "Mod+Ctrl+WheelScrollLeft".action.move-column-left = { }; - - "Mod+Shift+WheelScrollDown".action.focus-column-right = { }; - "Mod+Shift+WheelScrollUp".action.focus-column-left = { }; - "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { }; - "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { }; - - "Mod+1".action.focus-workspace = 1; - "Mod+2".action.focus-workspace = 2; - "Mod+3".action.focus-workspace = 3; - "Mod+4".action.focus-workspace = 4; - "Mod+5".action.focus-workspace = 5; - "Mod+6".action.focus-workspace = 6; - "Mod+7".action.focus-workspace = 7; - "Mod+8".action.focus-workspace = 8; - "Mod+9".action.focus-workspace = 9; - "Mod+Ctrl+1".action.move-column-to-workspace = 1; - "Mod+Ctrl+2".action.move-column-to-workspace = 2; - "Mod+Ctrl+3".action.move-column-to-workspace = 3; - "Mod+Ctrl+4".action.move-column-to-workspace = 4; - "Mod+Ctrl+5".action.move-column-to-workspace = 5; - "Mod+Ctrl+6".action.move-column-to-workspace = 6; - "Mod+Ctrl+7".action.move-column-to-workspace = 7; - "Mod+Ctrl+8".action.move-column-to-workspace = 8; - "Mod+Ctrl+9".action.move-column-to-workspace = 9; - - "Mod+Comma".action.consume-window-into-column = { }; - "Mod+Period".action.expel-window-from-column = { }; - - "Mod+R".action.switch-preset-column-width = { }; - "Mod+Shift+R".action.reset-window-height = { }; - "Mod+F".action.maximize-column = { }; - "Mod+Shift+F".action.fullscreen-window = { }; - "Mod+C".action.center-column = { }; - - "Mod+Minus".action.set-column-width = "-10%"; - "Mod+Equal".action.set-column-width = "+10%"; - - "Mod+Shift+Minus".action.set-window-height = "-10%"; - "Mod+Shift+Equal".action.set-window-height = "+10%"; - - "Print".action.screenshot = { }; - "Ctrl+Print".action.screenshot-screen = { }; - "Alt+Print".action.screenshot-window = { }; - - "Mod+Shift+E".action.quit = { }; - - "Mod+Shift+P".action.power-off-monitors = { }; -} diff --git a/modules/applications/niri/home.nix b/modules/applications/niri/home.nix deleted file mode 100644 index 18eb0bd..0000000 --- a/modules/applications/niri/home.nix +++ /dev/null @@ -1,255 +0,0 @@ -{ - inputs, - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.niri.homeManager; - defaultKeyBind = import ./defaultKeyBind.nix; -in -{ - options.my.applications.niri.homeManager = { - enable = lib.mkEnableOption "niri home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - inputs.niri-flake.homeModules.niri - { - config = lib.mkIf cfg.enable { - programs.niri.package = pkgs.niri; - - programs.niri.settings = { - input.touchpad = { - natural-scroll = true; - scroll-factor = 4.0; - scroll-method = "two-finger"; - click-method = "clickfinger"; - drag = true; - drag-lock = true; - }; - - input.keyboard.xkb = { - layout = "jp"; - options = "ctrl:nocaps"; - }; - - input.mouse = { - accel-profile = "flat"; - accel-speed = -0.1; - }; - - input.warp-mouse-to-focus.enable = true; - input.focus-follows-mouse = { - enable = true; - max-scroll-amount = "0%"; - }; - - spawn-at-startup = [ - { command = [ "noctalia" ]; } - { - command = [ - "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" - ]; - } - ]; - - cursor.size = 16; - - outputs = { - # x1g13 monitor - "eDP-1" = { - scale = 1.2; - position = { - x = 0; - y = 0; - }; - }; - }; - - layout = { - focus-ring = { - active.color = "#bd93f9"; - inactive.color = "#6272a4"; - }; - border = { - active.color = "#ffc87f"; - inactive.color = "#505050"; - urgent.color = "#9b0000"; - }; - shadow = { - color = "#0007"; - }; - background-color = "transparent"; - }; - - binds = defaultKeyBind // { - "Mod+T" = { - action.spawn = "ghostty"; - hotkey-overlay.title = "Open a Terminal: ghostty"; - }; - "Mod+D" = { - action.spawn = [ - "vicinae" - "toggle" - ]; - hotkey-overlay.title = "Run an Application: vicinae"; - }; - "Mod+E" = { - action.spawn = [ - "nautilus" - "--new-window" - ]; - hotkey-overlay.title = "Open File Manager: nautilus"; - }; - "Mod+L" = { - action.spawn = [ - (lib.getExe' pkgs.systemd "loginctl") - "lock-session" - ]; - hotkey-overlay.title = "Lock the Screen"; - }; - "Mod+V" = { - action.spawn = [ - "vicinae" - "vicinae://launch/clipboard/history?toggle=true" - ]; - hotkey-overlay.title = "Clipboard History"; - }; - "Mod+Space" = { - action.spawn = [ - "ghostty" - "+toggle-quick-terminal" - ]; - hotkey-overlay.title = "Toggle Quick Terminal: ghostty"; - }; - - # Focus monitor - "Mod+Shift+Left" = { - action.focus-monitor-left = [ ]; - hotkey-overlay.title = "Focus Monitor Left"; - }; - "Mod+Shift+Right" = { - action.focus-monitor-right = [ ]; - hotkey-overlay.title = "Focus Monitor Right"; - }; - "Mod+Shift+Up" = { - action.focus-monitor-up = [ ]; - hotkey-overlay.title = "Focus Monitor Up"; - }; - "Mod+Shift+Down" = { - action.focus-monitor-down = [ ]; - hotkey-overlay.title = "Focus Monitor Down"; - }; - - # Move focused window to monitor - "Mod+Shift+Ctrl+Left" = { - action.move-window-to-monitor-left = [ ]; - hotkey-overlay.title = "Move Window to Monitor Left"; - }; - "Mod+Shift+Ctrl+Right" = { - action.move-window-to-monitor-right = [ ]; - hotkey-overlay.title = "Move Window to Monitor Right"; - }; - "Mod+Shift+Ctrl+Up" = { - action.move-window-to-monitor-up = [ ]; - hotkey-overlay.title = "Move Window to Monitor Up"; - }; - "Mod+Shift+Ctrl+Down" = { - action.move-window-to-monitor-down = [ ]; - hotkey-overlay.title = "Move Window to Monitor Down"; - }; - - "XF86AudioRaiseVolume" = { - action.spawn = [ - "noctalia" - "msg" - "volume-up" - ]; - }; - "XF86AudioLowerVolume" = { - action.spawn = [ - "noctalia" - "msg" - "volume-down" - ]; - }; - "XF86AudioMute" = { - action.spawn = [ - "noctalia" - "msg" - "volume-mute" - ]; - }; - "XF86AudioMicMute" = { - action.spawn = [ - "noctalia" - "msg" - "mic-mute" - ]; - }; - - "XF86MonBrightnessUp" = { - action.spawn = [ - "noctalia" - "msg" - "brightness-up" - ]; - }; - "XF86MonBrightnessDown" = { - action.spawn = [ - "noctalia" - "msg" - "brightness-down" - ]; - }; - - "XF86Favorites" = { - action.spawn = [ - "noctalia" - "msg" - "caffeine-toggle" - ]; - }; - }; - - window-rules = [ - { - geometry-corner-radius = { - top-left = 20.0; - top-right = 20.0; - bottom-left = 20.0; - bottom-right = 20.0; - }; - clip-to-geometry = true; - } - { - matches = [ { app-id = "^dev\\.noctalia\\.Noctalia$"; } ]; - open-floating = true; - default-column-width = { - fixed = 1080; - }; - default-window-height = { - fixed = 920; - }; - } - ]; - - layer-rules = [ - { - matches = [ { namespace = "^noctalia-wallpaper"; } ]; - place-within-backdrop = true; - } - ]; - - overview = { - workspace-shadow = { - enable = false; - }; - }; - }; - }; - } - ]; -} diff --git a/modules/applications/niri/system.nix b/modules/applications/niri/system.nix deleted file mode 100644 index 1057953..0000000 --- a/modules/applications/niri/system.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.niri.system; -in -{ - options.my.applications.niri.system = { - enable = lib.mkEnableOption "niri system configuration"; - }; - - config = lib.mkIf cfg.enable { - programs.niri.enable = true; - - environment.systemPackages = with pkgs; [ - wdisplays # Wayland display configuration GUI - wlr-randr # Wayland output management CLI - polkit_gnome # Polkit authentication agent for GNOME - ]; - }; -} diff --git a/modules/applications/nix-index/default.nix b/modules/applications/nix-index/default.nix deleted file mode 100644 index 1cd9fd5..0000000 --- a/modules/applications/nix-index/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.nix-index; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.nix-index = { - enable = lib.mkEnableOption "nix-index and comma command runner"; - }; - - config = lib.mkIf cfg.enable { - my.applications.nix-index.system.enable = lib.mkDefault true; - my.applications.nix-index.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/nix-index/home.nix b/modules/applications/nix-index/home.nix deleted file mode 100644 index e2e6f28..0000000 --- a/modules/applications/nix-index/home.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.nix-index.homeManager; -in -{ - options.my.applications.nix-index.homeManager = { - enable = lib.mkEnableOption "nix-index home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf cfg.enable { - programs.nix-index.enable = true; - }; - } - ]; -} diff --git a/modules/applications/nix-index/system.nix b/modules/applications/nix-index/system.nix deleted file mode 100644 index 42014e9..0000000 --- a/modules/applications/nix-index/system.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - inputs, - lib, - config, - ... -}: -let - cfg = config.my.applications.nix-index.system; -in -{ - imports = [ inputs.nix-index-database.nixosModules.default ]; - - options.my.applications.nix-index.system = { - enable = lib.mkEnableOption "nix-index system configuration"; - }; - - config = lib.mkIf cfg.enable { - programs.nix-index-database.comma.enable = true; - }; -} diff --git a/modules/applications/noctalia/default.nix b/modules/applications/noctalia/default.nix deleted file mode 100644 index a72bffc..0000000 --- a/modules/applications/noctalia/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.noctalia; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.noctalia = { - enable = lib.mkEnableOption "noctalia"; - }; - - config = lib.mkIf cfg.enable { - my.applications.noctalia.system.enable = lib.mkDefault true; - my.applications.noctalia.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/noctalia/home.nix b/modules/applications/noctalia/home.nix deleted file mode 100644 index bf58137..0000000 --- a/modules/applications/noctalia/home.nix +++ /dev/null @@ -1,225 +0,0 @@ -{ - inputs, - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.noctalia.homeManager; - walls = pkgs.fetchFromGitHub { - owner = "moons-14"; - repo = "wallpapers"; - rev = "cc3256f4aaf2c8e7d16fb000b1ee251af54085db"; - hash = "sha256-emQ/FqKqMq3YI5bLx8gBZg/ZE72OG9Ilh71ggq78WdQ="; - }; -in -{ - options.my.applications.noctalia.homeManager = { - enable = lib.mkEnableOption "noctalia home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - inputs.noctalia.homeModules.default - { - config = lib.mkIf cfg.enable { - home.file.".face" = { - recursive = true; - source = ../../../images/avatar.jpg; - }; - - home.file.".wallpapers" = { - source = walls; - recursive = true; - }; - - home.file.".cache/noctalia/wallpapers.json" = { - text = builtins.toJSON { - defaultWallpaper = "~/.wallpapers/1.jpg"; - wallpapers = { - "DP-1" = "~/.wallpapers/1.jpg"; - }; - }; - }; - - programs.noctalia = { - enable = true; - settings = { - theme = { - mode = "auto"; - source = "wallpaper"; - templates = { - enable_builtin_templates = false; - enable_community_templates = false; - }; - }; - desktop_widgets.enabled = false; - lockscreen = { - enabled = false; - fingerprint = false; - }; - widget = { - cpu = { - type = "sysmon"; - stat = "cpu_usage"; - }; - cpu-graph = { - type = "sysmon"; - stat = "cpu_usage"; - display = "graph"; - show_label = false; - }; - ram = { - type = "sysmon"; - stat = "ram_used"; - }; - media = { - type = "media"; - hide_when_no_media = true; - title_scroll = "always"; - }; - battery = { - type = "battery"; - display_mode = "graphic"; - warning_threshold = 30; - }; - brightness = { - type = "brightness"; - show_label = false; - }; - input-volume = { - type = "volume"; - device = "input"; - }; - output-volume = { - type = "volume"; - device = "output"; - }; - clock = { - type = "clock"; - format = "{:%Y/%m/%d %H:%M}"; - vertical_format = "{:%Y/%m/%d\n%H:%M}"; - tooltip_format = "{:%Y/%m/%d %H:%M (%a)}"; - }; - network-connection = { - type = "custom_button"; - glyph = "access-point"; - command = "nm-connection-editor"; - }; - tray = { - type = "tray"; - pinned = [ "org.fcitx.Fcitx5" ]; - }; - }; - - bar = { - order = [ "main" ]; - main = { - margin_ends = 15; - position = "top"; - start = [ - "network" - "bluetooth" - "network-connection" - "spacer" - "cpu" - "cpu-graph" - "ram" - ]; - center = [ "workspaces" ]; - end = [ - "media" - "spacer" - "notifications" - "tray" - "spacer" - "battery" - "input-volume" - "output-volume" - "privacy" - "brightness" - "clock" - "control-center" - ]; - }; - }; - colorSchemes.predefinedScheme = "dracula"; - general = { - avatarImage = "~/.face"; - radiusRatio = 0.2; - }; - location = { - monthBeforeDay = true; - weatherEnabled = false; - name = "Tokyo"; - }; - wallpaper = { - enabled = true; - directory = "~/.wallpapers/"; - fillMode = "crop"; - automation = { - enabled = true; - order = "random"; - interval_seconds = 60; - }; - default.path = "~/.wallpapers/1.jpg"; - }; - dock = { - enabled = true; - position = "left"; - auto_hide = true; - show_dots = true; - background_opacity = 0.8; - size = 1; - onlySameOutput = true; - reserve_space = false; - monitors = [ "eDP-1" ]; - pinned = [ - "com.mitchellh.ghostty" - "google-chrome" - "code" - ]; - colorizeIcons = false; - }; - shell = { - clipboard_enabled = false; - }; - controlCenter = { - position = "close_to_bar_button"; - shortcuts = { - left = [ - { id = "WiFi"; } - { id = "Bluetooth"; } - { id = "ScreenRecorder"; } - { id = "WallpaperSelector"; } - ]; - right = [ - { id = "Notifications"; } - { id = "NightLight"; } - ]; - }; - cards = [ - { - enabled = true; - id = "profile-card"; - } - { - enabled = true; - id = "shortcuts-card"; - } - { - enabled = true; - id = "audio-card"; - } - { - enabled = true; - id = "media-sysmon-card"; - } - ]; - }; - }; - }; - }; - } - ]; -} diff --git a/modules/applications/noctalia/system.nix b/modules/applications/noctalia/system.nix deleted file mode 100644 index 72cbb99..0000000 --- a/modules/applications/noctalia/system.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - pkgs, - inputs, - lib, - config, - ... -}: -let - cfg = config.my.applications.noctalia.system; -in -{ - options.my.applications.noctalia.system = { - enable = lib.mkEnableOption "noctalia system package"; - }; - - imports = [ - inputs.noctalia.nixosModules.default - ]; - - config = lib.mkIf cfg.enable { - - environment.systemPackages = with pkgs; [ - inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default - ]; - - programs.noctalia = { - enable = true; - recommendedServices.enable = true; - systemd.enable = true; - }; - }; -} diff --git a/modules/applications/opencode.nix b/modules/applications/opencode.nix deleted file mode 100644 index 04ed3bd..0000000 --- a/modules/applications/opencode.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.opencode; -in -{ - options.my.applications.opencode = { - enable = lib.mkEnableOption "OpenCode AI coding assistant"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = [ - pkgs.llm-agents.opencode # OpenCode CLI - ]; - }; -} diff --git a/modules/applications/openssh.nix b/modules/applications/openssh.nix deleted file mode 100644 index f45a857..0000000 --- a/modules/applications/openssh.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.applications.openssh; -in -{ - options.my.applications.openssh = { - enable = lib.mkEnableOption "OpenSSH server"; - }; - - config = lib.mkIf cfg.enable { - services.openssh = { - enable = true; - openFirewall = true; - - settings = { - PermitRootLogin = "no"; - PasswordAuthentication = false; - KbdInteractiveAuthentication = false; - PubkeyAuthentication = "yes"; - }; - }; - }; -} diff --git a/modules/applications/slack.nix b/modules/applications/slack.nix deleted file mode 100644 index f52e68a..0000000 --- a/modules/applications/slack.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.slack; -in -{ - options.my.applications.slack = { - enable = lib.mkEnableOption "Slack messaging client"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - { - home.packages = with pkgs; [ - slack # Team messaging and collaboration platform - ]; - } - ]; - }; -} diff --git a/modules/applications/ssh/default.nix b/modules/applications/ssh/default.nix deleted file mode 100644 index 7f99dcd..0000000 --- a/modules/applications/ssh/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.ssh; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.ssh = { - enable = lib.mkEnableOption "OpenSSH client"; - }; - - config = lib.mkIf cfg.enable { - my.applications.ssh.system.enable = lib.mkDefault true; - my.applications.ssh.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/ssh/home.nix b/modules/applications/ssh/home.nix deleted file mode 100644 index dcaad3a..0000000 --- a/modules/applications/ssh/home.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - hmCfg = config.my.applications.ssh.homeManager; -in -{ - options.my.applications.ssh.homeManager = { - enable = lib.mkEnableOption "SSH home-manager configuration"; - - matchBlocks = lib.mkOption { - type = lib.types.attrs; - default = { }; - description = "SSH match blocks"; - }; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf hmCfg.enable { - home.packages = [ - pkgs.openssh - ]; - - systemd.user.sockets.gcr-ssh-agent.Install.WantedBy = lib.mkForce [ ]; - - services.ssh-agent.enable = lib.mkForce false; - - programs.ssh = { - enable = true; - enableDefaultConfig = false; - - settings = hmCfg.matchBlocks // { - "github.com" = { - HostName = "github.com"; - User = "git"; - AddKeysToAgent = "no"; - }; - - "*.sfc.wide.ad.jp" = { - identityFile = "~/.ssh/id_ed25519_sk_rk"; - identitiesOnly = true; - }; - "*" = { - AddKeysToAgent = "no"; - SetEnv = { - TERM = "xterm-256color"; - }; - }; - }; - - extraConfig = '' - Match exec "test -S %d/.1password/agent.sock" - IdentityAgent %d/.1password/agent.sock - ''; - }; - }; - } - ]; -} diff --git a/modules/applications/ssh/system.nix b/modules/applications/ssh/system.nix deleted file mode 100644 index 9b34d19..0000000 --- a/modules/applications/ssh/system.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.ssh.system; -in -{ - options.my.applications.ssh.system = { - enable = lib.mkEnableOption "SSH system configuration"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - openssh # OpenSSH client and server - ]; - - programs.ssh.startAgent = false; - services.gnome.gcr-ssh-agent.enable = false; - }; -} diff --git a/modules/applications/swayidle.nix b/modules/applications/swayidle.nix deleted file mode 100644 index b59fec6..0000000 --- a/modules/applications/swayidle.nix +++ /dev/null @@ -1,96 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.swayidle; - - brightnessctl = lib.getExe pkgs.brightnessctl; - niri = lib.getExe pkgs.niri; - rm = "${pkgs.coreutils}/bin/rm"; - systemctl = lib.getExe' pkgs.systemd "systemctl"; - - brightnessState = "$XDG_RUNTIME_DIR/swayidle-brightness"; - - # AC 接続中は何もしない。 - # つまり、以下のアイドル処理をバッテリー駆動時のみにする。 - skipIfOnAC = '' - for supply in /sys/class/power_supply/*; do - if [ -f "$supply/type" ] \ - && [ "$(< "$supply/type")" = "Mains" ] \ - && [ -f "$supply/online" ] \ - && [ "$(< "$supply/online")" = "1" ]; then - exit 0 - fi - done - ''; - - dimScreen = pkgs.writeShellScript "swayidle-dim-screen" '' - ${skipIfOnAC} - - ${brightnessctl} get > "${brightnessState}" 2>/dev/null || exit 0 - ${brightnessctl} set 10% >/dev/null 2>&1 || true - ''; - - restoreBrightness = pkgs.writeShellScript "swayidle-restore-brightness" '' - if [ -f "${brightnessState}" ]; then - saved=$(< "${brightnessState}") - ${brightnessctl} set "$saved" >/dev/null 2>&1 || true - ${rm} -f "${brightnessState}" - fi - ''; - - suspendOnBattery = pkgs.writeShellScript "swayidle-suspend-on-battery" '' - ${skipIfOnAC} - - exec ${systemctl} suspend - ''; - - afterResume = pkgs.writeShellScript "swayidle-after-resume" '' - ${niri} msg action power-on-monitors - ${restoreBrightness} - ''; -in -{ - options.my.applications.swayidle = { - enable = lib.mkEnableOption "swayidle idle manager"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - { - services.swayidle = { - enable = true; - - systemdTargets = [ - "graphical-session.target" - ]; - - timeouts = [ - { - timeout = 300; - command = "${dimScreen}"; - resumeCommand = "${restoreBrightness}"; - } - { - timeout = 360; - command = "${suspendOnBattery}"; - } - ]; - - events = { - after-resume = "${afterResume}"; - }; - }; - - systemd.user.services.swayidle.Service.PassEnvironment = [ - "WAYLAND_DISPLAY" - "XDG_RUNTIME_DIR" - "DBUS_SESSION_BUS_ADDRESS" - ]; - } - ]; - }; -} diff --git a/modules/applications/swaylock/default.nix b/modules/applications/swaylock/default.nix deleted file mode 100644 index 2537b9a..0000000 --- a/modules/applications/swaylock/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.swaylock; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.swaylock = { - enable = lib.mkEnableOption "swaylock screen locker"; - }; - - config = lib.mkIf cfg.enable { - my.applications.swaylock.system.enable = lib.mkDefault true; - my.applications.swaylock.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/swaylock/home.nix b/modules/applications/swaylock/home.nix deleted file mode 100644 index 157aa1d..0000000 --- a/modules/applications/swaylock/home.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.swaylock; - hmCfg = config.my.applications.swaylock.homeManager; -in -{ - options.my.applications.swaylock.homeManager = { - enable = lib.mkEnableOption "swaylock home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - ( - { lib, pkgs, ... }: - { - config = lib.mkIf (cfg.enable && hmCfg.enable) { - home.packages = with pkgs; [ - swaylock # Wayland screen locker using ext-session-lock-v1 - ]; - - # systemd-lock-handler holds a sleep inhibitor until this service is - # ready. swaylock forks only after the compositor confirms the lock. - systemd.user.services.swaylock = { - Unit = { - Description = "Screen locker for Wayland"; - Documentation = [ "man:swaylock(1)" ]; - OnSuccess = [ "unlock.target" ]; - PartOf = [ "lock.target" ]; - Before = [ "lock.target" ]; - }; - - Service = { - Type = "forking"; - ExecStart = "${lib.getExe pkgs.swaylock} -f -i %h/.wallpapers/28.jpg"; - Restart = "on-failure"; - RestartSec = 0; - }; - - Install.WantedBy = [ "lock.target" ]; - }; - }; - } - ) - ]; -} diff --git a/modules/applications/swaylock/system.nix b/modules/applications/swaylock/system.nix deleted file mode 100644 index eaa0bc5..0000000 --- a/modules/applications/swaylock/system.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.swaylock.system; -in -{ - options.my.applications.swaylock.system = { - enable = lib.mkEnableOption "swaylock system configuration"; - }; - - config = lib.mkIf cfg.enable { - services.systemd-lock-handler.enable = true; - - security.pam.services.swaylock.fprintAuth = true; - - # PAM authentication is serial. Let a supplied password succeed before - # starting fprintd, whose scan otherwise blocks password verification until - # its timeout expires. Submit an empty password to start fingerprint - # authentication in upstream swaylock. - security.pam.services.swaylock.rules.auth.fprintd.order = - config.security.pam.services.swaylock.rules.auth.unix.order + 50; - }; -} diff --git a/modules/applications/tailscale.nix b/modules/applications/tailscale.nix deleted file mode 100644 index 7ac4de2..0000000 --- a/modules/applications/tailscale.nix +++ /dev/null @@ -1,118 +0,0 @@ -{ lib, config, ... }: - -let - cfg = config.my.applications.tailscale; - - hasAdvertiseRoutes = cfg.advertiseRoutes != [ ]; - - computedRoutingFeatures = - if cfg.routingFeatures != "auto" then - cfg.routingFeatures - else if hasAdvertiseRoutes && cfg.acceptRoutes then - "both" - else if hasAdvertiseRoutes then - "server" - else if cfg.acceptRoutes then - "client" - else - "none"; - - computedOpenFirewall = if cfg.openFirewall != null then cfg.openFirewall else hasAdvertiseRoutes; - - computedSetFlags = [ - "--accept-dns=${lib.boolToString cfg.acceptDns}" - "--accept-routes=${lib.boolToString cfg.acceptRoutes}" - ] - ++ lib.optionals hasAdvertiseRoutes [ - "--advertise-routes=${lib.concatStringsSep "," cfg.advertiseRoutes}" - ] - ++ cfg.extraSetFlags; -in -{ - options.my.applications.tailscale = { - enable = lib.mkEnableOption "Tailscale"; - - acceptDns = lib.mkOption { - type = lib.types.bool; - default = false; - description = "Accept DNS configuration from Tailscale."; - }; - - acceptRoutes = lib.mkOption { - type = lib.types.bool; - default = false; - description = "Accept subnet routes advertised by other Tailscale nodes."; - }; - - advertiseRoutes = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ ]; - example = [ "10.50.0.0/16" ]; - description = "Subnet routes to advertise through this Tailscale node."; - }; - - routingFeatures = lib.mkOption { - type = lib.types.enum [ - "auto" - "none" - "client" - "server" - "both" - ]; - default = "auto"; - description = '' - Routing feature mode for Tailscale. - - auto: - - advertiseRoutes only -> server - - acceptRoutes only -> client - - both -> both - - neither -> none - ''; - }; - - openFirewall = lib.mkOption { - type = lib.types.nullOr lib.types.bool; - default = null; - description = '' - Whether to open the firewall for Tailscale's UDP port. - - null means automatic: - - true when advertiseRoutes is non-empty - - false otherwise - ''; - }; - - extraSetFlags = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ ]; - description = "Additional flags to pass to `tailscale set`."; - }; - - extraUpFlags = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ ]; - description = '' - Additional flags to pass to `tailscale up`. - - Note: on current NixOS this is only applied by the built-in - autoconnect service when services.tailscale.authKeyFile is set. - ''; - }; - }; - - config = lib.mkIf cfg.enable { - services.tailscale = { - enable = true; - - openFirewall = computedOpenFirewall; - useRoutingFeatures = computedRoutingFeatures; - - # 常時反映したい設定は tailscale set に寄せる - extraSetFlags = computedSetFlags; - - # authKeyFile を使う場合だけ効くものとして残す - inherit (cfg) extraUpFlags; - }; - }; -} diff --git a/modules/applications/vicinae.nix b/modules/applications/vicinae.nix deleted file mode 100644 index 570545c..0000000 --- a/modules/applications/vicinae.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ - inputs, - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.vicinae; -in -{ - options.my.applications.vicinae = { - enable = lib.mkEnableOption "Vicinae application launcher"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - inputs.vicinae.homeManagerModules.default - { - programs.vicinae = { - enable = true; - systemd = { - enable = true; - autoStart = true; - environment = { - USE_LAYER_SHELL = 1; - }; - }; - - settings = { - font.size = 11; - close_on_focus_loss = true; - consider_preedit = true; - pop_to_root_on_close = true; - favicon_service = "twenty"; - search_files_in_root = true; - theme = { - light = { - name = "dracula"; - icon_theme = "default"; - }; - dark = { - name = "vicinae-light"; - icon_theme = "default"; - }; - }; - window = { - csd = true; - opacity = 0.95; - rounding = 10; - }; - }; - extensions = with inputs.vicinae-extensions.packages.${pkgs.stdenv.hostPlatform.system}; [ - nix - power-profile - niri - zoxide-recent-directories - ssh - port-killer - noctalia-shell-wallpaper-selector - ]; - }; - } - ]; - }; -} diff --git a/modules/applications/vim/default.nix b/modules/applications/vim/default.nix deleted file mode 100644 index 17711f3..0000000 --- a/modules/applications/vim/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.vim; -in -{ - imports = [ - ./home - ./system.nix - ]; - - options.my.applications.vim = { - enable = lib.mkEnableOption "vim text editor"; - }; - - config = lib.mkIf cfg.enable { - my.applications.vim.system.enable = lib.mkDefault true; - my.applications.vim.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/vim/home/autocmds.nix b/modules/applications/vim/home/autocmds.nix deleted file mode 100644 index 5b98f8b..0000000 --- a/modules/applications/vim/home/autocmds.nix +++ /dev/null @@ -1,8 +0,0 @@ -_: { - programs.nixvim.autoCmd = [ - { - event = "TextYankPost"; - callback.__raw = "function() vim.highlight.on_yank() end"; - } - ]; -} diff --git a/modules/applications/vim/home/colorscheme.nix b/modules/applications/vim/home/colorscheme.nix deleted file mode 100644 index 7a4049d..0000000 --- a/modules/applications/vim/home/colorscheme.nix +++ /dev/null @@ -1,6 +0,0 @@ -_: { - programs.nixvim.colorschemes.catppuccin = { - enable = true; - settings.transparent_background = true; - }; -} diff --git a/modules/applications/vim/home/default.nix b/modules/applications/vim/home/default.nix deleted file mode 100644 index 6e7bbc5..0000000 --- a/modules/applications/vim/home/default.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - pkgs, - unstable, - inputs, - lib, - config, - ... -}: -let - cfg = config.my.applications.vim.homeManager; -in -{ - options.my.applications.vim.homeManager = { - enable = lib.mkEnableOption "vim home-manager configuration"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - inputs.nixvim.homeModules.nixvim - ./options.nix - ./autocmds.nix - ./keymaps.nix - ./language.nix - ./colorscheme.nix - ./lsp.nix - ./plugins - { - programs.nixvim = { - enable = true; - vimAlias = true; - viAlias = true; - withNodeJs = true; - - nixpkgs = { - source = pkgs.path; - config.allowUnfree = true; - }; - - extraPackages = with pkgs; [ - git - ripgrep - fd - nodejs - zellij - - # LSP / formatter / misc - vtsls - vscode-langservers-extracted - tailwindcss-language-server - prettierd - unstable.prettier - biome - stylua - shfmt - alejandra - nixfmt - lua-language-server - nixd - ]; - }; - } - ]; - }; -} diff --git a/modules/applications/vim/home/keymaps.nix b/modules/applications/vim/home/keymaps.nix deleted file mode 100644 index cefe442..0000000 --- a/modules/applications/vim/home/keymaps.nix +++ /dev/null @@ -1,202 +0,0 @@ -_: -let - mk = key: action: desc: { - mode = "n"; - inherit key action; - options = { - silent = true; - inherit desc; - }; - }; - - mkRaw = key: raw: desc: { - mode = "n"; - inherit key; - action.__raw = raw; - options = { - silent = true; - inherit desc; - }; - }; - - mkExpr = key: raw: desc: { - mode = "n"; - inherit key; - action.__raw = raw; - options = { - silent = true; - expr = true; - inherit desc; - }; - }; - - mkSmartWindowNav = key: direction: zellijDirection: desc: { - mode = "n"; - inherit key; - action.__raw = '' - function() - local current_win = vim.api.nvim_get_current_win() - vim.cmd.wincmd("${direction}") - - local at_edge = vim.api.nvim_get_current_win() == current_win - local in_zellij = vim.env.ZELLIJ ~= nil - local has_zellij_cli = vim.fn.executable("zellij") == 1 - - if at_edge and in_zellij and has_zellij_cli then - vim.system({ "zellij", "action", "move-focus-or-tab", "${zellijDirection}" }) - end - end - ''; - options = { - silent = true; - inherit desc; - }; - }; -in -{ - programs.nixvim = { - opts = { - # ジャンプ履歴をスタック寄りに扱う - jumpoptions = "stack"; - - # 既に開いているバッファや直前のウィンドウを優先して再利用 - switchbuf = "useopen,uselast"; - }; - - keymaps = [ - # Search - (mk "" "nohlsearch" "検索ハイライトを解除") - - # Screen line movement - (mkExpr "j" "function() return vim.v.count == 0 and 'gj' or 'j' end" "下へ移動(画面行優先)") - (mkExpr "k" "function() return vim.v.count == 0 and 'gk' or 'k' end" "上へ移動(画面行優先)") - - # LSP: hover / direct jump - (mkRaw "K" "vim.lsp.buf.hover" "シンボル情報を表示") - (mkRaw "gd" "vim.lsp.buf.definition" "定義へジャンプ") - (mkRaw "grr" "vim.lsp.buf.references" "参照一覧を開く") - (mkRaw "gri" "vim.lsp.buf.implementation" "実装一覧を開く") - (mkRaw "grt" "vim.lsp.buf.type_definition" "型定義一覧を開く") - (mkRaw "grn" "vim.lsp.buf.rename" "シンボル名を一括変換") - (mkRaw "gra" "vim.lsp.buf.code_action" "コードアクション") - (mkRaw "gO" "vim.lsp.buf.document_symbol" "現在ファイルのシンボル一覧") - - # Glance: preview / peek - (mk "gD" "Glance definitions" "定義をプレビュー") - (mk "gR" "Glance references" "参照をプレビュー") - (mk "gM" "Glance implementations" "実装をプレビュー") - (mk "gY" "Glance type_definitions" "型定義をプレビュー") - (mk "g." "Glance resume" "直前のGlanceを再開") - - # Convenience aliases - (mkRaw "rn" "vim.lsp.buf.rename" "シンボル名を一括変換") - (mkRaw "cf" - "function() require('conform').format({ timeout_ms = 1000, lsp_format = 'fallback' }) end" - "コードをフォーマット" - ) - (mkRaw "ca" "vim.lsp.buf.code_action" "コードアクション") - - # Diagnostics - (mkRaw "]d" "vim.diagnostic.goto_next" "次の診断へ移動") - (mkRaw "[d" "vim.diagnostic.goto_prev" "前の診断へ移動") - (mkRaw "dl" "vim.diagnostic.open_float" "診断の詳細を表示") - - # File tree - (mk "e" "Neotree toggle left" "ファイルツリー") - - # Terminal - (mk "tt" "ToggleTerm direction=float" "ターミナル") - - # Trouble - (mk "xx" "Trouble diagnostics toggle" "診断一覧") - (mk "xq" "Trouble qflist toggle" "Quickfix一覧") - (mk "xl" "Trouble loclist toggle" "Location List一覧") - (mk "xs" "Trouble symbols toggle" "シンボル一覧") - (mk "xw" "Trouble lsp toggle" "LSP一覧") - - # Quickfix / Location list navigation - (mk "]q" "cnext" "次のQuickfixへ") - (mk "[q" "cprev" "前のQuickfixへ") - (mk "]l" "lnext" "次のLocation Listへ") - (mk "[l" "lprev" "前のLocation Listへ") - - # Window navigation - (mkSmartWindowNav "" "h" "left" "左のウィンドウへ(端ならZellijペイン/タブへ)") - (mkSmartWindowNav "" "j" "down" "下のウィンドウへ(端ならZellijペインへ)") - (mkSmartWindowNav "" "k" "up" "上のウィンドウへ(端ならZellijペインへ)") - (mkSmartWindowNav "" "l" "right" "右のウィンドウへ(端ならZellijペイン/タブへ)") - (mkSmartWindowNav "" "h" "left" "左のウィンドウへ(端ならZellijペイン/タブへ)") - (mkSmartWindowNav "" "j" "down" "下のウィンドウへ(端ならZellijペインへ)") - (mkSmartWindowNav "" "k" "up" "上のウィンドウへ(端ならZellijペインへ)") - (mkSmartWindowNav "" "l" "right" "右のウィンドウへ(端ならZellijペイン/タブへ)") - - # Alternate file / previous file - (mk "" "" "直前のファイルへ戻る") - (mk "w-" "" "直前のファイルをsplitで開く") - - # Buffer Bar - (mk "[b" "BufferPrevious" "前のバッファーに移動") - (mk "]b" "BufferNext" "次のバッファーに移動") - (mk "bc" "BufferClose" "バッファーを閉じる") - - # Git Conflict - (mk "gco" "GitConflictChooseOurs" "現在のブランチを選択") - (mk "gct" "GitConflictChooseTheirs" "相手のブランチを選択") - (mk "gcb" "GitConflictChooseBoth" "両方を選択") - (mk "gcx" "GitConflictListQf" "コンフリクト一覧") - (mk "]x" "GitConflictNextConflict" "次のコンフリクト") - (mk "[x" "GitConflictPrevConflict" "前のコンフリクト") - - # Git - (mk "gl" "LazyGit" "LazyGitを開く") - (mk "gd" "DiffviewOpen" "差分を開く") - (mk "gH" "DiffviewFileHistory" "リポジトリ履歴") - (mk "gh" "DiffviewFileHistory %" "現在ファイルの履歴") - (mk "gq" "DiffviewClose" "差分を閉じる") - - # Markview - (mk "mp" "Markview splitToggle" "Markdownプレビュー") - - # Zen Mode - (mk "zz" "ZenMode" "Zen Modeを開く/閉じる") - - # UFO (folding) - (mkRaw "zR" "require('ufo').openAllFolds" "全て展開") - (mkRaw "zM" "require('ufo').closeAllFolds" "全て折りたたむ") - - # Dropbar - (mkRaw "dp" "function() require('dropbar.api').pick() end" "dropbarでナビゲート") - - # Snacks - (mkRaw "sd" "function() Snacks.dim.toggle() end" "Dimモードをトグル") - - # Flash - (mkRaw "s" "function() require('flash').jump() end" "Flashジャンプ") - (mkRaw "S" "function() require('flash').treesitter() end" "Flashツリーシッタ選択") - - # Todo Comments - (mk "]t" "TodoNext" "次のTODO") - (mk "[t" "TodoPrev" "前のTODO") - (mkRaw "ft" "function() Snacks.picker.todo_comments() end" "TODO一覧") - - # Spectre - (mkRaw "sr" "function() require('spectre').toggle() end" "検索・置換") - - # Snacks Picker: generic - (mkRaw "ff" "function() Snacks.picker.files() end" "ファイルを探す") - (mkRaw "fg" "function() Snacks.picker.grep() end" "文字列を全文検索") - (mkRaw "fb" "function() Snacks.picker.buffers() end" "開いているバッファを探す") - (mkRaw "fh" "function() Snacks.picker.help() end" "ヘルプ項目を探す") - (mkRaw "fk" "function() Snacks.picker.keymaps() end" "キーマップを探す") - (mkRaw "fc" "function() Snacks.picker.commands() end" "コマンドを探す") - - # Snacks Picker: code navigation - (mkRaw "fs" "function() Snacks.picker.lsp_symbols() end" "現在ファイルのシンボルを探す") - (mkRaw "fS" "function() Snacks.picker.lsp_workspace_symbols() end" "ワークスペース全体のシンボルを探す") - (mkRaw "fr" "function() Snacks.picker.registers() end" "レジスタを探す") - (mkRaw "fj" "function() Snacks.picker.jumps() end" "ジャンプ履歴を探す") - (mkRaw "fq" "function() Snacks.picker.qflist() end" "Quickfixを探す") - (mkRaw "fl" "function() Snacks.picker.loclist() end" "Location Listを探す") - ]; - }; -} diff --git a/modules/applications/vim/home/language.nix b/modules/applications/vim/home/language.nix deleted file mode 100644 index 10faa21..0000000 --- a/modules/applications/vim/home/language.nix +++ /dev/null @@ -1,13 +0,0 @@ -_: { - programs.nixvim = { - env = { - LANG = "ja_JP.UTF-8"; - LC_MESSAGES = "ja_JP.UTF-8"; - }; - - extraConfigLua = '' - vim.cmd.language("ja_JP.utf8") - vim.opt.helplang = { "ja", "en" } - ''; - }; -} diff --git a/modules/applications/vim/home/lsp.nix b/modules/applications/vim/home/lsp.nix deleted file mode 100644 index 5761b87..0000000 --- a/modules/applications/vim/home/lsp.nix +++ /dev/null @@ -1,65 +0,0 @@ -_: { - programs.nixvim = { - plugins.lsp = { - enable = true; - - servers = { - # TypeScript / JavaScript - vtsls = { - enable = true; - packageFallback = true; - rootMarkers = [ - "pnpm-workspace.yaml" - "package.json" - "tsconfig.json" - "jsconfig.json" - ".git" - ]; - extraOptions.settings.typescript.locale = "ja"; - }; - - # Biome for lint / format - biome = { - enable = true; - packageFallback = true; - rootMarkers = [ - "biome.json" - "biome.jsonc" - "package.json" - "pnpm-workspace.yaml" - ".git" - ]; - }; - - # Frontend / config languages - tailwindcss.enable = true; - cssls.enable = true; - jsonls.enable = true; - yamlls.enable = true; - lua_ls.enable = true; - nixd.enable = true; - - # Other languages - rust_analyzer = { - enable = true; - installCargo = true; - installRustc = true; - }; - svelte.enable = true; - ty.enable = true; - ruff.enable = true; - astro.enable = true; - gopls.enable = true; - }; - }; - - # Diagnostic UI - diagnostic.settings = { - virtual_text = true; - float = { - border = "rounded"; - source = true; - }; - }; - }; -} diff --git a/modules/applications/vim/home/options.nix b/modules/applications/vim/home/options.nix deleted file mode 100644 index 2470b1c..0000000 --- a/modules/applications/vim/home/options.nix +++ /dev/null @@ -1,50 +0,0 @@ -_: { - programs.nixvim = { - opts = { - # display - number = true; - relativenumber = true; - signcolumn = "yes"; - termguicolors = true; - - # action - mouse = "a"; - clipboard = "unnamedplus"; - updatetime = 200; - timeoutlen = 300; - undofile = true; - - # display - wrap = false; - scrolloff = 8; - - # search - ignorecase = true; - smartcase = true; - - # window split - splitright = true; - splitbelow = true; - - # indent - tabstop = 2; - shiftwidth = 2; - expandtab = true; - - # file encoding - encoding = "utf-8"; - fileencoding = "utf-8"; - fileencodings = "utf-8,sjis,euc-jp,iso-2022-jp"; - - # invisible characters - list = true; - listchars = "tab:»-,trail:-,extends:»,precedes:«,nbsp:%"; - }; - - globals = { - mapleader = " "; - maplocalleader = " "; - clipboard = "osc52"; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/default.nix b/modules/applications/vim/home/plugins/default.nix deleted file mode 100644 index ec310f7..0000000 --- a/modules/applications/vim/home/plugins/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ ... }: -{ - imports = [ - ./editor - ./ui - ]; -} diff --git a/modules/applications/vim/home/plugins/editor/autopairs.nix b/modules/applications/vim/home/plugins/editor/autopairs.nix deleted file mode 100644 index 3802ad6..0000000 --- a/modules/applications/vim/home/plugins/editor/autopairs.nix +++ /dev/null @@ -1,3 +0,0 @@ -_: { - programs.nixvim.plugins.nvim-autopairs.enable = true; -} diff --git a/modules/applications/vim/home/plugins/editor/blink-cmp.nix b/modules/applications/vim/home/plugins/editor/blink-cmp.nix deleted file mode 100644 index 9d114cf..0000000 --- a/modules/applications/vim/home/plugins/editor/blink-cmp.nix +++ /dev/null @@ -1,56 +0,0 @@ -_: { - programs.nixvim.plugins.blink-cmp = { - enable = true; - setupLspCapabilities = true; - - settings = { - keymap = { - preset = "enter"; - - "" = [ "show" ]; - "" = [ "scroll_documentation_up" ]; - "" = [ "hide" ]; - "" = [ "scroll_documentation_down" ]; - - "" = [ - "accept" - { - __raw = '' - function() - local ok, copilot = pcall(require, "copilot.suggestion") - if ok and copilot.is_visible() then - copilot.accept() - return true - end - end - ''; - } - "fallback" - ]; - "" = [ - "select_prev" - "fallback" - ]; - "" = [ - "select_next" - "fallback" - ]; - "" = [ - "select_prev" - "fallback" - ]; - }; - - completion.list.selection = { - preselect = true; - auto_insert = false; - }; - - sources.default = [ - "lsp" - "path" - "buffer" - ]; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/comment.nix b/modules/applications/vim/home/plugins/editor/comment.nix deleted file mode 100644 index c6a216d..0000000 --- a/modules/applications/vim/home/plugins/editor/comment.nix +++ /dev/null @@ -1,3 +0,0 @@ -_: { - programs.nixvim.plugins.comment.enable = true; -} diff --git a/modules/applications/vim/home/plugins/editor/conform.nix b/modules/applications/vim/home/plugins/editor/conform.nix deleted file mode 100644 index 6f4bb62..0000000 --- a/modules/applications/vim/home/plugins/editor/conform.nix +++ /dev/null @@ -1,27 +0,0 @@ -_: { - programs.nixvim.plugins."conform-nvim" = { - enable = true; - settings = { - formatters_by_ft = { - javascript.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }''; - javascriptreact.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }''; - typescript.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }''; - typescriptreact.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }''; - json.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }''; - yaml.__raw = ''{ "prettierd", "prettier", stop_after_first = true }''; - markdown.__raw = ''{ "prettierd", "prettier", stop_after_first = true }''; - lua = [ "stylua" ]; - nix.__raw = ''{ "nix_fmt", "alejandra", stop_after_first = true }''; - sh = [ "shfmt" ]; - }; - formatters.nix_fmt = { - command = "nixfmt"; - }; - format_on_save.__raw = '' - function(_) - return { timeout_ms = 1000, lsp_format = "fallback" } - end - ''; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/copilot.nix b/modules/applications/vim/home/plugins/editor/copilot.nix deleted file mode 100644 index 4bbb86f..0000000 --- a/modules/applications/vim/home/plugins/editor/copilot.nix +++ /dev/null @@ -1,11 +0,0 @@ -_: { - programs.nixvim.plugins.copilot-lua = { - enable = true; - settings = { - suggestion = { - auto_trigger = true; - keymap.enabled = false; - }; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/default.nix b/modules/applications/vim/home/plugins/editor/default.nix deleted file mode 100644 index d03d572..0000000 --- a/modules/applications/vim/home/plugins/editor/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ ... }: -{ - imports = [ - ./autopairs.nix - ./blink-cmp.nix - ./comment.nix - ./conform.nix - ./copilot.nix - ./flash.nix - ./git-conflict.nix - ./git.nix - ./gitsigns.nix - ./glance.nix - ./lsp-signature.nix - ./snacks.nix - ./spectre.nix - ./surround.nix - ./todo-comments.nix - ./treesitter.nix - ./trouble.nix - ./wakatime.nix - ]; -} diff --git a/modules/applications/vim/home/plugins/editor/flash.nix b/modules/applications/vim/home/plugins/editor/flash.nix deleted file mode 100644 index d899445..0000000 --- a/modules/applications/vim/home/plugins/editor/flash.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - extraPlugins = [ pkgs.vimPlugins.flash-nvim ]; - extraConfigLua = '' - require("flash").setup() - ''; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/git-conflict.nix b/modules/applications/vim/home/plugins/editor/git-conflict.nix deleted file mode 100644 index 8c8663c..0000000 --- a/modules/applications/vim/home/plugins/editor/git-conflict.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - extraPlugins = [ pkgs.vimPlugins.git-conflict-nvim ]; - extraConfigLua = '' - require("git-conflict").setup() - ''; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/git.nix b/modules/applications/vim/home/plugins/editor/git.nix deleted file mode 100644 index cd904cb..0000000 --- a/modules/applications/vim/home/plugins/editor/git.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - extraPackages = [ pkgs.lazygit ]; - - plugins = { - lazygit.enable = true; - diffview.enable = true; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/gitsigns.nix b/modules/applications/vim/home/plugins/editor/gitsigns.nix deleted file mode 100644 index 6a7e881..0000000 --- a/modules/applications/vim/home/plugins/editor/gitsigns.nix +++ /dev/null @@ -1,25 +0,0 @@ -_: { - # git change view - programs.nixvim.plugins.gitsigns = { - enable = true; - settings = { - signs = { - add = { - text = "+"; - }; - change = { - text = "~"; - }; - delete = { - text = "_"; - }; - topdelete = { - text = "‾"; - }; - changedelete = { - text = "~"; - }; - }; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/glance.nix b/modules/applications/vim/home/plugins/editor/glance.nix deleted file mode 100644 index bea6bd3..0000000 --- a/modules/applications/vim/home/plugins/editor/glance.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - extraPlugins = [ pkgs.vimPlugins.glance-nvim ]; - extraConfigLua = '' - require("glance").setup() - ''; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/lsp-signature.nix b/modules/applications/vim/home/plugins/editor/lsp-signature.nix deleted file mode 100644 index 361bb67..0000000 --- a/modules/applications/vim/home/plugins/editor/lsp-signature.nix +++ /dev/null @@ -1,11 +0,0 @@ -_: { - programs.nixvim.plugins.lsp-signature = { - enable = true; - settings = { - hint_enable = true; - hint_prefix = " "; - floating_window = true; - bind = true; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/snacks.nix b/modules/applications/vim/home/plugins/editor/snacks.nix deleted file mode 100644 index 86ace40..0000000 --- a/modules/applications/vim/home/plugins/editor/snacks.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - extraPlugins = [ pkgs.vimPlugins.snacks-nvim ]; - - extraConfigLua = '' - require("snacks").setup({ - picker = { - enabled = true, - - actions = require("trouble.sources.snacks").actions, - - win = { - input = { - keys = { - [""] = { - "trouble_open", - mode = { "n", "i" }, - }, - }, - }, - }, - }, - - notifier = { enabled = true }, - words = { enabled = true }, - scroll = { enabled = true }, - dim = { enabled = true }, - }) - ''; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/spectre.nix b/modules/applications/vim/home/plugins/editor/spectre.nix deleted file mode 100644 index 60c2e4c..0000000 --- a/modules/applications/vim/home/plugins/editor/spectre.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - extraPackages = [ pkgs.ripgrep ]; - extraPlugins = [ pkgs.vimPlugins.nvim-spectre ]; - extraConfigLua = '' - require("spectre").setup() - ''; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/surround.nix b/modules/applications/vim/home/plugins/editor/surround.nix deleted file mode 100644 index 83276b4..0000000 --- a/modules/applications/vim/home/plugins/editor/surround.nix +++ /dev/null @@ -1,3 +0,0 @@ -_: { - programs.nixvim.plugins.nvim-surround.enable = true; -} diff --git a/modules/applications/vim/home/plugins/editor/todo-comments.nix b/modules/applications/vim/home/plugins/editor/todo-comments.nix deleted file mode 100644 index fa3303a..0000000 --- a/modules/applications/vim/home/plugins/editor/todo-comments.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - extraPlugins = [ pkgs.vimPlugins.todo-comments-nvim ]; - extraConfigLua = '' - require("todo-comments").setup() - ''; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/treesitter.nix b/modules/applications/vim/home/plugins/editor/treesitter.nix deleted file mode 100644 index 32208b1..0000000 --- a/modules/applications/vim/home/plugins/editor/treesitter.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - plugins.treesitter = { - enable = true; - settings = { - highlight.enable = true; - indent.enable = true; - }; - }; - - extraPlugins = [ pkgs.vimPlugins.nvim-ts-autotag ]; - extraConfigLua = '' - require("nvim-ts-autotag").setup() - ''; - }; -} diff --git a/modules/applications/vim/home/plugins/editor/trouble.nix b/modules/applications/vim/home/plugins/editor/trouble.nix deleted file mode 100644 index c7ce674..0000000 --- a/modules/applications/vim/home/plugins/editor/trouble.nix +++ /dev/null @@ -1,3 +0,0 @@ -_: { - programs.nixvim.plugins.trouble.enable = true; -} diff --git a/modules/applications/vim/home/plugins/editor/wakatime.nix b/modules/applications/vim/home/plugins/editor/wakatime.nix deleted file mode 100644 index 04dc233..0000000 --- a/modules/applications/vim/home/plugins/editor/wakatime.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim.extraPlugins = [ pkgs.vimPlugins.vim-wakatime ]; -} diff --git a/modules/applications/vim/home/plugins/ui/barbar.nix b/modules/applications/vim/home/plugins/ui/barbar.nix deleted file mode 100644 index 474a5a0..0000000 --- a/modules/applications/vim/home/plugins/ui/barbar.nix +++ /dev/null @@ -1,26 +0,0 @@ -_: { - programs.nixvim.plugins.barbar = { - enable = true; - settings = { - animation = false; - auto_hide = 1; - tabpages = true; - clickable = true; - focus_on_close = "left"; - - icons = { - button = "󰅖"; - separator = { - left = "▎"; - right = ""; - }; - separator_at_end = false; - filetype.enabled = true; - }; - - sidebar_filetypes = { - neo-tree = true; - }; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/ui/blankline.nix b/modules/applications/vim/home/plugins/ui/blankline.nix deleted file mode 100644 index 3439350..0000000 --- a/modules/applications/vim/home/plugins/ui/blankline.nix +++ /dev/null @@ -1,20 +0,0 @@ -_: { - programs.nixvim.plugins.indent-blankline = { - enable = true; - settings = { - scope = { - enabled = true; - show_start = true; - show_end = true; - }; - exclude = { - filetypes = [ - "help" - "neo-tree" - "toggleterm" - "lazy" - ]; - }; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/ui/colorizer.nix b/modules/applications/vim/home/plugins/ui/colorizer.nix deleted file mode 100644 index 54b6c4e..0000000 --- a/modules/applications/vim/home/plugins/ui/colorizer.nix +++ /dev/null @@ -1,26 +0,0 @@ -_: { - programs.nixvim.plugins.colorizer = { - enable = true; - - settings = { - filetypes = [ - "*" - "!markdown" - ]; - user_commands = true; - - options = { - parsers = { - css = true; - tailwind = { - enable = true; - lsp = true; - update_names = true; - }; - }; - - display.mode = "background"; - }; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/ui/default.nix b/modules/applications/vim/home/plugins/ui/default.nix deleted file mode 100644 index 0e72a6f..0000000 --- a/modules/applications/vim/home/plugins/ui/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ ... }: -{ - imports = [ - ./barbar.nix - ./blankline.nix - ./colorizer.nix - ./dropbar.nix - ./lightbulb.nix - ./lualine.nix - ./markview.nix - ./neo-tree.nix - ./scrollbar.nix - ./toggleterm.nix - ./treesitter.nix - ./ufo.nix - ./web-devicons.nix - ./which-key.nix - ./zen-mode.nix - ]; -} diff --git a/modules/applications/vim/home/plugins/ui/dropbar.nix b/modules/applications/vim/home/plugins/ui/dropbar.nix deleted file mode 100644 index d6eea7d..0000000 --- a/modules/applications/vim/home/plugins/ui/dropbar.nix +++ /dev/null @@ -1,3 +0,0 @@ -_: { - programs.nixvim.plugins.dropbar.enable = true; -} diff --git a/modules/applications/vim/home/plugins/ui/lightbulb.nix b/modules/applications/vim/home/plugins/ui/lightbulb.nix deleted file mode 100644 index fd887e3..0000000 --- a/modules/applications/vim/home/plugins/ui/lightbulb.nix +++ /dev/null @@ -1,6 +0,0 @@ -_: { - programs.nixvim.plugins.nvim-lightbulb = { - enable = true; - settings.autocmd.enabled = true; - }; -} diff --git a/modules/applications/vim/home/plugins/ui/lualine.nix b/modules/applications/vim/home/plugins/ui/lualine.nix deleted file mode 100644 index 8c7a508..0000000 --- a/modules/applications/vim/home/plugins/ui/lualine.nix +++ /dev/null @@ -1,25 +0,0 @@ -_: { - programs.nixvim.plugins.lualine = { - enable = true; - settings.sections.lualine_x = [ - { - __raw = '' - function() - local ok, conform = pcall(require, "conform") - if not ok then return "" end - local formatters = conform.list_formatters(0) - for _, f in ipairs(formatters) do - if f.available then - return "󰛖 " .. f.name - end - end - return "" - end - ''; - } - "encoding" - "fileformat" - "filetype" - ]; - }; -} diff --git a/modules/applications/vim/home/plugins/ui/markview.nix b/modules/applications/vim/home/plugins/ui/markview.nix deleted file mode 100644 index a67adc1..0000000 --- a/modules/applications/vim/home/plugins/ui/markview.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - extraPlugins = [ pkgs.vimPlugins.markview-nvim ]; - extraConfigLua = '' - require("markview").setup({ initial_state = false }) - ''; - }; -} diff --git a/modules/applications/vim/home/plugins/ui/neo-tree.nix b/modules/applications/vim/home/plugins/ui/neo-tree.nix deleted file mode 100644 index f3fe5e8..0000000 --- a/modules/applications/vim/home/plugins/ui/neo-tree.nix +++ /dev/null @@ -1,37 +0,0 @@ -_: { - programs.nixvim = { - plugins.neo-tree = { - enable = true; - settings = { - close_if_last_window = true; - - filesystem = { - follow_current_file = { - enabled = true; - leave_dirs_open = true; - }; - - filtered_items = { - visible = true; - hide_dotfiles = false; - hide_gitignored = true; - hide_ignored = false; - hide_hidden = false; - - hide_by_name = [ ]; - hide_by_pattern = [ ]; - - always_show = [ ]; - always_show_by_pattern = [ ]; - - never_show = [ - ".DS_Store" - "thumbs.db" - ]; - never_show_by_pattern = [ ]; - }; - }; - }; - }; - }; -} diff --git a/modules/applications/vim/home/plugins/ui/scrollbar.nix b/modules/applications/vim/home/plugins/ui/scrollbar.nix deleted file mode 100644 index c7c53b5..0000000 --- a/modules/applications/vim/home/plugins/ui/scrollbar.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - extraPlugins = [ pkgs.vimPlugins.nvim-scrollbar ]; - extraConfigLua = '' - require("scrollbar").setup() - ''; - }; -} diff --git a/modules/applications/vim/home/plugins/ui/toggleterm.nix b/modules/applications/vim/home/plugins/ui/toggleterm.nix deleted file mode 100644 index 123dde3..0000000 --- a/modules/applications/vim/home/plugins/ui/toggleterm.nix +++ /dev/null @@ -1,3 +0,0 @@ -_: { - programs.nixvim.plugins.toggleterm.enable = true; -} diff --git a/modules/applications/vim/home/plugins/ui/treesitter.nix b/modules/applications/vim/home/plugins/ui/treesitter.nix deleted file mode 100644 index 9a3f85e..0000000 --- a/modules/applications/vim/home/plugins/ui/treesitter.nix +++ /dev/null @@ -1,3 +0,0 @@ -_: { - programs.nixvim.plugins."treesitter-context".enable = true; -} diff --git a/modules/applications/vim/home/plugins/ui/ufo.nix b/modules/applications/vim/home/plugins/ui/ufo.nix deleted file mode 100644 index d59f54c..0000000 --- a/modules/applications/vim/home/plugins/ui/ufo.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - opts = { - foldcolumn = "1"; - foldlevel = 99; - foldlevelstart = 99; - foldenable = true; - }; - - extraPlugins = [ - pkgs.vimPlugins.nvim-ufo - pkgs.vimPlugins.promise-async - ]; - - extraConfigLua = '' - require("ufo").setup({ - provider_selector = function() - return { "treesitter", "indent" } - end, - }) - ''; - }; -} diff --git a/modules/applications/vim/home/plugins/ui/web-devicons.nix b/modules/applications/vim/home/plugins/ui/web-devicons.nix deleted file mode 100644 index 12d195f..0000000 --- a/modules/applications/vim/home/plugins/ui/web-devicons.nix +++ /dev/null @@ -1,4 +0,0 @@ -_: { - # icon set preview - programs.nixvim.plugins.web-devicons.enable = true; -} diff --git a/modules/applications/vim/home/plugins/ui/which-key.nix b/modules/applications/vim/home/plugins/ui/which-key.nix deleted file mode 100644 index 7f0441d..0000000 --- a/modules/applications/vim/home/plugins/ui/which-key.nix +++ /dev/null @@ -1,4 +0,0 @@ -_: { - # key map help - programs.nixvim.plugins.which-key.enable = true; -} diff --git a/modules/applications/vim/home/plugins/ui/zen-mode.nix b/modules/applications/vim/home/plugins/ui/zen-mode.nix deleted file mode 100644 index 23c7a5f..0000000 --- a/modules/applications/vim/home/plugins/ui/zen-mode.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: -{ - programs.nixvim = { - extraPlugins = [ pkgs.vimPlugins.zen-mode-nvim ]; - extraConfigLua = '' - require("zen-mode").setup() - ''; - }; -} diff --git a/modules/applications/vim/system.nix b/modules/applications/vim/system.nix deleted file mode 100644 index 8098b91..0000000 --- a/modules/applications/vim/system.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.vim.system; -in -{ - options.my.applications.vim.system = { - enable = lib.mkEnableOption "vim system configuration"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - vim # Highly configurable text editor - ]; - - environment.variables.EDITOR = "nvim"; - }; -} diff --git a/modules/applications/vscode/default.nix b/modules/applications/vscode/default.nix deleted file mode 100644 index 96a36d3..0000000 --- a/modules/applications/vscode/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.vscode; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.vscode = { - enable = lib.mkEnableOption "Visual Studio Code editor"; - }; - - config = lib.mkIf cfg.enable { - my.applications.vscode.system.enable = lib.mkDefault true; - my.applications.vscode.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/vscode/home.nix b/modules/applications/vscode/home.nix deleted file mode 100644 index 330ce64..0000000 --- a/modules/applications/vscode/home.nix +++ /dev/null @@ -1,304 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.vscode.homeManager; - vsc = pkgs.vscode-extensions; - inherit (lib) recursiveUpdate; - - rustLibclangPath = pkgs.lib.makeLibraryPath [ pkgs.llvmPackages_latest.libclang.lib ]; - - rustBindgenExtraClangArgs = lib.concatStringsSep " " ( - (builtins.map (a: ''-I"${a}/include"'') [ - pkgs.glibc.dev - ]) - ++ [ - ''-I"${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include"'' - ''-I"${pkgs.glib.dev}/include/glib-2.0"'' - "-I${pkgs.glib.out}/lib/glib-2.0/include/" - ] - ); - - layers = rec { - common = { - extensions = - (with vsc; [ - github.copilot - github.copilot-chat - dracula-theme.theme-dracula - ms-vscode-remote.vscode-remote-extensionpack - dbaeumer.vscode-eslint - ms-vscode-remote.remote-containers - ms-vscode-remote.remote-ssh - github.vscode-github-actions - github.vscode-pull-request-github - eamodio.gitlens - streetsidesoftware.code-spell-checker - ms-ceintl.vscode-language-pack-ja - ]) - ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ - { - name = "hadolint"; - publisher = "exiasr"; - version = "1.1.2"; - hash = "sha256-6GO1f8SP4CE8yYl87/tm60FdGHqHsJA4c2B6UKVdpgM="; - } - { - name = "chatgpt"; - publisher = "openai"; - version = "0.4.71"; - hash = "sha256-Q0le5rhVRgTDQXjIlhbzJOv/7+xC6JXwTp6fxZCP4ak="; - } - ]; - userSettings = { - "workbench.colorTheme" = "Dracula"; - "window.autoDetectColorScheme" = false; - "editor.formatOnSave" = true; - "editor.defaultFormatter" = "esbenp.prettier-vscode"; - "git.enableSmartCommit" = true; - "files.autoSave" = "onFocusChange"; - "git.confirmSync" = false; - "github.copilot.nextEditSuggestions.enabled" = true; - "editor.suggestOnTriggerCharacters" = true; - "editor.quickSuggestions" = { - other = true; - comments = false; - strings = true; - }; - "git.autofetch" = true; - "workbench.editor.enablePreview" = false; - - "files.exclude" = { - "**/.direnv" = true; - "**/.direnv/**" = true; - }; - - "search.exclude" = { - "**/.direnv" = true; - "**/.direnv/**" = true; - }; - }; - }; - - web = { - extensions = - (with vsc; [ - lokalise.i18n-ally - bradlc.vscode-tailwindcss - prisma.prisma - hashicorp.terraform - yoavbls.pretty-ts-errors - ]) - ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ - { - name = "pnpm-catalog-lens"; - publisher = "antfu"; - version = "1.0.0"; - hash = "sha256-mCMBVxZRIb3Jao1XSS7EQRQX3Y2vrkpAmy6ldSqZa9c="; - } - { - name = "explorer"; - publisher = "vitest"; - version = "1.32.1"; - hash = "sha256-MAfjS/oFfFuiE+Q2w6leSlao436QSw2fKjd7/BE/Q8Y="; - } - ]; - userSettings = { }; - }; - - web-biome = { - extensions = with vsc; [ - biomejs.biome - ]; - userSettings = { - "editor.defaultFormatter" = "biomejs.biome"; - "[typescript].editor.defaultFormatter" = "biomejs.biome"; - "[typescriptreact].editor.defaultFormatter" = "biomejs.biome"; - }; - }; - - web-oxc = { - extensions = pkgs.vscode-utils.extensionsFromVscodeMarketplace [ - { - name = "oxc-vscode"; - publisher = "oxc"; - version = "1.48.0"; - hash = "sha256-RZ7mLcLJyn7lR6w6Au6fZeguB3wtk8sIXb67lPnPnrc="; - } - ]; - userSettings = { - "editor.defaultFormatter" = "oxc.oxc-vscode"; - "[typescript].editor.defaultFormatter" = "oxc.oxc-vscode"; - "[typescriptreact].editor.defaultFormatter" = "oxc.oxc-vscode"; - }; - }; - - nix = { - extensions = with vsc; [ - bbenoist.nix - jnoortheen.nix-ide - ]; - userSettings = { - "nix.enableLanguageServer" = true; - "nix.serverPath" = "nil"; - "[nix]" = { - "editor.defaultFormatter" = "jnoortheen.nix-ide"; - }; - }; - }; - - jupyter = { - extensions = with vsc; [ - ms-toolsai.jupyter - ms-python.python - ]; - userSettings = { }; - }; - - java = { - extensions = with vsc; [ - vscjava.vscode-java-pack - sonarsource.sonarlint-vscode - vscjava.vscode-java-debug - redhat.java - ]; - - userSettings = { - "java.jdt.ls.java.home" = "${pkgs.jdk25.home}"; - "java.configuration.runtimes" = [ - { - "name" = "JavaSE-25"; - "path" = "${pkgs.jdk25.home}"; - "default" = true; - } - ]; - - "editor.codeLens" = true; - "java.debug.settings.enableRunDebugCodeLens" = true; - - "java.jdt.ls.vmargs" = "-Xms256m -Xmx2G -XX:+UseG1GC -XX:+UseStringDeduplication"; - - "java.configuration.updateBuildConfiguration" = "interactive"; - - "java.maven.downloadSources" = true; - "java.eclipse.downloadSources" = true; - - "maven.executable.path" = "${pkgs.maven}/bin/mvn"; - - "[java]" = { - "editor.defaultFormatter" = "redhat.java"; - }; - }; - }; - - rust = { - extensions = with vsc; [ - rust-lang.rust-analyzer - vadimcn.vscode-lldb - serayuzgur.crates - tamasfe.even-better-toml - ]; - - userSettings = { - "[rust]" = { - "editor.defaultFormatter" = "rust-lang.rust-analyzer"; - "editor.formatOnSave" = true; - "editor.codeActionsOnSave" = { - "source.organizeImports" = true; - "source.fixAll" = true; - }; - }; - - "rust-analyzer.checkOnSave" = true; - "rust-analyzer.check.command" = "clippy"; - - "rust-analyzer.cargo.buildScripts.enable" = true; - "rust-analyzer.procMacro.enable" = true; - - "rust-analyzer.cargo.targetDir" = true; - - "rust-analyzer.cargo.extraEnv" = { - "LIBCLANG_PATH" = rustLibclangPath; - "BINDGEN_EXTRA_CLANG_ARGS" = rustBindgenExtraClangArgs; - }; - - "rust-analyzer.lens.enable" = true; - "rust-analyzer.lens.implementations.enable" = true; - "rust-analyzer.lens.references.adt.enable" = true; - "rust-analyzer.lens.references.enumVariant.enable" = true; - "rust-analyzer.lens.references.method.enable" = true; - "rust-analyzer.lens.references.trait.enable" = true; - - "files.watcherExclude" = { - "**/target/**" = true; - }; - "search.exclude" = { - "**/target/**" = true; - }; - }; - }; - }; - - combine = - ls: - builtins.foldl' - (acc: l: { - extensions = acc.extensions ++ (l.extensions or [ ]); - userSettings = recursiveUpdate acc.userSettings (l.userSettings or { }); - }) - { - extensions = [ ]; - userSettings = { }; - } - ls; - - mkProfile = - layersList: extras: - let - base = combine layersList; - in - { - extensions = base.extensions ++ (extras.extensions or [ ]); - userSettings = recursiveUpdate base.userSettings (extras.userSettings or { }); - }; -in -{ - options.my.applications.vscode.homeManager = { - enable = lib.mkEnableOption "VSCode home-manager configuration"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - { - programs.vscode = { - enable = true; - - profiles = { - default = mkProfile [ layers.common ] { }; - - nix = mkProfile [ layers.common layers.nix ] { }; - - web = mkProfile [ layers.common layers.web layers.web-biome ] { }; - - web-oxc = mkProfile [ layers.common layers.web layers.web-oxc ] { }; - - jupyter = mkProfile [ layers.common layers.jupyter ] { }; - - java = mkProfile [ layers.common layers.java ] { }; - - rust = mkProfile [ layers.common layers.rust ] { }; - }; - }; - - xdg.configFile."Code/User/locale.json".text = '' - { - "locale": "ja" - } - ''; - } - ]; - }; -} diff --git a/modules/applications/vscode/system.nix b/modules/applications/vscode/system.nix deleted file mode 100644 index 99f05d7..0000000 --- a/modules/applications/vscode/system.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.vscode.system; -in -{ - options.my.applications.vscode.system = { - enable = lib.mkEnableOption "VSCode system configuration"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - sqlite # SQLite database library (VSCode dependency) - ]; - }; -} diff --git a/modules/applications/wayland.nix b/modules/applications/wayland.nix deleted file mode 100644 index baffeef..0000000 --- a/modules/applications/wayland.nix +++ /dev/null @@ -1,51 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.wayland; -in -{ - options.my.applications.wayland = { - enable = lib.mkEnableOption "Wayland session support"; - }; - - config = lib.mkIf cfg.enable { - programs.xwayland.enable = true; - - # Keep global Wayland portal settings in this module so hardware/application - # modules do not each append their own portal backends. - xdg.portal = { - enable = true; - extraPortals = [ - pkgs.xdg-desktop-portal-gnome - pkgs.xdg-desktop-portal-gtk - ]; - xdgOpenUsePortal = true; - config = { - common.default = [ "gtk" ]; - gnome.default = [ - "gnome" - "gtk" - ]; - }; - }; - - environment.variables = { - NIXOS_OZONE_WL = "1"; - }; - - environment.sessionVariables = { - ELECTRON_OZONE_PLATFORM_HINT = "wayland"; - QT_QPA_PLATFORM = "wayland;xcb"; - NIXOS_OZONE_WL = "1"; - }; - - environment.systemPackages = with pkgs; [ - xwayland-satellite # X11 compatibility layer for Wayland - uwsm # Universal Wayland Session Manager - ]; - }; -} diff --git a/modules/applications/yazi.nix b/modules/applications/yazi.nix deleted file mode 100644 index b6ba0ab..0000000 --- a/modules/applications/yazi.nix +++ /dev/null @@ -1,153 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.yazi; -in -{ - options.my.applications.yazi = { - enable = lib.mkEnableOption "yazi terminal file manager"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - { - programs.yazi = { - enable = true; - enableZshIntegration = true; - shellWrapperName = "y"; - - package = pkgs.yazi.override { - _7zz = pkgs._7zz-rar; - }; - - extraPackages = with pkgs; [ - file # MIME / file type detection - ffmpeg # video thumbnails - _7zz-rar # archive preview/extract, RAR support - jq # JSON preview - poppler # PDF preview - fd # file search - ripgrep # content search - fzf # fuzzy navigation - zoxide # historical directory jump - resvg # SVG preview - imagemagick # HEIC / JXL / font / image preview - wl-clipboard # Wayland clipboard - xdg-utils # xdg-open - ]; - - plugins = { - "full-border" = { - package = pkgs.yaziPlugins.full-border; - setup = true; - }; - - "toggle-pane" = pkgs.yaziPlugins.toggle-pane; - chmod = pkgs.yaziPlugins.chmod; - }; - - keymap = { - mgr.prepend_keymap = [ - { - on = "T"; - run = "plugin toggle-pane max-preview"; - desc = "Maximize or restore preview pane"; - } - { - on = [ - "c" - "m" - ]; - run = "plugin chmod"; - desc = "Chmod selected files"; - } - ]; - }; - - settings = { - mgr = { - ratio = [ - 1 - 3 - 4 - ]; - sort_by = "natural"; - sort_sensitive = false; - sort_dir_first = true; - sort_reverse = false; - linemode = "size"; - show_hidden = true; - show_symlink = true; - scrolloff = 8; - }; - - preview = { - wrap = "yes"; - tab_size = 2; - }; - - opener = { - edit = [ - { - run = "${pkgs.neovim}/bin/nvim %s"; - block = true; - for = "unix"; - } - ]; - - open = [ - { - run = "${pkgs.xdg-utils}/bin/xdg-open %s"; - orphan = true; - desc = "Open"; - for = "linux"; - } - ]; - }; - - open = { - prepend_rules = [ - { - mime = "text/*"; - use = "edit"; - } - { - url = "*.nix"; - use = "edit"; - } - { - url = "*.json"; - use = "edit"; - } - { - url = "*.md"; - use = "edit"; - } - { - mime = "image/*"; - use = "open"; - } - { - mime = "video/*"; - use = "open"; - } - { - mime = "audio/*"; - use = "open"; - } - { - mime = "application/pdf"; - use = "open"; - } - ]; - }; - }; - }; - } - ]; - }; -} diff --git a/modules/applications/zed/default.nix b/modules/applications/zed/default.nix deleted file mode 100644 index 113e1cc..0000000 --- a/modules/applications/zed/default.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.zed; -in -{ - imports = [ - ./home.nix - ]; - - options.my.applications.zed = { - enable = lib.mkEnableOption "Zed code editor"; - }; - - config = lib.mkIf cfg.enable { - my.applications.zed.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/zed/home.nix b/modules/applications/zed/home.nix deleted file mode 100644 index 74a8b46..0000000 --- a/modules/applications/zed/home.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.zed.homeManager; -in -{ - options.my.applications.zed.homeManager = { - enable = lib.mkEnableOption "Zed home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf cfg.enable { - programs.zed-editor = { - enable = true; - extensions = [ - "catppuccin" - "nix" - ]; - mutableUserSettings = false; - - userSettings = { - agent = { - flexible = true; - favorite_models = [ ]; - model_parameters = [ ]; - }; - - project_panel.dock = "left"; - - telemetry = { - diagnostics = false; - metrics = false; - }; - - vim_mode = true; - - agent_servers = { - github-copilot-cli.type = "registry"; - codex-acp.type = "registry"; - claude-acp.type = "registry"; - }; - - icon_theme = { - mode = "dark"; - light = "Zed (Default)"; - dark = "Zed (Default)"; - }; - - ui_font_size = 16; - buffer_font_size = 16; - - theme = { - mode = "dark"; - light = "Catppuccin Latte"; - dark = "Catppuccin Mocha"; - }; - }; - }; - }; - } - ]; -} diff --git a/modules/applications/zellij/default.nix b/modules/applications/zellij/default.nix deleted file mode 100644 index 81a0c8a..0000000 --- a/modules/applications/zellij/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.zellij; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.zellij = { - enable = lib.mkEnableOption "Zellij terminal multiplexer"; - }; - - config = lib.mkIf cfg.enable { - my.applications.zellij.system.enable = lib.mkDefault true; - my.applications.zellij.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/zellij/home.nix b/modules/applications/zellij/home.nix deleted file mode 100644 index 98c40ee..0000000 --- a/modules/applications/zellij/home.nix +++ /dev/null @@ -1,83 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.zellij.homeManager; -in -{ - options.my.applications.zellij.homeManager = { - enable = lib.mkEnableOption "Zellij home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf cfg.enable { - programs.zellij = { - enable = true; - - enableZshIntegration = false; - - settings = { - pane_frames = true; - copy_clipboard = "system"; - copy_on_select = false; - default_mode = "locked"; - default_shell = "/run/current-system/sw/bin/zsh"; - }; - - extraConfig = '' - keybinds { - locked { - bind "Ctrl g" { SwitchToMode "normal"; } - bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; } - bind "Alt j" "Alt Down" { MoveFocus "Down"; } - bind "Alt k" "Alt Up" { MoveFocus "Up"; } - bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; } - bind "Alt n" { NewPane; } - bind "Alt t" { NewTab; } - bind "Alt H" { Resize "Increase Left"; } - bind "Alt J" { Resize "Increase Down"; } - bind "Alt K" { Resize "Increase Up"; } - bind "Alt L" { Resize "Increase Right"; } - bind "Alt c" "Ctrl Shift c" { Copy; } - } - normal { - bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; } - bind "Alt j" "Alt Down" { MoveFocus "Down"; } - bind "Alt k" "Alt Up" { MoveFocus "Up"; } - bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; } - bind "Alt n" { NewPane; } - bind "Alt t" { NewTab; } - bind "Ctrl Shift c" { Copy; } - bind "Alt H" { Resize "Increase Left"; } - bind "Alt J" { Resize "Increase Down"; } - bind "Alt K" { Resize "Increase Up"; } - bind "Alt L" { Resize "Increase Right"; } - } - } - ''; - - layouts.dev = '' - layout { - pane split_direction="vertical" { - pane { - pane command="nvim" - pane stacked=true size="30%" { - pane expanded=true - pane - } - } - - pane size=1 borderless=true { - plugin location="zellij:compact-bar" - } - } - } - ''; - }; - }; - } - ]; -} diff --git a/modules/applications/zellij/system.nix b/modules/applications/zellij/system.nix deleted file mode 100644 index 65a6cb3..0000000 --- a/modules/applications/zellij/system.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.applications.zellij.system; -in -{ - options.my.applications.zellij.system = { - enable = lib.mkEnableOption "Zellij system configuration"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - zellij # Terminal multiplexer with batteries included - ]; - }; -} diff --git a/modules/applications/zoom.nix b/modules/applications/zoom.nix deleted file mode 100644 index 34f70c2..0000000 --- a/modules/applications/zoom.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.zoom; -in -{ - options.my.applications.zoom = { - enable = lib.mkEnableOption "Zoom video conferencing"; - }; - - config = lib.mkIf cfg.enable { - programs.zoom-us.enable = true; - }; -} diff --git a/modules/applications/zoxide.nix b/modules/applications/zoxide.nix deleted file mode 100644 index 1456a40..0000000 --- a/modules/applications/zoxide.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.applications.zoxide; -in -{ - options.my.applications.zoxide = { - enable = lib.mkEnableOption "zoxide smarter cd command"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - { - programs.zoxide = { - enable = true; - enableZshIntegration = true; - }; - } - ]; - }; -} diff --git a/modules/applications/zsh/default.nix b/modules/applications/zsh/default.nix deleted file mode 100644 index ce95586..0000000 --- a/modules/applications/zsh/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.applications.zsh; -in -{ - imports = [ - ./home.nix - ./system.nix - ]; - - options.my.applications.zsh = { - enable = lib.mkEnableOption "Zsh shell"; - }; - - config = lib.mkIf cfg.enable { - my.applications.zsh.system.enable = lib.mkDefault true; - my.applications.zsh.homeManager.enable = lib.mkDefault true; - }; -} diff --git a/modules/applications/zsh/home.nix b/modules/applications/zsh/home.nix deleted file mode 100644 index 1e8512f..0000000 --- a/modules/applications/zsh/home.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.applications.zsh.homeManager; -in -{ - options.my.applications.zsh.homeManager = { - enable = lib.mkEnableOption "Zsh home-manager configuration"; - }; - - config.home-manager.sharedModules = [ - { - config = lib.mkIf cfg.enable { - programs.zsh = { - enable = true; - enableCompletion = true; - - oh-my-zsh = { - enable = true; - theme = "robbyrussell"; - plugins = [ "git" ]; - }; - - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - - initContent = '' - # ---- from gist: export / history size ---- - export HISTSIZE=999999999 - export HISTFILESIZE=999999999 - - # ---- from gist: setopt ---- - setopt extended_history - setopt hist_allow_clobber - setopt hist_fcntl_lock - setopt hist_find_no_dups - setopt hist_ignore_all_dups - setopt hist_ignore_dups - setopt hist_ignore_space - # setopt hist_no_functions - # setopt hist_no_store - setopt hist_reduce_blanks - setopt hist_save_no_dups - setopt hist_verify - setopt inc_append_history_time - - unsetopt SHARE_HISTORY - setopt APPEND_HISTORY - setopt INC_APPEND_HISTORY_TIME - - # ---- from gist: aliases ---- - alias docker-compose="docker compose" - alias clearsign='export GPG_TTY=$(tty) && openssl rand -hex 16 | gpg --clearsign' - alias lssh='ssh -o KexAlgorithms=+diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 -o Ciphers=+aes256-cbc,aes128-cbc -o HostKeyAlgorithms=+ssh-rsa -o SetEnv=TERM=xterm' - ''; - }; - }; - } - ]; -} diff --git a/modules/applications/zsh/system.nix b/modules/applications/zsh/system.nix deleted file mode 100644 index ef4a98d..0000000 --- a/modules/applications/zsh/system.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.applications.zsh.system; -in -{ - options.my.applications.zsh.system = { - enable = lib.mkEnableOption "Zsh system configuration"; - }; - - config = lib.mkIf cfg.enable { - programs.zsh.enable = true; - }; -} diff --git a/modules/default.nix b/modules/default.nix deleted file mode 100644 index b8ff541..0000000 --- a/modules/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - imports = [ - ./applications - ./drivers - ./features - ./integrations - ./system - ]; -} diff --git a/modules/drivers/default.nix b/modules/drivers/default.nix deleted file mode 100644 index 812230f..0000000 --- a/modules/drivers/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - imports = [ - ./intel-drivers.nix - ]; -} diff --git a/modules/drivers/intel-drivers.nix b/modules/drivers/intel-drivers.nix deleted file mode 100644 index b0d5383..0000000 --- a/modules/drivers/intel-drivers.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - lib, - pkgs, - config, - ... -}: -let - cfg = config.my.drivers.intel; -in -{ - options.my.drivers.intel = { - enable = lib.mkEnableOption "Intel Graphics Drivers"; - }; - - config = lib.mkIf cfg.enable { - hardware.graphics = { - extraPackages = with pkgs; [ - intel-media-driver # Intel Media Driver for VA-API - intel-vaapi-driver # VA-API Intel driver - libva-vdpau-driver # VA-API to VDPAU adapter - libvdpau-va-gl # VDPAU driver with OpenGL/VAAPI backend - ]; - }; - }; -} diff --git a/modules/features/application/browser.nix b/modules/features/application/browser.nix deleted file mode 100644 index 221de91..0000000 --- a/modules/features/application/browser.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.application.browser; -in -{ - options.my.features.application.browser = { - enable = lib.mkEnableOption "Web browser (Chrome)"; - }; - - config = lib.mkIf cfg.enable { - my.applications.chrome.enable = true; - }; -} diff --git a/modules/features/application/communication.nix b/modules/features/application/communication.nix deleted file mode 100644 index edd2036..0000000 --- a/modules/features/application/communication.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.application.communication; -in -{ - options.my.features.application.communication = { - enable = lib.mkEnableOption "Communication applications (Discord, Zoom, Slack)"; - }; - - config = lib.mkIf cfg.enable { - my.applications = { - discord.enable = true; - zoom.enable = true; - slack.enable = true; - }; - }; -} diff --git a/modules/features/application/default.nix b/modules/features/application/default.nix deleted file mode 100644 index 3e2d7e0..0000000 --- a/modules/features/application/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./browser.nix - ./communication.nix - ]; -} diff --git a/modules/features/boot/default.nix b/modules/features/boot/default.nix deleted file mode 100644 index 22e06ea..0000000 --- a/modules/features/boot/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - imports = [ - ./power.nix - ./secure-boot.nix - ./storage-crypto.nix - ./uefi.nix - ]; -} diff --git a/modules/features/boot/power.nix b/modules/features/boot/power.nix deleted file mode 100644 index 7cc0a83..0000000 --- a/modules/features/boot/power.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.boot.power; -in -{ - options.my.features.boot.power = { - enable = lib.mkEnableOption "Power management"; - }; - - config = lib.mkIf cfg.enable { - my.system.power.enable = true; - }; -} diff --git a/modules/features/boot/secure-boot.nix b/modules/features/boot/secure-boot.nix deleted file mode 100644 index 28f90cd..0000000 --- a/modules/features/boot/secure-boot.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.boot.secureBoot; -in -{ - options.my.features.boot.secureBoot = { - enable = lib.mkEnableOption "Secure boot (lanzaboote)"; - }; - - config = lib.mkIf cfg.enable { - my.system.secure-boot.enable = true; - }; -} diff --git a/modules/features/boot/storage-crypto.nix b/modules/features/boot/storage-crypto.nix deleted file mode 100644 index d4f41b8..0000000 --- a/modules/features/boot/storage-crypto.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.features.boot.storageCrypto; -in -{ - options.my.features.boot.storageCrypto = { - enable = lib.mkEnableOption "LUKS decryption via TPM2"; - }; - - config = lib.mkIf cfg.enable { - boot.initrd.systemd.enable = true; - - boot.initrd.luks.devices.cryptroot = { - crypttabExtraOpts = [ - "tpm2-device=auto" - ]; - }; - - security.tpm2.enable = true; - - environment.systemPackages = with pkgs; [ - tpm2-tools # TPM2 management tools - ]; - }; -} diff --git a/modules/features/boot/uefi.nix b/modules/features/boot/uefi.nix deleted file mode 100644 index b12c228..0000000 --- a/modules/features/boot/uefi.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.boot.uefi; -in -{ - options.my.features.boot.uefi = { - enable = lib.mkEnableOption "UEFI boot support"; - }; - - config = lib.mkIf cfg.enable { - my.system.boot.uefi.enable = true; - }; -} diff --git a/modules/features/cli/base.nix b/modules/features/cli/base.nix deleted file mode 100644 index 2b3edbe..0000000 --- a/modules/features/cli/base.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: -let - cfg = config.my.features.cli.base; -in -{ - options.my.features.cli.base = { - enable = lib.mkEnableOption "Base CLI configuration"; - sshServer = lib.mkEnableOption "OpenSSH server"; - }; - - config = lib.mkIf cfg.enable { - my.applications = { - btop.enable = true; - git.enable = true; - ssh.enable = true; - direnv.enable = true; - gnupg.enable = true; - nh.enable = true; - nix-index.enable = true; - openssh.enable = cfg.sshServer; - }; - - environment.systemPackages = with pkgs; [ - htop # Interactive Process Viewer - fastfetch # Fast system information tool - curl # Tool For Fetching Files With Links - wget # Tool For Fetching Files With Links - unzip # Tool For Handling .zip Files - unrar # Tool For Handling .rar Files - ripgrep # Fast Search Tool - jq # Lightweight JSON processor - nurl # CLI tool for generating Nix fetcher calls from URLs - eza # ls alternative - bat # cat alternative - fd # find alternative - dust # du alternative - duf # df alternative - fzf # Command-line fuzzy finder - ]; - }; -} diff --git a/modules/features/cli/default.nix b/modules/features/cli/default.nix deleted file mode 100644 index 1a2a937..0000000 --- a/modules/features/cli/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - imports = [ - ./base.nix - ./interactive.nix - ./shell.nix - ]; -} diff --git a/modules/features/cli/interactive.nix b/modules/features/cli/interactive.nix deleted file mode 100644 index 7ff487e..0000000 --- a/modules/features/cli/interactive.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.features.cli.interactive; -in -{ - options.my.features.cli.interactive = { - enable = lib.mkEnableOption "Interactive CLI tools (vim, btop, zellij)"; - }; - - config = lib.mkIf cfg.enable { - my.applications = { - vim.enable = true; - yazi.enable = true; - zellij.enable = true; - }; - - environment.systemPackages = with pkgs; [ - tio # A Simple TTY Terminal I/O Application - ]; - }; -} diff --git a/modules/features/cli/shell.nix b/modules/features/cli/shell.nix deleted file mode 100644 index 9877177..0000000 --- a/modules/features/cli/shell.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.cli.shell; -in -{ - options.my.features.cli.shell = { - enable = lib.mkEnableOption "Shell configuration (zsh)"; - }; - - config = lib.mkIf cfg.enable { - my.applications = { - zsh.enable = true; - zoxide.enable = true; - }; - }; -} diff --git a/modules/features/connect/bluetooth.nix b/modules/features/connect/bluetooth.nix deleted file mode 100644 index f0f5cfd..0000000 --- a/modules/features/connect/bluetooth.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.connect.bluetooth; -in -{ - options.my.features.connect.bluetooth = { - enable = lib.mkEnableOption "Bluetooth support"; - }; - - config = lib.mkIf cfg.enable { - my.system.hardware.bluetooth.enable = true; - }; -} diff --git a/modules/features/connect/default.nix b/modules/features/connect/default.nix deleted file mode 100644 index 412300c..0000000 --- a/modules/features/connect/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./bluetooth.nix - ./wifi.nix - ]; -} diff --git a/modules/features/connect/wifi.nix b/modules/features/connect/wifi.nix deleted file mode 100644 index e78e9aa..0000000 --- a/modules/features/connect/wifi.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.connect.wifi; -in -{ - options.my.features.connect.wifi = { - enable = lib.mkEnableOption "WiFi (NetworkManager) support"; - }; - - config = lib.mkIf cfg.enable { - my.system.network.wifi.enable = true; - }; -} diff --git a/modules/features/default.nix b/modules/features/default.nix deleted file mode 100644 index b3aa070..0000000 --- a/modules/features/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - imports = [ - ./application - ./boot - ./cli - ./connect - ./dev - ./gui - ./identity - ./network - ./services - ./storage - ]; -} diff --git a/modules/features/dev/agent.nix b/modules/features/dev/agent.nix deleted file mode 100644 index ee05550..0000000 --- a/modules/features/dev/agent.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.features.dev.agent; -in -{ - options.my.features.dev.agent = { - enable = lib.mkEnableOption "AI coding agents (Claude Code, Codex, OpenCode)"; - }; - - config = lib.mkIf cfg.enable { - my.applications = { - claude.enable = true; - codex.enable = true; - opencode.enable = true; - grok.enable = true; - codexDesktop.enable = true; - }; - }; -} diff --git a/modules/features/dev/arduino.nix b/modules/features/dev/arduino.nix deleted file mode 100644 index 9cc2c8a..0000000 --- a/modules/features/dev/arduino.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.dev.arduino; -in -{ - options.my.features.dev.arduino = { - enable = lib.mkEnableOption "Arduino development environment"; - }; - - config = lib.mkIf cfg.enable { - my.applications.arduino.enable = true; - }; -} diff --git a/modules/features/dev/bun.nix b/modules/features/dev/bun.nix deleted file mode 100644 index 706e021..0000000 --- a/modules/features/dev/bun.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.features.dev.bun; -in -{ - options.my.features.dev.bun = { - enable = lib.mkEnableOption "Bun JavaScript runtime"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - bun # A Fast JavaScript Runtime Like Node.js And Deno - ]; - }; -} diff --git a/modules/features/dev/default.nix b/modules/features/dev/default.nix deleted file mode 100644 index fa5e91e..0000000 --- a/modules/features/dev/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - imports = [ - ./agent.nix - ./arduino.nix - ./bun.nix - ./dns.nix - ./drawio.nix - ./java.nix - ./nix.nix - ./python.nix - ]; -} diff --git a/modules/features/dev/dns.nix b/modules/features/dev/dns.nix deleted file mode 100644 index 901762b..0000000 --- a/modules/features/dev/dns.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.features.dev.dns; -in -{ - options.my.features.dev.dns = { - enable = lib.mkEnableOption "DNS development tools (dig)"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - bind # DNS lookup utilities (dig, host, nslookup) - ]; - }; -} diff --git a/modules/features/dev/drawio.nix b/modules/features/dev/drawio.nix deleted file mode 100644 index f114068..0000000 --- a/modules/features/dev/drawio.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.features.dev.drawio; -in -{ - options.my.features.dev.drawio = { - enable = lib.mkEnableOption "Draw.io diagram editor"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - drawio # Diagram editor - ]; - }; -} diff --git a/modules/features/dev/java.nix b/modules/features/dev/java.nix deleted file mode 100644 index 2b532e9..0000000 --- a/modules/features/dev/java.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.dev.java; -in -{ - options.my.features.dev.java = { - enable = lib.mkEnableOption "Java development environment"; - }; - - config = lib.mkIf cfg.enable { - my.applications.java.enable = true; - }; -} diff --git a/modules/features/dev/nix.nix b/modules/features/dev/nix.nix deleted file mode 100644 index 195670a..0000000 --- a/modules/features/dev/nix.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.features.dev.nix; -in -{ - options.my.features.dev.nix = { - enable = lib.mkEnableOption "Nix development tools (nil language server)"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - nil # Nix Language Server - ]; - }; -} diff --git a/modules/features/dev/python.nix b/modules/features/dev/python.nix deleted file mode 100644 index 9da0595..0000000 --- a/modules/features/dev/python.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.features.dev.python; -in -{ - options.my.features.dev.python = { - enable = lib.mkEnableOption "Python development environment"; - }; - - config = lib.mkIf cfg.enable { - documentation.doc.enable = false; - - environment.systemPackages = with pkgs; [ - python312 # Python 3.12 - uv # Universal Virtual Environment Manager For Python - ]; - }; -} diff --git a/modules/features/gui/audio.nix b/modules/features/gui/audio.nix deleted file mode 100644 index d966cd8..0000000 --- a/modules/features/gui/audio.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.gui.audio; -in -{ - options.my.features.gui.audio = { - enable = lib.mkEnableOption "Audio support (PipeWire)"; - }; - - config = lib.mkIf cfg.enable { - my.system.audio.enable = true; - }; -} diff --git a/modules/features/gui/camera.nix b/modules/features/gui/camera.nix deleted file mode 100644 index 3236dd9..0000000 --- a/modules/features/gui/camera.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.gui.camera; -in -{ - options.my.features.gui.camera = { - enable = lib.mkEnableOption "Camera support"; - }; - - config = lib.mkIf cfg.enable { - my.system.camera.enable = true; - }; -} diff --git a/modules/features/gui/capture.nix b/modules/features/gui/capture.nix deleted file mode 100644 index c0377dc..0000000 --- a/modules/features/gui/capture.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.features.gui.capture; -in -{ - options.my.features.gui.capture = { - enable = lib.mkEnableOption "Screen capture tools (slurp, grim, wf-recorder)"; - }; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - slurp # Tool for selecting a region of the screen - grim # Screenshot tool for Wayland - wf-recorder # Screen recorder for Wayland - ]; - }; -} diff --git a/modules/features/gui/default.nix b/modules/features/gui/default.nix deleted file mode 100644 index 1f9aba6..0000000 --- a/modules/features/gui/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - imports = [ - ./audio.nix - ./camera.nix - ./capture.nix - ./desktop.nix - ./editor.nix - ./file-manager.nix - ./graphic.nix - ./jp-input.nix - ./password.nix - ./terminal.nix - ]; -} diff --git a/modules/features/gui/desktop.nix b/modules/features/gui/desktop.nix deleted file mode 100644 index 5f6eb43..0000000 --- a/modules/features/gui/desktop.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.features.gui.desktop; -in -{ - options.my.features.gui.desktop = { - enable = lib.mkEnableOption "Graphical desktop sessions"; - }; - - config = lib.mkIf cfg.enable { - home-manager.sharedModules = [ - { - xdg.userDirs = { - enable = true; - createDirectories = true; - desktop = "$HOME/Desktop"; - documents = "$HOME/Documents"; - download = "$HOME/Downloads"; - music = "$HOME/Music"; - pictures = "$HOME/Pictures"; - projects = "$HOME/Projects"; - publicShare = "$HOME/Public"; - templates = "$HOME/Templates"; - videos = "$HOME/Videos"; - }; - } - ]; - - my.applications = { - gnome.enable = true; - gtk.enable = true; - niri.enable = true; - wayland.enable = true; - ly.enable = true; - noctalia.enable = true; - swayidle.enable = true; - swaylock.enable = true; - vicinae.enable = true; - }; - my.system = { - fonts.enable = true; - }; - }; -} diff --git a/modules/features/gui/editor.nix b/modules/features/gui/editor.nix deleted file mode 100644 index 8547bcb..0000000 --- a/modules/features/gui/editor.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.gui.editor; -in -{ - options.my.features.gui.editor = { - enable = lib.mkEnableOption "GUI code editors (VSCode and Zed)"; - }; - - config = lib.mkIf cfg.enable { - my.applications = { - vscode.enable = true; - zed.enable = true; - }; - }; -} diff --git a/modules/features/gui/file-manager.nix b/modules/features/gui/file-manager.nix deleted file mode 100644 index 50996cd..0000000 --- a/modules/features/gui/file-manager.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.gui.fileManager; -in -{ - options.my.features.gui.fileManager = { - enable = lib.mkEnableOption "File manager (Nautilus)"; - }; - - config = lib.mkIf cfg.enable { - my.applications.nautilus.enable = true; - }; -} diff --git a/modules/features/gui/graphic.nix b/modules/features/gui/graphic.nix deleted file mode 100644 index 28eaecd..0000000 --- a/modules/features/gui/graphic.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.gui.graphic; -in -{ - options.my.features.gui.graphic = { - enable = lib.mkEnableOption "GPU/graphics hardware acceleration"; - }; - - config = lib.mkIf cfg.enable { - my.system.hardware.gui.enable = true; - }; -} diff --git a/modules/features/gui/jp-input.nix b/modules/features/gui/jp-input.nix deleted file mode 100644 index 864f503..0000000 --- a/modules/features/gui/jp-input.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.gui.jpInput; -in -{ - options.my.features.gui.jpInput = { - enable = lib.mkEnableOption "Japanese input method (fcitx5)"; - }; - - config = lib.mkIf cfg.enable { - my.applications.fcitx5.enable = true; - }; -} diff --git a/modules/features/gui/password.nix b/modules/features/gui/password.nix deleted file mode 100644 index 978a562..0000000 --- a/modules/features/gui/password.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.features.gui.password; -in -{ - options.my.features.gui.password = { - enable = lib.mkEnableOption "GUI password manager"; - }; - - config = lib.mkIf cfg.enable { - my.applications."1password".enable = true; - }; -} diff --git a/modules/features/gui/terminal.nix b/modules/features/gui/terminal.nix deleted file mode 100644 index 85e4e5a..0000000 --- a/modules/features/gui/terminal.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.features.gui.terminal; -in -{ - options.my.features.gui.terminal = { - enable = lib.mkEnableOption "Terminal emulators (Ghostty, Alacritty)"; - }; - - config = lib.mkIf cfg.enable { - my.applications.ghostty.enable = true; - - environment.systemPackages = with pkgs; [ - alacritty # A GPU Accelerated Terminal Emulator - ]; - }; -} diff --git a/modules/features/identity/default.nix b/modules/features/identity/default.nix deleted file mode 100644 index 1f694c3..0000000 --- a/modules/features/identity/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./fingerprint.nix - ./ssh-default-key.nix - ]; -} diff --git a/modules/features/identity/fingerprint.nix b/modules/features/identity/fingerprint.nix deleted file mode 100644 index b1d135e..0000000 --- a/modules/features/identity/fingerprint.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.identity.fingerprint; -in -{ - options.my.features.identity.fingerprint = { - enable = lib.mkEnableOption "Fingerprint authentication"; - }; - - config = lib.mkIf cfg.enable { - my.system.fingerprint.enable = true; - }; -} diff --git a/modules/features/identity/ssh-default-key.nix b/modules/features/identity/ssh-default-key.nix deleted file mode 100644 index eeef32b..0000000 --- a/modules/features/identity/ssh-default-key.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.features.identity.sshDefaultKey; -in -{ - options.my.features.identity.sshDefaultKey = { - enable = lib.mkEnableOption "Generate default SSH key (ed25519)"; - }; - - config.home-manager.sharedModules = [ - ( - { lib, ... }: - { - config = lib.mkIf cfg.enable { - home.activation.generateSshKey = lib.hm.dag.entryAfter [ "writeBoundary" ] '' - key="$HOME/.ssh/id_ed25519" - if [ ! -f "$key" ]; then - umask 077 - mkdir -p "$HOME/.ssh" - ${pkgs.openssh}/bin/ssh-keygen -t ed25519 -N "" -f "$key" \ - -C "moons@$(${pkgs.hostname}/bin/hostname || echo host)" - echo "Generated SSH key at $key" - fi - ''; - }; - } - ) - ]; -} diff --git a/modules/features/network/default.nix b/modules/features/network/default.nix deleted file mode 100644 index 1f59251..0000000 --- a/modules/features/network/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - imports = [ - ./tailscale.nix - ]; -} diff --git a/modules/features/network/tailscale.nix b/modules/features/network/tailscale.nix deleted file mode 100644 index 72798f9..0000000 --- a/modules/features/network/tailscale.nix +++ /dev/null @@ -1,75 +0,0 @@ -{ lib, config, ... }: - -let - cfg = config.my.features.network.tailscale; -in -{ - options.my.features.network.tailscale = { - enable = lib.mkEnableOption "Tailscale VPN"; - - acceptDns = lib.mkOption { - type = lib.types.bool; - default = false; - description = "Accept DNS configuration from Tailscale."; - }; - - acceptRoutes = lib.mkOption { - type = lib.types.bool; - default = false; - description = "Accept subnet routes from Tailscale."; - }; - - advertiseRoutes = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ ]; - example = [ "10.50.0.0/16" ]; - description = "Subnet routes to advertise through this machine."; - }; - - routingFeatures = lib.mkOption { - type = lib.types.enum [ - "auto" - "none" - "client" - "server" - "both" - ]; - default = "auto"; - description = "Override Tailscale routing features. Usually leave this as auto."; - }; - - openFirewall = lib.mkOption { - type = lib.types.nullOr lib.types.bool; - default = null; - description = "Override Tailscale firewall opening. Usually leave this as null."; - }; - - extraSetFlags = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ ]; - description = "Additional flags to pass to `tailscale set`."; - }; - - extraUpFlags = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ ]; - description = "Additional flags to pass to `tailscale up`."; - }; - }; - - config = lib.mkIf cfg.enable { - my.applications.tailscale = { - enable = true; - - inherit (cfg) - acceptDns - acceptRoutes - advertiseRoutes - routingFeatures - openFirewall - extraSetFlags - extraUpFlags - ; - }; - }; -} diff --git a/modules/features/services/container.nix b/modules/features/services/container.nix deleted file mode 100644 index c26435b..0000000 --- a/modules/features/services/container.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.services.container; -in -{ - options.my.features.services.container = { - enable = lib.mkEnableOption "Container runtime (Docker)"; - }; - - config = lib.mkIf cfg.enable { - my.applications.docker.enable = true; - }; -} diff --git a/modules/features/services/default.nix b/modules/features/services/default.nix deleted file mode 100644 index 7b5a6f5..0000000 --- a/modules/features/services/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - imports = [ - ./container.nix - ./kde.nix - ./quem-guest.nix - ]; -} diff --git a/modules/features/services/kde.nix b/modules/features/services/kde.nix deleted file mode 100644 index 1c5bcff..0000000 --- a/modules/features/services/kde.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.services.kde; -in -{ - options.my.features.services.kde = { - enable = lib.mkEnableOption "KDE Connect"; - }; - - config = lib.mkIf cfg.enable { - my.applications.kde.enable = true; - }; -} diff --git a/modules/features/services/quem-guest.nix b/modules/features/services/quem-guest.nix deleted file mode 100644 index 1fe359b..0000000 --- a/modules/features/services/quem-guest.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.services.quemGuest; -in -{ - options.my.features.services.quemGuest = { - enable = lib.mkEnableOption "QEMU guest support"; - }; - - config = lib.mkIf cfg.enable { - my.system.quem.enable = true; - }; -} diff --git a/modules/features/storage/default.nix b/modules/features/storage/default.nix deleted file mode 100644 index 0b3cf91..0000000 --- a/modules/features/storage/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - imports = [ - ./nfs-client.nix - ]; -} diff --git a/modules/features/storage/nfs-client.nix b/modules/features/storage/nfs-client.nix deleted file mode 100644 index 5a92e2f..0000000 --- a/modules/features/storage/nfs-client.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.features.storage.nfsClient; -in -{ - options.my.features.storage.nfsClient = { - enable = lib.mkEnableOption "NFS client support"; - }; - - config = lib.mkIf cfg.enable { - my.system.boot.nfs.enable = true; - }; -} diff --git a/modules/integrations/default.nix b/modules/integrations/default.nix deleted file mode 100644 index 1e9a5a4..0000000 --- a/modules/integrations/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - imports = [ - ./home-manager.nix - ]; -} diff --git a/modules/integrations/home-manager.nix b/modules/integrations/home-manager.nix deleted file mode 100644 index 8dde697..0000000 --- a/modules/integrations/home-manager.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - username, - inputs, - config, - ... -}: -{ - imports = [ - inputs.home-manager.nixosModules.home-manager - ]; - - home-manager = { - useUserPackages = true; - useGlobalPkgs = true; - backupFileExtension = "backup"; - - users.${username} = { - home = { - inherit username; - homeDirectory = "/home/${username}"; - stateVersion = config.my.stateVersions.homeManager; - }; - }; - }; -} diff --git a/modules/system/audio.nix b/modules/system/audio.nix deleted file mode 100644 index d859857..0000000 --- a/modules/system/audio.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.my.system.audio; -in -{ - options.my.system.audio = { - enable = lib.mkEnableOption "Audio support (PipeWire)"; - }; - - config = lib.mkIf cfg.enable { - security.rtkit.enable = true; - - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - jack.enable = true; - wireplumber.enable = true; - }; - }; -} diff --git a/modules/system/boot/default.nix b/modules/system/boot/default.nix deleted file mode 100644 index 63e8b0a..0000000 --- a/modules/system/boot/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - pkgs, - lib, - ... -}: -{ - imports = [ - ./nfs.nix - ./uefi.nix - ]; - - boot = { - loader.systemd-boot.configurationLimit = lib.mkDefault 8; - kernelPackages = pkgs.linuxPackages_latest; - }; - programs.nix-ld.enable = true; -} diff --git a/modules/system/boot/nfs.nix b/modules/system/boot/nfs.nix deleted file mode 100644 index 7c9bc27..0000000 --- a/modules/system/boot/nfs.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.system.boot.nfs; -in -{ - options.my.system.boot.nfs = { - enable = lib.mkEnableOption "NFS boot support"; - }; - - config = lib.mkIf cfg.enable { - boot.supportedFilesystems = [ "nfs" ]; - programs.fuse.userAllowOther = true; - services.rpcbind.enable = true; - }; -} diff --git a/modules/system/boot/uefi.nix b/modules/system/boot/uefi.nix deleted file mode 100644 index 6ad8e92..0000000 --- a/modules/system/boot/uefi.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.system.boot.uefi; -in -{ - options.my.system.boot.uefi = { - enable = lib.mkEnableOption "UEFI boot support"; - }; - - config = lib.mkIf cfg.enable { - boot.loader = { - systemd-boot.enable = lib.mkDefault true; - efi.canTouchEfiVariables = lib.mkDefault true; - }; - }; -} diff --git a/modules/system/camera.nix b/modules/system/camera.nix deleted file mode 100644 index c2dd31b..0000000 --- a/modules/system/camera.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.system.camera; -in -{ - options.my.system.camera = { - enable = lib.mkEnableOption "camera support"; - }; - - config = lib.mkIf cfg.enable { - boot.kernelModules = [ "uvcvideo" ]; - - hardware.ipu6 = { - enable = true; - platform = "ipu6epmtl"; - }; - - environment.systemPackages = with pkgs; [ - v4l-utils # Video4Linux control and diagnostics tools - ffmpeg-full # Multimedia tools for validating camera capture pipelines - libcamera # Camera stack and diagnostic tools for MIPI/IPU cameras - ]; - - services.pipewire = { - enable = true; - alsa.enable = true; - pulse.enable = true; - }; - security.rtkit.enable = true; - }; -} diff --git a/modules/system/default.nix b/modules/system/default.nix deleted file mode 100644 index 35af27a..0000000 --- a/modules/system/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - imports = [ - ./audio.nix - ./boot - ./camera.nix - ./disko.nix - ./fingerprint.nix - ./fonts.nix - ./gc.nix - ./hardware - ./locale.nix - ./network - ./nix.nix - ./power.nix - ./quem.nix - ./secure-boot.nix - ./sops.nix - ./user - ./version.nix - ./secret.nix - ]; -} diff --git a/modules/system/disko.nix b/modules/system/disko.nix deleted file mode 100644 index ccec8f5..0000000 --- a/modules/system/disko.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ inputs, lib, ... }: -{ - imports = [ - inputs.disko.nixosModules.disko - ]; - - config = { - disko.enableConfig = lib.mkDefault false; - }; -} diff --git a/modules/system/fingerprint.nix b/modules/system/fingerprint.nix deleted file mode 100644 index c555742..0000000 --- a/modules/system/fingerprint.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.system.fingerprint; -in -{ - options.my.system.fingerprint = { - enable = lib.mkEnableOption "fingerprint authentication"; - }; - - config = lib.mkIf cfg.enable { - services.fprintd.enable = true; - - security.polkit.enable = true; - - security.pam.services.polkit-1.fprintAuth = true; - - security.pam.services = { - login.fprintAuth = false; - sudo.fprintAuth = true; - greetd.fprintAuth = lib.mkForce false; - ly.fprintAuth = lib.mkForce false; - }; - }; -} diff --git a/modules/system/fonts.nix b/modules/system/fonts.nix deleted file mode 100644 index 12654a5..0000000 --- a/modules/system/fonts.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ - pkgs, - lib, - config, - ... -}: -let - cfg = config.my.system.fonts; -in -{ - options.my.system.fonts = { - enable = lib.mkEnableOption "system font configuration"; - }; - - config = lib.mkIf cfg.enable { - fonts = { - packages = with pkgs; [ - noto-fonts - noto-fonts-cjk-sans - noto-fonts-color-emoji - terminus_font - cantarell-fonts - font-awesome - nerd-fonts.blex-mono - ]; - - fontDir.enable = true; - fontconfig = { - defaultFonts = { - serif = [ - "Noto Serif CJK JP" - "Noto Color Emoji" - ]; - sansSerif = [ - "Noto Sans CJK JP" - "Noto Clor Emoji" - ]; - emoji = [ "Noto Color Emoji" ]; - }; - }; - }; - }; -} diff --git a/modules/system/gc.nix b/modules/system/gc.nix deleted file mode 100644 index 60d7e24..0000000 --- a/modules/system/gc.nix +++ /dev/null @@ -1,10 +0,0 @@ -_: { - nix.gc.automatic = false; - - nix.settings.auto-optimise-store = false; - - nix.optimise = { - automatic = true; - dates = [ "weekly" ]; - }; -} diff --git a/modules/system/hardware/bluetooth.nix b/modules/system/hardware/bluetooth.nix deleted file mode 100644 index 6b0f8a8..0000000 --- a/modules/system/hardware/bluetooth.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.system.hardware.bluetooth; -in -{ - options.my.system.hardware.bluetooth = { - enable = lib.mkEnableOption "Bluetooth support"; - }; - - config = lib.mkIf cfg.enable { - hardware.bluetooth = { - enable = true; - powerOnBoot = true; - }; - - services.blueman.enable = true; - }; -} diff --git a/modules/system/hardware/default.nix b/modules/system/hardware/default.nix deleted file mode 100644 index 722b480..0000000 --- a/modules/system/hardware/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ lib, ... }: -{ - imports = [ - ./bluetooth.nix - ./gui.nix - ]; - - hardware = { - enableRedistributableFirmware = lib.mkDefault true; - keyboard.qmk.enable = true; - }; - - services.fwupd.enable = true; -} diff --git a/modules/system/hardware/gui.nix b/modules/system/hardware/gui.nix deleted file mode 100644 index 19ed7ef..0000000 --- a/modules/system/hardware/gui.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.system.hardware.gui; -in -{ - options.my.system.hardware.gui = { - enable = lib.mkEnableOption "GPU/graphics hardware acceleration"; - }; - - config = lib.mkIf cfg.enable { - hardware = { - graphics.enable = true; - }; - }; -} diff --git a/modules/system/locale.nix b/modules/system/locale.nix deleted file mode 100644 index 85aa356..0000000 --- a/modules/system/locale.nix +++ /dev/null @@ -1,18 +0,0 @@ -_: { - time.timeZone = "Asia/Tokyo"; - - i18n.defaultLocale = "ja_JP.UTF-8"; - i18n.extraLocaleSettings = { - LC_ADDRESS = "ja_JP.UTF-8"; - LC_IDENTIFICATION = "ja_JP.UTF-8"; - LC_MEASUREMENT = "ja_JP.UTF-8"; - LC_MONETARY = "ja_JP.UTF-8"; - LC_NAME = "ja_JP.UTF-8"; - LC_NUMERIC = "ja_JP.UTF-8"; - LC_PAPER = "ja_JP.UTF-8"; - LC_TELEPHONE = "ja_JP.UTF-8"; - LC_TIME = "ja_JP.UTF-8"; - }; - - console.keyMap = "jp106"; -} diff --git a/modules/system/network/default.nix b/modules/system/network/default.nix deleted file mode 100644 index 894fe2e..0000000 --- a/modules/system/network/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - host, - lib, - ... -}: -{ - imports = [ - ./wifi.nix - ]; - - networking = { - hostName = host; - - nameservers = lib.mkDefault [ - "1.1.1.1" - "1.0.0.1" - "10.50.80.53" - "10.50.80.54" - ]; - }; - - services.resolved.enable = lib.mkDefault false; - - security.pki.certificateFiles = [ - ./root_ca.crt - ]; -} diff --git a/modules/system/network/root_ca.crt b/modules/system/network/root_ca.crt deleted file mode 100644 index 5985efb..0000000 --- a/modules/system/network/root_ca.crt +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBszCCAVqgAwIBAgIRAPCAxajuCEmnXKploQS+KAkwCgYIKoZIzj0EAwIwODEW -MBQGA1UEChMNTW9vbnMgSG9tZSBDQTEeMBwGA1UEAxMVTW9vbnMgSG9tZSBDQSBS -b290IENBMB4XDTI1MTIwNjE4MDgwN1oXDTM1MTIwNDE4MDgwN1owODEWMBQGA1UE -ChMNTW9vbnMgSG9tZSBDQTEeMBwGA1UEAxMVTW9vbnMgSG9tZSBDQSBSb290IENB -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDw2M0NQMju2zN5ZXwsYaTieWggId -XmRSXjOHW4/pBEI11xk1GkMFbeVmppr1cbcNmbB+fmxoFa+oKguhFDSsdaNFMEMw -DgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQEwHQYDVR0OBBYEFGuC -UGL5CxdamFfBVC8xH306Wo6xMAoGCCqGSM49BAMCA0cAMEQCIBqWCNWBuwhWDYoi -fpqOqz2HSChOsKCIAgfTJlUUgSlSAiALekUJ+4M+L4/vP4GpkrSovuQ7JOMXV44+ -30Pcx4AoJg== ------END CERTIFICATE----- - diff --git a/modules/system/network/wifi.nix b/modules/system/network/wifi.nix deleted file mode 100644 index 8b55002..0000000 --- a/modules/system/network/wifi.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.system.network.wifi; -in -{ - options.my.system.network.wifi = { - enable = lib.mkEnableOption "WiFi (NetworkManager) support"; - }; - - config = lib.mkIf cfg.enable { - networking = { - networkmanager = { - enable = true; - - dns = "none"; - wifi.powersave = false; - wifi.backend = "wpa_supplicant"; - settings = { - "device"."wifi.scan-rand-mac-address" = "no"; - "connection"."wifi.cloned-mac-address" = "permanent"; - }; - }; - wireless.iwd.enable = false; - }; - - boot.extraModprobeConfig = '' - options cfg80211 ieee80211_regdom=JP - options iwlwifi power_save=0 - options iwlwifi uapsd_disable=1 - ''; - - programs.nm-applet.enable = true; - }; -} diff --git a/modules/system/nix.nix b/modules/system/nix.nix deleted file mode 100644 index 5240ba7..0000000 --- a/modules/system/nix.nix +++ /dev/null @@ -1,28 +0,0 @@ -_: { - nix.settings = { - extra-substituters = [ - "https://cache.nixos.org" - "https://nix-community.cachix.org" - "https://moons-dotfiles.cachix.org" - "https://noctalia.cachix.org" - "https://vicinae.cachix.org" - "https://cache.numtide.com" - "https://codex-desktop-linux.cachix.org" - ]; - - extra-trusted-public-keys = [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - "moons-dotfiles.cachix.org-1:WHoroKiNScG2/dpxHHL1I0qVmvuQhJbEAP+DS2j9Rr0=" - "noctalia.cachix.org-1:pCOR47nnMEo5thcxNDtzWpOxNFQsBRglJzxWPp3dkU4=" - "vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc=" - "niks3.numtide.com-1:DTx8wZduET09hRmMtKdQDxNNthLQETkc/yaX7M4qK0g=" - "codex-desktop-linux.cachix.org-1:nX/xy6AdK9hQE24A8ALGjkCKj2ObFmcnemiL5Cid4nk=" - ]; - - experimental-features = [ - "nix-command" - "flakes" - ]; - }; -} diff --git a/modules/system/power.nix b/modules/system/power.nix deleted file mode 100644 index 6ab8466..0000000 --- a/modules/system/power.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.system.power; -in -{ - options.my.system.power = { - enable = lib.mkEnableOption "power management"; - }; - - config = lib.mkIf cfg.enable { - boot.kernelParams = [ - "mem_sleep_default=deep" - ]; - - powerManagement = { - enable = true; - powertop.enable = true; - }; - - services.power-profiles-daemon.enable = true; - services.tlp.enable = false; - services.upower.enable = true; - - services.logind = { - settings.Login = { - HandleLidSwitch = "suspend"; - HandleLidSwitchDocked = "ignore"; - HandleLidSwitchExternalPower = "suspend"; - LidSwitchIgnoreInhibited = "no"; - }; - }; - }; -} diff --git a/modules/system/quem.nix b/modules/system/quem.nix deleted file mode 100644 index 2dbc926..0000000 --- a/modules/system/quem.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.my.system.quem; -in -{ - options.my.system.quem = { - enable = lib.mkEnableOption "QEMU guest support"; - }; - - config = lib.mkIf cfg.enable { - services.qemuGuest.enable = true; - }; -} diff --git a/modules/system/secret.nix b/modules/system/secret.nix deleted file mode 100644 index bb393d2..0000000 --- a/modules/system/secret.nix +++ /dev/null @@ -1,14 +0,0 @@ -_: -let - commonSyetemSecrets = ../../secrets/common/system.yaml; -in -{ - sops.secrets = { - "users/moons/hashedPassword" = { - sopsFile = commonSyetemSecrets; - - # need before user creation - neededForUsers = true; - }; - }; -} diff --git a/modules/system/secure-boot.nix b/modules/system/secure-boot.nix deleted file mode 100644 index 8eda80d..0000000 --- a/modules/system/secure-boot.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - pkgs, - inputs, - lib, - config, - ... -}: -let - cfg = config.my.system.secure-boot; -in -{ - imports = [ - inputs.lanzaboote.nixosModules.lanzaboote - ]; - - options.my.system.secure-boot = { - enable = lib.mkEnableOption "secure boot (lanzaboote)"; - }; - - config = lib.mkIf cfg.enable { - boot.loader = { - systemd-boot.enable = lib.mkForce false; - efi.canTouchEfiVariables = true; - efi.efiSysMountPoint = "/boot"; - }; - - boot.lanzaboote = { - enable = true; - pkiBundle = "/var/lib/sbctl"; - }; - - environment.systemPackages = with pkgs; [ - sbctl # A tool to manage UEFI Secure Boot keys and signatures - ]; - }; -} diff --git a/modules/system/sops.nix b/modules/system/sops.nix deleted file mode 100644 index caf3184..0000000 --- a/modules/system/sops.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - inputs, - pkgs, - ... -}: -{ - imports = [ - inputs.sops-nix.nixosModules.sops - ]; - - environment.systemPackages = with pkgs; [ - # sops / age - sops - age - ssh-to-age - - # YubiKey edit key - age-plugin-yubikey - yubikey-manager - pcsc-tools - - # password hash generation - mkpasswd - ]; - - # age-plugin-yubikey depend - services.pcscd.enable = true; - - services.openssh.enable = true; - - sops = { - defaultSopsFormat = "yaml"; - - age = { - # system keys - sshKeyPaths = [ - "/etc/ssh/ssh_host_ed25519_key" - ]; - }; - }; -} diff --git a/modules/system/user/default.nix b/modules/system/user/default.nix deleted file mode 100644 index d2e62b5..0000000 --- a/modules/system/user/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - imports = [ - ./moons.nix - ]; - - nix.settings.allowed-users = [ "moons" ]; - nix.settings.trusted-users = [ - "root" - "moons" - ]; -} diff --git a/modules/system/user/moons.nix b/modules/system/user/moons.nix deleted file mode 100644 index 3a573d7..0000000 --- a/modules/system/user/moons.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ - pkgs, - ... -}: -{ - users.mutableUsers = true; - - users.users.moons = { - isNormalUser = true; - description = "moons-14"; - extraGroups = [ - "adbusers" - "docker" - "libvirtd" - "lp" - "networkmanager" - "scanner" - "wheel" - "vboxusers" - "dialout" - ]; - shell = pkgs.zsh; - ignoreShellProgramCheck = true; - - openssh.authorizedKeys.keys = [ - "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIKhxDkucmeCor6CKoXAua7DgDSzuXrZOtpdkyzQxz5+aAAAABHNzaDo= moons@moons14.com" - "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIN6hZJyng/5LgFKPjR6uZAd/00UkO0vN0uQOoIvfSELdAAAABHNzaDo= moons@moons14.com" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPLwReAiwhXoO34S2+MrvqUhi8IWp4IzUq4OSp3niJdq" - ]; - }; -} diff --git a/modules/system/version.nix b/modules/system/version.nix deleted file mode 100644 index 3218185..0000000 --- a/modules/system/version.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - ... -}: -{ - options.my.stateVersions = { - nixos = lib.mkOption { - type = lib.types.str; - default = "26.05"; - }; - - homeManager = lib.mkOption { - type = lib.types.str; - default = "26.05"; - }; - }; - - config = { - system.stateVersion = lib.mkDefault config.my.stateVersions.nixos; - }; -} diff --git a/overlays/default.nix b/overlays/default.nix deleted file mode 100644 index e4f8a7d..0000000 --- a/overlays/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ inputs, ... }: -{ - flake.overlays.default = _final: prev: { - llm-agents = inputs.llm-agents.packages.${prev.stdenv.hostPlatform.system}; - }; -} diff --git a/profiles/interfaces/cli-interactive.nix b/profiles/interfaces/cli-interactive.nix deleted file mode 100644 index 6703a38..0000000 --- a/profiles/interfaces/cli-interactive.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - imports = [ - ./cli-minimal.nix - ]; - - my.features.cli.interactive.enable = true; -} diff --git a/profiles/interfaces/cli-minimal.nix b/profiles/interfaces/cli-minimal.nix deleted file mode 100644 index e3f2f38..0000000 --- a/profiles/interfaces/cli-minimal.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - my.features = { - cli = { - base.enable = true; - shell.enable = true; - }; - identity.sshDefaultKey.enable = true; - }; -} diff --git a/profiles/interfaces/gui.nix b/profiles/interfaces/gui.nix deleted file mode 100644 index 10be870..0000000 --- a/profiles/interfaces/gui.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - imports = [ - ./cli-interactive.nix - ]; - - my.features = { - gui = { - desktop.enable = true; - terminal.enable = true; - audio.enable = true; - jpInput.enable = true; - graphic.enable = true; - capture.enable = true; - fileManager.enable = true; - password.enable = true; - }; - services.kde.enable = true; - }; -} diff --git a/profiles/platforms/desktop.nix b/profiles/platforms/desktop.nix deleted file mode 100644 index 395d7d0..0000000 --- a/profiles/platforms/desktop.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - my.features.boot.uefi.enable = true; -} diff --git a/profiles/platforms/laptop.nix b/profiles/platforms/laptop.nix deleted file mode 100644 index 9a9729e..0000000 --- a/profiles/platforms/laptop.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - my.features = { - boot.power.enable = true; - connect = { - wifi.enable = true; - bluetooth.enable = true; - }; - gui.camera.enable = true; - identity.fingerprint.enable = true; - }; -} diff --git a/profiles/platforms/thinkpad.nix b/profiles/platforms/thinkpad.nix deleted file mode 100644 index af1e980..0000000 --- a/profiles/platforms/thinkpad.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - imports = [ - ./laptop.nix - ]; - - my.drivers.intel.enable = true; -} diff --git a/profiles/platforms/vm.nix b/profiles/platforms/vm.nix deleted file mode 100644 index 3ae9c58..0000000 --- a/profiles/platforms/vm.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - my.features = { - boot.uefi.enable = true; - services.quemGuest.enable = true; - storage.nfsClient.enable = true; - }; -} diff --git a/profiles/workloads/dev.nix b/profiles/workloads/dev.nix deleted file mode 100644 index 0187f52..0000000 --- a/profiles/workloads/dev.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - my.features = { - dev = { - agent.enable = true; - arduino.enable = true; - nix.enable = true; - python.enable = true; - bun.enable = true; - dns.enable = true; - drawio.enable = true; - java.enable = true; - }; - gui.editor.enable = true; - services.container.enable = true; - }; -} diff --git a/profiles/workloads/personal.nix b/profiles/workloads/personal.nix deleted file mode 100644 index 1b9da2a..0000000 --- a/profiles/workloads/personal.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - my.features.application = { - browser.enable = true; - communication.enable = true; - }; -} diff --git a/profiles/workloads/remote.nix b/profiles/workloads/remote.nix deleted file mode 100644 index 78d47c9..0000000 --- a/profiles/workloads/remote.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - my.features = { - cli.base.sshServer = true; - }; -} diff --git a/profiles/workloads/secure-storage.nix b/profiles/workloads/secure-storage.nix deleted file mode 100644 index c3820e1..0000000 --- a/profiles/workloads/secure-storage.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ - my.features.boot.secureBoot.enable = true; - my.features.boot.storageCrypto.enable = true; -} diff --git a/profiles/workloads/srv.nix b/profiles/workloads/srv.nix deleted file mode 100644 index 31892fb..0000000 --- a/profiles/workloads/srv.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - my.features = { - cli.base.sshServer = true; - services.container.enable = true; - }; -} diff --git a/profiles/workloads/tailscale/client.nix b/profiles/workloads/tailscale/client.nix deleted file mode 100644 index c9824b1..0000000 --- a/profiles/workloads/tailscale/client.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - my.features.network.tailscale = { - enable = true; - - acceptDns = false; - acceptRoutes = true; - }; -} diff --git a/profiles/workloads/tailscale/server.nix b/profiles/workloads/tailscale/server.nix deleted file mode 100644 index dd41e9f..0000000 --- a/profiles/workloads/tailscale/server.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - my.features.network.tailscale = { - enable = true; - - acceptDns = false; - acceptRoutes = false; - - advertiseRoutes = [ - "10.50.0.0/16" - ]; - }; -} diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 613d308..0000000 --- a/renovate.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:recommended", "helpers:pinGitHubActionDigests"], - "enabledManagers": ["github-actions"], - - "prHourlyLimit": 0, - - "prCreation": "immediate", - - "semanticCommits": "enabled", - "semanticCommitType": "chore", - "semanticCommitScope": "deps" -} diff --git a/secrets/common/system.yaml b/secrets/common/system.yaml deleted file mode 100644 index 4d3315f..0000000 --- a/secrets/common/system.yaml +++ /dev/null @@ -1,46 +0,0 @@ -users: - moons: - hashedPassword: ENC[AES256_GCM,data:QtZei/BXPn/PDxUlOu0ZVrAfRM5jiHChAE5j5NVscPmm4OWjr94nPVOmJlYjL2WAiJY3/JSthmbrEIqiUF6E9qv10HQzAxzmZQ==,iv:ksshJX9S/20lw/8IDZYadNZLLE/gNgENZJ3/wRgJCds=,tag:xJPiO8O/q4rKmb+YNnpZdg==,type:str] -sops: - age: - - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IGxWc2NMZyBBbEttK0xB - ZVVDWk03alZnR3lGZEY4VlJMdTRTMXNDdHR6QW5YekgwZ3B0SQordFdPRUh4YU80 - MmxMNFdKbTNMVXZPMVVNY3ZKdjczWnhWTzYxbUV6NC9rCi0tLSBDSGlUWC9SVW1T - MitabjYrWG1FVG5xUGhqSVZDekgrQmcxSUZGSklFdU5vCu3bLs7yVM7vxFX2q3pt - W/4VEsxzYZN2aITrRfbVWCgwVyYBh3WbcImU8oLOhZ2nfgqfcQ5x2LVu1IzuCSdd - cjo= - -----END AGE ENCRYPTED FILE----- - recipient: age1yubikey1qvy5y8kxqc63y7fk0tfv43u499a8z8q332ff087lythry9cc6hdxxkznc6t - - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVaWxxVWFSTUxDNy9KaGlE - ZVBWVHF2eEFXZnJLaXdiSW5kMUJpYiswVGhjCmFkcUhTMXhuRFpLTG9Udkd1UXI2 - MkN5VXJSNUNiQUp2MzFIbzhhbVZ3aGsKLS0tIGE3ZXlsMjdRb2RBM1lVMHRSY0I4 - SUVnNjFZVFQzZ3Y4UjlaK3ZNOXdGRXcKyrd86CUWYi13i+M7ESKQH3W41M2/pc60 - 04Px/7G7urIlgjfEV/wXaVIyeSU8Eb65uI/AOseJwH3v4IbW6Nd6bw== - -----END AGE ENCRYPTED FILE----- - recipient: age12g85cuvg4kjfr79lqf5fx2k0d82tchrgv88xgkt7ukk2cfcsw98s2rjyat - - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2UDU4VFJ1d3VDa2lDNURW - RDFMQWFzNWRwcUFqT25KR29MU0x2NW9GMkFZCjJwUExKOFRPRW9kZWxVSisreVRo - Y2Era2dHZk1QR04xMkNGcnROR2R3eHcKLS0tIGh4alhBamJzVnMyczBMK0l4TEUr - WjF2R2N2RHdkMGh3VkdwKy9kb0VZOXMKCC3bEZROBi45aydfI5UL4oPP+ce91/UK - tOuHzwituiYZdJ79a/wXRJMFPg9eCiziSR3uLeP8279oLM417Drwxg== - -----END AGE ENCRYPTED FILE----- - recipient: age18rtm2dq2r62zvnhwdq0gkm24hu85r7zyleyk3jqv22zpdtw064eq7ay7dl - - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYZlNDTnhFSi9iOXZEcHdQ - U1kreStxZ2dJd0g4dE1rdDQrSk5QTUhMbm5JCmRNc0k4K2VrTTFnaFNFSkd1em1J - SGczRnFzK2RlSzFPQnVUWHZUdzYyL2MKLS0tICtBbk9Zc0tYaXJ6a3FXcUQ5R0xv - MVZxUGZTaHJyeGNjS1B2SVhJLzAyNFkKNGE5sNLodP5TcXqvW//JLRW/5g8I0Hzc - cAgBXe+70HqFzEHQF1X7jHSZarTwclaNsjQPVyEaQfxYf+mLh+bTaA== - -----END AGE ENCRYPTED FILE----- - recipient: age1mcp5gma7y0k59equhzqfsnn0ed335ljjtn0k08ua77htlxf0x54qsravch - lastmodified: "2026-06-15T10:20:19Z" - mac: ENC[AES256_GCM,data:Tw58FneoksiOuol1aUOFXoAnFiTzddmFfYAA0B0RfPPyj6UKQbBvRYJhOMuOMRE1fVlDhqxxDiqZI5y14vJg8gLusAZt1JKi7ODR7MqcImvxboaee8DIj4uIcN254g0c0cmZWsGrt7yTYoSLDUc3QdAxj9/Az/CMls6XjM+RL8E=,iv:XGgWgbexCUxzuJzRVG3V2GZGwmwjAtowgz+NRPxk1+o=,tag:FwYJXfwS2f70okl0bhS+Sw==,type:str] - unencrypted_suffix: _unencrypted - version: 3.13.1 diff --git a/shells/android.nix b/shells/android.nix deleted file mode 100644 index 9a742c2..0000000 --- a/shells/android.nix +++ /dev/null @@ -1,15 +0,0 @@ -_: { - perSystem = - { pkgs, ... }: - { - devShells.android = pkgs.mkShell { - packages = with pkgs; [ - android-tools # adb, fastboot - ]; - - shellHook = '' - alias adb-shutter-off='adb shell settings put system csc_pref_camera_forced_shuttersound_key 0' - ''; - }; - }; -} diff --git a/shells/default.nix b/shells/default.nix deleted file mode 100644 index caf7537..0000000 --- a/shells/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./dotnix.nix - ./android.nix - ]; -} diff --git a/shells/dotnix.nix b/shells/dotnix.nix deleted file mode 100644 index bef8bb2..0000000 --- a/shells/dotnix.nix +++ /dev/null @@ -1,35 +0,0 @@ -_: { - perSystem = - { - pkgs, - config, - ... - }: - { - devShells.dotnix = pkgs.mkShell { - packages = [ - config.treefmt.build.wrapper - - pkgs.git - pkgs.gitleaks - pkgs.pre-commit - - # sops-nix / age - pkgs.sops - pkgs.age - pkgs.ssh-to-age - - # YubiKey for sops editing - pkgs.age-plugin-yubikey - pkgs.yubikey-manager - pkgs.pcsc-tools - ]; - - shellHook = '' - ${config.pre-commit.settings.shellHook} - - export SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/yubikey-identity.txt" - ''; - }; - }; -}