diff --git a/README.md b/README.md index 3d05cb34..e88453e1 100644 --- a/README.md +++ b/README.md @@ -1,257 +1,10 @@ -# Personal Dotfiles & NixOS Configuration +# Machines -A comprehensive, multi-platform dotfiles repository managing Linux, macOS, and specialized devices through Nix flakes, NixOS, nix-darwin, and Home Manager. - -## 📊 Architecture Overview - -This repository manages **6 devices** across multiple platforms and architectures: - -- **2 Servers**: mirai (main), tsuba (Raspberry Pi) -- **1 Workstation**: ryu (primary desktop) -- **3 Portable devices**: kuro (MacBook), SteamDeck, and 1 desktop Mac Mini (shiro) - -> 📈 **Visual Architecture**: See [Device Architecture Diagram](assets/devices-diagram.svg) for a complete visual overview. - -## 🖥️ Device Portfolio - -### Server Infrastructure -| Device | Architecture | Role | Services | -|--------|-------------|------|----------| -| **mirai** | x86_64-linux | Main Server | Nextcloud, Gitea, Minecraft, Immich, Paperless, +20 more | -| **tsuba** | aarch64-linux | Raspberry Pi | ARM-based lightweight services | - -### Development Environment -| Device | Architecture | Setup | Features | -|--------|-------------|-------|----------| -| **ryu** | x86_64-linux | Main Desktop | Hyprland+GNOME, 3-monitor setup, gaming, audio production | -| **shiro** | aarch64-darwin | Mac Mini Desktop | nix-darwin + Home Manager, build server | - -### Portable Devices -| Device | Architecture | Platform | Configuration | -|--------|-------------|----------|---------------| -| **kuro** | aarch64-darwin | MacBook | nix-darwin + Home Manager | -| **SteamDeck** | x86_64-linux | SteamOS | Home Manager only | - -## 🚀 Quick Start - -### Prerequisites -```bash -# Install Nix with flakes support -curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install -``` - -### Installation - -#### NixOS (Linux) -```bash -sudo nixos-rebuild switch --flake .# -``` - -#### macOS (nix-darwin) -```bash -nix run nix-darwin -- switch --flake .# -``` - -#### Home Manager only (SteamDeck) -```bash -nix run home-manager/master -- switch --flake .#deck -``` - -### Available Devices -- `mirai` - Main server -- `ryu` - Primary desktop -- `tsuba` - Raspberry Pi -- `kuro` - MacBook (fs0c131y) -- `shiro` - MacBook (servius) -- `deck` - SteamDeck - -## 🛠️ Development Tools - -### Using Just (Recommended) -```bash -# Install on current system -just install - -# Build without switching -just build - -# Try Neovim configuration -just nvim - -# Home Manager for non-NixOS -just home -``` - -### Core Technologies -- **OS**: NixOS, macOS, SteamOS -- **Shells**: Fish (primary), Nushell -- **Editor**: Neovim with custom nixvim configuration -- **Desktop**: Hyprland (Linux), Yabai + Aerospace (macOS) -- **Terminals**: Foot, Wezterm, Kitty -- **Package Management**: Nix Flakes with distributed building - -## 🎯 Key Features - -### 🔧 Multi-Platform Configuration Management -- **NixOS**: Complete system configuration for servers and workstations -- **nix-darwin**: macOS system management with Homebrew integration -- **Home Manager**: User environment configuration across all platforms - -### 🌐 Network Infrastructure -- **Tailscale VPN**: Secure mesh networking across all devices -- **ZeroTier**: Secondary network layer for specific services -- **SSH Deployment**: Automated deployment via deploy-rs - -### ⚡ Development Environment -- **Nixvim**: Custom Neovim configuration with LSP, tree-sitter, and plugins -- **Multi-monitor support**: Professional 3-monitor setup on ryu -- **Cross-compilation**: ARM64 and x86_64 support with distributed builds - -### 🔒 Security & Secrets Management -- **SOPS**: Encrypted secrets management across all devices -- **SSH Keys**: Centralized key distribution -- **Secure Boot**: Lanzaboote implementation on ryu -- **TPM Support**: Hardware security module integration - -### 🏗️ Build Infrastructure -- **Distributed Building**: mirai, shiro as build servers -- **Binary Caches**: nix-community and custom caches -- **Cross-platform**: ARM64 and x86_64 builds - -## 📦 Self-Hosted Services (mirai) - -### Core Services -- **Nextcloud**: File storage and synchronization -- **Gitea**: Self-hosted Git server - -- **Immich**: Photo management and AI-powered search -- **Paperless**: Document management and OCR - -### Development Tools -- **Atuin**: Shell history synchronization -- **LLDAP**: Lightweight LDAP server -- **VS Code Server**: Remote development environment - -### Entertainment & Media -- **Minecraft Server**: Gaming server -- **Navidrome**: Music streaming server -- **Polaris**: Alternative music server - -### Networking & Security -- **Tailscale**: VPN coordination node -- **ZeroTier**: Network management -- **Fail2ban**: Intrusion prevention -- **Caddy**: Reverse proxy and SSL termination - -## 🎮 Gaming & Entertainment - -### Gaming Setup (ryu) -- **Steam**: Native Linux gaming -- **Wine/Proton**: Windows game compatibility -- **Controller support**: Multiple gamepad configurations -- **Performance**: NVIDIA GPU with CUDA support - -### Audio Production -- **Musnix**: Real-time audio kernel optimization -- **Professional audio**: Low-latency audio pipeline -- **Hardware support**: Audio interfaces and MIDI controllers - -## 📱 Portable Configuration - -### macOS Features (kuro - MacBook, shiro - Mac Mini) -- **Touch ID**: Sudo authentication integration (kuro) -- **Keyboard remapping**: Custom modifier key layouts -- **Aerospace/Yabai**: Tiling window management -- **Homebrew**: Package management for macOS-specific applications -- **Build server**: shiro serves as ARM64 build machine - -### SteamDeck Integration -- **Home Manager**: User environment without system changes -- **Tailscale**: VPN connectivity for remote access -- **Development tools**: Portable development environment - -## 🔄 Deployment & Management - -### Automated Deployment -```bash -# Deploy to all servers from ryu -deploy . - -# Deploy specific device -deploy .#mirai -``` - -### Build Management -- **Local builds**: Fast builds on powerful workstations -- **Remote builds**: Offload to build servers for efficiency -- **Binary caches**: Minimize rebuild times across devices - -### Configuration Updates -- **Git-based**: All configurations version controlled -- **Atomic updates**: Rollback capability for all changes -- **Testing**: Safe deployment with easy rollback - -## 📚 Try My Configurations - -### Neovim Configuration -```bash -# Try my Neovim setup without installation -nix run github:uttarayan21/dotfiles#neovim -``` - -### Standalone Packages -The flake provides packages for: -- Custom Neovim configuration -- Development shells with tools -- Custom applications and scripts - -## 🛡️ Security Practices - -- **Encrypted secrets**: All sensitive data managed via SOPS -- **SSH hardening**: Key-based authentication only -- **Network segmentation**: VPN-based access control -- **Regular updates**: Automated security updates via Nix channels -- **Hardware security**: TPM and secure boot where available - -## 📖 Documentation - -- **[Device Architecture](DEVICE_ARCHITECTURE.md)**: Detailed device specifications and relationships -- **[Visual Diagram](assets/devices-diagram.svg)**: Complete infrastructure overview -- **Module documentation**: Inline documentation for custom Nix modules - -## 🧰 Included Tools - -### Command Line Utilities -| Tool | Purpose | Repository | -|------|---------|------------| -| `bat` | Enhanced cat with syntax highlighting | [sharkdp/bat](https://github.com/sharkdp/bat) | -| `dust` | Intuitive du replacement | [bootandy/dust](https://github.com/bootandy/dust) | -| `eza` | Modern ls replacement | [eza-community/eza](https://github.com/eza-community/eza) | -| `fd` | Simple, fast find alternative | [sharkdp/fd](https://github.com/sharkdp/fd) | -| `fzf` | Command-line fuzzy finder | [junegunn/fzf](https://github.com/junegunn/fzf) | -| `just` | Command runner | [casey/just](https://github.com/casey/just) | -| `ripgrep` | Fast text search | [BurntSushi/ripgrep](https://github.com/BurntSushi/ripgrep) | -| `starship` | Cross-shell prompt | [starship/starship](https://github.com/starship/starship) | -| `zoxide` | Smarter cd command | [ajeetdsouza/zoxide](https://github.com/ajeetdsouza/zoxide) | - -### GUI Applications -- **Anyrun**: Application launcher for Hyprland -- **Hyprland**: Modern Wayland compositor -- **Ghostty**: GPU-accelerated terminal -- **Firefox**: Web browser with custom CSS -- **And many more...** - -## 🤝 Contributing - -This is a personal dotfiles repository, but feel free to: -- Use configurations as inspiration -- Report issues or suggest improvements -- Fork for your own use (please respect licenses) - -## 📄 License - -This repository contains configurations and scripts for personal use. Individual tools and applications maintain their respective licenses. - ---- - -**Infrastructure Status**: 6 devices managed • 20+ services hosted • Multi-platform deployment ready \ No newline at end of file +1. Ryu Dektop (Intel i9-14900KS / Nvidia 5090 / 64GB CL36@6000MTs) + ``` + ``` +2. Mirai Server (AMD Ryzen 7 7700 / 64GB@5200MHz) +3. Tako Server (Intel Xeon E-2236 / 64GB) +4. Tsuba Server (Raspberry Pi 5 / 8GB) +5. Kuro Laptop (Apple M4 Pro macbook / 24GB) +6. Shiro Desktop (Apple M4 macmini / 16GB) diff --git a/assets/chat.hbs b/assets/chat.hbs deleted file mode 100644 index 9cc1e87c..00000000 --- a/assets/chat.hbs +++ /dev/null @@ -1,133 +0,0 @@ -{% macro render_item_list(item_list, tag_name='required') %} -{%- if item_list is defined and item_list is iterable and item_list is not string and item_list | length > 0 %} -{%- if tag_name %}{{- '\n<' ~ tag_name ~ '>' -}}{% endif %} -{{- '[' }} -{%- for item in item_list -%} -{%- if loop.index > 1 %}{{- ", "}}{% endif -%} -{%- if item is string -%} -{{ "" ~ item ~ "" }} -{%- else -%} -{{ item }} -{%- endif -%} -{%- endfor -%} -{{- ']' }} -{%- if tag_name %}{{- '' -}}{% endif %} -{%- endif %} -{% endmacro %} - -{%- if messages[0]["role"] == "system" %} -{%- set system_message = messages[0]["content"] %} -{%- set loop_messages = messages[1:] %} -{%- else %} -{%- set loop_messages = messages %} -{%- endif %} - -{%- if not tools is defined %} -{%- set tools = [] %} -{%- endif %} - -{%- if system_message is defined %} -{{- "<|im_start|>system\n" + system_message }} -{%- else %} -{%- if tools is iterable and tools | length > 0 %} -{{- "<|im_start|>system\nYou are Qwen, a helpful AI assistant that can interact with a computer to solve tasks." }} -{%- endif %} -{%- endif %} -{%- if tools is iterable and tools | length > 0 %} -{{- "\n\nYou have access to the following functions:\n\n" }} -{{- "" }} -{%- for tool in tools %} -{%- if tool.function is defined %} -{%- set tool = tool.function %} -{%- endif %} -{{- "\n\n" ~ tool.name ~ "" }} -{{- '\n' ~ (tool.description | trim) ~ '' }} -{{- '\n' }} -{%- for param_name, param_fields in tool.parameters.properties|items %} -{{- '\n' }} -{{- '\n' ~ param_name ~ '' }} -{%- if param_fields.type is defined and param_fields.type is not none %} -{{- '\n' ~ (param_fields.type | string) ~ '' }} -{%- endif %} -{%- if param_fields.description is defined and param_fields.description is not none %} -{{- '\n' ~ (param_fields.description | trim) ~ '' }} -{%- endif %} -{{- render_item_list(param_fields.enum, 'enum') }} -{%- set handled_keys = ['type', 'description', 'enum', 'required'] %} -{%- for json_key in param_fields.keys() if json_key not in handled_keys %} -{%- set normed_json_key = json_key | replace("-", "") | replace(" ", "") | replace("$", "") %} -{%- if param_fields[json_key] is mapping %} -{{- '\n<' ~ normed_json_key ~ '>' ~ (param_fields[json_key] | tojson) ~ '' }} -{%- else %} -{%- if param_fields[json_key] is not none %} -{{- '\n<' ~ normed_json_key ~ '>' ~ (param_fields[json_key] | string) ~ '' }} -{%- endif %} -{%- endif %} -{%- endfor %} -{{- render_item_list(param_fields.required, 'required') }} -{{- '\n' }} -{%- endfor %} -{{- render_item_list(tool.parameters.required, 'required') }} -{{- '\n' }} -{%- if tool.return is defined and tool.return is not none %} -{%- if tool.return is mapping %} -{{- '\n' ~ (tool.return | tojson) ~ '' }} -{%- else %} -{{- '\n' ~ (tool.return | string) ~ '' }} -{%- endif %} -{%- endif %} -{{- '\n' }} -{%- endfor %} -{{- "\n" }} -{{- '\n\nIf you choose to call a function ONLY reply in the following format with NO suffix:\n\n\n\n\nvalue_1\n\n\nThis is the value for the second parameter\nthat can span\nmultiple lines\n\n\n\n\n\nReminder:\n- Function calls MUST follow the specified format: an inner block must be nested within XML tags\n- Required parameters MUST be specified\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\n' }} -{%- endif %} -{%- if system_message is defined %} -{{- '<|im_end|>\n' }} -{%- else %} -{%- if tools is iterable and tools | length > 0 %} -{{- '<|im_end|>\n' }} -{%- endif %} -{%- endif %} -{%- for message in loop_messages %} -{%- if message.role == "assistant" and message.tool_calls is defined and message.tool_calls is iterable and message.tool_calls | length > 0 %} -{{- '<|im_start|>' + message.role }} -{%- if message.content is defined and message.content is string and message.content | trim | length > 0 %} -{{- '\n' + message.content | trim + '\n' }} -{%- endif %} -{%- for tool_call in message.tool_calls %} -{%- if tool_call.function is defined %} -{%- set tool_call = tool_call.function %} -{%- endif %} -{{- '\n\n\n' }} -{%- if tool_call.arguments is defined %} -{%- for args_name, args_value in tool_call.arguments|items %} -{{- '\n' }} -{%- set args_value = args_value if args_value is string else args_value | string %} -{{- args_value }} -{{- '\n\n' }} -{%- endfor %} -{%- endif %} -{{- '\n' }} -{%- endfor %} -{{- '<|im_end|>\n' }} -{%- elif message.role == "user" or message.role == "system" or message.role == "assistant" %} -{{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }} -{%- elif message.role == "tool" %} -{%- if loop.previtem and loop.previtem.role != "tool" %} -{{- '<|im_start|>user\n' }} -{%- endif %} -{{- '\n' }} -{{- message.content }} -{{- '\n\n' }} -{%- if not loop.last and loop.nextitem.role != "tool" %} -{{- '<|im_end|>\n' }} -{%- elif loop.last %} -{{- '<|im_end|>\n' }} -{%- endif %} -{%- else %} -{{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>\n' }} -{%- endif %} -{%- endfor %} -{%- if add_generation_prompt %} -{{- '<|im_start|>assistant\n' }} -{%- endif %} diff --git a/flake.lock b/flake.lock index 3a203e74..03f4e109 100644 --- a/flake.lock +++ b/flake.lock @@ -355,11 +355,11 @@ "base16-helix_2": { "flake": false, "locked": { - "lastModified": 1748408240, - "narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=", + "lastModified": 1752979451, + "narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e", + "rev": "27cf1e66e50abc622fb76a3019012dc07c678fac", "type": "github" }, "original": { @@ -407,11 +407,11 @@ "fromYaml": "fromYaml_2" }, "locked": { - "lastModified": 1746562888, - "narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=", + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", "type": "github" }, "original": { @@ -835,11 +835,11 @@ "firefox-gnome-theme_2": { "flake": false, "locked": { - "lastModified": 1748383148, - "narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=", + "lastModified": 1758112371, + "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf", + "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d", "type": "github" }, "original": { @@ -880,6 +880,22 @@ "type": "github" } }, + "flake-compat_11": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-compat_2": { "flake": false, "locked": { @@ -976,6 +992,21 @@ } }, "flake-compat_8": { + "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_9": { "locked": { "lastModified": 1733328505, "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", @@ -989,22 +1020,6 @@ "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" } }, - "flake-compat_9": { - "flake": false, - "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -1172,11 +1187,11 @@ ] }, "locked": { - "lastModified": 1749398372, - "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "rev": "4524271976b625a4a605beefd893f270620fd751", "type": "github" }, "original": { @@ -1601,11 +1616,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1764166758, - "narHash": "sha256-bTElYF0d4XEGK9pT4I22+XSGZIN26lWEvk5D06cyZak=", + "lastModified": 1764204510, + "narHash": "sha256-m18saIeHig1lMU5Cxiz5BN5Bva4doZJoG7X/Oulsfow=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "d9529947a40e16f8e7efd8a1f680d01ff99f213b", + "rev": "14899591ce67d3e7f9e0a942b843192ef7f95aa9", "type": "github" }, "original": { @@ -1680,18 +1695,20 @@ "gnome-shell_2": { "flake": false, "locked": { - "lastModified": 1744584021, - "narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=", + "host": "gitlab.gnome.org", + "lastModified": 1762869044, + "narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=", "owner": "GNOME", "repo": "gnome-shell", - "rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae", - "type": "github" + "rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad", + "type": "gitlab" }, "original": { + "host": "gitlab.gnome.org", "owner": "GNOME", - "ref": "48.1", + "ref": "gnome-49", "repo": "gnome-shell", - "type": "github" + "type": "gitlab" } }, "guihua": { @@ -1776,15 +1793,16 @@ ] }, "locked": { - "lastModified": 1764135300, - "narHash": "sha256-5xOuutXM7UPTUcn3uDAD8UlPQsXmqPrX81cXoDOAGcA=", + "lastModified": 1764177491, + "narHash": "sha256-dhX2abFWxeXab3Aad4Pg1xGtn9W84/qetNXfmYUwktw=", "owner": "nix-community", "repo": "home-manager", - "rev": "f4cb25928fafa9ae68660fe71f730fc820a59028", + "rev": "2217780c39169a9c77915200137550c2ef0fa974", "type": "github" }, "original": { "owner": "nix-community", + "ref": "release-25.11", "repo": "home-manager", "type": "github" } @@ -1796,16 +1814,16 @@ ] }, "locked": { - "lastModified": 1763992789, - "narHash": "sha256-WHkdBlw6oyxXIra/vQPYLtqY+3G8dUVZM8bEXk0t8x4=", + "lastModified": 1764177491, + "narHash": "sha256-dhX2abFWxeXab3Aad4Pg1xGtn9W84/qetNXfmYUwktw=", "owner": "nix-community", "repo": "home-manager", - "rev": "44831a7eaba4360fb81f2acc5ea6de5fde90aaa3", + "rev": "2217780c39169a9c77915200137550c2ef0fa974", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-25.05", + "ref": "release-25.11", "repo": "home-manager", "type": "github" } @@ -1936,11 +1954,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1764111111, - "narHash": "sha256-CqXsRpQjhHLzZg/kWiIIUeUJUko5naDLEt/VGZTjyjY=", + "lastModified": 1764195170, + "narHash": "sha256-04P/N4fVnBA/t/BPy/Q3HxFRxWyWjWv3CojzI1H1LMc=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "210930bef93916b6271685277e54b0dedb46214e", + "rev": "379ee99c681d45626604ad0253527438960ed374", "type": "github" }, "original": { @@ -2285,11 +2303,11 @@ ] }, "locked": { - "lastModified": 1764149666, - "narHash": "sha256-utd6HxSwTZT4UQBNwCguzWhxeltOTSooN0xJdpkn3gw=", + "lastModified": 1764172311, + "narHash": "sha256-YK9oh7WKkFnty5BIGyU6OA0IOhiYcIid3r/o54R4osc=", "owner": "ikawrakow", "repo": "ik_llama.cpp", - "rev": "314300aa9ff59a51690f0b7d736678c3887f4ee1", + "rev": "5f3485c2c251210e09a1216f2cb1c84e02594c62", "type": "github" }, "original": { @@ -2696,11 +2714,11 @@ "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1764122622, - "narHash": "sha256-TcBFscZxMn9ZRe/bxDVG/pmvqdJGP/aXUUANDikU4NA=", + "lastModified": 1764208886, + "narHash": "sha256-voOx8RsK3miw3EHw05nwuOS4ltzeH8tKJnVr+mxtTPQ=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "e6cfda9f65cb9bd38fa10efb4c43b09c9fe659eb", + "rev": "7da8a2d675f9cc56b3f6d654b4cccdca5016ac8e", "type": "github" }, "original": { @@ -2753,15 +2771,16 @@ "nixos-raspberrypi": { "inputs": { "argononed": "argononed", + "flake-compat": "flake-compat_8", "nixos-images": "nixos-images", "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1758967172, - "narHash": "sha256-zRASAVS7tX7gPdvCUbi2m7KGX0jNuMlaOFqbkUZhu9k=", + "lastModified": 1764182658, + "narHash": "sha256-mEmjq9sGlW/feG5MgYFs1rCOKHsoFgJfMGtLqnQuSHM=", "owner": "nvmd", "repo": "nixos-raspberrypi", - "rev": "09c214a30e5a27e0fa92a9975b91c82ba05d1f17", + "rev": "a12cce5710031c44e0e36b581d8e71bc4f157907", "type": "github" }, "original": { @@ -2828,11 +2847,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1764169712, - "narHash": "sha256-nlWn5XqqHRppgt495nLH/d6z0CSl0S5ESXvQm1mmHyU=", + "lastModified": 1764224784, + "narHash": "sha256-YoXolZJMz/YZaQ7uEZrvo8d/vYA6/bXhJI33q6pTMYE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "65a46e681b0e3c012b0ca227b28a0774506a947b", + "rev": "8749cb83a3a4fb33e70e3ef3cbfb5f216477398a", "type": "github" }, "original": { @@ -2844,23 +2863,23 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1763948260, - "narHash": "sha256-dY9qLD0H0zOUgU3vWacPY6Qc421BeQAfm8kBuBtPVE0=", + "lastModified": 1764020296, + "narHash": "sha256-6zddwDs2n+n01l+1TG6PlyokDdXzu/oBmEejcH5L5+A=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1c8ba8d3f7634acac4a2094eef7c32ad9106532c", + "rev": "a320ce8e6e2cc6b4397eef214d202a50a4583829", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-25.05", + "ref": "nixos-25.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-xr": { "inputs": { - "flake-compat": "flake-compat_8", + "flake-compat": "flake-compat_9", "flake-utils": "flake-utils_14", "nixpkgs": [ "nixpkgs" @@ -2869,11 +2888,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1764120996, - "narHash": "sha256-UwVFfU9AXLyzrVwSCgoCZNgQFqcMuo4ggpHaETk+pk4=", + "lastModified": 1764206948, + "narHash": "sha256-D8d1g9aaZlTc/xZjbeaHJUwmJDAOqjqZNucMrq6wCKc=", "owner": "nix-community", "repo": "nixpkgs-xr", - "rev": "3a9e816231da0f87d57b319e27b4ca3b13152294", + "rev": "cd67b4986ffb7c4b136b6d4286c94375c74867bc", "type": "github" }, "original": { @@ -2899,6 +2918,22 @@ } }, "nixpkgs_11": { + "locked": { + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { "locked": { "lastModified": 1763966396, "narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=", @@ -2990,11 +3025,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1758583444, - "narHash": "sha256-OnYthHIsVIMrZDWtCEp6Zde8ZtMcEBnpyCIdtTKU7bo=", + "lastModified": 1764110091, + "narHash": "sha256-WA0Ml+j4XvhcBtAYbKeieiP46Ztk8rPFdvK+MhXVWD8=", "owner": "nvmd", "repo": "nixpkgs", - "rev": "d8551a2038e21091fce8157e070bdb25dca0a94f", + "rev": "59714dfc31ef9b9d78c6d581f12169b6665767f8", "type": "github" }, "original": { @@ -3022,11 +3057,11 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1644486793, - "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "lastModified": 1764167966, + "narHash": "sha256-nXv6xb7cq+XpjBYIjWEGTLCqQetxJu6zvVlrqHMsCOA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "rev": "5c46f3bd98147c8d82366df95bbef2cab3a967ea", "type": "github" }, "original": { @@ -3039,9 +3074,7 @@ "nixvim": { "inputs": { "flake-parts": "flake-parts_6", - "nixpkgs": [ - "nixpkgs" - ], + "nixpkgs": "nixpkgs_9", "nuschtosSearch": "nuschtosSearch", "systems": "systems_20" }, @@ -3071,11 +3104,11 @@ "norg-meta": "norg-meta" }, "locked": { - "lastModified": 1764160831, - "narHash": "sha256-bSiXxKS8MNR+nqtHZxnYzxntmEKLNbD6Nr94wLU1Iao=", + "lastModified": 1764188434, + "narHash": "sha256-YyUVyudIgHoQBlfpcpbrelkIBs5C6x/WSC1IjOYhXuI=", "owner": "nvim-neorg", "repo": "nixpkgs-neorg-overlay", - "rev": "43f4552c839806da7e4511b9caabe3dc10a71547", + "rev": "851385996436886d2dd71ca747e5a738b00dd98e", "type": "github" }, "original": { @@ -3086,9 +3119,9 @@ }, "norg": { "inputs": { - "flake-compat": "flake-compat_9", + "flake-compat": "flake-compat_10", "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1672582520, @@ -3107,9 +3140,9 @@ }, "norg-meta": { "inputs": { - "flake-compat": "flake-compat_10", + "flake-compat": "flake-compat_11", "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_10" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1713028366, @@ -3128,14 +3161,14 @@ "nur": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_12" }, "locked": { - "lastModified": 1764169099, - "narHash": "sha256-jfMceAASXAxRAfCPNivKlf+/+zwYds2++dLUzJ61gjI=", + "lastModified": 1764218384, + "narHash": "sha256-hoz5vyZYwyER2xINpjszlOR78b5rcVwjGNcHIEJOUC0=", "owner": "nix-community", "repo": "nur", - "rev": "173e2f72d4e0e7d2535d237f29f67d3f5c7f85d7", + "rev": "4d27c397f5c2afe4124a640e1019b5265d45c5c3", "type": "github" }, "original": { @@ -3178,15 +3211,14 @@ "nixpkgs": [ "stylix-stable", "nixpkgs" - ], - "treefmt-nix": "treefmt-nix_2" + ] }, "locked": { - "lastModified": 1751320053, - "narHash": "sha256-3m6RMw0FbbaUUa01PNaMLoO7D99aBClmY5ed9V3vz+0=", + "lastModified": 1758998580, + "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=", "owner": "nix-community", "repo": "NUR", - "rev": "cbde1735782f9c2bb2c63d5e05fba171a14a4670", + "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728", "type": "github" }, "original": { @@ -3613,11 +3645,11 @@ ] }, "locked": { - "lastModified": 1764124769, - "narHash": "sha256-vcoOEy3i8AGJi3Y2C48hrf6CuL2h8W1gLe1gNt72Kxg=", + "lastModified": 1764211126, + "narHash": "sha256-p5y13PnMZYd5WdHk+XCzyUaLGBUCwnz2n4KYKEZM0Pw=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "5da8c00313b4434f00aed6b4c94cd3b207bafdc5", + "rev": "895935bff08cfcfb663fb9c8263c43596e7cd1ed", "type": "github" }, "original": { @@ -3688,11 +3720,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1764047889, - "narHash": "sha256-KGP5anhJ+uEv4qFV3UtD1YYVn00/zOqLdVBgSdrzW/c=", + "lastModified": 1764191810, + "narHash": "sha256-rofXPD/9TGpHveo1MTlUfpnF0MCG1/uHUB9f0rosdqc=", "owner": "nix-community", "repo": "stylix", - "rev": "b5072c51308a20214b7eb095b6fd01ee100a8f18", + "rev": "70c444a10d0c9ef71a25580dfa79af9cd43f3a5e", "type": "github" }, "original": { @@ -3722,16 +3754,16 @@ "tinted-zed": "tinted-zed_2" }, "locked": { - "lastModified": 1763845106, - "narHash": "sha256-S3HH655nydKoLTuqX8qcJidZH0PiWGB/YcoPomH1DaQ=", + "lastModified": 1764193603, + "narHash": "sha256-guX30TWe8HRG2qPFiM9893F2uTw4B8D/xkE6Mq7MiYg=", "owner": "nix-community", "repo": "stylix", - "rev": "b9b8173a6e31c6d06f328307ddbdf7d6af82b7ad", + "rev": "9bf8725a3d65b3ff0ba68ce13779657f5095e36b", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-25.05", + "ref": "release-25.11", "repo": "stylix", "type": "github" } @@ -4226,11 +4258,11 @@ "tinted-schemes_2": { "flake": false, "locked": { - "lastModified": 1750770351, - "narHash": "sha256-LI+BnRoFNRa2ffbe3dcuIRYAUcGklBx0+EcFxlHj0SY=", + "lastModified": 1757716333, + "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=", "owner": "tinted-theming", "repo": "schemes", - "rev": "5a775c6ffd6e6125947b393872cde95867d85a2a", + "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559", "type": "github" }, "original": { @@ -4258,11 +4290,11 @@ "tinted-tmux_2": { "flake": false, "locked": { - "lastModified": 1751159871, - "narHash": "sha256-UOHBN1fgHIEzvPmdNMHaDvdRMgLmEJh2hNmDrp3d3LE=", + "lastModified": 1757811970, + "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "bded5e24407cec9d01bd47a317d15b9223a1546c", + "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e", "type": "github" }, "original": { @@ -4290,11 +4322,11 @@ "tinted-zed_2": { "flake": false, "locked": { - "lastModified": 1751158968, - "narHash": "sha256-ksOyv7D3SRRtebpXxgpG4TK8gZSKFc4TIZpR+C98jX8=", + "lastModified": 1757811247, + "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=", "owner": "tinted-theming", "repo": "base16-zed", - "rev": "86a470d94204f7652b906ab0d378e4231a5b3384", + "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e", "type": "github" }, "original": { @@ -4429,28 +4461,6 @@ "type": "github" } }, - "treefmt-nix_2": { - "inputs": { - "nixpkgs": [ - "stylix-stable", - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733222881, - "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "49717b5af6f80172275d47a418c9719a31a78b53", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, "typr": { "flake": false, "locked": { @@ -4566,11 +4576,11 @@ ] }, "locked": { - "lastModified": 1764166920, - "narHash": "sha256-AEpt8JdKA4RVobRjaR7S2QP3bmUz8dhuWasB7mr9Ylo=", + "lastModified": 1764217570, + "narHash": "sha256-vgqUC6lI/gW70uekA0bpNFU6yR0tcZRfLIZcxGfN76g=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "6f5d615393a5e923ea2883ef28e274031d1b1e1e", + "rev": "3dc281d86044322f9182b20abbc21db8824c130a", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index b8d8749f..ed4b9d20 100644 --- a/flake.nix +++ b/flake.nix @@ -3,14 +3,14 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-master.url = "github:nixos/nixpkgs/master"; - nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05"; + nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.11"; flake-utils.url = "github:numtide/flake-utils"; disko = { url = "github:nix-community/disko/latest"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { - url = "github:nix-community/home-manager"; + url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { @@ -18,11 +18,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; stylix-stable = { - url = "github:nix-community/stylix/release-25.05"; + url = "github:nix-community/stylix/release-25.11"; inputs.nixpkgs.follows = "nixpkgs-stable"; }; home-manager-stable = { - url = "github:nix-community/home-manager/release-25.05"; + url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs-stable"; }; nix-darwin = { @@ -43,7 +43,7 @@ }; nixvim = { url = "github:nix-community/nixvim"; - inputs.nixpkgs.follows = "nixpkgs"; + # inputs.nixpkgs.follows = "nixpkgs"; }; nix-index-database.url = "github:Mic92/nix-index-database"; music-player = { diff --git a/home/apps/default.nix b/home/apps/default.nix index 4395398c..707c0085 100644 --- a/home/apps/default.nix +++ b/home/apps/default.nix @@ -7,37 +7,37 @@ lib.optionalAttrs device.hasGui { imports = [ # ./audacity.nix ./blueman.nix - ./bottles.nix + # ./bottles.nix ./chromium.nix - ./cursor.nix + # ./cursor.nix ./discord.nix ./firefox.nix ./ghostty.nix ./gimp.nix - ./guitarix.nix + # ./guitarix.nix ./hyprpicker.nix - ./jellyflix.nix - ./kicad.nix + # ./jellyflix.nix + # ./kicad.nix ./kitty.nix ./lmstudio.nix ./mpv.nix - ./neovide.nix + # ./neovide.nix ./nextcloud.nix ./obs-studio.nix # ./openscad.nix ./orcaslicer.nix - ./pcsx2.nix + # ./pcsx2.nix # ./rpcs3.nix # ./shadps4.nix ./slack.nix - ./thunderbird.nix + # ./thunderbird.nix + # ./tsukimi.nix + # ./vial.nix ./vlc.nix ./vscode.nix ./wezterm.nix ./zathura.nix ./zed.nix ./zen.nix - ./vial.nix - ./tsukimi.nix ]; } diff --git a/home/apps/firefox.nix b/home/apps/firefox.nix index 8f01625b..a1e1dc97 100644 --- a/home/apps/firefox.nix +++ b/home/apps/firefox.nix @@ -55,6 +55,6 @@ in { stylix.targets.librewolf.profileNames = ["default"]; stylix.targets.zen-browser.profileNames = ["default"]; - programs.librewolf = config // {package = stablePkgs.librewolf;}; + # programs.librewolf = config // {package = stablePkgs.librewolf;}; # programs.firefox = config; } diff --git a/home/programs/aichat.nix b/home/programs/aichat.nix index df7b2a9d..94cbf75b 100644 --- a/home/programs/aichat.nix +++ b/home/programs/aichat.nix @@ -16,7 +16,8 @@ enableNushellIntegration = false; settings = { save_session = true; - model = "openai:gpt-4o"; + # model = "openai:gpt-4o"; + model = "ryu:qwen3-coder-30b"; rag_embedding_model = "ollama:RobinBially/nomic-embed-text-8k"; clients = [ { diff --git a/home/programs/neovim.nix b/home/programs/neovim.nix index db0f67e2..ecbf546b 100644 --- a/home/programs/neovim.nix +++ b/home/programs/neovim.nix @@ -1,6 +1,7 @@ { pkgs, device, + stablePkgs, lib, ... }: { @@ -15,6 +16,6 @@ }; }; } - // (import ./../../neovim {inherit pkgs;}); + // (import ./../../neovim {inherit pkgs stablePkgs;}); }; } diff --git a/home/programs/ssh.nix b/home/programs/ssh.nix index 7931aa3d..35bf5065 100644 --- a/home/programs/ssh.nix +++ b/home/programs/ssh.nix @@ -17,7 +17,12 @@ }; mirai = { user = "fs0c131y"; - hostname = "sh.darksailor.dev"; + hostname = "mirai.darksailor.dev"; + forwardAgent = true; + }; + tako = { + user = "servius"; + hostname = "tako.darksailor.dev"; forwardAgent = true; }; ryu = { diff --git a/justfile b/justfile index 7778a4b7..cd00521f 100644 --- a/justfile +++ b/justfile @@ -6,7 +6,7 @@ install: [linux] install: - sudo nixos-rebuild switch --flake . --builders '' + sudo nixos-rebuild switch --flake . --builders '' --max-jobs 1 [macos] build: diff --git a/neovim/default.nix b/neovim/default.nix index 92c96624..158820a6 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: let +{ + pkgs, + stablePkgs, + ... +}: let mkMappings = mappings: [] ++ (pkgs.lib.optionals (builtins.hasAttr "normal" mappings) (mkMode mappings.normal "n")) @@ -251,6 +255,7 @@ in { lualine = { enable = true; + # package = stablePkgs.vimPlugins.lualine-nvim; }; neotest = { diff --git a/nixos/tako/services/default.nix b/nixos/tako/services/default.nix index c7bedfdf..16cd46d7 100644 --- a/nixos/tako/services/default.nix +++ b/nixos/tako/services/default.nix @@ -1,28 +1,27 @@ {...}: { imports = [ - ./atuin.nix - ./authelia.nix - ./caddy.nix - ./excalidraw.nix - ./fail2ban.nix - ./flaresolverr.nix - # ./games - ./gitea.nix - ./homepage.nix - # ./immich.nix - ./immich.nix - # ./llama.nix - ./lldap.nix - # ./monitoring.nix - # ./nextcloud.nix - # ./paperless.nix - ./prowlarr.nix - ./resolved.nix - ./searxng.nix - ./tailscale.nix + # ./authelia.nix + # ./caddy.nix + # ./excalidraw.nix + # ./fail2ban.nix + # ./flaresolverr.nix + # # ./games + # ./gitea.nix + # ./homepage.nix + # # ./llama.nix + # ./lldap.nix + # # ./monitoring.nix + # # ./nextcloud.nix + # # ./paperless.nix + # ./prowlarr.nix + # ./resolved.nix + # ./searxng.nix # ./headscale.nix # ./shitpost.nix + ./atuin.nix + ./immich.nix ./openssh.nix + ./tailscale.nix ]; services = { nix-serve = { diff --git a/nixos/tako/services/openssh.nix b/nixos/tako/services/openssh.nix index 1c5e4e0c..ea7f76e3 100644 --- a/nixos/tako/services/openssh.nix +++ b/nixos/tako/services/openssh.nix @@ -3,6 +3,5 @@ enable = true; passwordAuthentication = false; permitRootLogin = "prohibit-password"; - pubKeyAuthentication = true; }; } diff --git a/overlays.nix b/overlays.nix index e03998f8..68c0ab8f 100644 --- a/overlays.nix +++ b/overlays.nix @@ -164,7 +164,7 @@ # alvr-master = inputs.alvr.packages.${prev.system}.default; caddyWithHetzner = final.pkgs.caddy.withPlugins { plugins = ["github.com/caddy-dns/hetzner@v1.0.0"]; - hash = "sha256-AuBFjv7Qku+UeVMt+y3zHC7dyNnLf45b46MH6C0ukW8="; + hash = "sha256-KNKmbZ65NwbEbseo5S3O0HzKseJkm4ZPugNOjMai02s="; }; nix-auth = inputs.nix-auth.packages.${prev.system}.nix-auth; kitty = inputs.nixpkgs-stable.legacyPackages.${prev.system}.kitty;