diff --git a/.taskmaster/config.json b/.taskmaster/config.json index c0f2959..00cd073 100644 --- a/.taskmaster/config.json +++ b/.taskmaster/config.json @@ -1,8 +1,8 @@ { "models": { "main": { - "provider": "openai", - "modelId": "qwen3:4b", + "provider": "openrouter", + "modelId": "deepseek/deepseek-chat-v3-0324:free", "maxTokens": 4096, "temperature": 0.2, "baseURL": "http://grey-area:11434/v1" @@ -32,6 +32,7 @@ "bedrockBaseURL": "https://bedrock.us-east-1.amazonaws.com", "vertexProjectId": "your-gcp-project-id", "vertexLocation": "us-central1", - "userId": "1234567890" + "userId": "1234567890", + "defaultTag": "master" } } \ No newline at end of file diff --git a/.taskmaster/reports/task-complexity-report.json b/.taskmaster/reports/task-complexity-report.json new file mode 100644 index 0000000..7ffb558 --- /dev/null +++ b/.taskmaster/reports/task-complexity-report.json @@ -0,0 +1,10 @@ +{ + "meta": { + "generatedAt": "2025-06-14T14:52:56.566Z", + "tasksAnalyzed": 0, + "thresholdScore": 5, + "projectName": "Home Lab Infrastructure", + "usedResearch": false + }, + "complexityAnalysis": [] +} \ No newline at end of file diff --git a/.taskmaster/state.json b/.taskmaster/state.json new file mode 100644 index 0000000..df63529 --- /dev/null +++ b/.taskmaster/state.json @@ -0,0 +1,6 @@ +{ + "currentTag": "master", + "lastSwitched": "2025-06-15T07:35:25.838Z", + "branchTagMapping": {}, + "migrationNoticeShown": false +} \ No newline at end of file diff --git a/flake.lock b/flake.lock index ca5814a..f3cfa3a 100644 --- a/flake.lock +++ b/flake.lock @@ -1,17 +1,53 @@ { "nodes": { + "deploy-rs": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs", + "utils": "utils" + }, + "locked": { + "lastModified": 1749105467, + "narHash": "sha256-hXh76y/wDl15almBcqvjryB50B0BaiXJKk20f314RoE=", + "owner": "serokell", + "repo": "deploy-rs", + "rev": "6bc76b872374845ba9d645a2f012b764fecd765f", + "type": "github" + }, + "original": { + "owner": "serokell", + "repo": "deploy-rs", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1749024892, - "narHash": "sha256-OGcDEz60TXQC+gVz5sdtgGJdKVYr6rwdzQKuZAJQpCA=", + "lastModified": 1743014863, + "narHash": "sha256-jAIUqsiN2r3hCuHji80U7NNEafpIMBXiwKlSrjWMlpg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8f1b52b04f2cb6e5ead50bd28d76528a2f0380ef", + "rev": "bd3bac8bfb542dbde7ffffb6987a1a1f9d41699f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-25.05", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -32,11 +68,61 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1749024892, + "narHash": "sha256-OGcDEz60TXQC+gVz5sdtgGJdKVYr6rwdzQKuZAJQpCA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8f1b52b04f2cb6e5ead50bd28d76528a2f0380ef", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { - "nixpkgs": "nixpkgs", + "deploy-rs": "deploy-rs", + "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index c99af01..d04d6ef 100644 --- a/flake.nix +++ b/flake.nix @@ -4,12 +4,14 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + deploy-rs.url = "github:serokell/deploy-rs"; }; outputs = { self, nixpkgs, nixpkgs-unstable, + deploy-rs, ... } @ inputs: let system = "x86_64-linux"; @@ -146,6 +148,68 @@ }; }; + # Deploy-rs configuration for automated deployments + deploy.nodes = { + sleeper-service = { + hostname = "sleeper-service.tail807ea.ts.net"; + profiles.system = { + user = "root"; + path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.sleeper-service; + sshUser = "sma"; + sudo = "sudo -u"; + autoRollback = true; + magicRollback = true; + activationTimeout = 180; + confirmTimeout = 30; + }; + }; + + grey-area = { + hostname = "grey-area.tail807ea.ts.net"; + profiles.system = { + user = "root"; + path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.grey-area; + sshUser = "sma"; + sudo = "sudo -u"; + autoRollback = true; + magicRollback = true; + activationTimeout = 180; + confirmTimeout = 30; + }; + }; + + reverse-proxy = { + hostname = "reverse-proxy.tail807ea.ts.net"; + profiles.system = { + user = "root"; + path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.reverse-proxy; + sshUser = "sma"; + sudo = "sudo -u"; + autoRollback = true; + magicRollback = true; + activationTimeout = 240; # VPS might be slower + confirmTimeout = 30; + }; + }; + + congenital-optimist = { + hostname = "congenital-optimist.tail807ea.ts.net"; + profiles.system = { + user = "root"; + path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.congenital-optimist; + sshUser = "sma"; + sudo = "sudo -u"; + autoRollback = true; + magicRollback = true; + activationTimeout = 180; + confirmTimeout = 30; + }; + }; + }; + + # Deploy-rs checks (recommended by deploy-rs) + checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib; + # Formatter for Nix files formatter.${system} = nixpkgs.legacyPackages.${system}.alejandra; }; diff --git a/packages/claude-task-master-ai.nix b/packages/claude-task-master-ai.nix index b815476..9bc79e9 100644 --- a/packages/claude-task-master-ai.nix +++ b/packages/claude-task-master-ai.nix @@ -4,7 +4,6 @@ fetchurl, nodejs, }: - buildNpmPackage rec { pname = "task-master-ai"; version = "0.16.2"; @@ -24,7 +23,7 @@ buildNpmPackage rec { description = "Claude Task Master AI - An intelligent task management and project breakdown tool"; homepage = "https://github.com/eyaltoledano/claude-task-master"; license = licenses.mit; - maintainers = [ ]; # Add your GitHub username if you want + maintainers = []; # Add your GitHub username if you want platforms = platforms.all; mainProgram = "task-master-ai"; }; diff --git a/packages/default.nix b/packages/default.nix index 2b4bc2b..6283e53 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -1,14 +1,12 @@ -{ pkgs ? import { } }: - -{ +{pkgs ? import {}}: { # Custom packages for Home-lab infrastructure - + # Home-lab administration command-line tool - lab = pkgs.callPackage ./home-lab-tools.nix { }; - + lab = pkgs.callPackage ./home-lab-tools.nix {}; + # Claude Task Master AI package - claude-task-master-ai = pkgs.callPackage ./claude-task-master-ai.nix { }; - + claude-task-master-ai = pkgs.callPackage ./claude-task-master-ai.nix {}; + # Re-export commonly used packages with custom configurations # (Basic CLI tools moved to base.nix) -} \ No newline at end of file +}