From 9676d39936f45fca42dd56a7a018c0f3225a6e55 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Fri, 5 Dec 2025 19:39:14 +0100 Subject: [PATCH 01/14] Configure avante --- modules/editor/vim/lua/plugins/avante.lua | 17 +++++++++++++++++ modules/editor/vim/vim.nix | 6 ++++++ 2 files changed, 23 insertions(+) create mode 100644 modules/editor/vim/lua/plugins/avante.lua diff --git a/modules/editor/vim/lua/plugins/avante.lua b/modules/editor/vim/lua/plugins/avante.lua new file mode 100644 index 0000000..3f2cf16 --- /dev/null +++ b/modules/editor/vim/lua/plugins/avante.lua @@ -0,0 +1,17 @@ +return { + "yetone/avante.nvim", + opts = { + -- add any opts here + -- this file can contain specific instructions for your project + instructions_file = "avante.md", + provider = "opencode", + { + acp_providers = { + ["opencode"] = { + command = "opencode", + args = { "acp" } + } + } + }, + }, +} diff --git a/modules/editor/vim/vim.nix b/modules/editor/vim/vim.nix index 13f618d..5a7cc85 100644 --- a/modules/editor/vim/vim.nix +++ b/modules/editor/vim/vim.nix @@ -134,6 +134,9 @@ in vim-startuptime yazi-nvim zk-nvim + avante-nvim + blink-cmp-avante + img-clip-nvim ]; extraPackages = with pkgs; [ @@ -223,6 +226,7 @@ in { import = "lazyvim.plugins.extras.lang.elixir" }, { import = "lazyvim.plugins.extras.test.core" }, { import = "lazyvim.plugins.extras.lang.typescript" }, + { import = "lazyvim.plugins.extras.ai.avante" }, -- import/override with your plugins { import = "plugins" }, }, @@ -295,6 +299,8 @@ in angular-language-server vtsls zk + + opencode ]; }; }; From 6cc1cdefd0ef6fef6a5f9227a7e8b18e32f014ee Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Fri, 5 Dec 2025 19:39:14 +0100 Subject: [PATCH 02/14] Configure avante --- modules/editor/vim/lua/plugins/avante.lua | 14 ++++++++++++++ modules/editor/vim/vim.nix | 6 ++++++ 2 files changed, 20 insertions(+) create mode 100644 modules/editor/vim/lua/plugins/avante.lua diff --git a/modules/editor/vim/lua/plugins/avante.lua b/modules/editor/vim/lua/plugins/avante.lua new file mode 100644 index 0000000..e8f759a --- /dev/null +++ b/modules/editor/vim/lua/plugins/avante.lua @@ -0,0 +1,14 @@ +return { + "yetone/avante.nvim", + opts = { + provider = "opencode", + { + acp_providers = { + ["opencode"] = { + command = "opencode", + args = { "acp" } + } + } + }, + }, +} diff --git a/modules/editor/vim/vim.nix b/modules/editor/vim/vim.nix index 13f618d..5a7cc85 100644 --- a/modules/editor/vim/vim.nix +++ b/modules/editor/vim/vim.nix @@ -134,6 +134,9 @@ in vim-startuptime yazi-nvim zk-nvim + avante-nvim + blink-cmp-avante + img-clip-nvim ]; extraPackages = with pkgs; [ @@ -223,6 +226,7 @@ in { import = "lazyvim.plugins.extras.lang.elixir" }, { import = "lazyvim.plugins.extras.test.core" }, { import = "lazyvim.plugins.extras.lang.typescript" }, + { import = "lazyvim.plugins.extras.ai.avante" }, -- import/override with your plugins { import = "plugins" }, }, @@ -295,6 +299,8 @@ in angular-language-server vtsls zk + + opencode ]; }; }; From 7bb02faafc97c1a5f41e5bb834ea49b9c654e900 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Sat, 6 Dec 2025 23:01:25 +0100 Subject: [PATCH 03/14] Avante: add key bindings --- modules/editor/vim/lua/plugins/avante.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/editor/vim/lua/plugins/avante.lua b/modules/editor/vim/lua/plugins/avante.lua index e8f759a..5c36a9d 100644 --- a/modules/editor/vim/lua/plugins/avante.lua +++ b/modules/editor/vim/lua/plugins/avante.lua @@ -11,4 +11,8 @@ return { } }, }, + keys = { + { "aa", "AvanteAsk", mode = { "n", "v" }, desc = "Ask Avante" }, + { "ae", "AvanteEdit", mode = { "n", "v" }, desc = "Edit Avante" }, + }, } From e579577ebcd1ce1698563c0b8c8b0c2831596c21 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Sat, 6 Dec 2025 23:27:13 +0100 Subject: [PATCH 04/14] opencode: use most recent version --- flake.lock | 101 +++++++++++++++++++++++++++++++++++-- flake.nix | 1 + modules/editor/vim/vim.nix | 3 +- 3 files changed, 101 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index 998e8dd..77956f3 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,27 @@ { "nodes": { + "blueprint": { + "inputs": { + "nixpkgs": [ + "llm-agents", + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1763308703, + "narHash": "sha256-O9Y+Wer8wOh+N+4kcCK5p/VLrXyX+ktk0/s3HdZvJzk=", + "owner": "numtide", + "repo": "blueprint", + "rev": "5a9bba070f801d63e2af3c9ef00b86b212429f4f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "blueprint", + "type": "github" + } + }, "emacs-overlay": { "inputs": { "nixpkgs": "nixpkgs", @@ -40,6 +62,26 @@ "type": "github" } }, + "llm-agents": { + "inputs": { + "blueprint": "blueprint", + "nixpkgs": "nixpkgs_2", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1765034113, + "narHash": "sha256-i+4lUGCZyqXx70xUoM4iqbCAcSk69zz8czZNweCOGg0=", + "owner": "numtide", + "repo": "llm-agents.nix", + "rev": "e39a9719bdc5b495aadf894a9b7321cf27e9ecf7", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "llm-agents.nix", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1764667669, @@ -73,6 +115,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1764947035, + "narHash": "sha256-EYHSjVM4Ox4lvCXUMiKKs2vETUSL5mx+J2FfutM7T9w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a672be65651c80d3f592a89b3945466584a22069", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1764667669, "narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=", @@ -88,7 +146,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1764242076, "narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=", @@ -123,7 +181,7 @@ }, "nvim-treesitter-main": { "inputs": { - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "nvim-treesitter": "nvim-treesitter", "nvim-treesitter-textobjects": "nvim-treesitter-textobjects" }, @@ -162,11 +220,48 @@ "inputs": { "emacs-overlay": "emacs-overlay", "home-manager": "home-manager", - "nixpkgs": "nixpkgs_2", + "llm-agents": "llm-agents", + "nixpkgs": "nixpkgs_3", "nvim-treesitter-main": "nvim-treesitter-main", "vim-org-roam": "vim-org-roam" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "llm-agents", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762938485, + "narHash": "sha256-AlEObg0syDl+Spi4LsZIBrjw+snSVU4T8MOeuZJUJjM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "5b4ee75aeefd1e2d5a1cc43cf6ba65eba75e83e4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "vim-org-roam": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index a83ba67..90a8ff5 100644 --- a/flake.nix +++ b/flake.nix @@ -10,6 +10,7 @@ url = "github:chipsenkbeil/org-roam.nvim"; flake = false; }; + llm-agents.url = "github:numtide/llm-agents.nix"; # Workaround until nvim-treesitter main branch is used in nixpkgs nvim-treesitter-main.url = "github:iofq/nvim-treesitter-main"; }; diff --git a/modules/editor/vim/vim.nix b/modules/editor/vim/vim.nix index 5a7cc85..ea5e8a3 100644 --- a/modules/editor/vim/vim.nix +++ b/modules/editor/vim/vim.nix @@ -1,4 +1,5 @@ { + inputs, config, lib, pkgs, @@ -300,7 +301,7 @@ in vtsls zk - opencode + inputs.llm-agents.packages.${pkgs.system}.opencode ]; }; }; From d4ede85a4354591265ef7f49ee90392912e95820 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Mon, 8 Dec 2025 02:40:50 +0100 Subject: [PATCH 05/14] Add opencode.nvim --- modules/desktop/terminal.nix | 2 ++ modules/editor/vim/lua/plugins/opencode.lua | 31 +++++++++++++++++++++ modules/editor/vim/vim.nix | 11 ++++++++ 3 files changed, 44 insertions(+) create mode 100644 modules/editor/vim/lua/plugins/opencode.lua diff --git a/modules/desktop/terminal.nix b/modules/desktop/terminal.nix index 314d110..2aa5375 100644 --- a/modules/desktop/terminal.nix +++ b/modules/desktop/terminal.nix @@ -18,6 +18,8 @@ in font_family = "Meslo LG S"; font_size = 10; symbol_map = "U+e000-U+e00a,U+ea60-U+ebeb,U+e0a0-U+e0c8,U+e0ca,U+e0cc-U+e0d4,U+e200-U+e2a9,U+e300-U+e3e3,U+e5fa-U+e6b1,U+e700-U+e7c5,U+f000-U+f2e0,U+f300-U+f372,U+f400-U+f532,U+f0001-U+f1af0 Symbols Nerd Font Mono"; + allow_remote_control = "yes"; + listen_on = "unix:@mykitty"; }; keybindings = { "ctrl+up" = "change_font_size all +2.0"; diff --git a/modules/editor/vim/lua/plugins/opencode.lua b/modules/editor/vim/lua/plugins/opencode.lua new file mode 100644 index 0000000..4847b23 --- /dev/null +++ b/modules/editor/vim/lua/plugins/opencode.lua @@ -0,0 +1,31 @@ +return { + "NickvanDyke/opencode.nvim", + config = function() + ---@type opencode.Opts + vim.g.opencode_opts = { + provider = { + enabled = "kitty", + kitty = { + location = "tab" + } + } + } + vim.o.autoread = true + + vim.keymap.set({ "n", "x" }, "oa", function() + require("opencode").ask("@this: ", { submit = true }) + end, { desc = "Ask opencode" }) + + vim.keymap.set({ "n", "x" }, "oo", function() + require("opencode").select() + end, { desc = "Execute opencode action…" }) + + vim.keymap.set({ "n", "x" }, "os", function() + require("opencode").prompt("@this") + end, { desc = "Add to opencode" }) + + vim.keymap.set({ "n", "t" }, "o.", function() + require("opencode").toggle() + end, { desc = "Toggle opencode" }) + end, +} diff --git a/modules/editor/vim/vim.nix b/modules/editor/vim/vim.nix index ea5e8a3..3896622 100644 --- a/modules/editor/vim/vim.nix +++ b/modules/editor/vim/vim.nix @@ -138,6 +138,17 @@ in avante-nvim blink-cmp-avante img-clip-nvim + + (pkgs.vimUtils.buildVimPlugin { + pname = "opencode.nvim"; + version = "2025-12-04"; + src = pkgs.fetchFromGitHub { + owner = "NickvanDyke"; + repo = "opencode.nvim"; + rev = "963fad75f794deb85d1c310d2e2cb033da44f670"; + hash = "sha256-nKOsHgMptHnOS+SCTHa77sQ/ZiUY0aW26I8GN7ocRHE="; + }; + }) ]; extraPackages = with pkgs; [ From e3b2d5539e0d8d444733386910f32f96ec00891f Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Mon, 8 Dec 2025 14:06:51 +0100 Subject: [PATCH 06/14] opencode.nvim: update config --- modules/editor/vim/lua/plugins/lualine.lua | 14 ++++++++++++++ modules/editor/vim/lua/plugins/opencode.lua | 5 +++++ 2 files changed, 19 insertions(+) create mode 100644 modules/editor/vim/lua/plugins/lualine.lua diff --git a/modules/editor/vim/lua/plugins/lualine.lua b/modules/editor/vim/lua/plugins/lualine.lua new file mode 100644 index 0000000..3126f24 --- /dev/null +++ b/modules/editor/vim/lua/plugins/lualine.lua @@ -0,0 +1,14 @@ +return { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = { + sections = { + lualine_z = { + { + require("opencode").statusline, + }, + } + } + }, +} + diff --git a/modules/editor/vim/lua/plugins/opencode.lua b/modules/editor/vim/lua/plugins/opencode.lua index 4847b23..ebcb11b 100644 --- a/modules/editor/vim/lua/plugins/opencode.lua +++ b/modules/editor/vim/lua/plugins/opencode.lua @@ -8,6 +8,11 @@ return { kitty = { location = "tab" } + }, + events = { + permissions = { + enabled = false + } } } vim.o.autoread = true From 33a35705c794e6ea4f1b9ccdcc0ad6b419d3727c Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Tue, 9 Dec 2025 17:18:28 +0100 Subject: [PATCH 07/14] Add opencode module --- hosts/nixos-desktop/default.nix | 1 + hosts/stellaris/default.nix | 1 + modules/ai/opencode.nix | 74 +++++++++++++++++++++++++++++++++ modules/editor/vim/vim.nix | 3 +- 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 modules/ai/opencode.nix diff --git a/hosts/nixos-desktop/default.nix b/hosts/nixos-desktop/default.nix index 5f8b4aa..c662096 100644 --- a/hosts/nixos-desktop/default.nix +++ b/hosts/nixos-desktop/default.nix @@ -23,6 +23,7 @@ steam.enable = true; lutris.enable = true; }; + ai.opencode.enable = true; }; user.name = "froidmpa"; diff --git a/hosts/stellaris/default.nix b/hosts/stellaris/default.nix index 7fa8375..ffc52ee 100644 --- a/hosts/stellaris/default.nix +++ b/hosts/stellaris/default.nix @@ -27,6 +27,7 @@ steam.enable = true; lutris.enable = true; }; + ai.opencode.enable = true; }; # Monitor backlight control diff --git a/modules/ai/opencode.nix b/modules/ai/opencode.nix new file mode 100644 index 0000000..cd6dcfb --- /dev/null +++ b/modules/ai/opencode.nix @@ -0,0 +1,74 @@ +{ + inputs, + config, + lib, + pkgs, + ... +}: + +let + cfg = config.modules.ai.opencode; +in +{ + options.modules.ai.opencode = { + enable = lib.my.mkBoolOpt false; + }; + config = lib.mkIf cfg.enable { + home-manager.users.${config.user.name} = + { ... }: + { + programs.opencode = { + enable = true; + package = inputs.llm-agents.packages.${pkgs.system}.opencode; + settings = { + model = "glm_4_5_air"; + permission = { + bash = "ask"; + edit = "ask"; + }; + provider = { + vllm = { + npm = "@ai-sdk/openai-compatible"; + name = "vLLM"; + options = { + baseURL = "http://model1.lefoyer.lu:8030/v1"; + apiKey = "dummy"; + }; + models = { + glm_4_5_air = { + name = "GLM 4.5 Air (local)"; + temperature = true; + default = true; + }; + }; + }; + }; + agent = { + build = { + mode = "primary"; + temperature = 0.4; + }; + plan = { + mode = "primary"; + temperature = 0.4; + }; + }; + lsp = { + metals = { + command = [ "${pkgs.metals}/bin/metals" ]; + extensions = [ + ".scala" + ".sbt" + ".sc" + ]; + initialization = { + statusBarProvider = "log-message"; + doctorProvider = "json"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/modules/editor/vim/vim.nix b/modules/editor/vim/vim.nix index 3896622..8a70a60 100644 --- a/modules/editor/vim/vim.nix +++ b/modules/editor/vim/vim.nix @@ -311,8 +311,7 @@ in angular-language-server vtsls zk - - inputs.llm-agents.packages.${pkgs.system}.opencode + metals ]; }; }; From d77bfaeef9cbf21125d07f3a80c24a89014a1002 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Thu, 11 Dec 2025 04:52:11 +0100 Subject: [PATCH 08/14] opencode: update config --- modules/ai/opencode.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/ai/opencode.nix b/modules/ai/opencode.nix index cd6dcfb..c43d9c9 100644 --- a/modules/ai/opencode.nix +++ b/modules/ai/opencode.nix @@ -42,6 +42,19 @@ in }; }; }; + openai = { + models = { + "gpt-5.1-codex" = { + options = { + store = false; + # reasoningEffort = "high"; + # textVerbosity = "medium"; + # reasoningSummary = "auto"; + include = [ "reasoning.encrypted_content" ]; + }; + }; + }; + }; }; agent = { build = { From 171623d9a454bc11a54946d04fd8f38163252e87 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Sat, 13 Dec 2025 02:05:16 +0100 Subject: [PATCH 09/14] Enable MCP server for Metals --- modules/editor/vim/lua/plugins/lsp.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/editor/vim/lua/plugins/lsp.lua b/modules/editor/vim/lua/plugins/lsp.lua index 0d1643d..08d7303 100644 --- a/modules/editor/vim/lua/plugins/lsp.lua +++ b/modules/editor/vim/lua/plugins/lsp.lua @@ -17,6 +17,7 @@ return { metals = { settings = { showImplicitArguments = false, + startMcpServer = true, }, }, elixirls = { From 3d5d391b2466d7c949876ea61dade93b31e101b6 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Sat, 13 Dec 2025 04:10:45 +0100 Subject: [PATCH 10/14] Remove avante --- modules/editor/vim/lua/plugins/avante.lua | 18 ------------------ modules/editor/vim/lua/plugins/opencode.lua | 8 ++++---- modules/editor/vim/vim.nix | 5 ----- 3 files changed, 4 insertions(+), 27 deletions(-) delete mode 100644 modules/editor/vim/lua/plugins/avante.lua diff --git a/modules/editor/vim/lua/plugins/avante.lua b/modules/editor/vim/lua/plugins/avante.lua deleted file mode 100644 index 5c36a9d..0000000 --- a/modules/editor/vim/lua/plugins/avante.lua +++ /dev/null @@ -1,18 +0,0 @@ -return { - "yetone/avante.nvim", - opts = { - provider = "opencode", - { - acp_providers = { - ["opencode"] = { - command = "opencode", - args = { "acp" } - } - } - }, - }, - keys = { - { "aa", "AvanteAsk", mode = { "n", "v" }, desc = "Ask Avante" }, - { "ae", "AvanteEdit", mode = { "n", "v" }, desc = "Edit Avante" }, - }, -} diff --git a/modules/editor/vim/lua/plugins/opencode.lua b/modules/editor/vim/lua/plugins/opencode.lua index ebcb11b..8ac2413 100644 --- a/modules/editor/vim/lua/plugins/opencode.lua +++ b/modules/editor/vim/lua/plugins/opencode.lua @@ -17,19 +17,19 @@ return { } vim.o.autoread = true - vim.keymap.set({ "n", "x" }, "oa", function() + vim.keymap.set({ "n", "x" }, "aa", function() require("opencode").ask("@this: ", { submit = true }) end, { desc = "Ask opencode" }) - vim.keymap.set({ "n", "x" }, "oo", function() + vim.keymap.set({ "n", "x" }, "ao", function() require("opencode").select() end, { desc = "Execute opencode action…" }) - vim.keymap.set({ "n", "x" }, "os", function() + vim.keymap.set({ "n", "x" }, "as", function() require("opencode").prompt("@this") end, { desc = "Add to opencode" }) - vim.keymap.set({ "n", "t" }, "o.", function() + vim.keymap.set({ "n", "t" }, "a.", function() require("opencode").toggle() end, { desc = "Toggle opencode" }) end, diff --git a/modules/editor/vim/vim.nix b/modules/editor/vim/vim.nix index 8a70a60..c8ba9dd 100644 --- a/modules/editor/vim/vim.nix +++ b/modules/editor/vim/vim.nix @@ -1,5 +1,4 @@ { - inputs, config, lib, pkgs, @@ -135,9 +134,6 @@ in vim-startuptime yazi-nvim zk-nvim - avante-nvim - blink-cmp-avante - img-clip-nvim (pkgs.vimUtils.buildVimPlugin { pname = "opencode.nvim"; @@ -238,7 +234,6 @@ in { import = "lazyvim.plugins.extras.lang.elixir" }, { import = "lazyvim.plugins.extras.test.core" }, { import = "lazyvim.plugins.extras.lang.typescript" }, - { import = "lazyvim.plugins.extras.ai.avante" }, -- import/override with your plugins { import = "plugins" }, }, From ec5364d7645c99bf130b1d29ff783075361ca320 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Tue, 23 Dec 2025 14:25:07 +0100 Subject: [PATCH 11/14] Update inputs --- flake.lock | 78 ++++++++++++++++++------------------- flake.nix | 2 +- modules/desktop/default.nix | 4 +- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/flake.lock b/flake.lock index 77956f3..0517b26 100644 --- a/flake.lock +++ b/flake.lock @@ -28,11 +28,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1764952076, - "narHash": "sha256-Tj+87I0ogmtjC/jEpTiO1wwu8M2eaY+7xDXNKz135Xk=", + "lastModified": 1766423654, + "narHash": "sha256-ko2vQ6kf8dXLMTq2bnNazbPAHvdsf+BrWQfr4acRNDo=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "d1e8a6a2036f6c4283892cbc9966c13a34d37a89", + "rev": "d06edf59a5f5c1b15d607ec2e514cf2f8a71a591", "type": "github" }, "original": { @@ -48,11 +48,11 @@ ] }, "locked": { - "lastModified": 1764952935, - "narHash": "sha256-cRPB2zESVMjIGxJ49qj4t4qnT0ae44E+fS/mkfOS/BY=", + "lastModified": 1766387499, + "narHash": "sha256-AjK3/UKDzeXFeYNLVBaJ3+HLE9he1g5UrlNd4/BM3eA=", "owner": "nix-community", "repo": "home-manager", - "rev": "519828bf1c97f8bc2ed2d3b79214067047d3c67d", + "rev": "527ad07e6625302b648ed3b28c34b62a79bd103e", "type": "github" }, "original": { @@ -69,11 +69,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1765034113, - "narHash": "sha256-i+4lUGCZyqXx70xUoM4iqbCAcSk69zz8czZNweCOGg0=", + "lastModified": 1766441132, + "narHash": "sha256-bd6d2lQiNaIEIjRZo7yFthyYJ8uugnRJfWn8SuOy8i4=", "owner": "numtide", "repo": "llm-agents.nix", - "rev": "e39a9719bdc5b495aadf894a9b7321cf27e9ecf7", + "rev": "950a181bbb93b8de506b1db15fec242d273d2c1d", "type": "github" }, "original": { @@ -84,11 +84,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1764667669, - "narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=", + "lastModified": 1766309749, + "narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "418468ac9527e799809c900eda37cbff999199b6", + "rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816", "type": "github" }, "original": { @@ -100,11 +100,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1764836381, - "narHash": "sha256-8jemYbbW9EBttQKHep7Rj8kzXaxsrk/lACdXA2DN5Xk=", + "lastModified": 1766014764, + "narHash": "sha256-+73VffE5GP5fvbib6Hs1Su6LehG+9UV1Kzs90T2gBLA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ff06bd3398fb1bea6c937039ece7e7c8aa396ebf", + "rev": "2b0d2b456e4e8452cf1c16d00118d145f31160f9", "type": "github" }, "original": { @@ -116,11 +116,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1764947035, - "narHash": "sha256-EYHSjVM4Ox4lvCXUMiKKs2vETUSL5mx+J2FfutM7T9w=", + "lastModified": 1766314097, + "narHash": "sha256-laJftWbghBehazn/zxVJ8NdENVgjccsWAdAqKXhErrM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a672be65651c80d3f592a89b3945466584a22069", + "rev": "306ea70f9eb0fb4e040f8540e2deab32ed7e2055", "type": "github" }, "original": { @@ -132,11 +132,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1764667669, - "narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=", + "lastModified": 1766309749, + "narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "418468ac9527e799809c900eda37cbff999199b6", + "rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816", "type": "github" }, "original": { @@ -148,11 +148,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1764242076, - "narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=", + "lastModified": 1766070988, + "narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4", + "rev": "c6245e83d836d0433170a16eb185cefe0572f8b8", "type": "github" }, "original": { @@ -165,11 +165,11 @@ "nvim-treesitter": { "flake": false, "locked": { - "lastModified": 1764266060, - "narHash": "sha256-j2o5c4qgVYQs5DJpSDX1eMsNonDkhyhEQQYMYW2YS7o=", + "lastModified": 1766230815, + "narHash": "sha256-+2PF6Q2uwRs/gbhKvR4jF8rYhe0HoZfwMwZCoZinp/o=", "owner": "nvim-treesitter", "repo": "nvim-treesitter", - "rev": "17885756e63df73ed90db62e4630f744ceda6514", + "rev": "8cdffc6d334731ce3703b6d870a5a34fd878208a", "type": "github" }, "original": { @@ -186,11 +186,11 @@ "nvim-treesitter-textobjects": "nvim-treesitter-textobjects" }, "locked": { - "lastModified": 1764561751, - "narHash": "sha256-gI/1xLdvXvrkZYTArFSW/2bydHiIJvln6sePNT4KHAc=", + "lastModified": 1766296113, + "narHash": "sha256-s6bymukQTFg6kAsgogwbCda+Fe+Su3T9rJE0xZ8s9R0=", "owner": "iofq", "repo": "nvim-treesitter-main", - "rev": "9f104282ca15b762fd6523a82ec9a6c182170489", + "rev": "5ca3b0dd2d3d00fb597ba8c316eb3ca79ea17fbc", "type": "github" }, "original": { @@ -202,11 +202,11 @@ "nvim-treesitter-textobjects": { "flake": false, "locked": { - "lastModified": 1764294350, - "narHash": "sha256-M7Wfyg1cHXOHKzkhei3GfozK2tsUZ7LZoOdSiHY0dG4=", + "lastModified": 1766243280, + "narHash": "sha256-hbVwqoo0WRTVKIhsG5N6IXnmOVrrQzGuE4x0rEMYro0=", "owner": "nvim-treesitter", "repo": "nvim-treesitter-textobjects", - "rev": "63c4dce4a56312ef1bdeafd16bdefa008fcc950a", + "rev": "e91c585ac0ee760198dabc1fad2e6227effdcd5e", "type": "github" }, "original": { @@ -249,11 +249,11 @@ ] }, "locked": { - "lastModified": 1762938485, - "narHash": "sha256-AlEObg0syDl+Spi4LsZIBrjw+snSVU4T8MOeuZJUJjM=", + "lastModified": 1766000401, + "narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "5b4ee75aeefd1e2d5a1cc43cf6ba65eba75e83e4", + "rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd", "type": "github" }, "original": { @@ -265,11 +265,11 @@ "vim-org-roam": { "flake": false, "locked": { - "lastModified": 1764552004, - "narHash": "sha256-jtQeT+wVz7CHA34aQYFjROAV5A24aDuduOjcn+LPN3o=", + "lastModified": 1765802816, + "narHash": "sha256-Zzq4JK3iFBVr8QmMmv5vm/R8QyYqmL44fRMZa15m7eo=", "owner": "chipsenkbeil", "repo": "org-roam.nvim", - "rev": "087b7ba015a7d164c16d24567727117a0b0c43a6", + "rev": "74276a94e9e4af463e7ba35c22259eeced9c90f9", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 90a8ff5..597eeaf 100644 --- a/flake.nix +++ b/flake.nix @@ -41,7 +41,7 @@ "mongodb-compass" "nvidia-x11" "nvidia-settings" - "idea-ultimate" + "idea" ]; overlays = extraOverlays diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index 0286de4..a211af9 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -198,8 +198,8 @@ in scala-cli beamMinimal27Packages.elixir jdk - jetbrains.idea-community - jetbrains.idea-ultimate + jetbrains.idea-oss + jetbrains.idea httpie zsh-syntax-highlighting From d3debcc7999e7ede3ff4a2b269d398a0ce3cbc77 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Tue, 23 Dec 2025 14:26:00 +0100 Subject: [PATCH 12/14] Configure gpt-5.1-codex-max --- modules/ai/opencode.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/ai/opencode.nix b/modules/ai/opencode.nix index c43d9c9..0b39e56 100644 --- a/modules/ai/opencode.nix +++ b/modules/ai/opencode.nix @@ -53,6 +53,12 @@ in include = [ "reasoning.encrypted_content" ]; }; }; + "gpt-5.1-codex-max" = { + options = { + store = false; + include = [ "reasoning.encrypted_content" ]; + }; + }; }; }; }; From 3e350bc4255c1d579c1382c13722091b36325121 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Tue, 23 Dec 2025 14:29:58 +0100 Subject: [PATCH 13/14] Configure ssh keys --- hosts/nixos-desktop/default.nix | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/hosts/nixos-desktop/default.nix b/hosts/nixos-desktop/default.nix index c662096..2ba01bd 100644 --- a/hosts/nixos-desktop/default.nix +++ b/hosts/nixos-desktop/default.nix @@ -64,10 +64,13 @@ } ]; }; - users.users.root.openssh.authorizedKeys.keyFiles = [ - ../../ssh_keys/phfroidmont-laptop.pub - ../../ssh_keys/phfroidmont-stellaris.pub - ]; + + users.users.${config.user.name} = { + openssh.authorizedKeys.keyFiles = [ + ../../ssh_keys/phfroidmont-desktop.pub + ../../ssh_keys/phfroidmont-stellaris.pub + ]; + }; # Allow to externally control MPD networking.firewall.allowedTCPPorts = [ 6600 ]; From e1c00acd712fd1f8fe5af49901b1cee5747a2a6c Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Tue, 23 Dec 2025 14:46:30 +0100 Subject: [PATCH 14/14] Remove laptop config --- hosts/froidmpa-laptop/default.nix | 114 ------------------ .../hardware-configuration.nix | 58 --------- hosts/rpi3/default.nix | 2 +- hosts/stellaris/default.nix | 1 - ssh_keys/phfroidmont-laptop.pub | 1 - 5 files changed, 1 insertion(+), 175 deletions(-) delete mode 100644 hosts/froidmpa-laptop/default.nix delete mode 100644 hosts/froidmpa-laptop/hardware-configuration.nix delete mode 100644 ssh_keys/phfroidmont-laptop.pub diff --git a/hosts/froidmpa-laptop/default.nix b/hosts/froidmpa-laptop/default.nix deleted file mode 100644 index ac04f3c..0000000 --- a/hosts/froidmpa-laptop/default.nix +++ /dev/null @@ -1,114 +0,0 @@ -{ config, ... }: -{ - imports = [ ./hardware-configuration.nix ]; - - modules = { - desktop.wm.enable = true; - editor = { - vim.enable = true; - emacs.enable = true; - }; - services = { - flatpak.enable = true; - belgian-eid.enable = true; - docker.enable = true; - libvirt.enable = true; - languagetool.enable = true; - work-proxy.enable = true; - }; - media = { - mpd.enable = true; - ncmpcpp.enable = true; - }; - }; - - user.name = "froidmpa"; - - # Monitor backlight control - programs.light.enable = true; - - services.tlp.enable = true; - - home-manager.users.${config.user.name} = - { ... }: - { - services.network-manager-applet.enable = true; - services.blueman-applet.enable = true; - wayland.windowManager.hyprland.settings = { - monitor = [ - "eDP-1, 1920x1080, 0x720, 1.5" - "DP-1, 1920x1080, 0x0, 1.5" - ]; - - workspace = [ - "w[tv1], gapsout:0, gapsin:0" - "f[1], gapsout:0, gapsin:0" - ]; - windowrulev2 = [ - "bordersize 0, floating:0, onworkspace:w[tv1]" - "rounding 0, floating:0, onworkspace:w[tv1]" - "bordersize 0, floating:0, onworkspace:f[1]" - "rounding 0, floating:0, onworkspace:f[1]" - ]; - }; - }; - - services.pipewire.wireplumber.extraConfig = { - "monitor.bluez.properties" = { - "bluez5.enable-sbc-xq" = true; - "bluez5.enable-msbc" = true; - "bluez5.enable-hw-volume" = true; - "bluez5.roles" = [ - "hsp_hs" - "hsp_ag" - "hfp_hf" - "hfp_ag" - ]; - }; - }; - - services.tailscale.enable = true; - - services.openssh = { - enable = true; - settings.PasswordAuthentication = false; - listenAddresses = [ - { - # Tailscale interface - addr = "100.64.0.1"; - port = 22; - } - ]; - }; - services.logind.settings.Login.HandleLidSwitch = "ignore"; - users.users.${config.user.name} = { - openssh.authorizedKeys.keyFiles = [ - ../../ssh_keys/phfroidmont-desktop.pub - ../../ssh_keys/phfroidmont-stellaris.pub - ]; - extraGroups = [ "video" ]; - }; - - nix = { - distributedBuilds = true; - buildMachines = [ - { - hostName = "hel1.banditlair.com"; - sshUser = "nix-ssh"; - system = "x86_64-linux"; - supportedFeatures = [ - "nixos-test" - "benchmark" - "big-parallel" - "kvm" - ]; - } - ]; - settings = { - substituters = [ "ssh://nix-ssh@hel1.banditlair.com" ]; - trusted-public-keys = [ "hel1.banditlair.com:stzB4xe5QTFvSABoP11ZpNzLDCRZ93PExk0Z/gOzW3g=" ]; - builders-use-substitutes = true; - }; - }; - system.stateVersion = "21.05"; -} diff --git a/hosts/froidmpa-laptop/hardware-configuration.nix b/hosts/froidmpa-laptop/hardware-configuration.nix deleted file mode 100644 index 06c9403..0000000 --- a/hosts/froidmpa-laptop/hardware-configuration.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ modulesPath, ... }: - -{ - imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - - boot = { - initrd = { - availableKernelModules = [ - "nvme" - "xhci_pci" - "sdhci_pci" - ]; - kernelModules = [ "dm-snapshot" ]; - }; - kernelModules = [ "kvm-amd" ]; - # Required, otherwise the kernel freezes on boot - kernelParams = [ - "amd_iommu=on" - "iommu=pt" - "pci=noats" - ]; - extraModulePackages = [ ]; - loader.systemd-boot.enable = true; - loader.efi.canTouchEfiVariables = true; - initrd.luks.devices."crypted".device = "/dev/disk/by-uuid/1e900b2e-daea-4558-b18f-3d3a5843de61"; - }; - - hardware.cpu.amd.updateMicrocode = true; - - fileSystems."/" = { - device = "/dev/disk/by-uuid/a8abad9b-5615-4887-8431-3d80b78d073e"; - fsType = "ext4"; - }; - - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/077C-758A"; - fsType = "vfat"; - }; - - swapDevices = [ { device = "/dev/disk/by-uuid/bb8fa9ef-9b8f-413d-913a-6c891649a954"; } ]; - - hardware = { - bluetooth = { - enable = true; - # Enable A2DP Sink - settings = { - General = { - Enable = "Source,Sink,Media,Socket"; - }; - }; - }; - }; - - networking.networkmanager.enable = true; - - services.blueman.enable = true; - -} diff --git a/hosts/rpi3/default.nix b/hosts/rpi3/default.nix index b48da97..dce1070 100644 --- a/hosts/rpi3/default.nix +++ b/hosts/rpi3/default.nix @@ -27,7 +27,7 @@ services.openssh.enable = true; users.users.root.openssh.authorizedKeys.keyFiles = [ ../../ssh_keys/phfroidmont-desktop.pub - ../../ssh_keys/phfroidmont-laptop.pub + ../../ssh_keys/phfroidmont-stellaris.pub ]; services.adguardhome = { diff --git a/hosts/stellaris/default.nix b/hosts/stellaris/default.nix index ffc52ee..d6039ce 100644 --- a/hosts/stellaris/default.nix +++ b/hosts/stellaris/default.nix @@ -116,7 +116,6 @@ users.users.${config.user.name} = { openssh.authorizedKeys.keyFiles = [ ../../ssh_keys/phfroidmont-desktop.pub - ../../ssh_keys/phfroidmont-laptop.pub ]; extraGroups = [ "video" ]; }; diff --git a/ssh_keys/phfroidmont-laptop.pub b/ssh_keys/phfroidmont-laptop.pub deleted file mode 100644 index ebf70fe..0000000 --- a/ssh_keys/phfroidmont-laptop.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILu2vaezsTNaTY8X4o2mFOmQguPnSAMOoPZRlW2ACAku froidmpa@froidmpa-laptop-2021-06-30 \ No newline at end of file