diff --git a/config/hosts/imxyy-nix-server/net.nix b/config/hosts/imxyy-nix-server/net.nix index 5ce39da..67635d6 100644 --- a/config/hosts/imxyy-nix-server/net.nix +++ b/config/hosts/imxyy-nix-server/net.nix @@ -176,257 +176,245 @@ ]; services.frp = { enable = true; - role = "client"; - settings = { - serverAddr = "{{ .Envs.FRP_SERVER_ADDR }}"; - serverPort = 7000; - auth.token = "{{ .Envs.FRP_AUTH_TOKEN }}"; - proxies = [ - { - name = "nextcloud-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "nextcloud.imxyy.top" ]; - } - { - name = "nextcloud-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "nextcloud.imxyy.top" ]; - } + instances."" = { + role = "client"; + settings = { + serverAddr = "{{ .Envs.FRP_SERVER_ADDR }}"; + serverPort = 7000; + auth.token = "{{ .Envs.FRP_AUTH_TOKEN }}"; + proxies = [ + { + name = "nextcloud-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "nextcloud.imxyy.top" ]; + } + { + name = "nextcloud-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "nextcloud.imxyy.top" ]; + } - { - name = "oidc-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "oidc.imxyy.top" ]; - } - { - name = "oidc-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "oidc.imxyy.top" ]; - } + { + name = "oidc-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "oidc.imxyy.top" ]; + } + { + name = "oidc-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "oidc.imxyy.top" ]; + } - { - name = "mail-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "mail.imxyy.top" ]; - } - { - name = "mail-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "mail.imxyy.top" ]; - } + { + name = "mail-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "mail.imxyy.top" ]; + } + { + name = "mail-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "mail.imxyy.top" ]; + } - { - name = "gitea-ssh"; - type = "tcp"; - localIP = "127.0.0.1"; - localPort = 2222; - remotePort = 2222; - } - { - name = "gitea-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "git.imxyy.top" ]; - } - { - name = "gitea-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "git.imxyy.top" ]; - } + { + name = "gitea-ssh"; + type = "tcp"; + localIP = "127.0.0.1"; + localPort = 2222; + remotePort = 2222; + } + { + name = "gitea-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "git.imxyy.top" ]; + } + { + name = "gitea-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "git.imxyy.top" ]; + } - { - name = "vault-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "vault.imxyy.top" ]; - } - { - name = "vault-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "vault.imxyy.top" ]; - } + { + name = "vault-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "vault.imxyy.top" ]; + } + { + name = "vault-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "vault.imxyy.top" ]; + } - { - name = "home-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "home.imxyy.top" ]; - } - { - name = "home-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "home.imxyy.top" ]; - } + { + name = "home-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "home.imxyy.top" ]; + } + { + name = "home-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "home.imxyy.top" ]; + } - { - name = "coder-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "coder.imxyy.top" ]; - } - { - name = "coder-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "coder.imxyy.top" ]; - } + { + name = "coder-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "coder.imxyy.top" ]; + } + { + name = "coder-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "coder.imxyy.top" ]; + } - { - name = "ai-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "ai.imxyy.top" ]; - } - { - name = "ai-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "ai.imxyy.top" ]; - } + { + name = "grafana-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "grafana.imxyy.top" ]; + } + { + name = "grafana-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "grafana.imxyy.top" ]; + } - { - name = "grafana-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "grafana.imxyy.top" ]; - } - { - name = "grafana-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "grafana.imxyy.top" ]; - } + { + name = "siyuan-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "sy.imxyy.top" ]; + } + { + name = "siyuan-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "sy.imxyy.top" ]; + } - { - name = "siyuan-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "sy.imxyy.top" ]; - } - { - name = "siyuan-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "sy.imxyy.top" ]; - } + { + name = "matrix-root-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "imxyy.top" ]; + } + { + name = "matrix-root-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "imxyy.top" ]; + } + { + name = "matrix-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "matrix.imxyy.top" ]; + } + { + name = "matrix-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "matrix.imxyy.top" ]; + } - { - name = "matrix-root-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "imxyy.top" ]; - } - { - name = "matrix-root-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "imxyy.top" ]; - } - { - name = "matrix-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "matrix.imxyy.top" ]; - } - { - name = "matrix-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "matrix.imxyy.top" ]; - } + { + name = "immich-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "immich.imxyy.top" ]; + } + { + name = "immich-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "immich.imxyy.top" ]; + } - { - name = "immich-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "immich.imxyy.top" ]; - } - { - name = "immich-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "immich.imxyy.top" ]; - } + { + name = "memo-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "memo.imxyy.top" ]; + } + { + name = "memo-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "memo.imxyy.top" ]; + } - { - name = "memo-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "memo.imxyy.top" ]; - } - { - name = "memo-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "memo.imxyy.top" ]; - } - { - name = "efl-matrix-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "mtx.eflx.top" ]; - } - { - name = "efl-matrix-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "mtx.eflx.top" ]; - } - { - name = "efl-send-http"; - type = "http"; - localIP = "127.0.0.1"; - localPort = 80; - customDomains = [ "send.eflx.top" ]; - } - { - name = "efl-send-https"; - type = "https"; - localIP = "127.0.0.1"; - localPort = 443; - customDomains = [ "send.eflx.top" ]; - } - ]; + { + name = "efl-matrix-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "mtx.eflx.top" ]; + } + { + name = "efl-matrix-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "mtx.eflx.top" ]; + } + { + name = "efl-send-http"; + type = "http"; + localIP = "127.0.0.1"; + localPort = 80; + customDomains = [ "send.eflx.top" ]; + } + { + name = "efl-send-https"; + type = "https"; + localIP = "127.0.0.1"; + localPort = 443; + customDomains = [ "send.eflx.top" ]; + } + ]; + }; }; }; @@ -523,7 +511,6 @@ "oidc" "mc" "music" - "ai" "sy" "immich" ]; diff --git a/config/hosts/imxyy-nix-server/plant.nix b/config/hosts/imxyy-nix-server/plant.nix index c567ae7..5d01f51 100644 --- a/config/hosts/imxyy-nix-server/plant.nix +++ b/config/hosts/imxyy-nix-server/plant.nix @@ -55,7 +55,7 @@ in } ''; }; - services.frp.settings.proxies = [ + services.frp.instances."".settings.proxies = [ { name = "plant-http"; type = "http"; diff --git a/config/hosts/imxyy-nix-server/rss.nix b/config/hosts/imxyy-nix-server/rss.nix index bd10334..a7a39b0 100644 --- a/config/hosts/imxyy-nix-server/rss.nix +++ b/config/hosts/imxyy-nix-server/rss.nix @@ -36,7 +36,7 @@ in reverse_proxy :8100 ''; }; - services.frp.settings.proxies = [ + services.frp.instances."".settings.proxies = [ { name = "rsshub-http"; type = "http"; diff --git a/config/hosts/imxyy-nix-server/sshwifty.nix b/config/hosts/imxyy-nix-server/sshwifty.nix index 3dddc14..8eef373 100644 --- a/config/hosts/imxyy-nix-server/sshwifty.nix +++ b/config/hosts/imxyy-nix-server/sshwifty.nix @@ -30,7 +30,7 @@ reverse_proxy :8101 ''; }; - services.frp.settings.proxies = [ + services.frp.instances."".settings.proxies = [ { name = "sshwifty-http"; type = "http"; diff --git a/modules/coding/editor/neovim/nvim/lua/plugins/lsp/lspconfig.lua b/modules/coding/editor/neovim/nvim/lua/plugins/lsp/lspconfig.lua index 3fbc40a..70a644c 100644 --- a/modules/coding/editor/neovim/nvim/lua/plugins/lsp/lspconfig.lua +++ b/modules/coding/editor/neovim/nvim/lua/plugins/lsp/lspconfig.lua @@ -42,15 +42,19 @@ local servers = { command = { "nixfmt" }, }, nixpkgs = { + -- language=nix expr = [[ - let - lock = builtins.fromJSON (builtins.readFile ./flake.lock); - nodeName = lock.nodes.root.inputs.nixpkgs; - in - import (fetchTarball { - url = lock.nodes.${nodeName}.locked.url or "https://github.com/NixOS/nixpkgs/archive/${lock.nodes.${nodeName}.locked.rev}.tar.gz"; - sha256 = lock.nodes.${nodeName}.locked.narHash; - }) { } + if builtins.pathExists ./flake.lock then + let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + nodeName = lock.nodes.root.inputs.nixpkgs; + in + import (fetchTarball { + url = lock.nodes.${nodeName}.locked.url or "https://github.com/NixOS/nixpkgs/archive/${lock.nodes.${nodeName}.locked.rev}.tar.gz"; + sha256 = lock.nodes.${nodeName}.locked.narHash; + }) { } + else + import { } ]], }, }, diff --git a/nixos.nix b/nixos.nix index 19628c5..3b4cede 100644 --- a/nixos.nix +++ b/nixos.nix @@ -1,8 +1,8 @@ { self, - withSystem, lib, inputs, + pkgsParams, ... }: let @@ -15,9 +15,11 @@ let ); pkgsModule = { config, ... }: - withSystem config.nixpkgs.hostPlatform.system (perSystem: { - nixpkgs.pkgs = perSystem.pkgs; - }); + { + nixpkgs = pkgsParams // { + inherit (config.nixpkgs.hostPlatform) system; + }; + }; hmModule = { home-manager = { sharedModules = [ @@ -26,6 +28,10 @@ let inputs.stylix.homeModules.stylix inputs.noctalia.homeModules.default inputs.zen.homeModules.beta + + { + nixpkgs = lib.mkForce { }; + } ]; useGlobalPkgs = true; }; diff --git a/pkgs/default.nix b/pkgs/default.nix index 317bf65..415235c 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -2,29 +2,38 @@ inputs, lib, config, + pkgsParams, ... }: { - perSystem = - { system, pkgs, ... }: - { - _module.args.pkgs = import inputs.nixpkgs { - inherit system; - overlays = builtins.attrValues config.flake.overlays ++ [ - inputs.go-musicfox.overlays.default - inputs.niri.overlays.niri - inputs.fenix.overlays.default - inputs.angrr.overlays.default - (final: prev: { - darkly-qt5 = inputs.darkly.packages.${final.stdenv.hostPlatform.system}.darkly-qt5; - darkly-qt6 = inputs.darkly.packages.${final.stdenv.hostPlatform.system}.darkly-qt6; + _module.args = { + pkgsParams = { + overlays = builtins.attrValues config.flake.overlays ++ [ + inputs.go-musicfox.overlays.default + inputs.niri.overlays.niri + inputs.fenix.overlays.default + inputs.angrr.overlays.default + (final: prev: { + darkly-qt5 = inputs.darkly.packages.${final.stdenv.hostPlatform.system}.darkly-qt5; + darkly-qt6 = inputs.darkly.packages.${final.stdenv.hostPlatform.system}.darkly-qt6; - noctalia-shell = inputs.noctalia.packages.${final.stdenv.hostPlatform.system}.default; - }) - ]; - config.allowUnfree = true; - flake.setNixPath = false; - }; + noctalia-shell = inputs.noctalia.packages.${final.stdenv.hostPlatform.system}.default; + }) + ]; + config.allowUnfree = true; + flake.setNixPath = false; + }; + }; + perSystem = + { + system, + pkgs, + ... + }: + let + in + { + _module.args.pkgs = import inputs.nixpkgs (pkgsParams // { inherit system; }); legacyPackages = pkgs;