From 81a9e0e052edb6d8475e426d94baacaedc47d74c Mon Sep 17 00:00:00 2001 From: "RingOfStorms (Joshua Bell)" Date: Thu, 13 Feb 2025 00:40:38 -0600 Subject: [PATCH] many updates, new linode server --- components/containers/affine.nix | 2 +- components/containers/librechat.nix | 4 +- components/containers/pgadmin.nix | 2 +- components/hm/ssh.nix | 26 +- components/hm/tmux/tmux-reset.conf | 2 +- components/nix/tailscale.nix | 36 + hosts/linode/l001/configuration.nix | 7 + hosts/linode/l001/flake.lock | 1174 ++++++++++++++++++ hosts/linode/l001/flake.nix | 93 ++ hosts/linode/l001/hardware-configuration.nix | 33 + hosts/linode/l001/headscale.nix | 24 + hosts/linode/l001/linode.nix | 32 + hosts/linode/l001/nginx.nix | 52 + hosts/linode/l002/flake.lock | 1093 ++++++++++++++-- hosts/linode/l002/flake.nix | 13 +- hosts/linode/l002/nginx.nix | 50 +- hosts/linode/linode.nix | 2 +- hosts/lio/flake.lock | 8 +- hosts/lio/flake.nix | 3 +- hosts/oracle/readme.md | 9 +- 20 files changed, 2528 insertions(+), 137 deletions(-) create mode 100644 components/nix/tailscale.nix create mode 100644 hosts/linode/l001/configuration.nix create mode 100644 hosts/linode/l001/flake.lock create mode 100644 hosts/linode/l001/flake.nix create mode 100644 hosts/linode/l001/hardware-configuration.nix create mode 100644 hosts/linode/l001/headscale.nix create mode 100644 hosts/linode/l001/linode.nix create mode 100644 hosts/linode/l001/nginx.nix diff --git a/components/containers/affine.nix b/components/containers/affine.nix index 8019beba..86c79021 100644 --- a/components/containers/affine.nix +++ b/components/containers/affine.nix @@ -53,7 +53,7 @@ in user = "root"; image = "ghcr.io/toeverything/affine-graphql:stable"; ports = [ - "10.20.40.104:${toString cfg.port}:${toString cfg.port}" + "${toString cfg.port}:${toString cfg.port}" ]; dependsOn = [ "affine_redis" diff --git a/components/containers/librechat.nix b/components/containers/librechat.nix index f96fb617..6f0cb779 100644 --- a/components/containers/librechat.nix +++ b/components/containers/librechat.nix @@ -50,7 +50,7 @@ in user = "root"; image = "ghcr.io/danny-avila/librechat-dev:latest"; ports = [ - "10.20.40.104:${toString cfg.port}:${toString cfg.port}" + "${toString cfg.port}:${toString cfg.port}" ]; dependsOn = [ "librechat_mongodb" @@ -74,7 +74,7 @@ in ]; extraOptions = [ "--network=librechat-network" - "--add-host=azureproxy:10.20.40.180" + "--add-host=azureproxy:10.20.40.180" # TODO change to T ]; }; diff --git a/components/containers/pgadmin.nix b/components/containers/pgadmin.nix index fd2b63c5..064bc9ea 100644 --- a/components/containers/pgadmin.nix +++ b/components/containers/pgadmin.nix @@ -34,7 +34,7 @@ in user = "root"; image = "dpage/pgadmin4:latest"; ports = [ - "10.20.40.104:${toString cfg.port}:${toString cfg.port}" + "${toString cfg.port}:${toString cfg.port}" ]; environment = { PGADMIN_LISTEN_PORT = toString cfg.port; diff --git a/components/hm/ssh.nix b/components/hm/ssh.nix index 7d9bb052..07fbf534 100644 --- a/components/hm/ssh.nix +++ b/components/hm/ssh.nix @@ -6,6 +6,10 @@ in # TODO can I put all IP's in the flake.nix top level settings and pull them in here instead? programs.ssh = { enable = true; + extraConfig = '' + Host * + SetEnv TERM=xterm-256color + ''; matchBlocks = { # EXTERNAL "github.com" = { @@ -16,12 +20,11 @@ in }; "git.joshuabell.xyz" = { identityFile = age.secrets.nix2gitjosh.path; - port = 3032; + user = "git"; }; # PERSONAL DEVICES "lio" = { identityFile = age.secrets.nix2lio.path; - hostname = "10.20.40.104"; user = "josh"; }; "lio_" = { @@ -31,22 +34,18 @@ in }; "oren" = { identityFile = age.secrets.nix2oren.path; - hostname = "10.20.40.105"; user = "josh"; }; "joe" = { identityFile = age.secrets.nix2joe.path; - hostname = "10.20.40.102"; user = "josh"; }; "gpdPocket3" = { identityFile = age.secrets.nix2gpdPocket3.path; - hostname = "10.20.40.103"; user = "josh"; }; "t" = { identityFile = age.secrets.nix2t.path; - hostname = "10.20.40.180"; user = "joshua.bell"; localForwards = [ # { @@ -66,7 +65,6 @@ in }; "mbptv" = { identityFile = age.secrets.nix2gpdPocket3.path; - hostname = "10.20.40.109"; user = "waka"; setEnv = { TERM = "vt100"; @@ -82,28 +80,23 @@ in }; "nothing1" = { identityFile = age.secrets.nix2gpdPocket3.path; - hostname = "10.20.40.124"; user = "TODO"; }; "ipad1" = { identityFile = age.secrets.nix2gpdPocket3.path; - hostname = "10.20.40.125"; user = "TODO"; }; "tab1" = { identityFile = age.secrets.nix2gpdPocket3.path; - hostname = "10.20.40.120"; user = "TODO"; }; "pixel6" = { identityFile = age.secrets.nix2gpdPocket3.path; - hostname = "10.20.40.126"; # TODO ON BOARD user = "TODO"; }; # HOME SERVERS "h001" = { identityFile = age.secrets.nix2h001.path; - hostname = "10.20.40.190"; user = "root"; }; "h001_" = { @@ -113,10 +106,14 @@ in }; "h002" = { identityFile = age.secrets.nix2h002.path; - hostname = "10.20.40.191"; user = "luser"; }; # LINODE SERVERS + "l001" = { + identityFile = age.secrets.nix2linode.path; + hostname = "172.236.111.33"; + user = "root"; + }; "l002_" = { identityFile = age.secrets.nix2linode.path; hostname = "172.234.26.141"; @@ -124,8 +121,7 @@ in }; "l002" = { identityFile = age.secrets.nix2linode.path; - hostname = "10.20.40.1"; - user = "luser"; + user = "root"; }; }; }; diff --git a/components/hm/tmux/tmux-reset.conf b/components/hm/tmux/tmux-reset.conf index 96434e33..2fd1ca52 100644 --- a/components/hm/tmux/tmux-reset.conf +++ b/components/hm/tmux/tmux-reset.conf @@ -55,7 +55,7 @@ bind C-d detach # ========== # My options set-option -g terminal-overrides ',xterm-256color:RGB' -set-option -sa terminal-features ',kitty:LRGB' +set-option -sa terminal-features ',xterm:LRGB' set -g detach-on-destroy off set -g renumber-windows on set -g status-position top diff --git a/components/nix/tailscale.nix b/components/nix/tailscale.nix new file mode 100644 index 00000000..3a0c29c6 --- /dev/null +++ b/components/nix/tailscale.nix @@ -0,0 +1,36 @@ +{ + lib, + pkgs, + config, + ... +}: +{ + options.components.tailscale = { + useSecretsAuth = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Whether to use secrets authentication for Tailscale"; + }; + useHeadscale = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Whether to use headscale login server."; + }; + }; + + config = { + environment.systemPackages = with pkgs; [ tailscale ]; + services.tailscale = { + enable = true; + openFirewall = true; + useRoutingFeatures = "client"; + authKeyFile = lib.mkIf config.components.tailscale.useSecretsAuth config.age.secrets.headscale_auth.path; + # https://tailscale.com/kb/1241/tailscale-up + extraUpFlags = lib.mkIf config.components.tailscale.useHeadscale [ + "--login-server=https://headscale.joshuabell.xyz" + ]; + }; + networking.firewall.trustedInterfaces = [ config.services.tailscale.interfaceName ]; + networking.firewall.checkReversePath = "loose"; + }; +} diff --git a/hosts/linode/l001/configuration.nix b/hosts/linode/l001/configuration.nix new file mode 100644 index 00000000..016d4ad7 --- /dev/null +++ b/hosts/linode/l001/configuration.nix @@ -0,0 +1,7 @@ +{ + ... +}: +{ + boot.loader.grub.enable = true; + system.stateVersion = "24.11"; +} diff --git a/hosts/linode/l001/flake.lock b/hosts/linode/l001/flake.lock new file mode 100644 index 00000000..fb433ffa --- /dev/null +++ b/hosts/linode/l001/flake.lock @@ -0,0 +1,1174 @@ +{ + "nodes": { + "deploy-rs": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs", + "utils": "utils" + }, + "locked": { + "lastModified": 1727447169, + "narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=", + "owner": "serokell", + "repo": "deploy-rs", + "rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76", + "type": "github" + }, + "original": { + "owner": "serokell", + "repo": "deploy-rs", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "mod_common": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1736191002, + "narHash": "sha256-t39PCeJFgIXzniqjUIIFnbv6AE15WyoPTCE3k3Xuyz0=", + "ref": "mod_common", + "rev": "ac3c0c2422842edba1887279bddd02b895ec5ed2", + "revCount": 4, + "type": "git", + "url": "https://git.joshuabell.xyz/dotfiles" + }, + "original": { + "ref": "mod_common", + "type": "git", + "url": "https://git.joshuabell.xyz/dotfiles" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1702272962, + "narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1739214665, + "narHash": "sha256-26L8VAu3/1YRxS8MHgBOyOM8xALdo6N0I04PgorE7UM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "64e75cd44acf21c7933d61d7721e812eac1b5a0a", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1736200483, + "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1737567054, + "narHash": "sha256-LI1z4HET4hgP6iyWehrWRd5luNbUk9zz/GFzqI1iAFo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "bbe8109b528365cf3fd3a93c931dd86d57c3bd5a", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "nvim_plugin-Almo7aya/openingh.nvim": { + "flake": false, + "locked": { + "lastModified": 1733158448, + "narHash": "sha256-JP3+goMgs3SiMHS9IVE7NAV/iKxyXi0fZgJb8hojtNQ=", + "owner": "Almo7aya", + "repo": "openingh.nvim", + "rev": "9131016c1167e23522a8e874b62217829fd327b8", + "type": "github" + }, + "original": { + "owner": "Almo7aya", + "repo": "openingh.nvim", + "type": "github" + } + }, + "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim": { + "flake": false, + "locked": { + "lastModified": 1734194565, + "narHash": "sha256-IPP5jXIX+05Tb0MEXUu6EjcL/RHgV1qkoXPEdaEfhNM=", + "owner": "CopilotC-Nvim", + "repo": "CopilotChat.nvim", + "rev": "2ebe591cff06018e265263e71e1dbc4c5aa8281e", + "type": "github" + }, + "original": { + "owner": "CopilotC-Nvim", + "repo": "CopilotChat.nvim", + "type": "github" + } + }, + "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring": { + "flake": false, + "locked": { + "lastModified": 1733574156, + "narHash": "sha256-AjDM3+n4+lNBQi8P2Yrh0Ab06uYCndBQT9TX36rDbOM=", + "owner": "JoosepAlviste", + "repo": "nvim-ts-context-commentstring", + "rev": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f", + "type": "github" + }, + "original": { + "owner": "JoosepAlviste", + "repo": "nvim-ts-context-commentstring", + "type": "github" + } + }, + "nvim_plugin-L3MON4D3/LuaSnip": { + "flake": false, + "locked": { + "lastModified": 1736009707, + "narHash": "sha256-3ecm5SDTcSOh256xSQPHhddQfMpepiEIpv58fHXrVg0=", + "owner": "L3MON4D3", + "repo": "LuaSnip", + "rev": "c9b9a22904c97d0eb69ccb9bab76037838326817", + "type": "github" + }, + "original": { + "owner": "L3MON4D3", + "repo": "LuaSnip", + "type": "github" + } + }, + "nvim_plugin-MeanderingProgrammer/render-markdown.nvim": { + "flake": false, + "locked": { + "lastModified": 1737054285, + "narHash": "sha256-7yepeUhhViVJpbj48qg0Z3cCCtGt6bZ90hM/ie+5LqA=", + "owner": "MeanderingProgrammer", + "repo": "render-markdown.nvim", + "rev": "ad055861d17afe058bd835e82292e14a64b51b1d", + "type": "github" + }, + "original": { + "owner": "MeanderingProgrammer", + "repo": "render-markdown.nvim", + "type": "github" + } + }, + "nvim_plugin-MunifTanjim/nui.nvim": { + "flake": false, + "locked": { + "lastModified": 1733856815, + "narHash": "sha256-6U7E/i5FuNXQy+sF4C5DVxuTPqNKD5wxUgFohpOjm9Q=", + "owner": "MunifTanjim", + "repo": "nui.nvim", + "rev": "53e907ffe5eedebdca1cd503b00aa8692068ca46", + "type": "github" + }, + "original": { + "owner": "MunifTanjim", + "repo": "nui.nvim", + "type": "github" + } + }, + "nvim_plugin-RRethy/vim-illuminate": { + "flake": false, + "locked": { + "lastModified": 1715960194, + "narHash": "sha256-DdJzTHxoOv+vjFymETa2MgXpM/qDwvZjpoo1W8OOBj0=", + "owner": "RRethy", + "repo": "vim-illuminate", + "rev": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa", + "type": "github" + }, + "original": { + "owner": "RRethy", + "repo": "vim-illuminate", + "type": "github" + } + }, + "nvim_plugin-Saecki/crates.nvim": { + "flake": false, + "locked": { + "lastModified": 1735942265, + "narHash": "sha256-dj7VXlMbS4HvSc+/WMQprtqWzrYrWaCnSEE0ygp/LcI=", + "owner": "Saecki", + "repo": "crates.nvim", + "rev": "bd35b13e94a292ee6e32c351e05ca2202dc9f070", + "type": "github" + }, + "original": { + "owner": "Saecki", + "repo": "crates.nvim", + "type": "github" + } + }, + "nvim_plugin-aznhe21/actions-preview.nvim": { + "flake": false, + "locked": { + "lastModified": 1718540350, + "narHash": "sha256-lYjsv8y1fMuTGpBF/iG7cm/a7tLdh748vJhVsSp/Iz8=", + "owner": "aznhe21", + "repo": "actions-preview.nvim", + "rev": "9f52a01c374318e91337697ebed51c6fae57f8a4", + "type": "github" + }, + "original": { + "owner": "aznhe21", + "repo": "actions-preview.nvim", + "type": "github" + } + }, + "nvim_plugin-b0o/schemastore.nvim": { + "flake": false, + "locked": { + "lastModified": 1737490106, + "narHash": "sha256-jtZ6cta98Wx4vZHcXq0jKfOfpQtTFRFrH5W+/8jyL5g=", + "owner": "b0o", + "repo": "schemastore.nvim", + "rev": "5be212138af55d3dcae9d77b5b14f63634243e3d", + "type": "github" + }, + "original": { + "owner": "b0o", + "repo": "schemastore.nvim", + "type": "github" + } + }, + "nvim_plugin-catppuccin/nvim": { + "flake": false, + "locked": { + "lastModified": 1735299190, + "narHash": "sha256-lwQLmqm01FihJdad4QRMK23MTrouyOokyuX/3enWjzs=", + "owner": "catppuccin", + "repo": "nvim", + "rev": "f67b886d65a029f12ffa298701fb8f1efd89295d", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nvim", + "type": "github" + } + }, + "nvim_plugin-chrisgrieser/nvim-early-retirement": { + "flake": false, + "locked": { + "lastModified": 1735588187, + "narHash": "sha256-ZjXG+POJFRsc79i1BuAJB9K6UBUfHT05oYvZaUr+RqA=", + "owner": "chrisgrieser", + "repo": "nvim-early-retirement", + "rev": "9ae6fcc933fc865ddf2728460194b67985e06e27", + "type": "github" + }, + "original": { + "owner": "chrisgrieser", + "repo": "nvim-early-retirement", + "type": "github" + } + }, + "nvim_plugin-declancm/cinnamon.nvim": { + "flake": false, + "locked": { + "lastModified": 1722992123, + "narHash": "sha256-kccQ4iFMSQ8kvE7hYz90hBrsDLo7VohFj/6lEZZiAO8=", + "owner": "declancm", + "repo": "cinnamon.nvim", + "rev": "450cb3247765fed7871b41ef4ce5fa492d834215", + "type": "github" + }, + "original": { + "owner": "declancm", + "repo": "cinnamon.nvim", + "type": "github" + } + }, + "nvim_plugin-folke/lazy.nvim": { + "flake": false, + "locked": { + "lastModified": 1736194490, + "narHash": "sha256-7npvUPMmQC6/Ywdcuxbmdboa8eJ1RNgZ+rzb3MeN0t0=", + "owner": "folke", + "repo": "lazy.nvim", + "rev": "d8f26efd456190241afd1b0f5235fe6fdba13d4a", + "type": "github" + }, + "original": { + "owner": "folke", + "repo": "lazy.nvim", + "type": "github" + } + }, + "nvim_plugin-folke/neodev.nvim": { + "flake": false, + "locked": { + "lastModified": 1720260306, + "narHash": "sha256-hOjzlo/IqmV8tYjGwfmcCPEmHYsWnEIwtHZdhpwA1kM=", + "owner": "folke", + "repo": "neodev.nvim", + "rev": "46aa467dca16cf3dfe27098042402066d2ae242d", + "type": "github" + }, + "original": { + "owner": "folke", + "repo": "neodev.nvim", + "type": "github" + } + }, + "nvim_plugin-folke/which-key.nvim": { + "flake": false, + "locked": { + "lastModified": 1736055319, + "narHash": "sha256-9V74V01dCqg1w5fpzzCmyfhR3/AYQg2MCIYkkjFv1go=", + "owner": "folke", + "repo": "which-key.nvim", + "rev": "1f8d414f61e0b05958c342df9b6a4c89ce268766", + "type": "github" + }, + "original": { + "owner": "folke", + "repo": "which-key.nvim", + "type": "github" + } + }, + "nvim_plugin-hrsh7th/cmp-buffer": { + "flake": false, + "locked": { + "lastModified": 1660101488, + "narHash": "sha256-dG4U7MtnXThoa/PD+qFtCt76MQ14V1wX8GMYcvxEnbM=", + "owner": "hrsh7th", + "repo": "cmp-buffer", + "rev": "3022dbc9166796b644a841a02de8dd1cc1d311fa", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "cmp-buffer", + "type": "github" + } + }, + "nvim_plugin-hrsh7th/cmp-nvim-lsp": { + "flake": false, + "locked": { + "lastModified": 1733823748, + "narHash": "sha256-iaihXNCF5bB5MdeoosD/kc3QtpA/QaIDZVLiLIurBSM=", + "owner": "hrsh7th", + "repo": "cmp-nvim-lsp", + "rev": "99290b3ec1322070bcfb9e846450a46f6efa50f0", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "cmp-nvim-lsp", + "type": "github" + } + }, + "nvim_plugin-hrsh7th/cmp-path": { + "flake": false, + "locked": { + "lastModified": 1664784283, + "narHash": "sha256-thppiiV3wjIaZnAXmsh7j3DUc6ceSCvGzviwFUnoPaI=", + "owner": "hrsh7th", + "repo": "cmp-path", + "rev": "91ff86cd9c29299a64f968ebb45846c485725f23", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "cmp-path", + "type": "github" + } + }, + "nvim_plugin-hrsh7th/nvim-cmp": { + "flake": false, + "locked": { + "lastModified": 1736172730, + "narHash": "sha256-TmXpMgkPWXHn4+leojZg1V18wOiPDsKQeG1h8nGgVHo=", + "owner": "hrsh7th", + "repo": "nvim-cmp", + "rev": "8c82d0bd31299dbff7f8e780f5e06d2283de9678", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "nvim-cmp", + "type": "github" + } + }, + "nvim_plugin-j-hui/fidget.nvim": { + "flake": false, + "locked": { + "lastModified": 1736356439, + "narHash": "sha256-o0za2NxFtzHZa7PRIm9U/P1/fwJrxS1G79ukdGLhJ4Q=", + "owner": "j-hui", + "repo": "fidget.nvim", + "rev": "a0abbf18084b77d28bc70e24752e4f4fd54aea17", + "type": "github" + }, + "original": { + "owner": "j-hui", + "repo": "fidget.nvim", + "type": "github" + } + }, + "nvim_plugin-johmsalas/text-case.nvim": { + "flake": false, + "locked": { + "lastModified": 1722628320, + "narHash": "sha256-2IMufSMy9JW50VzZ3SgOtp8kYs81ANwV0eP0ZH3rTFo=", + "owner": "johmsalas", + "repo": "text-case.nvim", + "rev": "e898cfd46fa6cde0e83abb624a16e67d2ffc6457", + "type": "github" + }, + "original": { + "owner": "johmsalas", + "repo": "text-case.nvim", + "type": "github" + } + }, + "nvim_plugin-lewis6991/gitsigns.nvim": { + "flake": false, + "locked": { + "lastModified": 1737539715, + "narHash": "sha256-Htx06FTru66DPFJUZEe6AaKqVtrD65MMqcerjjEZMR4=", + "owner": "lewis6991", + "repo": "gitsigns.nvim", + "rev": "632fda72df903255dc1683cd739dceaa7338128a", + "type": "github" + }, + "original": { + "owner": "lewis6991", + "repo": "gitsigns.nvim", + "type": "github" + } + }, + "nvim_plugin-lnc3l0t/glow.nvim": { + "flake": false, + "locked": { + "lastModified": 1693233815, + "narHash": "sha256-vdlwkIK2EkFviJmSiOqPWvc15xqJ9F2gHCC4ObJ5Qjk=", + "owner": "lnc3l0t", + "repo": "glow.nvim", + "rev": "5b38fb7b6e806cac62707a4aba8c10c5f14d5bb5", + "type": "github" + }, + "original": { + "owner": "lnc3l0t", + "repo": "glow.nvim", + "type": "github" + } + }, + "nvim_plugin-lukas-reineke/indent-blankline.nvim": { + "flake": false, + "locked": { + "lastModified": 1737369467, + "narHash": "sha256-0+boInVEzS2myYil/l+frs8PAa/2eJcVTyXnEk6TGvI=", + "owner": "lukas-reineke", + "repo": "indent-blankline.nvim", + "rev": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78", + "type": "github" + }, + "original": { + "owner": "lukas-reineke", + "repo": "indent-blankline.nvim", + "type": "github" + } + }, + "nvim_plugin-lvimuser/lsp-inlayhints.nvim": { + "flake": false, + "locked": { + "lastModified": 1686236485, + "narHash": "sha256-06CiJ+xeMO4+OJkckcslqwloJyt2gwg514JuxV6KOfQ=", + "owner": "lvimuser", + "repo": "lsp-inlayhints.nvim", + "rev": "d981f65c9ae0b6062176f0accb9c151daeda6f16", + "type": "github" + }, + "original": { + "owner": "lvimuser", + "repo": "lsp-inlayhints.nvim", + "type": "github" + } + }, + "nvim_plugin-m4xshen/hardtime.nvim": { + "flake": false, + "locked": { + "lastModified": 1734839863, + "narHash": "sha256-WDMr+ygWg9S2PoSqJ4pM26jSaNGAp63wiQ474/p6CIY=", + "owner": "m4xshen", + "repo": "hardtime.nvim", + "rev": "5d9adcbe2f12741de79e435c8b85dca69a3b22e4", + "type": "github" + }, + "original": { + "owner": "m4xshen", + "repo": "hardtime.nvim", + "type": "github" + } + }, + "nvim_plugin-mbbill/undotree": { + "flake": false, + "locked": { + "lastModified": 1735763701, + "narHash": "sha256-0DnRarEuDPdYo+zkwH47jG4B4fGjvL1LxqEoFQ7vpjE=", + "owner": "mbbill", + "repo": "undotree", + "rev": "2556c6800b210b2096b55b66e74b4cc1d9ebbe4f", + "type": "github" + }, + "original": { + "owner": "mbbill", + "repo": "undotree", + "type": "github" + } + }, + "nvim_plugin-mfussenegger/nvim-lint": { + "flake": false, + "locked": { + "lastModified": 1737487916, + "narHash": "sha256-DKfivSjBFra/iXIuYQa7Mv5f2LglNbQTr8bQ+sCm8to=", + "owner": "mfussenegger", + "repo": "nvim-lint", + "rev": "789b7ada1b4f00e08d026dffde410dcfa6a0ba87", + "type": "github" + }, + "original": { + "owner": "mfussenegger", + "repo": "nvim-lint", + "type": "github" + } + }, + "nvim_plugin-mrcjkb/rustaceanvim": { + "flake": false, + "locked": { + "lastModified": 1737246102, + "narHash": "sha256-SSBv1+GxuVpYhpCH//6EXFJ4NXZdZM0pGe19f53JpiA=", + "owner": "mrcjkb", + "repo": "rustaceanvim", + "rev": "8cf9705d98cc77837aa388a5d48f9a73f27f4782", + "type": "github" + }, + "original": { + "owner": "mrcjkb", + "repo": "rustaceanvim", + "type": "github" + } + }, + "nvim_plugin-neovim/nvim-lspconfig": { + "flake": false, + "locked": { + "lastModified": 1737559700, + "narHash": "sha256-p+hGgy6jGErqVy+pbTrfTNF2FosrQlQnMkDHsCl9/kE=", + "owner": "neovim", + "repo": "nvim-lspconfig", + "rev": "513f4f0bde469ecb3abe2e1b606f63cf142e751e", + "type": "github" + }, + "original": { + "owner": "neovim", + "repo": "nvim-lspconfig", + "type": "github" + } + }, + "nvim_plugin-nosduco/remote-sshfs.nvim": { + "flake": false, + "locked": { + "lastModified": 1724901856, + "narHash": "sha256-vFEIISxhTIGSl9LzDYHuEIkjLGkU0y5XhfWI/i5DgN4=", + "owner": "nosduco", + "repo": "remote-sshfs.nvim", + "rev": "03f6c40c4032eeb1ab91368e06db9c3f3a97a75d", + "type": "github" + }, + "original": { + "owner": "nosduco", + "repo": "remote-sshfs.nvim", + "type": "github" + } + }, + "nvim_plugin-numToStr/Comment.nvim": { + "flake": false, + "locked": { + "lastModified": 1717957420, + "narHash": "sha256-h0kPue5Eqd5aeu4VoLH45pF0DmWWo1d8SnLICSQ63zc=", + "owner": "numToStr", + "repo": "Comment.nvim", + "rev": "e30b7f2008e52442154b66f7c519bfd2f1e32acb", + "type": "github" + }, + "original": { + "owner": "numToStr", + "repo": "Comment.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-lua/plenary.nvim": { + "flake": false, + "locked": { + "lastModified": 1736675595, + "narHash": "sha256-18zX3kZ42ynRefFP0mOcy6ESEpejTukjNi4jCRXx48A=", + "owner": "nvim-lua", + "repo": "plenary.nvim", + "rev": "3707cdb1e43f5cea73afb6037e6494e7ce847a66", + "type": "github" + }, + "original": { + "owner": "nvim-lua", + "repo": "plenary.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-lualine/lualine.nvim": { + "flake": false, + "locked": { + "lastModified": 1731050126, + "narHash": "sha256-IN6Qz3jGxUcylYiRTyd8j6me3pAoqJsJXtFUvph/6EI=", + "owner": "nvim-lualine", + "repo": "lualine.nvim", + "rev": "2a5bae925481f999263d6f5ed8361baef8df4f83", + "type": "github" + }, + "original": { + "owner": "nvim-lualine", + "repo": "lualine.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-telescope/telescope-file-browser.nvim": { + "flake": false, + "locked": { + "lastModified": 1729728595, + "narHash": "sha256-VJbRi91TTOwUkQYyTM6Njl7MtX8/mOjINiqWYWEtyxg=", + "owner": "nvim-telescope", + "repo": "telescope-file-browser.nvim", + "rev": "626998e5c1b71c130d8bc6cf7abb6709b98287bb", + "type": "github" + }, + "original": { + "owner": "nvim-telescope", + "repo": "telescope-file-browser.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-telescope/telescope-fzf-native.nvim": { + "flake": false, + "locked": { + "lastModified": 1734022536, + "narHash": "sha256-ZBYZncCVtuks6tV4hhqWvQ3PlKElSHuWAEpo9o48pj4=", + "owner": "nvim-telescope", + "repo": "telescope-fzf-native.nvim", + "rev": "dae2eac9d91464448b584c7949a31df8faefec56", + "type": "github" + }, + "original": { + "owner": "nvim-telescope", + "repo": "telescope-fzf-native.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-telescope/telescope-ui-select.nvim": { + "flake": false, + "locked": { + "lastModified": 1701723223, + "narHash": "sha256-YRhNmmG4gx9Ht8JwjQfbTjJyTHEuZmtP6lqnhOsk8bE=", + "owner": "nvim-telescope", + "repo": "telescope-ui-select.nvim", + "rev": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2", + "type": "github" + }, + "original": { + "owner": "nvim-telescope", + "repo": "telescope-ui-select.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-telescope/telescope.nvim": { + "flake": false, + "locked": { + "lastModified": 1736328372, + "narHash": "sha256-5y8srYKaAqFplMtDjsc8GdDF8yui5vCNMiOeFLrC/sM=", + "owner": "nvim-telescope", + "repo": "telescope.nvim", + "rev": "415af52339215926d705cccc08145f3782c4d132", + "type": "github" + }, + "original": { + "owner": "nvim-telescope", + "repo": "telescope.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-tree/nvim-tree.lua": { + "flake": false, + "locked": { + "lastModified": 1737156486, + "narHash": "sha256-b8YOOIYML9aKy4Y7S+iLKIaTfCqrxK1wB/ZaeFRCUmo=", + "owner": "nvim-tree", + "repo": "nvim-tree.lua", + "rev": "fca0b67c0b5a31727fb33addc4d9c100736a2894", + "type": "github" + }, + "original": { + "owner": "nvim-tree", + "repo": "nvim-tree.lua", + "type": "github" + } + }, + "nvim_plugin-nvim-tree/nvim-web-devicons": { + "flake": false, + "locked": { + "lastModified": 1736480892, + "narHash": "sha256-lUlEVEzXX8iCPxXIlpwkqBc19hks8qTvz4FdDNsTviI=", + "owner": "nvim-tree", + "repo": "nvim-web-devicons", + "rev": "aafa5c187a15701a7299a392b907ec15d9a7075f", + "type": "github" + }, + "original": { + "owner": "nvim-tree", + "repo": "nvim-web-devicons", + "type": "github" + } + }, + "nvim_plugin-nvim-treesitter/nvim-treesitter-context": { + "flake": false, + "locked": { + "lastModified": 1737125584, + "narHash": "sha256-W5fELF3Am1c6wpA4/JxWjGVWQuDYKUqKO+M2+7anugM=", + "owner": "nvim-treesitter", + "repo": "nvim-treesitter-context", + "rev": "bece284c5322ddf6946fa4bdc383a2bc033269d7", + "type": "github" + }, + "original": { + "owner": "nvim-treesitter", + "repo": "nvim-treesitter-context", + "type": "github" + } + }, + "nvim_plugin-rafamadriz/friendly-snippets": { + "flake": false, + "locked": { + "lastModified": 1733106470, + "narHash": "sha256-I8SRZxnoNC6SOWW+scoA77Jwyxcb4eUczppLdyOiZe0=", + "owner": "rafamadriz", + "repo": "friendly-snippets", + "rev": "efff286dd74c22f731cdec26a70b46e5b203c619", + "type": "github" + }, + "original": { + "owner": "rafamadriz", + "repo": "friendly-snippets", + "type": "github" + } + }, + "nvim_plugin-rcarriga/nvim-notify": { + "flake": false, + "locked": { + "lastModified": 1737405174, + "narHash": "sha256-6vNfc7E9DMXF0IBXJCLA8Rp+uOgbDch/Q7beW0ys3Vo=", + "owner": "rcarriga", + "repo": "nvim-notify", + "rev": "22f29093eae7785773ee9d543f8750348b1a195c", + "type": "github" + }, + "original": { + "owner": "rcarriga", + "repo": "nvim-notify", + "type": "github" + } + }, + "nvim_plugin-rmagatti/auto-session": { + "flake": false, + "locked": { + "lastModified": 1732719937, + "narHash": "sha256-1tg7H8ssnG7ArshQiyoFenXzf9PVealOPbzuZKacO1U=", + "owner": "rmagatti", + "repo": "auto-session", + "rev": "021b64ed7d4ac68a37be3ad28d8e1cba5bec582c", + "type": "github" + }, + "original": { + "owner": "rmagatti", + "repo": "auto-session", + "type": "github" + } + }, + "nvim_plugin-ron/ron.vim": { + "flake": false, + "locked": { + "lastModified": 1660904719, + "narHash": "sha256-8/xJmymtVGVz2avzlamgK1cNflZ3NRL+B3c7xxbI964=", + "owner": "ron-rs", + "repo": "ron.vim", + "rev": "f749e543975a82e8dd9a6e7df9600a1c098ae800", + "type": "github" + }, + "original": { + "owner": "ron-rs", + "repo": "ron.vim", + "type": "github" + } + }, + "nvim_plugin-saadparwaiz1/cmp_luasnip": { + "flake": false, + "locked": { + "lastModified": 1730707109, + "narHash": "sha256-86lKQPPyqFz8jzuLajjHMKHrYnwW6+QOcPyQEx6B+gw=", + "owner": "saadparwaiz1", + "repo": "cmp_luasnip", + "rev": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90", + "type": "github" + }, + "original": { + "owner": "saadparwaiz1", + "repo": "cmp_luasnip", + "type": "github" + } + }, + "nvim_plugin-sindrets/diffview.nvim": { + "flake": false, + "locked": { + "lastModified": 1718279802, + "narHash": "sha256-SX+ybIzL/w6uyCy4iZKnWnzTFwqB1oXSgyYVAdpdKi8=", + "owner": "sindrets", + "repo": "diffview.nvim", + "rev": "4516612fe98ff56ae0415a259ff6361a89419b0a", + "type": "github" + }, + "original": { + "owner": "sindrets", + "repo": "diffview.nvim", + "type": "github" + } + }, + "nvim_plugin-stevearc/conform.nvim": { + "flake": false, + "locked": { + "lastModified": 1737567375, + "narHash": "sha256-tMLkOLANg87wuq6OSkb0iGm00mnZwOF7Xd+gai4mKNg=", + "owner": "stevearc", + "repo": "conform.nvim", + "rev": "bf94626f32fbc3c9987ce2f4aab60d96866587df", + "type": "github" + }, + "original": { + "owner": "stevearc", + "repo": "conform.nvim", + "type": "github" + } + }, + "nvim_plugin-stevearc/dressing.nvim": { + "flake": false, + "locked": { + "lastModified": 1734804193, + "narHash": "sha256-N4hB5wDgoqXrXxSfzDCrqmdDtdVvq+PtOS7FBPH7qXE=", + "owner": "stevearc", + "repo": "dressing.nvim", + "rev": "3a45525bb182730fe462325c99395529308f431e", + "type": "github" + }, + "original": { + "owner": "stevearc", + "repo": "dressing.nvim", + "type": "github" + } + }, + "nvim_plugin-tpope/vim-sleuth": { + "flake": false, + "locked": { + "lastModified": 1726718493, + "narHash": "sha256-2Cr3h3uJvUL3CSoJs3aBFrkBeOBURSQItgQ4ep9sHXM=", + "owner": "tpope", + "repo": "vim-sleuth", + "rev": "be69bff86754b1aa5adcbb527d7fcd1635a84080", + "type": "github" + }, + "original": { + "owner": "tpope", + "repo": "vim-sleuth", + "type": "github" + } + }, + "nvim_plugin-tpope/vim-surround": { + "flake": false, + "locked": { + "lastModified": 1666730476, + "narHash": "sha256-DZE5tkmnT+lAvx/RQHaDEgEJXRKsy56KJY919xiH1lE=", + "owner": "tpope", + "repo": "vim-surround", + "rev": "3d188ed2113431cf8dac77be61b842acb64433d9", + "type": "github" + }, + "original": { + "owner": "tpope", + "repo": "vim-surround", + "type": "github" + } + }, + "nvim_plugin-uga-rosa/ccc.nvim": { + "flake": false, + "locked": { + "lastModified": 1735970087, + "narHash": "sha256-53WsxOfWULlO4VbSXA4DW6wjkbCzpQjkzv4O8pReuEc=", + "owner": "uga-rosa", + "repo": "ccc.nvim", + "rev": "b57cbaf8db3ac43c56c9e2c7f3812944638260ed", + "type": "github" + }, + "original": { + "owner": "uga-rosa", + "repo": "ccc.nvim", + "type": "github" + } + }, + "nvim_plugin-windwp/nvim-ts-autotag": { + "flake": false, + "locked": { + "lastModified": 1733164313, + "narHash": "sha256-v2NTFBIzKTYizUPWB3uhpnTGVZWaelhE3MT5+BDA6Do=", + "owner": "windwp", + "repo": "nvim-ts-autotag", + "rev": "1cca23c9da708047922d3895a71032bc0449c52d", + "type": "github" + }, + "original": { + "owner": "windwp", + "repo": "nvim-ts-autotag", + "type": "github" + } + }, + "nvim_plugin-yetone/avante.nvim": { + "flake": false, + "locked": { + "lastModified": 1737518419, + "narHash": "sha256-Opp6ACJwnAIkLdCQwbqjahjCErxDGIpsX9Hj/87Wm/I=", + "owner": "yetone", + "repo": "avante.nvim", + "rev": "396840a152be82354984b16f9a22cb425d0840d1", + "type": "github" + }, + "original": { + "owner": "yetone", + "repo": "avante.nvim", + "type": "github" + } + }, + "nvim_plugin-zbirenbaum/copilot-cmp": { + "flake": false, + "locked": { + "lastModified": 1733947099, + "narHash": "sha256-erRL8bY/zuwuCZfttw+avTrFV7pjv2H6v73NzY2bymM=", + "owner": "zbirenbaum", + "repo": "copilot-cmp", + "rev": "15fc12af3d0109fa76b60b5cffa1373697e261d1", + "type": "github" + }, + "original": { + "owner": "zbirenbaum", + "repo": "copilot-cmp", + "type": "github" + } + }, + "nvim_plugin-zbirenbaum/copilot.lua": { + "flake": false, + "locked": { + "lastModified": 1734926641, + "narHash": "sha256-c2UE0dLBtoYMvMxg+jXzfsD+wN9sZLvftJq4gGmooZU=", + "owner": "zbirenbaum", + "repo": "copilot.lua", + "rev": "886ee73b6d464b2b3e3e6a7ff55ce87feac423a9", + "type": "github" + }, + "original": { + "owner": "zbirenbaum", + "repo": "copilot.lua", + "type": "github" + } + }, + "root": { + "inputs": { + "deploy-rs": "deploy-rs", + "mod_common": "mod_common", + "nixpkgs": "nixpkgs_3", + "ros_neovim": "ros_neovim" + } + }, + "ros_neovim": { + "inputs": { + "nixpkgs": "nixpkgs_4", + "nvim_plugin-Almo7aya/openingh.nvim": "nvim_plugin-Almo7aya/openingh.nvim", + "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim": "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim", + "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring": "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring", + "nvim_plugin-L3MON4D3/LuaSnip": "nvim_plugin-L3MON4D3/LuaSnip", + "nvim_plugin-MeanderingProgrammer/render-markdown.nvim": "nvim_plugin-MeanderingProgrammer/render-markdown.nvim", + "nvim_plugin-MunifTanjim/nui.nvim": "nvim_plugin-MunifTanjim/nui.nvim", + "nvim_plugin-RRethy/vim-illuminate": "nvim_plugin-RRethy/vim-illuminate", + "nvim_plugin-Saecki/crates.nvim": "nvim_plugin-Saecki/crates.nvim", + "nvim_plugin-aznhe21/actions-preview.nvim": "nvim_plugin-aznhe21/actions-preview.nvim", + "nvim_plugin-b0o/schemastore.nvim": "nvim_plugin-b0o/schemastore.nvim", + "nvim_plugin-catppuccin/nvim": "nvim_plugin-catppuccin/nvim", + "nvim_plugin-chrisgrieser/nvim-early-retirement": "nvim_plugin-chrisgrieser/nvim-early-retirement", + "nvim_plugin-declancm/cinnamon.nvim": "nvim_plugin-declancm/cinnamon.nvim", + "nvim_plugin-folke/lazy.nvim": "nvim_plugin-folke/lazy.nvim", + "nvim_plugin-folke/neodev.nvim": "nvim_plugin-folke/neodev.nvim", + "nvim_plugin-folke/which-key.nvim": "nvim_plugin-folke/which-key.nvim", + "nvim_plugin-hrsh7th/cmp-buffer": "nvim_plugin-hrsh7th/cmp-buffer", + "nvim_plugin-hrsh7th/cmp-nvim-lsp": "nvim_plugin-hrsh7th/cmp-nvim-lsp", + "nvim_plugin-hrsh7th/cmp-path": "nvim_plugin-hrsh7th/cmp-path", + "nvim_plugin-hrsh7th/nvim-cmp": "nvim_plugin-hrsh7th/nvim-cmp", + "nvim_plugin-j-hui/fidget.nvim": "nvim_plugin-j-hui/fidget.nvim", + "nvim_plugin-johmsalas/text-case.nvim": "nvim_plugin-johmsalas/text-case.nvim", + "nvim_plugin-lewis6991/gitsigns.nvim": "nvim_plugin-lewis6991/gitsigns.nvim", + "nvim_plugin-lnc3l0t/glow.nvim": "nvim_plugin-lnc3l0t/glow.nvim", + "nvim_plugin-lukas-reineke/indent-blankline.nvim": "nvim_plugin-lukas-reineke/indent-blankline.nvim", + "nvim_plugin-lvimuser/lsp-inlayhints.nvim": "nvim_plugin-lvimuser/lsp-inlayhints.nvim", + "nvim_plugin-m4xshen/hardtime.nvim": "nvim_plugin-m4xshen/hardtime.nvim", + "nvim_plugin-mbbill/undotree": "nvim_plugin-mbbill/undotree", + "nvim_plugin-mfussenegger/nvim-lint": "nvim_plugin-mfussenegger/nvim-lint", + "nvim_plugin-mrcjkb/rustaceanvim": "nvim_plugin-mrcjkb/rustaceanvim", + "nvim_plugin-neovim/nvim-lspconfig": "nvim_plugin-neovim/nvim-lspconfig", + "nvim_plugin-nosduco/remote-sshfs.nvim": "nvim_plugin-nosduco/remote-sshfs.nvim", + "nvim_plugin-numToStr/Comment.nvim": "nvim_plugin-numToStr/Comment.nvim", + "nvim_plugin-nvim-lua/plenary.nvim": "nvim_plugin-nvim-lua/plenary.nvim", + "nvim_plugin-nvim-lualine/lualine.nvim": "nvim_plugin-nvim-lualine/lualine.nvim", + "nvim_plugin-nvim-telescope/telescope-file-browser.nvim": "nvim_plugin-nvim-telescope/telescope-file-browser.nvim", + "nvim_plugin-nvim-telescope/telescope-fzf-native.nvim": "nvim_plugin-nvim-telescope/telescope-fzf-native.nvim", + "nvim_plugin-nvim-telescope/telescope-ui-select.nvim": "nvim_plugin-nvim-telescope/telescope-ui-select.nvim", + "nvim_plugin-nvim-telescope/telescope.nvim": "nvim_plugin-nvim-telescope/telescope.nvim", + "nvim_plugin-nvim-tree/nvim-tree.lua": "nvim_plugin-nvim-tree/nvim-tree.lua", + "nvim_plugin-nvim-tree/nvim-web-devicons": "nvim_plugin-nvim-tree/nvim-web-devicons", + "nvim_plugin-nvim-treesitter/nvim-treesitter-context": "nvim_plugin-nvim-treesitter/nvim-treesitter-context", + "nvim_plugin-rafamadriz/friendly-snippets": "nvim_plugin-rafamadriz/friendly-snippets", + "nvim_plugin-rcarriga/nvim-notify": "nvim_plugin-rcarriga/nvim-notify", + "nvim_plugin-rmagatti/auto-session": "nvim_plugin-rmagatti/auto-session", + "nvim_plugin-ron/ron.vim": "nvim_plugin-ron/ron.vim", + "nvim_plugin-saadparwaiz1/cmp_luasnip": "nvim_plugin-saadparwaiz1/cmp_luasnip", + "nvim_plugin-sindrets/diffview.nvim": "nvim_plugin-sindrets/diffview.nvim", + "nvim_plugin-stevearc/conform.nvim": "nvim_plugin-stevearc/conform.nvim", + "nvim_plugin-stevearc/dressing.nvim": "nvim_plugin-stevearc/dressing.nvim", + "nvim_plugin-tpope/vim-sleuth": "nvim_plugin-tpope/vim-sleuth", + "nvim_plugin-tpope/vim-surround": "nvim_plugin-tpope/vim-surround", + "nvim_plugin-uga-rosa/ccc.nvim": "nvim_plugin-uga-rosa/ccc.nvim", + "nvim_plugin-windwp/nvim-ts-autotag": "nvim_plugin-windwp/nvim-ts-autotag", + "nvim_plugin-yetone/avante.nvim": "nvim_plugin-yetone/avante.nvim", + "nvim_plugin-zbirenbaum/copilot-cmp": "nvim_plugin-zbirenbaum/copilot-cmp", + "nvim_plugin-zbirenbaum/copilot.lua": "nvim_plugin-zbirenbaum/copilot.lua", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1737610236, + "narHash": "sha256-UfC+hBu09KEepjnqbXGqRJ0jTlV8HTuD1GjB+ZjTjYM=", + "ref": "refs/heads/master", + "rev": "631d85a771f3e22822b9ac02d895e2a06aa1e183", + "revCount": 260, + "type": "git", + "url": "https://git.joshuabell.xyz/nvim" + }, + "original": { + "type": "git", + "url": "https://git.joshuabell.xyz/nvim" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "ros_neovim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737512878, + "narHash": "sha256-dgF6htdmfNnZzVInifks6npnCAyVsIHWSpWNs10RSW0=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "06b8ed0eee289fe94c66f1202ced9a6a2c59a14c", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "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": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/hosts/linode/l001/flake.nix b/hosts/linode/l001/flake.nix new file mode 100644 index 00000000..6f795a60 --- /dev/null +++ b/hosts/linode/l001/flake.nix @@ -0,0 +1,93 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; + deploy-rs.url = "github:serokell/deploy-rs"; + + ros_neovim.url = "git+https://git.joshuabell.xyz/nvim"; + mod_common.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_common"; + }; + + outputs = + { + self, + nixpkgs, + deploy-rs, + ... + }@inputs: + let + configuration_name = "l001"; + lib = nixpkgs.lib; + in + { + deploy = { + sshUser = "root"; + sshOpts = [ + "-i" + "/run/agenix/nix2linode" + ]; + nodes.${configuration_name} = { + hostname = "172.236.111.33"; + profiles.system = { + user = "root"; + path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.${configuration_name}; + }; + }; + }; + + nixosConfigurations = { + nixos = self.nixosConfigurations.${configuration_name}; + "${configuration_name}" = + let + auto_modules = builtins.concatMap ( + input: + lib.optionals + (builtins.hasAttr "nixosModules" input && builtins.hasAttr "default" input.nixosModules) + [ + input.nixosModules.default + ] + ) (builtins.attrValues inputs); + in + (lib.nixosSystem { + modules = [ + ./configuration.nix + ./hardware-configuration.nix + ./linode.nix + ./nginx.nix + ./headscale.nix + ( + { pkgs, ... }: + { + users.users.root.openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJuo6L6V52AzdQIK6fWW9s0aX1yKUUTXbPd8v8IU9p2o nix2linode" + ]; + mods = { + common = { + disableRemoteBuildsOnLio = true; + systemName = configuration_name; + allowUnfree = true; + primaryUser = "luser"; + docker = true; + users = { + luser = { + extraGroups = [ + "wheel" + "networkmanager" + ]; + isNormalUser = true; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJuo6L6V52AzdQIK6fWW9s0aX1yKUUTXbPd8v8IU9p2o nix2linode" + ]; + }; + }; + }; + }; + } + ) + ] ++ auto_modules; + specialArgs = { + inherit inputs; + }; + }); + }; + }; +} diff --git a/hosts/linode/l001/hardware-configuration.nix b/hosts/linode/l001/hardware-configuration.nix new file mode 100644 index 00000000..7f8671ef --- /dev/null +++ b/hosts/linode/l001/hardware-configuration.nix @@ -0,0 +1,33 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "virtio_pci" "virtio_scsi" "ahci" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/42a30f9c-b113-4b14-87b3-a9cfe44adf62"; + fsType = "ext4"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/f1408ea6-59a0-11ed-bc9d-525400000001"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s5.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/hosts/linode/l001/headscale.nix b/hosts/linode/l001/headscale.nix new file mode 100644 index 00000000..a2bc52c3 --- /dev/null +++ b/hosts/linode/l001/headscale.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: +{ + + config = { + # TODO backup /var/lib/headscale data + # TODO https://github.com/gurucomputing/headscale-ui ? + environment.systemPackages = with pkgs; [ headscale ]; + services.headscale = { + enable = true; + settings = { + server_url = "https://nexus.joshuabell.xyz"; + database.type = "sqlite3"; + derp = { + auto_update_enable = true; + update_frequency = "5m"; + }; + dns = { + magic_dns = true; + base_domain = "net.joshuabell.xyz"; + }; + }; + }; + }; +} diff --git a/hosts/linode/l001/linode.nix b/hosts/linode/l001/linode.nix new file mode 100644 index 00000000..638f35b4 --- /dev/null +++ b/hosts/linode/l001/linode.nix @@ -0,0 +1,32 @@ +{ config, pkgs, ... }: +{ + # https://www.linode.com/docs/guides/install-nixos-on-linode/#configure-nixos + boot.kernelParams = [ "console=ttyS0,19200n8" ]; + boot.loader.grub.extraConfig = '' + serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1; + terminal_input serial; + terminal_output serial + ''; + + boot.loader.grub.forceInstall = true; + boot.loader.grub.device = "nodev"; + boot.loader.timeout = 10; + + services.openssh = { + enable = true; + settings.PermitRootLogin = "yes"; + settings.PasswordAuthentication = false; + }; + users.users.root.openssh.authorizedKeys.keys = config.users.users.luser.openssh.authorizedKeys.keys; + + networking.usePredictableInterfaceNames = false; + networking.useDHCP = false; # Disable DHCP globally as we will not need it. + # required for ssh? + networking.interfaces.eth0.useDHCP = true; + + environment.systemPackages = with pkgs; [ + inetutils + mtr + sysstat + ]; +} diff --git a/hosts/linode/l001/nginx.nix b/hosts/linode/l001/nginx.nix new file mode 100644 index 00000000..00c8fc53 --- /dev/null +++ b/hosts/linode/l001/nginx.nix @@ -0,0 +1,52 @@ +{ + ... +}: +{ + security.acme.acceptTerms = true; + security.acme.email = "admin@joshuabell.xyz"; + services.nginx = { + enable = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + virtualHosts = { + # default that is put first for fallbacks + # Note that order here doesn't matter it orders alphabetically so `0` puts it first + # I had an issue tha the first SSL port 443 site would catch any https traffic instead + # of hitting my default fallback and this fixes that issue and ensure this is hit instead + "001.linodes.joshuabell.xyz" = { + default = true; + enableACME = true; + forceSSL = true; + locations."/" = { + return = "444"; # 404 for not found or 444 for drop + }; + }; + "172.236.111.33" = { + locations."/" = { + return = "444"; + }; + }; + "2600:3c06::f03c:95ff:fe1c:84d3" = { + locations."/" = { + return = "444"; + }; + }; + + "headscale.joshuabell.xyz" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyWebsockets = true; + proxyPass = "http://localhost:8080"; # headscale + }; + }; + }; + }; + + networking.firewall.allowedTCPPorts = [ + 80 # web http + 443 # web https + ]; +} diff --git a/hosts/linode/l002/flake.lock b/hosts/linode/l002/flake.lock index a5600a57..a5e4983d 100644 --- a/hosts/linode/l002/flake.lock +++ b/hosts/linode/l002/flake.lock @@ -57,56 +57,6 @@ "url": "https://git.joshuabell.xyz/dotfiles" } }, - "mod_nebula": { - "locked": { - "lastModified": 1735839301, - "narHash": "sha256-f2JlNaCrA3BA8fPT0uThiuiIZX5ehDe0lPlSLL/QMgY=", - "ref": "mod_nebula", - "rev": "38c50b65c66740566b39529bbd91624b01b6ea2a", - "revCount": 3, - "type": "git", - "url": "https://git.joshuabell.xyz/dotfiles" - }, - "original": { - "ref": "mod_nebula", - "type": "git", - "url": "https://git.joshuabell.xyz/dotfiles" - } - }, - "mod_ros_stormd": { - "inputs": { - "ringofstorms-stormd": "ringofstorms-stormd" - }, - "locked": { - "lastModified": 1735796563, - "narHash": "sha256-YjXJu/5Hcl7YpcpiHLd5wqCFUlJp39MM9CfQKhdpkk8=", - "ref": "mod_stormd", - "rev": "a184895fd3f32051499dfad8eb2cb18faaec4188", - "revCount": 1, - "type": "git", - "url": "https://git.joshuabell.xyz/dotfiles" - }, - "original": { - "ref": "mod_stormd", - "type": "git", - "url": "https://git.joshuabell.xyz/dotfiles" - } - }, - "nix-filter": { - "locked": { - "lastModified": 1710156097, - "narHash": "sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj+rL8sRQsSM=", - "owner": "numtide", - "repo": "nix-filter", - "rev": "3342559a24e85fc164b295c3444e8a139924675b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "nix-filter", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1702272962, @@ -124,22 +74,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1728888510, - "narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1736200483, "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=", @@ -155,49 +89,1030 @@ "type": "github" } }, - "ringofstorms-stormd": { - "inputs": { - "nix-filter": "nix-filter", - "nixpkgs": "nixpkgs_2", - "rust-overlay": "rust-overlay" - }, + "nixpkgs_3": { "locked": { - "lastModified": 1735420577, - "narHash": "sha256-2HWEALz0PVJCiP/2iZuDMj4qyukXR5IxNKFxT1NAMlQ=", - "ref": "refs/heads/master", - "rev": "7edf6888a460708889fabea2c762d4dfed4fa64f", - "revCount": 51, - "type": "git", - "url": "ssh://git.joshuabell.xyz:3032/stormd" + "lastModified": 1737567054, + "narHash": "sha256-LI1z4HET4hgP6iyWehrWRd5luNbUk9zz/GFzqI1iAFo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "bbe8109b528365cf3fd3a93c931dd86d57c3bd5a", + "type": "github" }, "original": { - "type": "git", - "url": "ssh://git.joshuabell.xyz:3032/stormd" + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "nvim_plugin-Almo7aya/openingh.nvim": { + "flake": false, + "locked": { + "lastModified": 1733158448, + "narHash": "sha256-JP3+goMgs3SiMHS9IVE7NAV/iKxyXi0fZgJb8hojtNQ=", + "owner": "Almo7aya", + "repo": "openingh.nvim", + "rev": "9131016c1167e23522a8e874b62217829fd327b8", + "type": "github" + }, + "original": { + "owner": "Almo7aya", + "repo": "openingh.nvim", + "type": "github" + } + }, + "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim": { + "flake": false, + "locked": { + "lastModified": 1734194565, + "narHash": "sha256-IPP5jXIX+05Tb0MEXUu6EjcL/RHgV1qkoXPEdaEfhNM=", + "owner": "CopilotC-Nvim", + "repo": "CopilotChat.nvim", + "rev": "2ebe591cff06018e265263e71e1dbc4c5aa8281e", + "type": "github" + }, + "original": { + "owner": "CopilotC-Nvim", + "repo": "CopilotChat.nvim", + "type": "github" + } + }, + "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring": { + "flake": false, + "locked": { + "lastModified": 1733574156, + "narHash": "sha256-AjDM3+n4+lNBQi8P2Yrh0Ab06uYCndBQT9TX36rDbOM=", + "owner": "JoosepAlviste", + "repo": "nvim-ts-context-commentstring", + "rev": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f", + "type": "github" + }, + "original": { + "owner": "JoosepAlviste", + "repo": "nvim-ts-context-commentstring", + "type": "github" + } + }, + "nvim_plugin-L3MON4D3/LuaSnip": { + "flake": false, + "locked": { + "lastModified": 1736009707, + "narHash": "sha256-3ecm5SDTcSOh256xSQPHhddQfMpepiEIpv58fHXrVg0=", + "owner": "L3MON4D3", + "repo": "LuaSnip", + "rev": "c9b9a22904c97d0eb69ccb9bab76037838326817", + "type": "github" + }, + "original": { + "owner": "L3MON4D3", + "repo": "LuaSnip", + "type": "github" + } + }, + "nvim_plugin-MeanderingProgrammer/render-markdown.nvim": { + "flake": false, + "locked": { + "lastModified": 1737054285, + "narHash": "sha256-7yepeUhhViVJpbj48qg0Z3cCCtGt6bZ90hM/ie+5LqA=", + "owner": "MeanderingProgrammer", + "repo": "render-markdown.nvim", + "rev": "ad055861d17afe058bd835e82292e14a64b51b1d", + "type": "github" + }, + "original": { + "owner": "MeanderingProgrammer", + "repo": "render-markdown.nvim", + "type": "github" + } + }, + "nvim_plugin-MunifTanjim/nui.nvim": { + "flake": false, + "locked": { + "lastModified": 1733856815, + "narHash": "sha256-6U7E/i5FuNXQy+sF4C5DVxuTPqNKD5wxUgFohpOjm9Q=", + "owner": "MunifTanjim", + "repo": "nui.nvim", + "rev": "53e907ffe5eedebdca1cd503b00aa8692068ca46", + "type": "github" + }, + "original": { + "owner": "MunifTanjim", + "repo": "nui.nvim", + "type": "github" + } + }, + "nvim_plugin-RRethy/vim-illuminate": { + "flake": false, + "locked": { + "lastModified": 1715960194, + "narHash": "sha256-DdJzTHxoOv+vjFymETa2MgXpM/qDwvZjpoo1W8OOBj0=", + "owner": "RRethy", + "repo": "vim-illuminate", + "rev": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa", + "type": "github" + }, + "original": { + "owner": "RRethy", + "repo": "vim-illuminate", + "type": "github" + } + }, + "nvim_plugin-Saecki/crates.nvim": { + "flake": false, + "locked": { + "lastModified": 1735942265, + "narHash": "sha256-dj7VXlMbS4HvSc+/WMQprtqWzrYrWaCnSEE0ygp/LcI=", + "owner": "Saecki", + "repo": "crates.nvim", + "rev": "bd35b13e94a292ee6e32c351e05ca2202dc9f070", + "type": "github" + }, + "original": { + "owner": "Saecki", + "repo": "crates.nvim", + "type": "github" + } + }, + "nvim_plugin-aznhe21/actions-preview.nvim": { + "flake": false, + "locked": { + "lastModified": 1718540350, + "narHash": "sha256-lYjsv8y1fMuTGpBF/iG7cm/a7tLdh748vJhVsSp/Iz8=", + "owner": "aznhe21", + "repo": "actions-preview.nvim", + "rev": "9f52a01c374318e91337697ebed51c6fae57f8a4", + "type": "github" + }, + "original": { + "owner": "aznhe21", + "repo": "actions-preview.nvim", + "type": "github" + } + }, + "nvim_plugin-b0o/schemastore.nvim": { + "flake": false, + "locked": { + "lastModified": 1737490106, + "narHash": "sha256-jtZ6cta98Wx4vZHcXq0jKfOfpQtTFRFrH5W+/8jyL5g=", + "owner": "b0o", + "repo": "schemastore.nvim", + "rev": "5be212138af55d3dcae9d77b5b14f63634243e3d", + "type": "github" + }, + "original": { + "owner": "b0o", + "repo": "schemastore.nvim", + "type": "github" + } + }, + "nvim_plugin-catppuccin/nvim": { + "flake": false, + "locked": { + "lastModified": 1735299190, + "narHash": "sha256-lwQLmqm01FihJdad4QRMK23MTrouyOokyuX/3enWjzs=", + "owner": "catppuccin", + "repo": "nvim", + "rev": "f67b886d65a029f12ffa298701fb8f1efd89295d", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nvim", + "type": "github" + } + }, + "nvim_plugin-chrisgrieser/nvim-early-retirement": { + "flake": false, + "locked": { + "lastModified": 1735588187, + "narHash": "sha256-ZjXG+POJFRsc79i1BuAJB9K6UBUfHT05oYvZaUr+RqA=", + "owner": "chrisgrieser", + "repo": "nvim-early-retirement", + "rev": "9ae6fcc933fc865ddf2728460194b67985e06e27", + "type": "github" + }, + "original": { + "owner": "chrisgrieser", + "repo": "nvim-early-retirement", + "type": "github" + } + }, + "nvim_plugin-declancm/cinnamon.nvim": { + "flake": false, + "locked": { + "lastModified": 1722992123, + "narHash": "sha256-kccQ4iFMSQ8kvE7hYz90hBrsDLo7VohFj/6lEZZiAO8=", + "owner": "declancm", + "repo": "cinnamon.nvim", + "rev": "450cb3247765fed7871b41ef4ce5fa492d834215", + "type": "github" + }, + "original": { + "owner": "declancm", + "repo": "cinnamon.nvim", + "type": "github" + } + }, + "nvim_plugin-folke/lazy.nvim": { + "flake": false, + "locked": { + "lastModified": 1736194490, + "narHash": "sha256-7npvUPMmQC6/Ywdcuxbmdboa8eJ1RNgZ+rzb3MeN0t0=", + "owner": "folke", + "repo": "lazy.nvim", + "rev": "d8f26efd456190241afd1b0f5235fe6fdba13d4a", + "type": "github" + }, + "original": { + "owner": "folke", + "repo": "lazy.nvim", + "type": "github" + } + }, + "nvim_plugin-folke/neodev.nvim": { + "flake": false, + "locked": { + "lastModified": 1720260306, + "narHash": "sha256-hOjzlo/IqmV8tYjGwfmcCPEmHYsWnEIwtHZdhpwA1kM=", + "owner": "folke", + "repo": "neodev.nvim", + "rev": "46aa467dca16cf3dfe27098042402066d2ae242d", + "type": "github" + }, + "original": { + "owner": "folke", + "repo": "neodev.nvim", + "type": "github" + } + }, + "nvim_plugin-folke/which-key.nvim": { + "flake": false, + "locked": { + "lastModified": 1736055319, + "narHash": "sha256-9V74V01dCqg1w5fpzzCmyfhR3/AYQg2MCIYkkjFv1go=", + "owner": "folke", + "repo": "which-key.nvim", + "rev": "1f8d414f61e0b05958c342df9b6a4c89ce268766", + "type": "github" + }, + "original": { + "owner": "folke", + "repo": "which-key.nvim", + "type": "github" + } + }, + "nvim_plugin-hrsh7th/cmp-buffer": { + "flake": false, + "locked": { + "lastModified": 1660101488, + "narHash": "sha256-dG4U7MtnXThoa/PD+qFtCt76MQ14V1wX8GMYcvxEnbM=", + "owner": "hrsh7th", + "repo": "cmp-buffer", + "rev": "3022dbc9166796b644a841a02de8dd1cc1d311fa", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "cmp-buffer", + "type": "github" + } + }, + "nvim_plugin-hrsh7th/cmp-nvim-lsp": { + "flake": false, + "locked": { + "lastModified": 1733823748, + "narHash": "sha256-iaihXNCF5bB5MdeoosD/kc3QtpA/QaIDZVLiLIurBSM=", + "owner": "hrsh7th", + "repo": "cmp-nvim-lsp", + "rev": "99290b3ec1322070bcfb9e846450a46f6efa50f0", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "cmp-nvim-lsp", + "type": "github" + } + }, + "nvim_plugin-hrsh7th/cmp-path": { + "flake": false, + "locked": { + "lastModified": 1664784283, + "narHash": "sha256-thppiiV3wjIaZnAXmsh7j3DUc6ceSCvGzviwFUnoPaI=", + "owner": "hrsh7th", + "repo": "cmp-path", + "rev": "91ff86cd9c29299a64f968ebb45846c485725f23", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "cmp-path", + "type": "github" + } + }, + "nvim_plugin-hrsh7th/nvim-cmp": { + "flake": false, + "locked": { + "lastModified": 1736172730, + "narHash": "sha256-TmXpMgkPWXHn4+leojZg1V18wOiPDsKQeG1h8nGgVHo=", + "owner": "hrsh7th", + "repo": "nvim-cmp", + "rev": "8c82d0bd31299dbff7f8e780f5e06d2283de9678", + "type": "github" + }, + "original": { + "owner": "hrsh7th", + "repo": "nvim-cmp", + "type": "github" + } + }, + "nvim_plugin-j-hui/fidget.nvim": { + "flake": false, + "locked": { + "lastModified": 1736356439, + "narHash": "sha256-o0za2NxFtzHZa7PRIm9U/P1/fwJrxS1G79ukdGLhJ4Q=", + "owner": "j-hui", + "repo": "fidget.nvim", + "rev": "a0abbf18084b77d28bc70e24752e4f4fd54aea17", + "type": "github" + }, + "original": { + "owner": "j-hui", + "repo": "fidget.nvim", + "type": "github" + } + }, + "nvim_plugin-johmsalas/text-case.nvim": { + "flake": false, + "locked": { + "lastModified": 1722628320, + "narHash": "sha256-2IMufSMy9JW50VzZ3SgOtp8kYs81ANwV0eP0ZH3rTFo=", + "owner": "johmsalas", + "repo": "text-case.nvim", + "rev": "e898cfd46fa6cde0e83abb624a16e67d2ffc6457", + "type": "github" + }, + "original": { + "owner": "johmsalas", + "repo": "text-case.nvim", + "type": "github" + } + }, + "nvim_plugin-lewis6991/gitsigns.nvim": { + "flake": false, + "locked": { + "lastModified": 1737539715, + "narHash": "sha256-Htx06FTru66DPFJUZEe6AaKqVtrD65MMqcerjjEZMR4=", + "owner": "lewis6991", + "repo": "gitsigns.nvim", + "rev": "632fda72df903255dc1683cd739dceaa7338128a", + "type": "github" + }, + "original": { + "owner": "lewis6991", + "repo": "gitsigns.nvim", + "type": "github" + } + }, + "nvim_plugin-lnc3l0t/glow.nvim": { + "flake": false, + "locked": { + "lastModified": 1693233815, + "narHash": "sha256-vdlwkIK2EkFviJmSiOqPWvc15xqJ9F2gHCC4ObJ5Qjk=", + "owner": "lnc3l0t", + "repo": "glow.nvim", + "rev": "5b38fb7b6e806cac62707a4aba8c10c5f14d5bb5", + "type": "github" + }, + "original": { + "owner": "lnc3l0t", + "repo": "glow.nvim", + "type": "github" + } + }, + "nvim_plugin-lukas-reineke/indent-blankline.nvim": { + "flake": false, + "locked": { + "lastModified": 1737369467, + "narHash": "sha256-0+boInVEzS2myYil/l+frs8PAa/2eJcVTyXnEk6TGvI=", + "owner": "lukas-reineke", + "repo": "indent-blankline.nvim", + "rev": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78", + "type": "github" + }, + "original": { + "owner": "lukas-reineke", + "repo": "indent-blankline.nvim", + "type": "github" + } + }, + "nvim_plugin-lvimuser/lsp-inlayhints.nvim": { + "flake": false, + "locked": { + "lastModified": 1686236485, + "narHash": "sha256-06CiJ+xeMO4+OJkckcslqwloJyt2gwg514JuxV6KOfQ=", + "owner": "lvimuser", + "repo": "lsp-inlayhints.nvim", + "rev": "d981f65c9ae0b6062176f0accb9c151daeda6f16", + "type": "github" + }, + "original": { + "owner": "lvimuser", + "repo": "lsp-inlayhints.nvim", + "type": "github" + } + }, + "nvim_plugin-m4xshen/hardtime.nvim": { + "flake": false, + "locked": { + "lastModified": 1734839863, + "narHash": "sha256-WDMr+ygWg9S2PoSqJ4pM26jSaNGAp63wiQ474/p6CIY=", + "owner": "m4xshen", + "repo": "hardtime.nvim", + "rev": "5d9adcbe2f12741de79e435c8b85dca69a3b22e4", + "type": "github" + }, + "original": { + "owner": "m4xshen", + "repo": "hardtime.nvim", + "type": "github" + } + }, + "nvim_plugin-mbbill/undotree": { + "flake": false, + "locked": { + "lastModified": 1735763701, + "narHash": "sha256-0DnRarEuDPdYo+zkwH47jG4B4fGjvL1LxqEoFQ7vpjE=", + "owner": "mbbill", + "repo": "undotree", + "rev": "2556c6800b210b2096b55b66e74b4cc1d9ebbe4f", + "type": "github" + }, + "original": { + "owner": "mbbill", + "repo": "undotree", + "type": "github" + } + }, + "nvim_plugin-mfussenegger/nvim-lint": { + "flake": false, + "locked": { + "lastModified": 1737487916, + "narHash": "sha256-DKfivSjBFra/iXIuYQa7Mv5f2LglNbQTr8bQ+sCm8to=", + "owner": "mfussenegger", + "repo": "nvim-lint", + "rev": "789b7ada1b4f00e08d026dffde410dcfa6a0ba87", + "type": "github" + }, + "original": { + "owner": "mfussenegger", + "repo": "nvim-lint", + "type": "github" + } + }, + "nvim_plugin-mrcjkb/rustaceanvim": { + "flake": false, + "locked": { + "lastModified": 1737246102, + "narHash": "sha256-SSBv1+GxuVpYhpCH//6EXFJ4NXZdZM0pGe19f53JpiA=", + "owner": "mrcjkb", + "repo": "rustaceanvim", + "rev": "8cf9705d98cc77837aa388a5d48f9a73f27f4782", + "type": "github" + }, + "original": { + "owner": "mrcjkb", + "repo": "rustaceanvim", + "type": "github" + } + }, + "nvim_plugin-neovim/nvim-lspconfig": { + "flake": false, + "locked": { + "lastModified": 1737559700, + "narHash": "sha256-p+hGgy6jGErqVy+pbTrfTNF2FosrQlQnMkDHsCl9/kE=", + "owner": "neovim", + "repo": "nvim-lspconfig", + "rev": "513f4f0bde469ecb3abe2e1b606f63cf142e751e", + "type": "github" + }, + "original": { + "owner": "neovim", + "repo": "nvim-lspconfig", + "type": "github" + } + }, + "nvim_plugin-nosduco/remote-sshfs.nvim": { + "flake": false, + "locked": { + "lastModified": 1724901856, + "narHash": "sha256-vFEIISxhTIGSl9LzDYHuEIkjLGkU0y5XhfWI/i5DgN4=", + "owner": "nosduco", + "repo": "remote-sshfs.nvim", + "rev": "03f6c40c4032eeb1ab91368e06db9c3f3a97a75d", + "type": "github" + }, + "original": { + "owner": "nosduco", + "repo": "remote-sshfs.nvim", + "type": "github" + } + }, + "nvim_plugin-numToStr/Comment.nvim": { + "flake": false, + "locked": { + "lastModified": 1717957420, + "narHash": "sha256-h0kPue5Eqd5aeu4VoLH45pF0DmWWo1d8SnLICSQ63zc=", + "owner": "numToStr", + "repo": "Comment.nvim", + "rev": "e30b7f2008e52442154b66f7c519bfd2f1e32acb", + "type": "github" + }, + "original": { + "owner": "numToStr", + "repo": "Comment.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-lua/plenary.nvim": { + "flake": false, + "locked": { + "lastModified": 1736675595, + "narHash": "sha256-18zX3kZ42ynRefFP0mOcy6ESEpejTukjNi4jCRXx48A=", + "owner": "nvim-lua", + "repo": "plenary.nvim", + "rev": "3707cdb1e43f5cea73afb6037e6494e7ce847a66", + "type": "github" + }, + "original": { + "owner": "nvim-lua", + "repo": "plenary.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-lualine/lualine.nvim": { + "flake": false, + "locked": { + "lastModified": 1731050126, + "narHash": "sha256-IN6Qz3jGxUcylYiRTyd8j6me3pAoqJsJXtFUvph/6EI=", + "owner": "nvim-lualine", + "repo": "lualine.nvim", + "rev": "2a5bae925481f999263d6f5ed8361baef8df4f83", + "type": "github" + }, + "original": { + "owner": "nvim-lualine", + "repo": "lualine.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-telescope/telescope-file-browser.nvim": { + "flake": false, + "locked": { + "lastModified": 1729728595, + "narHash": "sha256-VJbRi91TTOwUkQYyTM6Njl7MtX8/mOjINiqWYWEtyxg=", + "owner": "nvim-telescope", + "repo": "telescope-file-browser.nvim", + "rev": "626998e5c1b71c130d8bc6cf7abb6709b98287bb", + "type": "github" + }, + "original": { + "owner": "nvim-telescope", + "repo": "telescope-file-browser.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-telescope/telescope-fzf-native.nvim": { + "flake": false, + "locked": { + "lastModified": 1734022536, + "narHash": "sha256-ZBYZncCVtuks6tV4hhqWvQ3PlKElSHuWAEpo9o48pj4=", + "owner": "nvim-telescope", + "repo": "telescope-fzf-native.nvim", + "rev": "dae2eac9d91464448b584c7949a31df8faefec56", + "type": "github" + }, + "original": { + "owner": "nvim-telescope", + "repo": "telescope-fzf-native.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-telescope/telescope-ui-select.nvim": { + "flake": false, + "locked": { + "lastModified": 1701723223, + "narHash": "sha256-YRhNmmG4gx9Ht8JwjQfbTjJyTHEuZmtP6lqnhOsk8bE=", + "owner": "nvim-telescope", + "repo": "telescope-ui-select.nvim", + "rev": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2", + "type": "github" + }, + "original": { + "owner": "nvim-telescope", + "repo": "telescope-ui-select.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-telescope/telescope.nvim": { + "flake": false, + "locked": { + "lastModified": 1736328372, + "narHash": "sha256-5y8srYKaAqFplMtDjsc8GdDF8yui5vCNMiOeFLrC/sM=", + "owner": "nvim-telescope", + "repo": "telescope.nvim", + "rev": "415af52339215926d705cccc08145f3782c4d132", + "type": "github" + }, + "original": { + "owner": "nvim-telescope", + "repo": "telescope.nvim", + "type": "github" + } + }, + "nvim_plugin-nvim-tree/nvim-tree.lua": { + "flake": false, + "locked": { + "lastModified": 1737156486, + "narHash": "sha256-b8YOOIYML9aKy4Y7S+iLKIaTfCqrxK1wB/ZaeFRCUmo=", + "owner": "nvim-tree", + "repo": "nvim-tree.lua", + "rev": "fca0b67c0b5a31727fb33addc4d9c100736a2894", + "type": "github" + }, + "original": { + "owner": "nvim-tree", + "repo": "nvim-tree.lua", + "type": "github" + } + }, + "nvim_plugin-nvim-tree/nvim-web-devicons": { + "flake": false, + "locked": { + "lastModified": 1736480892, + "narHash": "sha256-lUlEVEzXX8iCPxXIlpwkqBc19hks8qTvz4FdDNsTviI=", + "owner": "nvim-tree", + "repo": "nvim-web-devicons", + "rev": "aafa5c187a15701a7299a392b907ec15d9a7075f", + "type": "github" + }, + "original": { + "owner": "nvim-tree", + "repo": "nvim-web-devicons", + "type": "github" + } + }, + "nvim_plugin-nvim-treesitter/nvim-treesitter-context": { + "flake": false, + "locked": { + "lastModified": 1737125584, + "narHash": "sha256-W5fELF3Am1c6wpA4/JxWjGVWQuDYKUqKO+M2+7anugM=", + "owner": "nvim-treesitter", + "repo": "nvim-treesitter-context", + "rev": "bece284c5322ddf6946fa4bdc383a2bc033269d7", + "type": "github" + }, + "original": { + "owner": "nvim-treesitter", + "repo": "nvim-treesitter-context", + "type": "github" + } + }, + "nvim_plugin-rafamadriz/friendly-snippets": { + "flake": false, + "locked": { + "lastModified": 1733106470, + "narHash": "sha256-I8SRZxnoNC6SOWW+scoA77Jwyxcb4eUczppLdyOiZe0=", + "owner": "rafamadriz", + "repo": "friendly-snippets", + "rev": "efff286dd74c22f731cdec26a70b46e5b203c619", + "type": "github" + }, + "original": { + "owner": "rafamadriz", + "repo": "friendly-snippets", + "type": "github" + } + }, + "nvim_plugin-rcarriga/nvim-notify": { + "flake": false, + "locked": { + "lastModified": 1737405174, + "narHash": "sha256-6vNfc7E9DMXF0IBXJCLA8Rp+uOgbDch/Q7beW0ys3Vo=", + "owner": "rcarriga", + "repo": "nvim-notify", + "rev": "22f29093eae7785773ee9d543f8750348b1a195c", + "type": "github" + }, + "original": { + "owner": "rcarriga", + "repo": "nvim-notify", + "type": "github" + } + }, + "nvim_plugin-rmagatti/auto-session": { + "flake": false, + "locked": { + "lastModified": 1732719937, + "narHash": "sha256-1tg7H8ssnG7ArshQiyoFenXzf9PVealOPbzuZKacO1U=", + "owner": "rmagatti", + "repo": "auto-session", + "rev": "021b64ed7d4ac68a37be3ad28d8e1cba5bec582c", + "type": "github" + }, + "original": { + "owner": "rmagatti", + "repo": "auto-session", + "type": "github" + } + }, + "nvim_plugin-ron/ron.vim": { + "flake": false, + "locked": { + "lastModified": 1660904719, + "narHash": "sha256-8/xJmymtVGVz2avzlamgK1cNflZ3NRL+B3c7xxbI964=", + "owner": "ron-rs", + "repo": "ron.vim", + "rev": "f749e543975a82e8dd9a6e7df9600a1c098ae800", + "type": "github" + }, + "original": { + "owner": "ron-rs", + "repo": "ron.vim", + "type": "github" + } + }, + "nvim_plugin-saadparwaiz1/cmp_luasnip": { + "flake": false, + "locked": { + "lastModified": 1730707109, + "narHash": "sha256-86lKQPPyqFz8jzuLajjHMKHrYnwW6+QOcPyQEx6B+gw=", + "owner": "saadparwaiz1", + "repo": "cmp_luasnip", + "rev": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90", + "type": "github" + }, + "original": { + "owner": "saadparwaiz1", + "repo": "cmp_luasnip", + "type": "github" + } + }, + "nvim_plugin-sindrets/diffview.nvim": { + "flake": false, + "locked": { + "lastModified": 1718279802, + "narHash": "sha256-SX+ybIzL/w6uyCy4iZKnWnzTFwqB1oXSgyYVAdpdKi8=", + "owner": "sindrets", + "repo": "diffview.nvim", + "rev": "4516612fe98ff56ae0415a259ff6361a89419b0a", + "type": "github" + }, + "original": { + "owner": "sindrets", + "repo": "diffview.nvim", + "type": "github" + } + }, + "nvim_plugin-stevearc/conform.nvim": { + "flake": false, + "locked": { + "lastModified": 1737567375, + "narHash": "sha256-tMLkOLANg87wuq6OSkb0iGm00mnZwOF7Xd+gai4mKNg=", + "owner": "stevearc", + "repo": "conform.nvim", + "rev": "bf94626f32fbc3c9987ce2f4aab60d96866587df", + "type": "github" + }, + "original": { + "owner": "stevearc", + "repo": "conform.nvim", + "type": "github" + } + }, + "nvim_plugin-stevearc/dressing.nvim": { + "flake": false, + "locked": { + "lastModified": 1734804193, + "narHash": "sha256-N4hB5wDgoqXrXxSfzDCrqmdDtdVvq+PtOS7FBPH7qXE=", + "owner": "stevearc", + "repo": "dressing.nvim", + "rev": "3a45525bb182730fe462325c99395529308f431e", + "type": "github" + }, + "original": { + "owner": "stevearc", + "repo": "dressing.nvim", + "type": "github" + } + }, + "nvim_plugin-tpope/vim-sleuth": { + "flake": false, + "locked": { + "lastModified": 1726718493, + "narHash": "sha256-2Cr3h3uJvUL3CSoJs3aBFrkBeOBURSQItgQ4ep9sHXM=", + "owner": "tpope", + "repo": "vim-sleuth", + "rev": "be69bff86754b1aa5adcbb527d7fcd1635a84080", + "type": "github" + }, + "original": { + "owner": "tpope", + "repo": "vim-sleuth", + "type": "github" + } + }, + "nvim_plugin-tpope/vim-surround": { + "flake": false, + "locked": { + "lastModified": 1666730476, + "narHash": "sha256-DZE5tkmnT+lAvx/RQHaDEgEJXRKsy56KJY919xiH1lE=", + "owner": "tpope", + "repo": "vim-surround", + "rev": "3d188ed2113431cf8dac77be61b842acb64433d9", + "type": "github" + }, + "original": { + "owner": "tpope", + "repo": "vim-surround", + "type": "github" + } + }, + "nvim_plugin-uga-rosa/ccc.nvim": { + "flake": false, + "locked": { + "lastModified": 1735970087, + "narHash": "sha256-53WsxOfWULlO4VbSXA4DW6wjkbCzpQjkzv4O8pReuEc=", + "owner": "uga-rosa", + "repo": "ccc.nvim", + "rev": "b57cbaf8db3ac43c56c9e2c7f3812944638260ed", + "type": "github" + }, + "original": { + "owner": "uga-rosa", + "repo": "ccc.nvim", + "type": "github" + } + }, + "nvim_plugin-windwp/nvim-ts-autotag": { + "flake": false, + "locked": { + "lastModified": 1733164313, + "narHash": "sha256-v2NTFBIzKTYizUPWB3uhpnTGVZWaelhE3MT5+BDA6Do=", + "owner": "windwp", + "repo": "nvim-ts-autotag", + "rev": "1cca23c9da708047922d3895a71032bc0449c52d", + "type": "github" + }, + "original": { + "owner": "windwp", + "repo": "nvim-ts-autotag", + "type": "github" + } + }, + "nvim_plugin-yetone/avante.nvim": { + "flake": false, + "locked": { + "lastModified": 1737518419, + "narHash": "sha256-Opp6ACJwnAIkLdCQwbqjahjCErxDGIpsX9Hj/87Wm/I=", + "owner": "yetone", + "repo": "avante.nvim", + "rev": "396840a152be82354984b16f9a22cb425d0840d1", + "type": "github" + }, + "original": { + "owner": "yetone", + "repo": "avante.nvim", + "type": "github" + } + }, + "nvim_plugin-zbirenbaum/copilot-cmp": { + "flake": false, + "locked": { + "lastModified": 1733947099, + "narHash": "sha256-erRL8bY/zuwuCZfttw+avTrFV7pjv2H6v73NzY2bymM=", + "owner": "zbirenbaum", + "repo": "copilot-cmp", + "rev": "15fc12af3d0109fa76b60b5cffa1373697e261d1", + "type": "github" + }, + "original": { + "owner": "zbirenbaum", + "repo": "copilot-cmp", + "type": "github" + } + }, + "nvim_plugin-zbirenbaum/copilot.lua": { + "flake": false, + "locked": { + "lastModified": 1734926641, + "narHash": "sha256-c2UE0dLBtoYMvMxg+jXzfsD+wN9sZLvftJq4gGmooZU=", + "owner": "zbirenbaum", + "repo": "copilot.lua", + "rev": "886ee73b6d464b2b3e3e6a7ff55ce87feac423a9", + "type": "github" + }, + "original": { + "owner": "zbirenbaum", + "repo": "copilot.lua", + "type": "github" } }, "root": { "inputs": { "deploy-rs": "deploy-rs", "mod_common": "mod_common", - "mod_nebula": "mod_nebula", - "mod_ros_stormd": "mod_ros_stormd", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_2", + "ros_neovim": "ros_neovim" + } + }, + "ros_neovim": { + "inputs": { + "nixpkgs": "nixpkgs_3", + "nvim_plugin-Almo7aya/openingh.nvim": "nvim_plugin-Almo7aya/openingh.nvim", + "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim": "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim", + "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring": "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring", + "nvim_plugin-L3MON4D3/LuaSnip": "nvim_plugin-L3MON4D3/LuaSnip", + "nvim_plugin-MeanderingProgrammer/render-markdown.nvim": "nvim_plugin-MeanderingProgrammer/render-markdown.nvim", + "nvim_plugin-MunifTanjim/nui.nvim": "nvim_plugin-MunifTanjim/nui.nvim", + "nvim_plugin-RRethy/vim-illuminate": "nvim_plugin-RRethy/vim-illuminate", + "nvim_plugin-Saecki/crates.nvim": "nvim_plugin-Saecki/crates.nvim", + "nvim_plugin-aznhe21/actions-preview.nvim": "nvim_plugin-aznhe21/actions-preview.nvim", + "nvim_plugin-b0o/schemastore.nvim": "nvim_plugin-b0o/schemastore.nvim", + "nvim_plugin-catppuccin/nvim": "nvim_plugin-catppuccin/nvim", + "nvim_plugin-chrisgrieser/nvim-early-retirement": "nvim_plugin-chrisgrieser/nvim-early-retirement", + "nvim_plugin-declancm/cinnamon.nvim": "nvim_plugin-declancm/cinnamon.nvim", + "nvim_plugin-folke/lazy.nvim": "nvim_plugin-folke/lazy.nvim", + "nvim_plugin-folke/neodev.nvim": "nvim_plugin-folke/neodev.nvim", + "nvim_plugin-folke/which-key.nvim": "nvim_plugin-folke/which-key.nvim", + "nvim_plugin-hrsh7th/cmp-buffer": "nvim_plugin-hrsh7th/cmp-buffer", + "nvim_plugin-hrsh7th/cmp-nvim-lsp": "nvim_plugin-hrsh7th/cmp-nvim-lsp", + "nvim_plugin-hrsh7th/cmp-path": "nvim_plugin-hrsh7th/cmp-path", + "nvim_plugin-hrsh7th/nvim-cmp": "nvim_plugin-hrsh7th/nvim-cmp", + "nvim_plugin-j-hui/fidget.nvim": "nvim_plugin-j-hui/fidget.nvim", + "nvim_plugin-johmsalas/text-case.nvim": "nvim_plugin-johmsalas/text-case.nvim", + "nvim_plugin-lewis6991/gitsigns.nvim": "nvim_plugin-lewis6991/gitsigns.nvim", + "nvim_plugin-lnc3l0t/glow.nvim": "nvim_plugin-lnc3l0t/glow.nvim", + "nvim_plugin-lukas-reineke/indent-blankline.nvim": "nvim_plugin-lukas-reineke/indent-blankline.nvim", + "nvim_plugin-lvimuser/lsp-inlayhints.nvim": "nvim_plugin-lvimuser/lsp-inlayhints.nvim", + "nvim_plugin-m4xshen/hardtime.nvim": "nvim_plugin-m4xshen/hardtime.nvim", + "nvim_plugin-mbbill/undotree": "nvim_plugin-mbbill/undotree", + "nvim_plugin-mfussenegger/nvim-lint": "nvim_plugin-mfussenegger/nvim-lint", + "nvim_plugin-mrcjkb/rustaceanvim": "nvim_plugin-mrcjkb/rustaceanvim", + "nvim_plugin-neovim/nvim-lspconfig": "nvim_plugin-neovim/nvim-lspconfig", + "nvim_plugin-nosduco/remote-sshfs.nvim": "nvim_plugin-nosduco/remote-sshfs.nvim", + "nvim_plugin-numToStr/Comment.nvim": "nvim_plugin-numToStr/Comment.nvim", + "nvim_plugin-nvim-lua/plenary.nvim": "nvim_plugin-nvim-lua/plenary.nvim", + "nvim_plugin-nvim-lualine/lualine.nvim": "nvim_plugin-nvim-lualine/lualine.nvim", + "nvim_plugin-nvim-telescope/telescope-file-browser.nvim": "nvim_plugin-nvim-telescope/telescope-file-browser.nvim", + "nvim_plugin-nvim-telescope/telescope-fzf-native.nvim": "nvim_plugin-nvim-telescope/telescope-fzf-native.nvim", + "nvim_plugin-nvim-telescope/telescope-ui-select.nvim": "nvim_plugin-nvim-telescope/telescope-ui-select.nvim", + "nvim_plugin-nvim-telescope/telescope.nvim": "nvim_plugin-nvim-telescope/telescope.nvim", + "nvim_plugin-nvim-tree/nvim-tree.lua": "nvim_plugin-nvim-tree/nvim-tree.lua", + "nvim_plugin-nvim-tree/nvim-web-devicons": "nvim_plugin-nvim-tree/nvim-web-devicons", + "nvim_plugin-nvim-treesitter/nvim-treesitter-context": "nvim_plugin-nvim-treesitter/nvim-treesitter-context", + "nvim_plugin-rafamadriz/friendly-snippets": "nvim_plugin-rafamadriz/friendly-snippets", + "nvim_plugin-rcarriga/nvim-notify": "nvim_plugin-rcarriga/nvim-notify", + "nvim_plugin-rmagatti/auto-session": "nvim_plugin-rmagatti/auto-session", + "nvim_plugin-ron/ron.vim": "nvim_plugin-ron/ron.vim", + "nvim_plugin-saadparwaiz1/cmp_luasnip": "nvim_plugin-saadparwaiz1/cmp_luasnip", + "nvim_plugin-sindrets/diffview.nvim": "nvim_plugin-sindrets/diffview.nvim", + "nvim_plugin-stevearc/conform.nvim": "nvim_plugin-stevearc/conform.nvim", + "nvim_plugin-stevearc/dressing.nvim": "nvim_plugin-stevearc/dressing.nvim", + "nvim_plugin-tpope/vim-sleuth": "nvim_plugin-tpope/vim-sleuth", + "nvim_plugin-tpope/vim-surround": "nvim_plugin-tpope/vim-surround", + "nvim_plugin-uga-rosa/ccc.nvim": "nvim_plugin-uga-rosa/ccc.nvim", + "nvim_plugin-windwp/nvim-ts-autotag": "nvim_plugin-windwp/nvim-ts-autotag", + "nvim_plugin-yetone/avante.nvim": "nvim_plugin-yetone/avante.nvim", + "nvim_plugin-zbirenbaum/copilot-cmp": "nvim_plugin-zbirenbaum/copilot-cmp", + "nvim_plugin-zbirenbaum/copilot.lua": "nvim_plugin-zbirenbaum/copilot.lua", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1737610236, + "narHash": "sha256-UfC+hBu09KEepjnqbXGqRJ0jTlV8HTuD1GjB+ZjTjYM=", + "ref": "refs/heads/master", + "rev": "631d85a771f3e22822b9ac02d895e2a06aa1e183", + "revCount": 260, + "type": "git", + "url": "https://git.joshuabell.xyz/nvim" + }, + "original": { + "type": "git", + "url": "https://git.joshuabell.xyz/nvim" } }, "rust-overlay": { "inputs": { "nixpkgs": [ - "mod_ros_stormd", - "ringofstorms-stormd", + "ros_neovim", "nixpkgs" ] }, "locked": { - "lastModified": 1729218602, - "narHash": "sha256-KDmYxpkFWa0Go0WnOpkgQOypVaQxbwgpEutET5ey1VQ=", + "lastModified": 1737512878, + "narHash": "sha256-dgF6htdmfNnZzVInifks6npnCAyVsIHWSpWNs10RSW0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "9051466c82b9b3a6ba9e06be99621ad25423ec94", + "rev": "06b8ed0eee289fe94c66f1202ced9a6a2c59a14c", "type": "github" }, "original": { diff --git a/hosts/linode/l002/flake.nix b/hosts/linode/l002/flake.nix index 36b790c0..c5abb4ed 100644 --- a/hosts/linode/l002/flake.nix +++ b/hosts/linode/l002/flake.nix @@ -3,10 +3,11 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; deploy-rs.url = "github:serokell/deploy-rs"; + ros_neovim.url = "git+https://git.joshuabell.xyz/nvim"; mod_common.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_common"; mod_common.inputs.nixpkgs.follows = "nixpkgs"; - mod_ros_stormd.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_stormd"; - mod_nebula.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_nebula"; + # mod_ros_stormd.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_stormd"; + # mod_nebula.url = "git+https://git.joshuabell.xyz/dotfiles?ref=mod_nebula"; }; outputs = @@ -28,7 +29,7 @@ "/run/agenix/nix2linode" ]; nodes.${configuration_name} = { - hostname = "172.234.26.141"; + hostname = "100.64.0.4"; profiles.system = { user = "root"; path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.${configuration_name}; @@ -55,6 +56,7 @@ ./hardware-configuration.nix ./linode.nix ./nginx.nix + ../../../components/nix/tailscale.nix ( { pkgs, ... }: { @@ -62,6 +64,11 @@ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFLBVLiPbhVG+riNNpkvXnNtOioByV3CQwtY9gu8pstp nix2l002" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJuo6L6V52AzdQIK6fWW9s0aX1yKUUTXbPd8v8IU9p2o nix2linode" ]; + components = { + # NOTE we manually onboard this machine since it also hosts headscale itself and I don't want to push + # the key in this config. + tailscale.useSecretsAuth = false; + }; mods = { common = { disableRemoteBuildsOnLio = true; diff --git a/hosts/linode/l002/nginx.nix b/hosts/linode/l002/nginx.nix index a00124ec..bc4bc695 100644 --- a/hosts/linode/l002/nginx.nix +++ b/hosts/linode/l002/nginx.nix @@ -1,5 +1,5 @@ { - config, + pkgs, ... }: { @@ -25,7 +25,7 @@ }; security.acme.acceptTerms = true; - security.acme.email = "admin@joshuabell.xyz"; + security.acme.defaults.email = "admin@joshuabell.xyz"; services.nginx = { enable = true; recommendedGzipSettings = true; @@ -37,7 +37,7 @@ # Note that order here doesn't matter it orders alphabetically so `0` puts it first # I had an issue tha the first SSL port 443 site would catch any https traffic instead # of hitting my default fallback and this fixes that issue and ensure this is hit instead - "0.joshuabell.xyz" = { + "002.linodes.joshuabell.xyz" = { default = true; enableACME = true; forceSSL = true; @@ -51,7 +51,7 @@ forceSSL = true; locations."/" = { proxyWebsockets = true; - proxyPass = "http://10.20.40.104:3080"; + proxyPass = "http://100.64.0.1:3080"; }; }; "db.joshuabell.xyz" = { @@ -59,31 +59,21 @@ forceSSL = true; locations."/" = { proxyWebsockets = true; - proxyPass = "http://10.20.40.104:3085"; + proxyPass = "http://100.64.0.1:3085"; }; }; "gist.joshuabell.xyz" = { enableACME = true; forceSSL = true; locations."/" = { - proxyPass = "http://10.20.40.190:6157"; + proxyPass = "http://100.64.0.2:6157"; }; }; "git.joshuabell.xyz" = { enableACME = true; forceSSL = true; locations."/" = { - proxyPass = "http://10.20.40.190:6610"; - }; - }; - "nexus.l002.joshuabell.xyz" = { - locations."/" = { - proxyPass = "http://localhost:42291"; - }; - }; - "nexus.joshuabell.xyz" = { - locations."/" = { - proxyPass = "http://localhost:42291"; + proxyPass = "http://100.64.0.2:6610"; }; }; @@ -153,14 +143,38 @@ }; # STREAMS + # TODO left off trying to get direct ssh working... streamConfig = '' server { listen 3032; - proxy_pass 10.20.40.190:6611; + proxy_pass 100.64.0.2:6611; } ''; }; + # Convoluted way to get ssh to work for git server while also still allowing + # ssh connections to the machine normally (you can't have nginx bind port 22 since sshd does) + # but sshd allows us to use a ForceCommand that we cna then proxy through + environment.systemPackages = with pkgs; [ + # NOTE requires nc which I am getting from somewhere.... would be better to put it here in sys packs? + (writeScriptBin "proxy-to-git" '' + #!${pkgs.bash}/bin/bash + nc 100.64.0.2 6611 + '') + ]; + +# TODO havent gotten this fully working yet + + services.openssh.extraConfig = '' + Match Host git.joshuabell.xyz + ForceCommand proxy-to-git + PermitTTY no + X11Forwarding no + PermitTunnel no + GatewayPorts no + AllowAgentForwarding no + ''; + networking.firewall.allowedTCPPorts = [ 80 # web http 443 # web https diff --git a/hosts/linode/linode.nix b/hosts/linode/linode.nix index 53cc77f8..1646de99 100644 --- a/hosts/linode/linode.nix +++ b/hosts/linode/linode.nix @@ -34,6 +34,6 @@ ]; users.users.root.openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFLBVLiPbhVG+riNNpkvXnNtOioByV3CQwtY9gu8pstp nix2l002" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJuo6L6V52AzdQIK6fWW9s0aX1yKUUTXbPd8v8IU9p2o nix2linode" ]; } diff --git a/hosts/lio/flake.lock b/hosts/lio/flake.lock index 9b51865b..aa2b80fb 100644 --- a/hosts/lio/flake.lock +++ b/hosts/lio/flake.lock @@ -235,11 +235,11 @@ "ragenix": "ragenix" }, "locked": { - "lastModified": 1737492763, - "narHash": "sha256-AMh+4cqU9bhOQ85du76RsJ78ip1yDaiTtModlpREMSI=", + "lastModified": 1739385513, + "narHash": "sha256-AXTDMr+MMfstK91k2ZWsYuU4vbR18DyK3cyiQO6t6C0=", "ref": "mod_secrets", - "rev": "b45dd1d219a656c52cde4b98c509c36ed1833ae0", - "revCount": 11, + "rev": "dc68d4f568d3bdf7d39af68a81432c77869f5749", + "revCount": 14, "type": "git", "url": "https://git.joshuabell.xyz/dotfiles" }, diff --git a/hosts/lio/flake.nix b/hosts/lio/flake.nix index face7312..6f1a9dff 100644 --- a/hosts/lio/flake.nix +++ b/hosts/lio/flake.nix @@ -41,7 +41,7 @@ ./hardware-configuration.nix ./containers.nix ( - { pkgs, ... }: + { config, pkgs, ... }: { imports = [ ../../components/nix/lua.nix @@ -49,6 +49,7 @@ ../../components/nix/qflipper.nix ../../components/nix/qdirstat.nix ../../components/nix/steam.nix + ../../components/nix/tailscale.nix ]; environment.systemPackages = with pkgs; [ diff --git a/hosts/oracle/readme.md b/hosts/oracle/readme.md index c8a8a11a..e3785c07 100644 --- a/hosts/oracle/readme.md +++ b/hosts/oracle/readme.md @@ -1,4 +1,11 @@ -Mostly followed: https://blog.korfuri.fr/posts/2022/08/nixos-on-an-oracle-free-tier-ampere-machine/ +# Steps + +Mostly followed: + - kexectools -> kexec-tools - create mnt/boot after mounting mnt - copy over oracle.nix and import for first nixos-install + +# TODO + +- check out