diff --git a/hosts/muon/home.nix b/hosts/muon/home.nix index 063bfdd..1bedb5e 100644 --- a/hosts/muon/home.nix +++ b/hosts/muon/home.nix @@ -19,6 +19,7 @@ in { mods.desktop.media.enable = true; mods.zen.enable = true; mods.obsidian.enable = true; + mods.opencode.enable = true; # Hardware preferences diff --git a/modules/home/terminal/default.nix b/modules/home/terminal/default.nix index fc43170..83935f1 100644 --- a/modules/home/terminal/default.nix +++ b/modules/home/terminal/default.nix @@ -13,6 +13,7 @@ ./helix ./nvim ./zellij + ./opencode ]; config = lib.mkIf osConfig.mods.desktop.enable { diff --git a/modules/home/terminal/opencode/dcg.nix b/modules/home/terminal/opencode/dcg.nix new file mode 100644 index 0000000..d3df397 --- /dev/null +++ b/modules/home/terminal/opencode/dcg.nix @@ -0,0 +1,38 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, + openssl, + pkg-config, + git, +}: +rustPlatform.buildRustPackage (finalAttrs: { + pname = "dcg"; + version = "v0.4.0"; + + src = fetchFromGitHub { + owner = "Dicklesworthstone"; + repo = "destructive_command_guard"; + tag = finalAttrs.version; + hash = "sha256-tkjHhSMoLRV56AwUa0DkoDMoEj6gUZx/ih0VTC9C+4o="; + }; + + cargoHash = "sha256-G6cOjl5tLdjBg7A+Itnk/t6tLzoU7gKYOTYlZm3HSlA="; + + doCheck = false; + + nativeBuildInputs = [ + pkg-config + openssl + openssl.dev + git + ]; + PKG_CONFIG_PATH = "${openssl.dev}/lib/pkgconfig"; + + meta = { + description = "A high-performance hook for AI coding agents that blocks destructive commands before they execute, protecting your work from accidental deletion"; + homepage = "https://github.com/Dicklesworthstone/destructive_command_guard"; + license = lib.licenses.mit; + maintainers = []; + }; +}) diff --git a/modules/home/terminal/opencode/default.nix b/modules/home/terminal/opencode/default.nix new file mode 100644 index 0000000..4448cfc --- /dev/null +++ b/modules/home/terminal/opencode/default.nix @@ -0,0 +1,38 @@ +{ + lib, + config, + pkgs, + ... +}: { + options.mods.opencode.enable = lib.mkEnableOption "enables opencode"; + + # imports = [ + # ./package.nix + # ./dcg.nix + # ]; + + config = lib.mkIf config.mods.opencode.enable { + home.packages = with pkgs; [ + (callPackage ./dcg.nix {}) + ]; + + programs.opencode = { + enable = true; + settings = { + "plugin" = ["opencode-gemini-auth"]; + + "permission" = { + "bash" = { + "*" = "ask"; + "rm *" = "deny"; + "rmdir *" = "deny"; + "unlink *" = "deny"; + "*rm *" = "ask"; + "*rmdir *" = "ask"; + "*unlink *" = "ask"; + }; + }; + }; + }; + }; +}