diff --git a/.gitignore b/.gitignore index 1be5a966..fd137b02 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .sops.yaml .claude/ old/ +docs/superpowers/ diff --git a/flake.lock b/flake.lock index 91e426ca..ffd94547 100644 --- a/flake.lock +++ b/flake.lock @@ -872,6 +872,25 @@ "type": "github" } }, + "nvf-config": { + "inputs": { + "nixpkgs": [ + "nixpkgs-stable" + ], + "nvf": [ + "nvf" + ] + }, + "locked": { + "path": "./home/programs/nvf", + "type": "path" + }, + "original": { + "path": "./home/programs/nvf", + "type": "path" + }, + "parent": [] + }, "root": { "inputs": { "awesome-wallpapers": "awesome-wallpapers", @@ -888,6 +907,7 @@ "notashelf-tuigreet": "notashelf-tuigreet", "nur": "nur", "nvf": "nvf", + "nvf-config": "nvf-config", "sops-nix": "sops-nix", "stylix": "stylix" } diff --git a/flake.nix b/flake.nix index 3170a61e..e1eda39b 100644 --- a/flake.nix +++ b/flake.nix @@ -10,6 +10,11 @@ nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05"; nixos-hardware.url = "github:NixOS/nixos-hardware"; nvf.url = "github:notashelf/nvf"; + nvf-config = { + url = "path:./home/programs/nvf"; + inputs.nixpkgs.follows = "nixpkgs-stable"; + inputs.nvf.follows = "nvf"; + }; nur = { url = "github:nix-community/nur"; inputs.nixpkgs.follows = "nixpkgs"; @@ -66,11 +71,12 @@ merge = nixpkgs.lib.foldl nixpkgs.lib.recursiveUpdate {}; in merge [ - (import ./home/programs/nvf/flake.nix args) (import ./home/programs/group/flake.nix args) (import ./home/programs/nixy/flake.nix args) { formatter.${system} = pkgs.alejandra; + packages.${system}.nvim = inputs.nvf-config.packages.${system}.nvim; + apps.${system}.nvim = inputs.nvf-config.apps.${system}.nvim; nixosConfigurations = { h-laptop = import ./hosts/laptop/flake.nix args; h-work = import ./hosts/work/flake.nix args; diff --git a/home/programs/nvf/default.nix b/home/programs/nvf/default.nix index d0acf432..2900bac7 100644 --- a/home/programs/nvf/default.nix +++ b/home/programs/nvf/default.nix @@ -1,12 +1,8 @@ { - inputs, config, + lib, ... -}: let - c = config.lib.stylix.colors; -in { - imports = [inputs.nvf.homeManagerModules.default]; - +}: { home.sessionVariables = { EDITOR = "nvim"; }; @@ -14,15 +10,19 @@ in { programs.nvf = { enable = true; settings = { - vim.luaConfigRC.hl-overrides = '' - local function apply_hl() - vim.api.nvim_set_hl(0, "MiniStarterHeader", { fg = "#${c.base0D}", bold = true }) - vim.api.nvim_set_hl(0, "SnacksPickerBorder", { fg = "#${c.base0D}" }) - vim.api.nvim_set_hl(0, "SnacksPickerTitle", { fg = "#${c.base0D}", bold = true }) - end - apply_hl() - vim.api.nvim_create_autocmd("ColorScheme", { pattern = "*", callback = apply_hl }) - ''; + vim.luaConfigRC = lib.mkIf (config ? stylix && config.stylix.enable) { + hl-overrides = let + c = config.lib.stylix.colors; + in '' + local function apply_hl() + vim.api.nvim_set_hl(0, "MiniStarterHeader", { fg = "#${c.base0D}", bold = true }) + vim.api.nvim_set_hl(0, "SnacksPickerBorder", { fg = "#${c.base0D}" }) + vim.api.nvim_set_hl(0, "SnacksPickerTitle", { fg = "#${c.base0D}", bold = true }) + end + apply_hl() + vim.api.nvim_create_autocmd("ColorScheme", { pattern = "*", callback = apply_hl }) + ''; + }; imports = [ ./options.nix ./languages.nix diff --git a/home/programs/nvf/flake.lock b/home/programs/nvf/flake.lock new file mode 100644 index 00000000..c82848e8 --- /dev/null +++ b/home/programs/nvf/flake.lock @@ -0,0 +1,133 @@ +{ + "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1777699697, + "narHash": "sha256-Eg9b/rq/ECYwNwEXs5i9wHyhxNI0JrYx2srdI2uZMaQ=", + "ref": "refs/heads/main", + "rev": "382052b74656a369c5408822af3f2501e9b1af81", + "revCount": 94, + "type": "git", + "url": "https://git.lix.systems/lix-project/flake-compat.git" + }, + "original": { + "type": "git", + "url": "https://git.lix.systems/lix-project/flake-compat.git" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nvf", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1778716662, + "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "mnw": { + "locked": { + "lastModified": 1780772958, + "narHash": "sha256-VKKe8r4pwCGWZ3Yr9CPN129R4S3CKLSrlYqdYz3vKpM=", + "owner": "Gerg-L", + "repo": "mnw", + "rev": "0871dbf63a53610c95db04439ed8ea4d6ec9c160", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "mnw", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1785133411, + "narHash": "sha256-Yjv0WEg39KRYS0rBdTbu6Fc/or/ihAKk13W9sQ6VWd0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "2f5a153c270b70cb0f8c11f46d96d6d3bc39f4e3", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-26.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1781216227, + "narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-26.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nvf": { + "inputs": { + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "mnw": "mnw", + "nixpkgs": "nixpkgs_2", + "systems": "systems" + }, + "locked": { + "lastModified": 1781997110, + "narHash": "sha256-6D6xtYN5t1kZGNd69eMZsRBkgX5Df1roErn/kFR1C+A=", + "owner": "notashelf", + "repo": "nvf", + "rev": "320f60b97075a58d38b90fc5e39f478421dbd38a", + "type": "github" + }, + "original": { + "owner": "notashelf", + "repo": "nvf", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "nvf": "nvf" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/home/programs/nvf/flake.nix b/home/programs/nvf/flake.nix index b9fdd4f8..bd1198c6 100644 --- a/home/programs/nvf/flake.nix +++ b/home/programs/nvf/flake.nix @@ -1,11 +1,19 @@ { - inputs, - pkgs, - system, - ... -}: let - nvimConfig = inputs.nvf.lib.neovimConfiguration { - inherit pkgs; + description = "Hadi's NVF Neovim configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05"; + nvf.url = "github:notashelf/nvf"; + }; + + outputs = { + self, + nixpkgs, + nvf, + ... + }: let + systems = ["x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin"]; + forAllSystems = f: nixpkgs.lib.genAttrs systems f; modules = [ ./options.nix ./languages.nix @@ -15,23 +23,35 @@ ./utils.nix ./mini.nix ]; - }; -in { - packages.${system}.nvim = nvimConfig.neovim; + in { + packages = forAllSystems (system: let + pkgs = nixpkgs.legacyPackages.${system}; + nvim = (nvf.lib.neovimConfiguration {inherit pkgs modules;}).neovim; + in { + inherit nvim; + default = nvim; + }); - apps.${system}.nvim = { - type = "app"; - program = "${nvimConfig.neovim}/bin/nvim"; - }; - defaultApp.${system} = { - type = "app"; - program = "${nvimConfig.neovim}/bin/nvim"; - }; + apps = forAllSystems (system: let + nvim = { + type = "app"; + program = "${self.packages.${system}.nvim}/bin/nvim"; + }; + in { + inherit nvim; + default = nvim; + }); - homeManagerModules.nvim = { - imports = [ - inputs.nvf.homeManagerModules.default - ./default.nix - ]; + homeManagerModules = rec { + nvim = { + imports = [ + nvf.homeManagerModules.default + ./default.nix + ]; + }; + default = nvim; + }; + + formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra); }; } diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index e3a54763..45699f65 100644 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -1,11 +1,15 @@ -{config, ...}: { +{ + config, + inputs, + ... +}: { imports = [ # Programs ../../home/programs/helium ../../home/programs/proton ../../home/programs/proton/auto-start-vpn.nix ../../home/programs/ghostty - ../../home/programs/nvf + inputs.nvf-config.homeManagerModules.default ../../home/programs/shell ../../home/programs/git ../../home/programs/git/lazygit.nix diff --git a/hosts/server/home.nix b/hosts/server/home.nix index 5eafaa16..5254b9a1 100644 --- a/hosts/server/home.nix +++ b/hosts/server/home.nix @@ -1,10 +1,14 @@ -{config, ...}: { +{ + config, + inputs, + ... +}: { imports = [ # Mostly user-specific configuration ./variables.nix # Programs - ../../home/programs/nvf + inputs.nvf-config.homeManagerModules.default ../../home/programs/shell ../../home/programs/git ../../home/programs/git/lazygit.nix diff --git a/hosts/work/home.nix b/hosts/work/home.nix index 72c3ab39..d9aec79d 100644 --- a/hosts/work/home.nix +++ b/hosts/work/home.nix @@ -1,10 +1,14 @@ -{config, ...}: { +{ + config, + inputs, + ... +}: { imports = [ # Programs + inputs.nvf-config.homeManagerModules.default ../../home/programs/proton ../../home/programs/helium ../../home/programs/ghostty - ../../home/programs/nvf ../../home/programs/shell ../../home/programs/git ../../home/programs/git/lazygit.nix