diff --git a/home/features/cli/default.nix b/home/features/cli/default.nix
deleted file mode 100644
index c9fde53..0000000
--- a/home/features/cli/default.nix
+++ /dev/null
@@ -1,115 +0,0 @@
-{pkgs, ...}: {
- imports = [
- ./fish.nix
- ./fzf.nix
- ./nitch.nix
- ./nushell.nix
- ./secrets.nix
- ./starship.nix
- ./television.nix
- ./zellij.nix
- ];
-
- cli.stt-ptt = {
- enable = true;
- whisperPackage = pkgs.whisper-cpp-vulkan;
- model = "ggml-large-v3-turbo";
- notifyTimeout = 2000;
- };
-
- programs.carapace = {
- enable = true;
- enableFishIntegration = true;
- enableNushellIntegration = true;
- enableBashIntegration = true;
- };
-
- programs.nix-index = {
- enable = true;
- enableBashIntegration = true;
- enableNushellIntegration = true;
- };
-
- programs.zoxide = {
- enable = true;
- enableFishIntegration = true;
- enableNushellIntegration = true;
- };
-
- programs.neovim = {
- enable = true;
- defaultEditor = true;
- viAlias = true;
- vimAlias = true;
- vimdiffAlias = true;
- withNodeJs = true;
- withPython3 = true;
- };
-
- programs.bat = {enable = true;};
-
- programs.direnv = {
- enable = true;
- enableNushellIntegration = true;
- nix-direnv.enable =
- true;
- };
-
- programs.eza = {
- enable = true;
- enableFishIntegration = true;
- enableBashIntegration = true;
- extraOptions = ["-l" "--icons" "--git" "-a"];
- };
-
- programs.lf = {
- enable = true;
- settings = {
- preview = true;
- drawbox = true;
- hidden = true;
- icons = true;
- theme = "Dracula";
- previewer = "bat";
- };
- };
-
- home.packages = with pkgs; [
- agenix-cli
- alejandra
- basecamp
- bc
- claude-code
- comma
- coreutils
- devenv
- fd
- gcc
- go
- btop
- httpie
- jq
- just
- lazygit
- llm
- lf
- nix-index
- nushellPlugins.skim
- progress
- ripgrep
- # rocmPackages.rocm-smi
- # rocmPackages.rocminfo
- # rocmPackages.rocm-runtime
- tldr
- pomodoro-timer
- trash-cli
- unimatrix
- unzip
- vulkan-tools
- wttrbar
- wireguard-tools
- yazi
- zellij-ps
- zip
- ];
-}
diff --git a/home/features/cli/fish.nix b/home/features/cli/fish.nix
deleted file mode 100644
index 962e3fa..0000000
--- a/home/features/cli/fish.nix
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
- cfg = config.features.cli.fish;
-in {
- options.features.cli.fish.enable = mkEnableOption "enable fish shell";
-
- config = mkIf cfg.enable {
- programs.fish = {
- enable = true;
- loginShellInit = ''
- set -x NIX_PATH nixpkgs=channel:nixos-unstable
- set -x NIX_LOG info
- set -x WEBKIT_DISABLE_COMPOSITING_MODE 1
- set -x TERMINAL ghostty
- set -x EDITOR nvim
- set -x VISUAL zeditor
- set -x XDG_DATA_HOME $HOME/.local/share
- set -x FZF_CTRL_R_OPTS "
- --preview='bat --color=always -n {}'
- --preview-window up:3:hidden:wrap
- --bind 'ctrl-/:toggle-preview'
- --bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort'
- --color header:bold
- --header 'Press CTRL-Y to copy command into clipboard'"
- set -x FZF_DEFAULT_COMMAND fd --type f --exclude .git --follow --hidden
- set -x FZF_CTRL_T_COMMAND "$FZF_DEFAULT_COMMAND"
- set -x FLAKE $HOME/p/nixos/nixos-config
- source /run/agenix/${config.home.username}-secrets
-
- if test (tty) = "/dev/tty1"
- exec uwsm start -S -F /run/current-system/sw/bin/Hyprland
- end
- if test (tty) = "/dev/tty2"
- exec gamescope -O HDMI-A-1 -W 1920 -H 1080 --adaptive-sync --hdr-enabled --rt --steam -- steam -pipewire-dmabuf -tenfoot
- end
- '';
- shellAbbrs = {
- ".." = "cd ..";
- "..." = "cd ../..";
- b = "yazi";
- ls = "eza";
- l = "eza -l --icons --git -a";
- lt = "eza --tree --level=2 --long --icons --git";
- grep = "rg";
- ps = "procs";
- just = "just --unstable";
- fs = "du -ah . | sort -hr | head -n 10";
-
- n = "nix";
- nd = "nix develop -c $SHELL";
- ns = "nix shell";
- nsn = "nix shell nixpkgs#";
- nb = "nix build";
- nbn = "nix build nixpkgs#";
- nf = "nix flake";
-
- nr = "sudo nixos-rebuild --flake .";
- nrs = "sudo nixos-rebuild switch --flake .#(uname -n)";
- snr = "sudo nixos-rebuild --flake .";
- snrs = "sudo nixos-rebuild --flake . switch";
- hm = "home-manager --flake .";
- hms = "home-manager --flake . switch";
- hmr = "cd ~/projects/nix-configurations; nix flake lock --update-input dotfiles; home-manager --flake .#(whoami)@(hostname) switch";
-
- tsu = "sudo tailscale up";
- tsd = "sudo tailscale down";
-
- vi = "nvim";
- vim = "nvim";
- };
- };
- };
-}
diff --git a/home/features/cli/fzf.nix b/home/features/cli/fzf.nix
deleted file mode 100644
index 6219f4d..0000000
--- a/home/features/cli/fzf.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
- cfg = config.features.cli.fzf;
-in {
- options.features.cli.fzf.enable = mkEnableOption "enable fuzzy finder";
-
- config = mkIf cfg.enable {
- programs.fzf = {
- enable = true;
- enableFishIntegration = true;
- colors = {
- "fg" = "#f8f8f2";
- "bg" = "#282a36";
- "hl" = "#bd93f9";
- "fg+" = "#f8f8f2";
- "bg+" = "#44475a";
- "hl+" = "#bd93f9";
- "info" = "#ffb86c";
- "prompt" = "#50fa7b";
- "pointer" = "#ff79c6";
- "marker" = "#ff79c6";
- "spinner" = "#ffb86c";
- "header" = "#6272a4";
- };
- defaultOptions = [
- "--preview='bat --color=always -n {}'"
- "--bind 'ctrl-/:toggle-preview'"
- "--header 'Press CTRL-Y to copy command into clipboard'"
- "--bind 'ctrl-/:toggle-preview'"
- "--bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort'"
- ];
- defaultCommand = "fd --type f --exclude .git --follow --hidden";
- changeDirWidgetCommand = "fd --type d --exclude .git --follow --hidden";
- };
- };
-}
diff --git a/home/features/cli/nitch.nix b/home/features/cli/nitch.nix
deleted file mode 100644
index 1177299..0000000
--- a/home/features/cli/nitch.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-with lib; let
- cfg = config.features.cli.nitch;
-in {
- options.features.cli.nitch.enable = mkEnableOption "enable nitch";
-
- config = mkIf cfg.enable {
- home.packages = with pkgs; [nitch];
- };
-}
diff --git a/home/features/cli/nushell.nix b/home/features/cli/nushell.nix
deleted file mode 100644
index 4235fdc..0000000
--- a/home/features/cli/nushell.nix
+++ /dev/null
@@ -1,88 +0,0 @@
-{
- config,
- pkgs,
- lib,
- ...
-}:
-with lib; let
- cfg = config.features.cli.nushell;
-in {
- options.features.cli.nushell.enable = mkEnableOption "enable nushell";
-
- config = mkIf cfg.enable {
- programs.nushell = {
- enable = true;
- envFile.text = ''
- $env.config.show_banner = false
- $env.NIX_PATH = "nixpkgs=channel:nixos-unstable"
- $env.NIX_LOG = "iunfo"
- $env.WEBKIT_DISABLE_COMPOSITING_MODE = "1"
- $env.TERMINAL = "ghostty"
- $env.EDITOR = "nvim"
- $env.VISUAL = "zeditor"
- $env.FZF_DEFAULT_COMMAND = "fd --type f --exclude .git --follow --hidden"
- $env.FZF_DEFAULT_OPTS = "--preview='bat --color=always -n {}' --bind 'ctrl-/:toggle-preview' --header 'Press CTRL-Y to copy command into clipboard' --bind 'ctrl-/:toggle-preview' --bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort' --color bg:#282a36,bg+:#44475a,fg:#f8f8f2,fg+:#f8f8f2,header:#6272a4,hl:#bd93f9,hl+:#bd93f9,info:#ffb86c,marker:#ff79c6,pointer:#ff79c6,prompt:#50fa7b,spinner:#ffb86c"
- $env.XDG_DATA_HOME = $"($env.HOME)/.local/share"
- $env.FZF_DEFAULT_COMMAND = "fd --type f --exclude .git --follow --hidden"
- $env.SSH_AUTH_SOCK = "/run/user/1000/gnupg/S.gpg-agent.ssh"
- $env.PATH = ($env.PATH | split row (char esep) | append "/home/sascha.koenig/.cache/.bun/bin" | uniq)
- $env.FLAKE = $"($env.HOME)/p/NIX/nixos-config"
-
- # Load kestractl-env from agenix
- if ("/run/agenix/kestractl-env" | path exists) {
- open /run/agenix/kestractl-env
- | lines
- | where {($in | str trim | str length) > 0}
- | parse "{key}={value}"
- | update value {str trim -c '"'}
- | transpose -r -d
- | load-env
- }
- '';
-
- # if (tty) == "/dev/tty1" {
- # exec uwsm start -S -F /run/current-system/sw/bin/Hyprland
- # }
- # if (tty) == "/dev/tty2" {
- # exec gamescope -O HDMI-A-1 -W 1920 -H 1080 --adaptive-sync --hdr-enabled --rt --steam -- steam -pipewire-dmabuf -tenfoot
- # }
- configFile.text = ''
-
- alias .. = cd ..
- alias ... = cd ...
- alias h = cd $env.HOME
- alias b = yazi
- alias lt = eza --tree --level=2 --long --icons --git
- alias grep = rg
- alias just = just --unstable
-
- alias n = nix
- alias nd = nix develop -c $nu.current-shell
- alias ns = nix shell
- alias nsn = nix shell nixpkgs#
- alias nb = nix build
- alias nbn = nix build nixpkgs#
- alias nf = nix flake
-
- alias nr = sudo nixos-rebuild --flake .
- alias nrs = sudo nixos-rebuild switch --flake .#(sys host | get hostname)
- alias snr = sudo nixos-rebuild --flake .
- alias snrs = sudo nixos-rebuild --flake . switch
- alias hm = home-manager --flake .
- alias hms = home-manager --flake . switch
- alias hmr = do { cd ~/projects/nix-configurations; nix flake lock --update-input dotfiles; home-manager --flake .#(whoami)@(hostname) switch }
-
- alias tsu = sudo tailscale up
- alias tsd = sudo tailscale down
-
- alias vi = nvim
- alias vim = nvim
-
- if (which tv | is-not-empty) {
- mkdir ($nu.data-dir | path join "vendor/autoload")
- tv init nu | save -f ($nu.data-dir | path join "vendor/autoload/tv.nu")
- }
- '';
- };
- };
-}
diff --git a/home/features/cli/secrets.nix b/home/features/cli/secrets.nix
deleted file mode 100644
index a4a7578..0000000
--- a/home/features/cli/secrets.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-with lib; let
- cfg = config.features.cli.secrets;
-in {
- options.features.cli.secrets.enable = mkEnableOption "enable secrets";
-
- config = mkIf cfg.enable {
- programs.password-store = {
- enable = true;
- settings = {
- PASSWORD_STORE_DIR = "$XDG_DATA_HOME/password-store";
- };
- package =
- pkgs.pass-wayland.withExtensions
- (exts: [exts.pass-otp exts.pass-import]);
- };
- home.packages = with pkgs; [pinentry-gnome3];
- };
-}
diff --git a/home/features/cli/starship.nix b/home/features/cli/starship.nix
deleted file mode 100644
index 4a44694..0000000
--- a/home/features/cli/starship.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
- cfg = config.features.cli.starship;
-in {
- options.features.cli.starship.enable = mkEnableOption "enable starship prompt";
-
- config = mkIf cfg.enable {
- programs.starship = {
- enable = true;
- enableFishIntegration = true;
- enableNushellIntegration = true;
- };
- };
-}
diff --git a/home/features/cli/television.nix b/home/features/cli/television.nix
deleted file mode 100644
index bc1b036..0000000
--- a/home/features/cli/television.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
- cfg = config.features.cli.television;
-in {
- options.features.cli.television.enable = mkEnableOption "enable nitch";
-
- config = mkIf cfg.enable {
- programs.television = {
- enable = true;
- channels = {
- tldr = {
- metadata = {
- description = "Browse TLDR pages";
- name = "tldr";
- requirements = [
- "tldr"
- ];
- };
- preview = {
- command = "tldr '{}'";
- };
- source = {
- command = "tldr --list";
- };
- };
- git-diff = {
- metadata = {
- description = "A channel to select files from git diff commands";
- name = "git-diff";
- requirements = [
- "git"
- ];
- };
- preview = {
- command = "git diff HEAD --color=always -- '{}'";
- };
- source = {
- command = "git diff --name-only HEAD";
- };
- };
- git-log = {
- metadata = {
- description = "A channel to select from git log entries";
- name = "git-log";
- requirements = [
- "git"
- ];
- };
- preview = {
- command = "git show -p --stat --pretty=fuller --color=always '{0}'";
- };
- source = {
- command = "git log --oneline --date=short --pretty=\"format:%h %s %an %cd\" \"$@\"";
- output = "{split: :0}";
- };
- };
- };
- };
- };
-}
diff --git a/home/features/cli/zellij.nix b/home/features/cli/zellij.nix
deleted file mode 100644
index 903ee04..0000000
--- a/home/features/cli/zellij.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
- cfg = config.features.cli.zellij;
-in {
- options.features.cli.zellij.enable = mkEnableOption "enable tmux";
-
- config = mkIf cfg.enable {
- programs.zellij = {
- enable = true;
- };
- };
-}
diff --git a/home/features/coding/default.nix b/home/features/coding/default.nix
deleted file mode 100644
index 08ffc7b..0000000
--- a/home/features/coding/default.nix
+++ /dev/null
@@ -1,58 +0,0 @@
-{pkgs, ...}: {
- imports = [
- ./opencode.nix
- ];
- programs.mcp = {
- enable = true;
- servers = {
- Ref = {
- command = "sh";
- args = ["-c" "REF_API_KEY=$(cat /run/agenix/ref-key) exec bunx ref-tools-mcp@latest"];
- };
- Exa = {
- command = "sh";
- args = ["-c" "EXA_API_KEY=$(cat /run/agenix/exa-key) exec bunx exa-mcp-server@latest tools=web_search_exa"];
- };
- Outline = {
- url = "https://wiki.az-gruppe.com/mcp";
- };
- ContextMode = {
- command = "sh";
- args = ["-c" "exec bunx context-mode@latest"];
- };
- };
- };
- home.packages = with pkgs; [
- agenix-cli
- alejandra
- bc
- bun
- devpod
- kestractl
- kitty
- #devpod-desktop
- (python3.withPackages (ps:
- with ps; [
- pip
- uv
- # Scientific packages
- numba
- numpy
- torch
- srt
- ]))
- pyrefly
- nixd
- nix-update
- sidecar
- td
- opencode-desktop
- openspec
- (qmd.override {
- vulkanSupport = true;
- cudaSupport = false;
- })
- tailwindcss
- tailwindcss-language-server
- ];
-}
diff --git a/home/features/coding/opencode.nix b/home/features/coding/opencode.nix
deleted file mode 100644
index caa08af..0000000
--- a/home/features/coding/opencode.nix
+++ /dev/null
@@ -1,109 +0,0 @@
-# AZ-Gruppe work machine opencode overrides.
-# The shared base module lives in m3ta-nixpkgs:
-# modules/home-manager/coding/opencode.nix (coding.opencode options)
-# Only work-specific provider config and model assignments live here.
-{inputs, ...}: {
- coding.opencode = {
- enable = true;
- agentsInput = inputs.agents;
-
- externalSkills = [
- {
- src = inputs.skills-anthropic;
- selectSkills = ["pdf" "docx" "frontend-design"];
- }
- {src = inputs.skills-vercel;}
- ];
-
- # AZ-Gruppe LiteLLM endpoint + available models
- extraSettings = {
- provider = {
- litellm = {
- npm = "@ai-sdk/openai-compatible";
- name = "LiteLLM (AZ-Gruppe)";
- options.baseURL = "https://llm.az-gruppe.com/v1";
- models = {
- "gpt-5.2" = {
- name = "GPT-5.2";
- limit = {
- context = 400000;
- output = 128000;
- };
- };
- "gpt-5.3-codex" = {
- name = "GPT-5.3 Codex";
- limit = {
- context = 400000;
- output = 128000;
- };
- };
- "claude-haiku-4-5" = {
- name = "Claude Haiku 4.5";
- options = {
- thinking = {
- type = "enabled";
- budget_tokens = 16000;
- };
- };
- limit = {
- context = 200000;
- output = 64000;
- };
- };
- "claude-sonnet-4-6" = {
- name = "Claude Sonnet 4.6";
- options = {
- thinking = {
- type = "enabled";
- budget_tokens = 16000;
- };
- };
- limit = {
- context = 200000;
- output = 64000;
- };
- };
- "claude-opus-4-6" = {
- name = "Claude Opus 4.6";
- options = {
- thinking = {
- type = "enabled";
- budget_tokens = 16000;
- };
- };
- limit = {
- context = 200000;
- output = 128000;
- };
- };
- };
- };
- };
- };
-
- # Model assignments for oh-my-opencode — all via AZ LiteLLM
- ohMyOpencodeSettings = {
- agents = {
- sisyphus.model = "litellm/claude-opus-4-6";
- oracle.model = "litellm/claude-sonnet-4-6";
- librarian.model = "litellm/claude-sonnet-4-6";
- explore.model = "litellm/claude-haiku-4-5";
- multimodal-looker.model = "litellm/gpt-5.3-codex";
- prometheus.model = "litellm/claude-opus-4-6";
- metis.model = "litellm/claude-opus-4-6";
- momus.model = "litellm/claude-opus-4-6";
- atlas.model = "litellm/claude-sonnet-4-6";
- };
- categories = {
- visual-engineering.model = "zai-coding-plan/glm-5";
- ultrabrain.model = "litellm/claude-opus-4-6";
- deep.model = "litellm/claude-sonnet-4-6";
- artistry.model = "zai-coding-plan/glm-5.1";
- quick.model = "litellm/claude-haiku-4-5";
- unspecified-low.model = "litellm/claude-sonnet-4-6";
- unspecified-high.model = "litellm/claude-opus-4-6";
- writing.model = "zai-coding-plan/glm-5.1";
- };
- };
- };
-}
diff --git a/home/features/desktop/coding.nix b/home/features/desktop/coding.nix
deleted file mode 100644
index 3084c5d..0000000
--- a/home/features/desktop/coding.nix
+++ /dev/null
@@ -1,153 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-with lib; let
- cfg = config.features.desktop.coding;
-in {
- options.features.desktop.coding.enable =
- mkEnableOption "install coding related stuff";
-
- config = mkIf cfg.enable {
- home.packages = with pkgs; [
- nur.repos.charmbracelet.crush
- bruno
- bun
- filezilla
- insomnia
- nodejs
- ];
-
- programs.zed-editor = {
- enable = true;
- userSettings = {
- agent_servers = {
- your_agent = {
- command = "path_to_executable";
- args = [];
- env = {};
- };
- };
- auto_update = false;
- buffer_font_family = "FiraCode Nerd Font";
- buffer_font_size = 16;
- context_servers = {
- browsermcp = {
- source = "custom";
- enabled = true;
- command = "npx";
- args = ["@browsermcp/mcp@latest"];
- };
- some-context-server = {
- source = "custom";
- command = "some-command";
- args = ["arg-1" "arg-2"];
- env = {};
- settings = {};
- };
- };
- features = {
- copilot = false;
- edit_prediction_provider = "zed";
- inline_prediction_provider = "zed";
- };
- format_on_save = "on";
- language_models = {
- openai_compatible = {
- AZ = {
- api_url = "https://llm.az-gruppe.com";
- available_models = [
- {
- name = "claude-4-5-sonnet";
- display_name = null;
- max_tokens = 200000;
- max_output_tokens = 32000;
- max_completion_tokens = 200000;
- capabilities = {
- tools = true;
- images = false;
- parallel_tool_calls = false;
- prompt_cache_key = false;
- };
- }
- ];
- };
- };
- anthropic = {
- api_url = "https://api.anthropic.com";
- };
- ollama = {
- api_url = "http://localhost:11434";
- };
- openai = {
- api_url = "https://api.openai.com/v1";
- };
- };
- languages = {
- Nix = {
- formatter = {
- external = {
- arguments = ["-q" "-"];
- command = "alejandra";
- };
- };
- language_servers = ["nixd"];
- };
- Python = {
- formatter = {
- external = {
- arguments = ["-"];
- command = "black";
- };
- };
- language_servers = ["pyrefly"];
- };
- };
- load_direnv = "shell_hook";
- lsp = {
- pyrefly = {
- command = {
- args = ["--lsp"];
- env = {};
- path = "pyrefly";
- };
- settings = {};
- };
- rust_analyzer = {
- binary = {
- path_lookup = true;
- };
- };
- };
- show_edit_predictions = true;
- ssh_connections = [
- {
- args = ["-i" "~/.ssh/sascha.koenig"];
- host = "152.53.186.119";
- port = 2022;
- nickname = "AZ-CLD-1";
- "projects" = [
- {
- paths = ["/home/sascha.koenig/AZ-NIX"];
- }
- ];
- }
- ];
- telemetry = {
- metrics = false;
- };
- theme = "Dracula";
- ui_font_size = 16;
- vim_mode = true;
- agent = {
- default_model = {
- model = "Claude 3.7 Sonnet";
- provider = "anthropic";
- };
- };
- };
- };
- };
-}
diff --git a/home/features/desktop/default.nix b/home/features/desktop/default.nix
deleted file mode 100644
index acd70e5..0000000
--- a/home/features/desktop/default.nix
+++ /dev/null
@@ -1,135 +0,0 @@
-{pkgs, ...}: {
- imports = [
- ./coding.nix
- ./fonts.nix
- ./hyprland.nix
- ./knowledge.nix
- ./media.nix
- ./office.nix
- ./rofi.nix
- ./theme.nix
- ./wayland.nix
- ./webapps.nix
- ];
-
- xdg = {
- enable = true;
- configFile."mimeapps.list".force = true;
- mimeApps = {
- enable = true;
- associations.added = {
- "application/zip" = ["org.gnome.FileRoller.desktop"];
- "application/csv" = ["calc.desktop"];
- "application/pdf" = ["okularApplication_pdf.desktop"];
- };
- defaultApplications = {
- "application/zip" = ["org.gnome.FileRoller.desktop"];
- "application/csv" = ["calc.desktop"];
- "application/pdf" = ["okularApplication_pdf.desktop"];
- "application/md" = ["nvim.desktop"];
- "application/text" = ["nvim.desktop"];
- "x-scheme-handler/http" = ["vivaldi-stable.desktop"];
- "x-scheme-handler/https" = ["vivaldi-stable.desktop"];
- "text/html" = ["vivaldi-stable.desktop"];
- "application/xhtml+xml" = ["vivaldi-stable.desktop"];
- };
- };
- userDirs = {
- enable = true;
- createDirectories = true;
- };
- };
-
- home.sessionVariables = {
- WEBKIT_DISABLE_COMPOSITING_MODE = "1";
- NIXOS_OZONE_WL = "1";
- TERMINAL = "ghostty";
- QT_QPA_PLATFORM = "wayland";
- XDG_CURRENT_DESKTOP = "Hyprland";
- XDG_SESSION_TYPE = "wayland";
- XDG_SESSION_DESKTOP = "Hyprland";
- };
- home.sessionPath = ["\${XDG_BIN_HOME}" "\${HOME}/.cargo/bin" "$HOME/.npm-global/bin" "$HOME/.cache/.bun/bin"];
-
- fonts.fontconfig.enable = true;
-
- programs.ghostty = {
- enable = true;
- settings = {
- font-family = "Fira Code";
- theme = "Dracula";
- copy-on-select = "clipboard";
- };
- };
-
- home.pointerCursor = {
- gtk.enable = true;
- package = pkgs.bibata-cursors;
- name = "Bibata-Modern-Ice";
- size = 20;
- };
- services = {
- cliphist = {
- enable = true;
- };
- remmina = {
- enable = true;
- systemdService = {
- enable = true;
- };
- };
- };
-
- home.packages = with pkgs; [
- appimage-run
- # blueberry
- bemoji
- brave
- # brightnessctl
- # clipman
- distrobox
- # eww
- # firefox-devedition
- file-roller
- kdotool
- ksnip
- hyprpaper-random
- hyprpanel
- launch-webapp
- lmstudio
- rustdesk
- seahorse
- sushi
- # glib
- # google-chrome
- # gsettings-desktop-schemas
- # graphviz
- # ksnip
- nwg-look
- # pamixer
- # pavucontrol
- # libsForQt5.qtstyleplugins
- # stable.nyxt
- # pcmanfm
- rose-pine-hyprcursor
- # qt5ct
- # qt6.qtwayland
- #rustdesk
- # socat
- # unrar
- # unzip
- # usbutils
- # v4l-utils
- slack
- telegram-desktop
- vivaldi
- vivaldi-ffmpeg-codecs
- warp-terminal
- # wl-clipboard
- # wlogout
- # wtype
- # xdg-utils
- # ydotool
- # zip
- ];
-}
diff --git a/home/features/desktop/fonts.nix b/home/features/desktop/fonts.nix
deleted file mode 100644
index cb69db2..0000000
--- a/home/features/desktop/fonts.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-with lib; let
- cfg = config.features.desktop.fonts;
-in {
- options.features.desktop.fonts.enable =
- mkEnableOption "install additional fonts for desktop apps";
-
- config = mkIf cfg.enable {
- home.packages = with pkgs; [
- fira-code
- fira-code-symbols
- nerd-fonts.fira-code
- nerd-fonts.jetbrains-mono
- font-manager
- font-awesome_5
- noto-fonts
- ];
- };
-}
diff --git a/home/features/desktop/gnome.nix b/home/features/desktop/gnome.nix
deleted file mode 100644
index e69de29..0000000
diff --git a/home/features/desktop/hyprland.nix b/home/features/desktop/hyprland.nix
deleted file mode 100644
index d1da50a..0000000
--- a/home/features/desktop/hyprland.nix
+++ /dev/null
@@ -1,319 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-with lib; let
- cfg = config.features.desktop.hyprland;
-in {
- options.features.desktop.hyprland.enable =
- mkEnableOption "Hyprland related stuff";
-
- config = mkIf cfg.enable {
- wayland.windowManager.hyprland = {
- settings = {
- xwayland = {
- force_zero_scaling = true;
- };
-
- exec-once = [
- "hyprpanel"
- "while ! hyprpaper-random; do sleep 0.5; done"
- "wl-paste --type text --watch cliphist store" # Stores only text data
- "wl-paste --type image --watch cliphist store" # Stores only image data "wl-paste -p -t text --watch clipman store -P --histpath=\"~/.local/share/clipman-primary.json\""
- ];
-
- env = [
- "XCURSOR_SIZE,32"
- "HYPRCURSOR_THEME,Bibata-Modern-Ice"
- "WLR_NO_HARDWARE_CURSORS,1"
- "GTK_THEME,Dracula"
- "XDG_CURRENT_DESKTOP,Hyprland"
- "XDG_SESSION_TYPE,wayland"
- "XDG_SESSION_DESKTOP,Hyprland"
- "NIXOS_OZONE_WL,1"
- ];
-
- ecosystem = {
- no_update_news = true;
- no_donation_nag = true;
- };
-
- input = {
- numlock_by_default = true;
- touchdevice = {
- enabled = true;
- };
- kb_layout = "de,us";
- kb_variant = "";
- kb_model = "";
- kb_rules = "";
- kb_options = "ctrl:nocaps";
- follow_mouse = 1;
- };
-
- general = {
- gaps_in = 5;
- gaps_out = 5;
- border_size = 1;
- "col.active_border" = "rgba(9742b5ee) rgba(9742b5ee) 45deg";
- "col.inactive_border" = "rgba(44475aaa)";
- "col.nogroup_border" = "rgba(282a36dd)";
- "col.nogroup_border_active" = "rgb(bd93f9) rgb(44475a) 90deg";
- layout = "dwindle";
- };
-
- decoration = {
- shadow = {
- enabled = true;
- range = 60;
- render_power = 3;
- color = "rgba(${config.colorScheme.palette.base00}66)";
- offset = "1 2";
- scale = 0.97;
- };
- rounding = 8;
- blur = {
- enabled = true;
- size = 3;
- passes = 3;
- };
- active_opacity = 0.9;
- inactive_opacity = 0.5;
- };
-
- animations = {
- enabled = true;
- bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
- animation = [
- "windows, 1, 7, myBezier"
- "windowsOut, 1, 7, default, popin 80%"
- "border, 1, 10, default"
- "borderangle, 1, 8, default"
- "fade, 1, 7, default"
- "workspaces, 1, 6, default"
- ];
- };
-
- dwindle = {
- pseudotile = true;
- preserve_split = true;
- };
-
- master = {
- new_status = "master";
- };
-
- device = [
- {
- name = "epic-mouse-v1";
- sensitivity = -0.5;
- }
- {
- name = "zsa-technology-labs-moonlander-mark-i";
- kb_layout = "us";
- }
- {
- name = "keychron-keychron-k7";
- kb_layout = "us";
- }
- ];
- windowrule = [
- # Floating dialogs
- "match:class file_progress, float on"
- "match:class confirm, float on"
- "match:class dialog, float on"
- "match:class download, float on"
- "match:class notification, float on"
- "match:class error, float on"
- "match:class splash, float on"
- "match:class confirmreset, float on"
- "match:title Open File, float on"
- "match:title branchdialog, float on"
- "match:class pavucontrol-qt, float on"
- "match:class pavucontrol, float on"
- # wlogout
- "match:class wlogout, fullscreen on"
- "match:title wlogout, float on"
- "match:title wlogout, fullscreen on"
- # mpv
- "match:class mpv, float on"
- "match:class mpv, idle_inhibit focus"
- "match:class mpv, opacity 1.0 override"
- # Media/Volume/PiP
- "match:title ^(Media viewer)$, float on"
- "match:title ^(Volume Control)$, float on"
- "match:title ^(Picture-in-Picture)$, float on"
- # Pomodoro timer
- "match:title ^(floating-pomodoro)$, float on"
- "match:title ^(floating-pomodoro)$, size 250 50"
- "match:title ^(floating-pomodoro)$, move 12 (monitor_h-150)"
- "match:title ^(floating-pomodoro)$, pin on"
- "match:initial_title .*streamlabs.com.*, no_blur on"
- "border_color rgb(ffffff), match:xwayland 1"
- ];
-
- "$mainMod" = "SUPER";
- "$terminal" = "uwsm app -- ghostty";
-
- bind = [
- "$mainMod, return, exec, nu -c zellij-ps"
- # "$mainMod, t, exec, warp-terminal"
- "$mainMod, t, exec, $terminal -e nu -c 'nitch; exec nu'"
- "$mainMod SHIFT, t, exec, launch-timer"
- "$mainMod SHIFT, e, exec, $terminal -e zellij_nvim"
- "$mainMod, o, exec, hyprctl dispatch setprop activewindow opaque toggle"
- #"$mainMod, r, exec, hyprctl dispatch focuswindow \"initialtitle:.*alert-box.*\" && hyprctl dispatch moveactive exact 4300 102 && hyprctl dispatch focuswindow \"initialtitle:.*chat-box.*\" && hyprctl dispatch moveactive exact 4300 512"
- "$mainMod, R, exec, stt-ptt start"
- "$mainMod, b, exec, thunar"
- "$mainMod SHIFT, B, exec, vivaldi"
- "$mainMod, Escape, exec, wlogout -p layer-shell"
- "$mainMod, Space, togglefloating"
- "$mainMod, q, killactive"
- "$mainMod, M, exec, $terminal -e btop"
- "$mainMod, N, exec, $terminal -e nvim"
- "$mainMod, Z, exec, uwsm app -- zeditor"
- "$mainMod, F, fullscreen"
- "$mainMod SHIFT, V, togglefloating"
- "$mainMod, D, exec, rofi -show"
- "$mainMod, C, exec, bash -c 'FILE=/tmp/screenshot_$(date +%s).png; grim -g \"$(slurp)\" \"$FILE\" && ksnip \"$FILE\"'"
- "$mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy"
- "$mainMod SHIFT, S, exec, bemoji"
- "$mainMod, P, exec, rofi-pass"
- "$mainMod SHIFT, P, pseudo"
- "$mainMod, J, togglesplit"
- "$mainMod, h, movefocus, l"
- "$mainMod, l, movefocus, r"
- "$mainMod, k, movefocus, u"
- "$mainMod, j, movefocus, d"
- "$mainMod, 1, workspace, 1"
- "$mainMod, 2, workspace, 2"
- "$mainMod, 3, workspace, 3"
- "$mainMod, 4, workspace, 4"
- "$mainMod, 5, workspace, 5"
- "$mainMod, 6, workspace, 6"
- "$mainMod, 7, workspace, 7"
- "$mainMod, 8, workspace, 8"
- "$mainMod, 9, workspace, 9"
- "$mainMod, 0, workspace, 10"
- "$mainMod SHIFT, 1, movetoworkspace, 1"
- "$mainMod SHIFT, 2, movetoworkspace, 2"
- "$mainMod SHIFT, 3, movetoworkspace, 3"
- "$mainMod SHIFT, 4, movetoworkspace, 4"
- "$mainMod SHIFT, 5, movetoworkspace, 5"
- "$mainMod SHIFT, 6, movetoworkspace, 6"
- "$mainMod SHIFT, 7, movetoworkspace, 7"
- "$mainMod SHIFT, 8, movetoworkspace, 8"
- "$mainMod SHIFT, 9, movetoworkspace, 9"
- "$mainMod SHIFT, 0, movetoworkspace, 10"
- "$mainMod, mouse_down, workspace, e+1"
- "$mainMod, mouse_up, workspace, e-1"
- ];
- bindr = [
- "$mainMod, R, exec, stt-ptt stop"
- ];
- bindm = [
- "$mainMod, mouse:272, movewindow"
- "$mainMod, mouse:273, resizewindow"
- ];
- };
- };
-
- services.hypridle = {
- enable = true;
- settings = {
- general = {
- before_sleep_cmd = "hyprlock";
- after_sleep_cmd = "hyprctl dispatch dpms on";
- inhibit_sleep = 3;
- };
-
- listener = [
- {
- timeout = 300; # 5 min
- on-timeout = "hyprlock";
- }
- {
- timeout = 420; # 5.5 min
- on-timeout = "hyprctl dispatch dpms off";
- on-resume = "hyprctl dispatch dpms on";
- }
- ];
- };
- };
-
- services.hyprpaper.enable = true;
-
- programs.hyprlock = {
- enable = true;
- settings = {
- "$font" = "FiraCode Nerd Font";
- "$base" = "rgb(${config.colorScheme.palette.base00})";
- "$text" = "rgb(${config.colorScheme.palette.base05})";
- "$textAlpha" = "${config.colorScheme.palette.base05}";
- "$accentAlpha" = "${config.colorScheme.palette.base0D}";
- "$red" = "rgb(${config.colorScheme.palette.base08})";
- "$yellow" = "rgb(${config.colorScheme.palette.base0A})";
-
- general = {
- hide_cursor = true;
- };
-
- background = {
- monitor = "";
- path = "${config.home.homeDirectory}/.config/hypr/wallpapers/wallhaven-lmmo8r_2560x1600.png";
- blur_passes = 0;
- color = "rgb(${config.colorScheme.palette.base00})";
- };
-
- label = [
- {
- monitor = "";
- text = "$TIME";
- color = "$text";
- font_size = 90;
- font_family = "$font";
- position = "30, 0";
- halign = "left";
- valign = "top";
- }
- {
- monitor = "";
- text = ''cmd[update:43200000] echo "$(date +"%A, %d %B %Y")"'';
- color = "$text";
- font_size = 25;
- font_family = "$font";
- position = "30, -150";
- halign = "left";
- valign = "top";
- }
- ];
-
- input-field = [
- {
- monitor = "";
- size = "300, 60";
- outline_thickness = 4;
- dots_size = 0.2;
- dots_spacing = 0.2;
- dots_center = true;
- outer_color = "rgb(${config.colorScheme.palette.base0D})";
- inner_color = "rgb(${config.colorScheme.palette.base00})";
- font_color = "rgb(${config.colorScheme.palette.base05})";
- fade_on_empty = false;
- placeholder_text = '' Logged in as $USER'';
- hide_input = false;
- check_color = "rgb(${config.colorScheme.palette.base0D})";
- fail_color = "rgb(${config.colorScheme.palette.base08})";
- fail_text = ''$FAIL ($ATTEMPTS)'';
- capslock_color = "rgb(${config.colorScheme.palette.base0A})";
- position = "0, -35";
- halign = "center";
- valign = "center";
- }
- ];
- };
- };
- };
-}
diff --git a/home/features/desktop/knowledge.nix b/home/features/desktop/knowledge.nix
deleted file mode 100644
index dd4fed5..0000000
--- a/home/features/desktop/knowledge.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- programs.obsidian = {
- enable = true;
- defaultSettings = {
- app = {
- safeMode = false;
- };
- corePlugins = [
- "daily-notes"
- "templates"
- "tag-pane"
- "outgoing-link"
- "backlink"
- "global-search"
- "quick-switcher"
- ];
- };
- };
-}
diff --git a/home/features/desktop/media.nix b/home/features/desktop/media.nix
deleted file mode 100644
index 562a25d..0000000
--- a/home/features/desktop/media.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-with lib; let
- cfg = config.features.desktop.media;
-in {
- options.features.desktop.media.enable =
- mkEnableOption "enable media features";
-
- config = mkIf cfg.enable {
- home.packages = with pkgs; [
- # handbrake
- # kdePackages.kdenlive
- # makemkv
- # mediainfo
- amf
- ffmpeg_6-full
- gst_all_1.gstreamer
- gst_all_1.gst-vaapi
- handbrake
- inkscape
- kdePackages.kdenlive
- krita
- libation
- #makemkv
- pamixer
- pavucontrol
- qpwgraph
- v4l-utils
- # uxplay
- # vlc
- # webcord
- # yt-dlp
- unimatrix
- ];
-
- programs = {
- mpv = {
- enable = true;
- bindings = {
- WHEEL_UP = "seek 10";
- WHEEL_DOWN = "seek -10";
- };
- config = {
- profile = "gpu-hq";
- ytdl-format = "bestvideo+bestaudio";
- };
- };
- };
- };
-}
diff --git a/home/features/desktop/office.nix b/home/features/desktop/office.nix
deleted file mode 100644
index 4ff9d12..0000000
--- a/home/features/desktop/office.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-with lib; let
- cfg = config.features.desktop.office;
-in {
- options.features.desktop.office.enable =
- mkEnableOption "install office and paperwork stuff";
-
- config = mkIf cfg.enable {
- home.packages = with pkgs; [
- anytype
- evince
- libreoffice-fresh
- xournalpp
- ];
- };
-}
diff --git a/home/features/desktop/rofi.nix b/home/features/desktop/rofi.nix
deleted file mode 100644
index 00f3993..0000000
--- a/home/features/desktop/rofi.nix
+++ /dev/null
@@ -1,202 +0,0 @@
-{
- config,
- pkgs,
- lib,
- ...
-}:
-with lib; let
- cfg = config.features.desktop.rofi;
-in {
- options.features.desktop.rofi.enable = mkEnableOption "enable rofi";
-
- config = mkIf cfg.enable {
- programs.rofi = with pkgs; {
- enable = true;
- package = rofi.override {
- plugins = [
- rofi-calc
- rofi-emoji
- stable.rofi-file-browser
- ];
- };
- pass = {
- enable = true;
- package = rofi-pass-wayland;
- };
- terminal = "\${pkgs.ghostty}/bin/ghostty";
- font = "Fira Code";
- extraConfig = {
- show-icons = true;
- disable-history = false;
- modi = "drun,calc,emoji,filebrowser";
- kb-primary-paste = "Control+V,Shift+Insert";
- kb-secondary-paste = "Control+v,Insert";
- };
- theme = let
- inherit (config.colorScheme) palette;
- in
- toString (pkgs.writeText "rofi-universal-theme.rasi" ''
- * {
- /* Universal theme colors from nix-colors */
- background: #${palette.base00};
- surface: #${palette.base01};
- overlay: #${palette.base02};
- muted: #${palette.base03};
- subtle: #${palette.base04};
- text: #${palette.base05};
- bright-text: #${palette.base06};
- highlight: #${palette.base07};
- accent1: #${palette.base08};
- accent2: #${palette.base09};
- accent3: #${palette.base0A};
- accent4: #${palette.base0B};
- accent5: #${palette.base0C};
- accent6: #${palette.base0D};
- accent7: #${palette.base0E};
- accent8: #${palette.base0F};
-
- /* Global properties */
- background-color: @background;
- text-color: @text;
- font: "Fira Code 12";
- border: 0;
- margin: 0;
- padding: 0;
- spacing: 0;
- }
-
- window {
- background-color: @background;
- border: 1px;
- border-color: @accent7;
- border-radius: 6px;
- width: 40%;
- padding: 16px;
- }
-
- inputbar {
- children: [ prompt, entry ];
- spacing: 12px;
- padding: 8px;
- border-radius: 4px;
- background-color: @surface;
- }
-
- prompt {
- text-color: @accent7;
- background-color: transparent;
- }
-
- entry {
- placeholder: "Search...";
- placeholder-color: @subtle;
- text-color: @text;
- background-color: transparent;
- cursor-color: @accent7;
- }
-
- message {
- background-color: @surface;
- border-radius: 4px;
- padding: 8px;
- margin: 8px 0;
- }
-
- textbox {
- text-color: @text;
- background-color: transparent;
- }
-
- listview {
- background-color: transparent;
- margin: 8px 0 0;
- lines: 10;
- columns: 1;
- fixed-height: true;
- scrollbar: false;
- }
-
- element {
- background-color: transparent;
- text-color: @text;
- padding: 8px;
- border-radius: 4px;
- spacing: 8px;
- }
-
- element normal.normal {
- background-color: transparent;
- text-color: @text;
- }
-
- element selected.normal {
- background-color: @accent7;
- text-color: @background;
- }
-
- element alternate.normal {
- background-color: transparent;
- text-color: @text;
- }
-
- element-icon {
- background-color: transparent;
- size: 24px;
- }
-
- element-text {
- background-color: transparent;
- text-color: inherit;
- vertical-align: 0.5;
- }
-
- mode-switcher {
- spacing: 0;
- background-color: @surface;
- border-radius: 4px;
- margin: 8px 0 0;
- }
-
- button {
- padding: 8px 16px;
- background-color: transparent;
- text-color: @text;
- border-radius: 4px;
- }
-
- button selected {
- background-color: @accent7;
- text-color: @background;
- }
-
- /* Scrollbar */
- scrollbar {
- width: 4px;
- border: 0;
- handle-color: @accent7;
- handle-width: 4px;
- padding: 0;
- }
- '');
- };
- cli.rofi-project-opener = {
- enable = true;
- projectDirs = {
- AI = {
- path = "~/p/AI";
- args = "";
- };
- NIX = {
- path = "~/p/NIX";
- args = "";
- };
- CHAT = {
- path = "~/p/CHAT";
- args = "--agent chiron";
- };
- };
- terminal = pkgs.ghostty;
- terminalCommand = "opencode %a";
- };
- };
-}
diff --git a/home/features/desktop/theme.nix b/home/features/desktop/theme.nix
deleted file mode 100644
index 961df9a..0000000
--- a/home/features/desktop/theme.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- config,
- inputs,
- pkgs,
- ...
-}: {
- colorScheme = inputs.nix-colors.colorSchemes.dracula;
- qt = {
- enable = true;
- platformTheme.name = "gtk";
- };
- gtk = {
- enable = true;
- theme = {
- name = "Dracula";
- package = pkgs.dracula-theme;
- };
- iconTheme = {
- name = "Dracula";
- package = pkgs.dracula-icon-theme;
- };
- gtk4.theme = config.gtk.theme;
- };
-}
diff --git a/home/features/desktop/wayland.nix b/home/features/desktop/wayland.nix
deleted file mode 100644
index 17169fe..0000000
--- a/home/features/desktop/wayland.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-with lib; let
- cfg = config.features.desktop.wayland;
-in {
- options.features.desktop.wayland.enable = mkEnableOption "wayland extra tools and config";
-
- config = mkIf cfg.enable {
- home.packages = with pkgs; [
- grim
- hyprcursor
- hyprlock
- nwg-displays
- nwg-look
- qt6.qtwayland
- slurp
- waypipe
- wl-clipboard
- wf-recorder
- wl-mirror
- wlogout
- wtype
- ydotool
- ];
- };
-}
diff --git a/home/features/desktop/webapps.nix b/home/features/desktop/webapps.nix
deleted file mode 100644
index 57ed3fc..0000000
--- a/home/features/desktop/webapps.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- pkgs,
- lib,
- ...
-}: let
- icons = {
- teams = pkgs.fetchurl {
- url = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/microsoft-teams.svg";
- sha256 = "sha256-Pr9QS8nnXJq97r4/G3c6JXi34zxHl0ps9gcyI8cN/s8=";
- };
- outlook = pkgs.fetchurl {
- url = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/microsoft-outlook.svg";
- sha256 = "sha256-3u8t5QNHFZvrAegxBiGicO4PjtMWhEaQSCv7MSSfLLc=";
- };
- opencode = pkgs.fetchurl {
- url = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/opencode-dark.svg";
- sha256 = "1lms4f8habamvdh2qqqz9psx4py9wx23mmlkkds44pvrbq3bkj3n";
- };
- };
-in {
- xdg.desktopEntries = {
- teams = {
- name = "Microsoft Teams";
- exec = "launch-webapp https://teams.microsoft.com";
- comment = "Open Microsoft Teams as a Desktop App";
- categories = ["Application" "Network" "Chat"];
- terminal = false;
- icon = icons.teams;
- };
- outlook = {
- name = "Microsoft Outlook";
- exec = "launch-webapp https://outlook.office.com/mail/";
- comment = "Open Microsoft Outlook as a Desktop App";
- categories = ["Application" "Network"];
- terminal = false;
- icon = icons.outlook;
- };
- basecamp = {
- name = "Basecamp";
- exec = "launch-webapp https://3.basecamp.com/5996442/";
- comment = "Open Basecamp as a Desktop App";
- categories = ["Application" "Network"];
- terminal = false;
- icon = "/home/sascha.koenig/.local/share/icons/basecamp-logo.png";
- };
- opencode = {
- name = "Opencode";
- exec = "rofi-project-opener";
- comment = "Open Opencode Terminal App";
- categories = ["Application" "Development"];
- terminal = false;
- icon = icons.opencode;
- };
- };
-}