From 6743043035c91c01c6e7dcd177e879c69892aa44 Mon Sep 17 00:00:00 2001 From: "sascha.koenig" Date: Thu, 19 Feb 2026 06:55:54 +0100 Subject: [PATCH] flake update --- .envrc | 5 + .gitignore | 27 +++ flake.lock | 288 ++++++++++++++++++++----- flake.nix | 45 +++- home/features/coding/default.nix | 3 +- home/features/coding/opencode.nix | 28 +-- home/users/sascha.koenig/AZLT124-L.nix | 2 +- hosts/AZ-CLD-1/services/default.nix | 1 + hosts/AZ-CLD-1/services/zugferd.nix | 10 + lib/ports.nix | 1 + overlays/default.nix | 2 +- 11 files changed, 337 insertions(+), 75 deletions(-) create mode 100644 .envrc create mode 100644 hosts/AZ-CLD-1/services/zugferd.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..7d5fb9d --- /dev/null +++ b/.envrc @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +# Activate the devshell from the Nix flake +# This loads all tools and environment variables defined in flake.nix + +use flake diff --git a/.gitignore b/.gitignore index 34be7fd..66b2cfc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,29 @@ +# Sisyphus work session data +.sisyphus/ + +# Editor files +*~ +.*.swp +.*.swo +.*.swx + +# Build artifacts +result +result-* +.direnv/ + +# IDE +.vscode/ +.idea/ +*.iml + +# OS +.DS_Store +Thumbs.db + +# Opencode rules +.opencode-rules +opencode.json + .todos/ .sidecar/ diff --git a/flake.lock b/flake.lock index 13bff75..4256d04 100644 --- a/flake.lock +++ b/flake.lock @@ -24,11 +24,27 @@ "agents": { "flake": false, "locked": { - "lastModified": 1770751453, - "narHash": "sha256-/cGH+1A1F/oJ2Rq7i7YCJnm7Hp5veQpHWP3lqvV2DC0=", + "lastModified": 1771432333, + "narHash": "sha256-IkfbQQahxwMBRRUl+FKc03pxSZO1MX2kRxBuCqKuTD4=", "ref": "refs/heads/master", - "rev": "eab0a9465049948ea82ba0d1a1e2ae830c3388e8", - "revCount": 45, + "rev": "1bc81fb38c20154f0dd77f7da9b9d95439d8d873", + "revCount": 62, + "type": "git", + "url": "https://code.m3ta.dev/m3tam3re/AGENTS" + }, + "original": { + "type": "git", + "url": "https://code.m3ta.dev/m3tam3re/AGENTS" + } + }, + "agents_2": { + "flake": false, + "locked": { + "lastModified": 1771353084, + "narHash": "sha256-QsrA7+md+bw1ACQeuvDn2mE5X11gM0hqVGse58spedA=", + "ref": "refs/heads/master", + "rev": "5b204c95e419eb75b04c5f85e1bd56ed56a5abe4", + "revCount": 60, "type": "git", "url": "https://code.m3ta.dev/m3tam3re/AGENTS" }, @@ -62,11 +78,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1769353768, - "narHash": "sha256-zI+7cbMI4wMIR57jMjDSEsVb3grapTnURDxxJPYFIW0=", + "lastModified": 1771437256, + "narHash": "sha256-bLqwib+rtyBRRVBWhMuBXPCL/OThfokA+j6+uH7jDGU=", "owner": "numtide", "repo": "blueprint", - "rev": "c7da5c70ad1c9b60b6f5d4f674fbe205d48d8f6c", + "rev": "06ee7190dc2620ea98af9eb225aa9627b68b0e33", "type": "github" }, "original": { @@ -124,11 +140,11 @@ ] }, "locked": { - "lastModified": 1769524058, - "narHash": "sha256-zygdD6X1PcVNR2PsyK4ptzrVEiAdbMqLos7utrMDEWE=", + "lastModified": 1771469470, + "narHash": "sha256-GnqdqhrguKNN3HtVfl6z+zbV9R9jhHFm3Z8nu7R6ml0=", "owner": "nix-community", "repo": "disko", - "rev": "71a3fc97d80881e91710fe721f1158d3b96ae14d", + "rev": "4707eec8d1d2db5182ea06ed48c820a86a42dc13", "type": "github" }, "original": { @@ -217,6 +233,24 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems_4" + }, + "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" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -245,11 +279,11 @@ ] }, "locked": { - "lastModified": 1770654520, - "narHash": "sha256-mg5WZMIPGsFu9MxSrUcuJUPMbfMsF77el5yb/7rc10k=", + "lastModified": 1771471179, + "narHash": "sha256-XuP8HPzvt4+m9aKVeL9GdGNlTeyeDn3zEeUuorvrw88=", "owner": "nix-community", "repo": "home-manager", - "rev": "6c4fdbe1ad198fac36c320fd45c5957324a80b8e", + "rev": "2dedeb55b2c140d9a123ae931588e8903fe202ef", "type": "github" }, "original": { @@ -283,14 +317,36 @@ "m3ta-nixpkgs": { "inputs": { "nixpkgs": "nixpkgs_3", - "opencode": "opencode" + "nixpkgs-master": "nixpkgs-master", + "opencode": "opencode", + "openspec": "openspec" }, "locked": { - "lastModified": 1770775409, - "narHash": "sha256-ZijMd/HxLKQEC9CRfdr5enXrkZjR6fiCU93vfqiB9fM=", + "lastModified": 1771433707, + "narHash": "sha256-O6S4YB16lN9ACb2Z6lEWxE22IyUhb+Z3mJgQJw3hpA4=", "ref": "refs/heads/master", - "rev": "19456800ed9d3ec26f07f807d96dfe09252123d4", - "revCount": 93, + "rev": "58312b2ca2fdf5e0f753e496b4902a523cbb96aa", + "revCount": 120, + "type": "git", + "url": "https://code.m3ta.dev/m3tam3re/nixpkgs" + }, + "original": { + "type": "git", + "url": "https://code.m3ta.dev/m3tam3re/nixpkgs" + } + }, + "m3ta-nixpkgs_2": { + "inputs": { + "nixpkgs": "nixpkgs_6", + "nixpkgs-master": "nixpkgs-master_2", + "opencode": "opencode_2" + }, + "locked": { + "lastModified": 1771355771, + "narHash": "sha256-Uhq6aMCuzKqC2UIAbEkx+LQS77MGEVDEL7zpfoW6VB8=", + "ref": "refs/heads/master", + "rev": "dc206b13e256941298868d559fff9be31d7e0e34", + "revCount": 119, "type": "git", "url": "https://code.m3ta.dev/m3tam3re/nixpkgs" }, @@ -302,15 +358,15 @@ "nix-ai-tools": { "inputs": { "blueprint": "blueprint", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1770694022, - "narHash": "sha256-+blZO0NoxRrM4PU7s4fv/iD5juNH2LQZ65OWLjcKHfU=", + "lastModified": 1771471382, + "narHash": "sha256-YvONlmHPIDsUXyZbPvFFSQEYDOm30QsvMnZKlMKHROA=", "owner": "numtide", "repo": "nix-ai-tools", - "rev": "1210ebee485fdbd8000d790418d7855f7431493f", + "rev": "2abff10d3848886f248818c161ef3e1546055fcd", "type": "github" }, "original": { @@ -458,13 +514,45 @@ "type": "github" } }, + "nixpkgs-master": { + "locked": { + "lastModified": 1770917518, + "narHash": "sha256-XSwv/tVrNo/L8SPH8Lx9xZH1PrZd/3Z3J/0SH7Xertg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3f4a3c08f2f318ee29fc8a2689f390071a94aaf0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-master_2": { + "locked": { + "lastModified": 1770917518, + "narHash": "sha256-XSwv/tVrNo/L8SPH8Lx9xZH1PrZd/3Z3J/0SH7Xertg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3f4a3c08f2f318ee29fc8a2689f390071a94aaf0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-unstable": { "locked": { - "lastModified": 1770562336, - "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", + "lastModified": 1771369470, + "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", + "rev": "0182a361324364ae3f436a63005877674cf45efb", "type": "github" }, "original": { @@ -508,11 +596,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1770073757, - "narHash": "sha256-Vy+G+F+3E/Tl+GMNgiHl9Pah2DgShmIUBJXmbiQPHbI=", + "lastModified": 1771207753, + "narHash": "sha256-b9uG8yN50DRQ6A7JdZBfzq718ryYrlmGgqkRm9OOwCE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "47472570b1e607482890801aeaf29bfb749884f6", + "rev": "d1c15b7d5806069da59e819999d70e1cec0760bf", "type": "github" }, "original": { @@ -524,32 +612,48 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1770537093, - "narHash": "sha256-pF1quXG5wsgtyuPOHcLfYg/ft/QMr8NnX0i6tW2187s=", - "owner": "NixOS", + "lastModified": 1771208521, + "narHash": "sha256-X01Q3DgSpjeBpapoGA4rzKOn25qdKxbPnxHeMLNoHTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "fef9403a3e4d31b0a23f0bacebbec52c248fbb51", + "rev": "fa56d7d6de78f5a7f997b0ea2bc6efd5868ad9e8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "nixos-25.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_6": { "locked": { - "lastModified": 1770464364, - "narHash": "sha256-z5NJPSBwsLf/OfD8WTmh79tlSU8XgIbwmk6qB1/TFzY=", - "owner": "nixos", + "lastModified": 1770562336, + "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "23d72dabcb3b12469f57b37170fcbc1789bd7457", + "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-25.11", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1770115704, + "narHash": "sha256-KHFT9UWOF2yRPlAnSXQJh6uVcgNcWlFqqiAZ7OVlHNc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e6eae2ee2110f3d31110d5c222cd395303343b08", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -562,11 +666,11 @@ ] }, "locked": { - "lastModified": 1770700998, - "narHash": "sha256-TgB/5dzl6x/XO1nSBeGi9sJAkr4eGA3aplwU+CAbxVg=", + "lastModified": 1771477823, + "narHash": "sha256-DzsWqyb5wqjOyP0HxNlcWbhyAfa3Vmcvf2r+0Pb2WtE=", "owner": "nix-community", "repo": "NUR", - "rev": "819102e2f2d3bf58c2066ed45a460feb04bbd52a", + "rev": "076448fc61157c82cca67e481e29d05f0a4d7627", "type": "github" }, "original": { @@ -577,23 +681,70 @@ }, "opencode": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": [ + "m3ta-nixpkgs", + "nixpkgs-master" + ] }, "locked": { - "lastModified": 1770761545, - "narHash": "sha256-IHN7Rh/Wb4TKdT1rkJYgkI0CLBXCcrM0OpCkIlycW+Y=", + "lastModified": 1771271829, + "narHash": "sha256-43vPMyO7DsAgKrh0Wmt7jLDYCWUsaj30nBITreyYgX8=", "owner": "anomalyco", "repo": "opencode", - "rev": "1bbbd51d48f38014674eebe1588f556da95b7b1f", + "rev": "d8c25bfeb44771cc3a3ba17bf8de6ad2add9de2c", "type": "github" }, "original": { "owner": "anomalyco", - "ref": "v1.1.56", + "ref": "v1.2.6", "repo": "opencode", "type": "github" } }, + "opencode_2": { + "inputs": { + "nixpkgs": [ + "zugferd-service", + "m3ta-nixpkgs", + "nixpkgs-master" + ] + }, + "locked": { + "lastModified": 1771271829, + "narHash": "sha256-43vPMyO7DsAgKrh0Wmt7jLDYCWUsaj30nBITreyYgX8=", + "owner": "anomalyco", + "repo": "opencode", + "rev": "d8c25bfeb44771cc3a3ba17bf8de6ad2add9de2c", + "type": "github" + }, + "original": { + "owner": "anomalyco", + "ref": "v1.2.6", + "repo": "opencode", + "type": "github" + } + }, + "openspec": { + "inputs": { + "nixpkgs": [ + "m3ta-nixpkgs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1771409495, + "narHash": "sha256-LplnuO/OHSFL8S8iwQ16CZTjlPxRV9XohkKxL3uA5Sc=", + "owner": "Fission-AI", + "repo": "OpenSpec", + "rev": "5fd8e9d66c3b6b116e7af814a6013c2d9c4958dd", + "type": "github" + }, + "original": { + "owner": "Fission-AI", + "repo": "OpenSpec", + "type": "github" + } + }, "root": { "inputs": { "agenix": "agenix", @@ -606,9 +757,10 @@ "nix-ai-tools": "nix-ai-tools", "nix-colors": "nix-colors", "nixos-anywhere": "nixos-anywhere", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_5", "nixpkgs-unstable": "nixpkgs-unstable", - "nur": "nur" + "nur": "nur", + "zugferd-service": "zugferd-service" } }, "systems": { @@ -656,6 +808,21 @@ "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" + } + }, "treefmt-nix": { "inputs": { "nixpkgs": [ @@ -715,6 +882,27 @@ "repo": "flake-utils", "type": "github" } + }, + "zugferd-service": { + "inputs": { + "agents": "agents_2", + "flake-utils": "flake-utils", + "m3ta-nixpkgs": "m3ta-nixpkgs_2", + "nixpkgs": "nixpkgs_7" + }, + "locked": { + "lastModified": 1771402778, + "narHash": "sha256-CA1V+H0iOxy5POr2/ZnRrAMvQWav1TI0m9C1T2b7EvQ=", + "ref": "refs/heads/master", + "rev": "e47e36d55c6678932a63e295127b844f817d3948", + "revCount": 12, + "type": "git", + "url": "https://git.az-gruppe.com/AZ-Intec-GmbH/zugferd-service" + }, + "original": { + "type": "git", + "url": "https://git.az-gruppe.com/AZ-Intec-GmbH/zugferd-service" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 78345e2..ab66ab2 100644 --- a/flake.nix +++ b/flake.nix @@ -52,11 +52,15 @@ url = "git+https://code.m3ta.dev/m3tam3re/AGENTS"; flake = false; }; + zugferd-service = { + url = "git+https://git.az-gruppe.com/AZ-Intec-GmbH/zugferd-service"; + }; }; outputs = { self, agenix, + agents, deploy-rs, home-manager, nixpkgs, @@ -84,23 +88,47 @@ inherit system; config.allowUnfree = true; # Allow unfree packages in devShell }; + m3taLib = m3ta-nixpkgs.lib.${system}; + rules = m3taLib.opencode-rules.mkOpencodeRules { + inherit agents; + languages = ["nix"]; + }; in { default = pkgs.mkShell { + inherit (rules) instructions; buildInputs = with pkgs; [ - opentofu - openssh + alejandra + nixd + opencode agenix.packages.${system}.default ]; shellHook = '' - echo "🚀 NixOS Infrastructure Development Shell" - echo "Available tools:" - echo " - opentofu: Infrastructure as Code" - echo " - agenix: Secret management" + ${rules.shellHook} + echo "🚀 NixOS Infrastructure Development Shell with Opencode Rules" echo "" - echo "Quick start:" - echo " cd terraform && tofu init init" + echo "Active rules:" + echo " - Nix language conventions" + echo " - Coding-style best practices" + echo " - Naming conventions" + echo " - Documentation standards" + echo " - Testing guidelines" + echo " - Git workflow patterns" + echo " - Project structure guidelines" echo "" + echo "Generated files:" + echo " - .opencode-rules/ (symlink to AGENTS repo)" + echo " - opencode.json (configuration file)" + echo "" + echo "Useful commands:" + echo " - cat opencode.json View rules configuration" + echo " - ls .opencode-rules/ Browse available rules" + echo " - nix develop Re-enter this shell" + echo "" + echo "Remember to add to .gitignore:" + echo " .opencode-rules" + echo " opencode.json" + echo "======================================" ''; }; }); @@ -112,6 +140,7 @@ ./hosts/AZ-CLD-1 agenix.nixosModules.default inputs.disko.nixosModules.disko + inputs.zugferd-service.nixosModules.default ]; }; AZ-PRM-1 = nixpkgs.lib.nixosSystem { diff --git a/home/features/coding/default.nix b/home/features/coding/default.nix index 6433871..85bceef 100644 --- a/home/features/coding/default.nix +++ b/home/features/coding/default.nix @@ -25,7 +25,8 @@ nix-update sidecar td - # opencode-desktop + opencode-desktop + openspec tailwindcss tailwindcss-language-server ]; diff --git a/home/features/coding/opencode.nix b/home/features/coding/opencode.nix index 1a39117..9de86df 100644 --- a/home/features/coding/opencode.nix +++ b/home/features/coding/opencode.nix @@ -80,13 +80,13 @@ google_auth = false; agents = { sisyphus = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; oracle = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; librarian = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; explore = { model = "zai-coding-plan/glm-4.5-air"; @@ -95,39 +95,39 @@ model = "zai-coding-plan/glm-4.6v"; }; prometheus = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; metis = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; momus = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; atlas = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; }; categories = { visual-engineering = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; ultrabrain = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; artistry = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; quick = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; unspecified-low = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; unspecified-high = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; writing = { - model = "zai-coding-plan/glm-4.7"; + model = "zai-coding-plan/glm-5"; }; }; disabled_mcps = ["context7" "websearch"]; diff --git a/home/users/sascha.koenig/AZLT124-L.nix b/home/users/sascha.koenig/AZLT124-L.nix index 5d9cf67..8c002c4 100644 --- a/home/users/sascha.koenig/AZLT124-L.nix +++ b/home/users/sascha.koenig/AZLT124-L.nix @@ -89,7 +89,7 @@ in { windowrule = [ "match:class com.obsproject.Studio, workspace 1" "match:class dev.zed.Zed, workspace 3" - "match:class vivaldi-stable, workspace 5, opacity 1.0" + "match:class vivaldi-stable, workspace 4, opacity 1.0" "match:initial_title 3.basecamp.com_/5996442/, workspace 5, opacity 1.0" "match:initial_title 3.basecamp.com_/5996442/, tile on" "match:initial_title teams.microsoft.com_/, workspace 6, opacity 1.0" diff --git a/hosts/AZ-CLD-1/services/default.nix b/hosts/AZ-CLD-1/services/default.nix index 9f4a06c..72b25d7 100644 --- a/hosts/AZ-CLD-1/services/default.nix +++ b/hosts/AZ-CLD-1/services/default.nix @@ -10,6 +10,7 @@ ./postgres.nix ./traefik.nix ./vaultwarden.nix + ./zugferd.nix # ./zammad.nix ]; } diff --git a/hosts/AZ-CLD-1/services/zugferd.nix b/hosts/AZ-CLD-1/services/zugferd.nix new file mode 100644 index 0000000..78b0ea5 --- /dev/null +++ b/hosts/AZ-CLD-1/services/zugferd.nix @@ -0,0 +1,10 @@ +{lib, ...}: let + serviceName = "zugferd-service"; + portUtils = import ../../../lib/port-utils.nix {inherit lib;}; +in { + services.${serviceName} = { + enable = true; + port = portUtils.getPort serviceName "AZ-CLD-1"; + host = "127.0.0.1"; + }; +} diff --git a/lib/ports.nix b/lib/ports.nix index 4c38035..345e796 100644 --- a/lib/ports.nix +++ b/lib/ports.nix @@ -28,6 +28,7 @@ # Workflow/automation (5000-5999 range) n8n = 5678; kestra = 5080; + zugferd-service = 5060; # Management tools (9000-9999 range) portainer = 9000; diff --git a/overlays/default.nix b/overlays/default.nix index 28ad72b..7e805e2 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -3,7 +3,7 @@ additions = final: prev: (import ../pkgs {pkgs = final;}) // { - #crush = inputs.nix-ai-tools.packages.${prev.system}.crush; + zugferd-service = inputs.zugferd-service.packages.${prev.system}.default; }; # This one contains whatever you want to overlay