diff --git a/config/hosts/aspects/doloro-desktop/home.nix b/config/hosts/aspects/doloro-desktop/home.nix index 6cf0fbb..8bb6d9e 100644 --- a/config/hosts/aspects/doloro-desktop/home.nix +++ b/config/hosts/aspects/doloro-desktop/home.nix @@ -98,11 +98,11 @@ # pear-desktop prismlauncher # deadlock-mod-manager - inputs.nik-pkgs.packages.x86_64-linux.grimorie + inputs.nik-pkgs.packages.x86_64-linux.grimoire # gamescope android-studio blender - tetrio-plus + # (tetrio-desktop.override { withTetrioPlus = true; }) # bottles # pi-coding-agent # orca-slicer's wrapGAppsHook does not actually wrap the installed @@ -125,6 +125,7 @@ --set WEBKIT_DISABLE_DMABUF_RENDERER 1 ''; }) + # prusa-slicer ]; programs.lutris.enable = true; nixpkgs.overlays = [ @@ -137,6 +138,9 @@ }) ]; nixpkgs.config.allowUnfree = true; + nixpkgs.config.problems.handlers = { + tetrio-plus.broken = "warn"; + }; programs.home-manager.enable = true; }; }; diff --git a/config/modules/ai/ai.nix b/config/modules/ai/ai.nix index e4e2139..7b34ea9 100644 --- a/config/modules/ai/ai.nix +++ b/config/modules/ai/ai.nix @@ -11,11 +11,26 @@ }; }; homeManager = - { pkgs, ... }: + { pkgs, config, ... }: { home.packages = [ pkgs.claude-code ]; + sops = { + secrets.scug-io-ai-key = { + # sopsFile = ./secrets.yaml; + # Decrypted file path (available at runtime, not eval time) + path = config.home.homeDirectory + "/.secrets/scug_io_api_key"; + sopsFile = ../secrets/content/secrets.yaml; + }; + }; + programs.fish = { + shellInit = '' + if test -f "$HOME/.secrets/scug_io_api_key" + set -x SCUG_IO_API_KEY (cat "$HOME/.secrets/scug_io_api_key") + end + ''; + }; programs.opencode = { enable = true; extraPackages = with pkgs; [ @@ -23,14 +38,53 @@ typescript-language-server ]; context = '' - Instructions: + Instructions: - - Do NOT preemptively load all references - use lazy loading based on actual need - - When loaded, treat content as mandatory instructions that override defaults - - Follow references recursively when needed + - Do NOT preemptively load all references - use lazy loading based on actual need + - When loaded, treat content as mandatory instructions that override defaults + - Follow references recursively when needed + + - NO EMOJIS ''; settings = { "lsp" = true; + provider.litellm = { + npm = "@ai-sdk/openai-compatible"; + name = "LiteLLM"; + options = { + baseURL = "https://9f5db439.fwds.scug.io/v1"; + apiKey = "{env:SCUG_IO_API_KEY}"; + }; + models = { + "openai/Qwen3.6-35B-A3B" = { + id = "Qwen3.6-35B-A3B"; + name = "Qwen3.6-35B-A3B"; + family = "Qwen"; + limit = { + context = 262144; + input = 262144; + output = 16384; + }; + cost = { + input = 0.0000002; + output = 0.0000006; + }; + provider = { + api = "openai"; + }; + modalities = { + input = [ "text" ]; + output = [ "text" ]; + }; + status = "active"; + reasoning = true; + temperature = false; + tool_call = true; + attachment = false; + experimental = false; + }; + }; + }; }; }; }; diff --git a/config/modules/secrets/content/secrets.yaml b/config/modules/secrets/content/secrets.yaml index 5801fa7..906e40e 100644 --- a/config/modules/secrets/content/secrets.yaml +++ b/config/modules/secrets/content/secrets.yaml @@ -3,10 +3,10 @@ root-hashed_password: ENC[AES256_GCM,data:vzVtz1Ht4XD+omdKjU/Zvoaftq8jKE4kxOjAGZ wakatime-scug-io-api-key: ENC[AES256_GCM,data:XQUccNW4210U8ZpHSGVcsdbAirzyTvmcy4y6emk7n4N6MO/W,iv:9/f9ceLshA7l8hJB+IDIPvEwYwSkFlPOLmpvtYXLTpU=,tag:x7hESZCouzYVNef2C+iCSA==,type:str] meow: ENC[AES256_GCM,data:JVzenw==,iv:oCOo9//r5s2K4pSeH5UNEj0LL+9h2yq0G0DPOfwjmyQ=,tag:0gu9FNOrjQ8fpB+B+RbGSg==,type:str] meoww: ENC[AES256_GCM,data:WPeszDfMWxY=,iv:JJMOror5wj7cTNKfrUj2LDXlO3WCKzb7jk4AeZ0oD+Q=,tag:qs3oyM7K1FGy5cXvS6OHpQ==,type:str] +scug-io-ai-key: ENC[AES256_GCM,data:15YxkgOe2+Kia9z52bYbmrc8SQzpjrZKmQ==,iv:+iMkNsqGVC32THO0nvDBrRby+mKj09DvWEQJn+K6at8=,tag:mI7EvyasCKHhNc55UScCXA==,type:str] sops: age: - - recipient: age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838 - enc: | + - enc: | -----BEGIN AGE ENCRYPTED FILE----- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiZC9ZVlY2T0tXdy90b2hV dDUxUjNyMjllQStaa0tKRy9YVkNIdFJyWTI4CitYNnhxN3JHQ3lsWXp2Tmgwek9n @@ -14,8 +14,8 @@ sops: MkVQY3h2OGhGaGNnYkVJUU1kK3F3VWMKs9B74KovGxx8KL5q/lGA/imVRM/i3mo/ a6Rbxufscp3WWGMbo70w8tWuRsAnIpUGh3EvWCekZ9nOzeMiVA8I2Q== -----END AGE ENCRYPTED FILE----- - - recipient: age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh - enc: | + recipient: age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838 + - enc: | -----BEGIN AGE ENCRYPTED FILE----- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0dXJzYndvSC92aElvTVpz SUtTOWFzcUJxOHVrTk5scm5tcGkzRmEvK1hVClNVbmp3ZjBRTW5ZNXVNNGh3dSti @@ -23,8 +23,8 @@ sops: Tk5Zd0h3OHRpQzZjazJKUStPUVdERzQKGnoKYKq7pPJUrcAWJ4/tm8mSxuthjssz 7IsjH4t6VCyug2c7XnLJpcE64yPD+GrXHYixP0r2qj80WMjpv7N7qA== -----END AGE ENCRYPTED FILE----- - - recipient: age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a - enc: | + recipient: age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh + - enc: | -----BEGIN AGE ENCRYPTED FILE----- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLbGQ3MkVCUldqa3dYRTg0 NjVoUDdIc0RvSU02R0o0ZVk4KzVQMkZmeXpjClJaUUU3WTJVQmJkRzV4UTc3bXFI @@ -32,8 +32,8 @@ sops: QzhtM3V3VGFzdk9UenV6akxGNDh5d3cKdIKNPvM0GRJamiS4AXRNU+TbuZUnM6K7 FtC1dmHlyU/tXlFHv6TNlMZQtDgIVnE72Jvk48maq3oKiJAXWk11fg== -----END AGE ENCRYPTED FILE----- - - recipient: age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq - enc: | + recipient: age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a + - enc: | -----BEGIN AGE ENCRYPTED FILE----- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoOHlRcnRwWUYwUGRSVW9s cmdDZjN1RGFRVWtlODBudGpaemd3UDBZcnhRCksyWlk3VW91a3pnOGNQQVppM09z @@ -41,8 +41,8 @@ sops: bWFTMlhCL2IrZjlEOUFydmE4cHBzSmMKhIk8TZtRsIFKzopZCyp27SWYeHmf6jKn VoIXQ6/VRRQjCYBsseZE5N+ycnr4ZC/RpXJ577G4TfGMCcixX67AfA== -----END AGE ENCRYPTED FILE----- - - recipient: age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05 - enc: | + recipient: age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq + - enc: | -----BEGIN AGE ENCRYPTED FILE----- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuTG9LKzVvUjZEZ1lkMVJN eldHSkRXQ241bnZmbHBmSXFNMU1seGcyaVNRCjNPaS9ITEJtdGRwOENDRytEMFk1 @@ -50,8 +50,8 @@ sops: WTR2RU9GUVdsZHdleW1Gd2lyRENzSm8KznMUQ6Ah8O03AzZcCXgUIjjrV1cdkAnq Pbr2BwdLzJvlF5lzmymIZEt35euv/HzhJGWDLWGpYJmYj/N8qZgBuA== -----END AGE ENCRYPTED FILE----- - - recipient: age1pa8cecxaw4y4zea6zjnt0k0mz38g4qunmp6trwy5fvdvw88ttcgsv2dgrv - enc: | + recipient: age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05 + - enc: | -----BEGIN AGE ENCRYPTED FILE----- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxSDNMRlNaMXB2ZXBPTlNu eG5BWE5xRTNnVUFtN2psUFVHejZVbFVCQTBFCkRXQitoL0VJaXZmMlI3Q0JHVWk1 @@ -59,8 +59,8 @@ sops: Q0x4bDFBTzV2L0E3UXQxMUdubVJZRTgKcPQZ9zHQAFwP/Odnh5INleUsHSN06U+x X98535uapyJR/Wswxj6ukdciMOou8cLfOInLwJgWOf6mZklEhecVXA== -----END AGE ENCRYPTED FILE----- - - recipient: age1kc0xu0ue2nrrr7w4gam7wlzackv8jv243rxwwndgxjqklgtnp5csdtpgzp - enc: | + recipient: age1pa8cecxaw4y4zea6zjnt0k0mz38g4qunmp6trwy5fvdvw88ttcgsv2dgrv + - enc: | -----BEGIN AGE ENCRYPTED FILE----- YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTaE1mUUlyVUxKQmhPMnlT eS81cE5TeE1WWFVIRkdWT3c0ckhNMnFYZGxrCnp4My9nK20zcGVxUFZ0cnVVTDBS @@ -68,7 +68,8 @@ sops: bzJvaUg2VkFrazBoWmlIY2hKeUdhTjQKbgW+ysm3TWBKfVoKAeqvaPio29SyzjJP 61QsSqCuJyEwSPpOzeWa5NChcCjitOUG1jEMsSHlpIslKA1P7g/P9g== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-02-14T00:08:39Z" - mac: ENC[AES256_GCM,data:lp9ZeDxt5gkOkDmYk+F0VQrVhkR0tQiQlYXbygoA8Dcq+gV0IIKKLwRqr5CVfgfRlo3239IwmKLsGaS6zYC1xX4toZ8oqw3Ic2UvP2CiWt6M7HTrlL+3Y2+PKOUvGl7RAqQxQAw7QaoxB4esqdIiWnMDueVHk5BTKrkay+afhno=,iv:NAMaZ9SMBAtROTBSQtU0RJDB60MAuE82AFoPtDqVHVM=,tag:RGBUTQC1pM+LcBweSJbc6w==,type:str] + recipient: age1kc0xu0ue2nrrr7w4gam7wlzackv8jv243rxwwndgxjqklgtnp5csdtpgzp + lastmodified: "2026-07-17T08:50:10Z" + mac: ENC[AES256_GCM,data:WQJ8Ez/0iaRSvziyanxNUmrahir/Ocu+Dysh+qtj3FFhLMhLtPZqoX92L6Eia5pbfXOZcYZUN7uUMmSBn22JCiYUtgoeVjXV8el6GVfi1LHCGKfL25ohsjsTczJXV/+tBlVrrB3MGls9AjFqDV9QnoS/3X/a1MIRGKS3GY+OMAg=,iv:Id9I6BlrzfLpMcy1EmdVGgr9jYSf9JCsOrSiIglRTNc=,tag:gXkaSz5Z8K38Cde6gy3Zvg==,type:str] unencrypted_suffix: _unencrypted - version: 3.11.0 + version: 3.13.2 diff --git a/config/modules/secrets/sops.nix b/config/modules/secrets/sops.nix index 6324268..99dd82a 100644 --- a/config/modules/secrets/sops.nix +++ b/config/modules/secrets/sops.nix @@ -15,7 +15,8 @@ inputs.sops-nix.homeManagerModules.sops ]; sops = { - age.keyFile = "/home/doloro/.config/sops/age/key.txt"; # must have no password! + age.keyFile = "/home/doloro/.config/sops/age/keys.txt"; # must have no password! + # I HATE YOU defaultSopsFile = ./content/secrets.yaml; }; }; diff --git a/config/modules/spicetify.nix b/config/modules/spicetify.nix index 4783e5e..78118ff 100644 --- a/config/modules/spicetify.nix +++ b/config/modules/spicetify.nix @@ -23,7 +23,7 @@ enable = true; enabledExtensions = with spicePkgs.extensions; [ adblockify - hidePodcasts + # hidePodcasts shuffle # shuffle+ (special characters are sanitized out of extension names) ]; theme = spicePkgs.themes.onepunch; diff --git a/flake.lock b/flake.lock index 0d0885a..19b6f62 100644 --- a/flake.lock +++ b/flake.lock @@ -496,11 +496,11 @@ ] }, "locked": { - "lastModified": 1783823409, - "narHash": "sha256-OI4IkRjRXa1e7hYmCGJDPDq5H/kPwhsyoS80cNUF9fI=", + "lastModified": 1784129366, + "narHash": "sha256-N5JiyICSeQF14x+OQebNyPpYowOT9Rs1iKyeCylSzOA=", "owner": "nix-community", "repo": "home-manager", - "rev": "7566825d4652a1b885bd4ce65bd9e8def432fec9", + "rev": "165228b0efefc3e635e5174020c40ea64271dc25", "type": "github" }, "original": { @@ -584,11 +584,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1783866241, - "narHash": "sha256-UzU1qO0RDO7HQFFYFgxT/kUhfdHVTSSs6sSgJG2h3uo=", + "lastModified": 1784118734, + "narHash": "sha256-sWiTb0IOA1MoLYfUIvGlG4Ahyu9gbtiOiCa3xz7HaRc=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "ef18043b5ce913256c336c063147e120afd2abb1", + "rev": "d7fc7240f4efd0abac1c1f23f09b78b30b4e0782", "type": "github" }, "original": { @@ -883,11 +883,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1782928785, - "narHash": "sha256-NHonNXZTRLSNWCHhg1Kbxh+LqIrG4MzIBn7RXIMxMGM=", + "lastModified": 1783961683, + "narHash": "sha256-0kq8kOvmPKE9BfWJNpA0wn1QSKa42TWoexoUMzQ2zyo=", "ref": "refs/heads/main", - "rev": "6331a7c8ec01fa6732f1ca08e918323c7d226207", - "revCount": 75, + "rev": "756a4a0507cc147f210c3d299b02269ebd297df8", + "revCount": 78, "type": "git", "url": "https://git.scug.io/nikkuss/pkgs.git" }, @@ -908,11 +908,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1783835967, - "narHash": "sha256-lbAgaLDBemsTac7H1HlABcaSKA9xCK5SBzYpEaklY4E=", + "lastModified": 1784043058, + "narHash": "sha256-/LXa/IHpH6zqcxrfhtUaZOPZHfk0WXi5YUTICaslMCI=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "3374954b30e9e00637517f973a72ca928384b5f0", + "rev": "24728b7da2cde86eb119a771c16b214f0751f91e", "type": "github" }, "original": { @@ -998,11 +998,11 @@ "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1783792734, - "narHash": "sha256-50rvY9GdFvpYDcMLcD/4cWSi0hVxArT5wsGlVsHy8eY=", + "lastModified": 1784100666, + "narHash": "sha256-HF/mrw5NYQfKFZgkfV2h1UL5/E3ccfsE2XJ1AbbLLJ0=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "8efb4337e857949f4cfac86d12ef1066f417f31f", + "rev": "fccfa9031a85b78a437f2f153c1f6449f3bc3185", "type": "github" }, "original": { @@ -1066,11 +1066,11 @@ "nixpkgs": "nixpkgs_9" }, "locked": { - "lastModified": 1783336371, - "narHash": "sha256-ZisTtweyb7JUwPP54HAXE9TypT8m89dIxDI36Ak0hAs=", + "lastModified": 1784058842, + "narHash": "sha256-3u3tvbCIAid3Mv7RrJx13jusIEQC/HeKYhO/SUSxR3A=", "owner": "nix-community", "repo": "NixOS-WSL", - "rev": "a9620cfa43f0c1c30a46c31ae3c6e58cdb124a14", + "rev": "24c8dc8e0f2170e1a377be24dfadc7d9d21dc1ad", "type": "github" }, "original": { @@ -1144,11 +1144,11 @@ }, "nixpkgs_10": { "locked": { - "lastModified": 1783776592, - "narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=", + "lastModified": 1784007870, + "narHash": "sha256-djcLt/JJphyNt4eDY9XTly+/WbCK5lqWq9lSgCmJkkQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3", + "rev": "18b9261cb3294b6d2a06d03f96872827b8fe2698", "type": "github" }, "original": { @@ -1160,11 +1160,11 @@ }, "nixpkgs_11": { "locked": { - "lastModified": 1783604885, - "narHash": "sha256-tzMgSkV7kljEkqIjlgV6F+n+xD+/a35Db8bs7a4BFAo=", + "lastModified": 1783915482, + "narHash": "sha256-FmieJB8/OUvNxbkboi7+IGfIuSXY3nF/hZQm8kD0r50=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "767b0d3ec98a143ad9ed7dfc0d5553510ac27133", + "rev": "6cdc7fc76e8bf7fde9fa43a849fcaaa70e230dee", "type": "github" }, "original": { @@ -1327,11 +1327,11 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1780243769, - "narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=", + "lastModified": 1783776592, + "narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "331800de5053fcebacf6813adb5db9c9dca22a0c", + "rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3", "type": "github" }, "original": { @@ -1348,11 +1348,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1783862302, - "narHash": "sha256-UVik+sgPu9nSsn6/aguA6TEU+J/hivoksEoBRSi5VXw=", + "lastModified": 1784057377, + "narHash": "sha256-yycNej5//EsRbV10moBoh+/63vXEwZD1ZFEiRm6C9rQ=", "owner": "nix-community", "repo": "nixvim", - "rev": "992c9c0f743822d68b51b7a11c6a07b4b50e27e9", + "rev": "07180a087e4a00720dc0731cbcd8dec796974381", "type": "github" }, "original": { @@ -1391,11 +1391,11 @@ "nixpkgs": "nixpkgs_12" }, "locked": { - "lastModified": 1783821876, - "narHash": "sha256-FKZlHCJLzJaSFY9r2qNtjLODflv/YijDZ692OSuoRxY=", + "lastModified": 1784070589, + "narHash": "sha256-Tc2LeJ4iJP6xNfQWktpnQuwmeyB8LJ7LAQgZTpfg/Ug=", "ref": "main", - "rev": "2651f942a076da8112222727ef65ce6f5d35a825", - "revCount": 256, + "rev": "8fb30f49c2f326dde2fb3d1e5dbb75fe3918cbad", + "revCount": 268, "type": "git", "url": "https://git.molez.org/mandlm/omp-nix" }, @@ -1626,11 +1626,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1783358511, - "narHash": "sha256-/F85cBWvU8b2hpawuCog464065ZTJtdMgVPWwJ9yHjE=", + "lastModified": 1784059683, + "narHash": "sha256-q5MZrmKlg9A4ORx3EQcr7qkuidMU1gVZ+xJ3nCK+xgc=", "owner": "nix-community", "repo": "stylix", - "rev": "14814ef555d8148ab82eba5054e654cd9eae3a1f", + "rev": "c8ccc31f3ea29dc3eb5b54945e5eb549529491d6", "type": "github" }, "original": { @@ -1909,11 +1909,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1781226823, - "narHash": "sha256-28696iIw8uE0ZUyFTtzhEM8xMh85clCYypMxkvUi+sc=", + "lastModified": 1783895132, + "narHash": "sha256-Dl0Gvrig3EpE962hzF3ETPhUztlfuRhcmlpd8ioHN54=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "8575d0ef55d70f9b4c46b6bffb3accf912217e1e", + "rev": "a2b5c635d8c8c99b286967658d0d177044887eb8", "type": "github" }, "original": {