From de5a9787f6aaf60e5c9339570ecde9181474742e Mon Sep 17 00:00:00 2001 From: irl Date: Mon, 7 Jul 2025 14:36:00 +0100 Subject: [PATCH 1/3] feat: add timeout i needed for some reason --- modules/home-manager/cli/starship.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/home-manager/cli/starship.toml b/modules/home-manager/cli/starship.toml index 9f58605..ddef1df 100644 --- a/modules/home-manager/cli/starship.toml +++ b/modules/home-manager/cli/starship.toml @@ -1,3 +1,7 @@ +"$schema" = 'https://starship.rs/config-schema.json' + +command_timeout = 800 + [shell] disabled = false format = '[$indicator]($style)' From 671533f47c032d05f50a970726521e8cfa3a92c5 Mon Sep 17 00:00:00 2001 From: irl Date: Mon, 7 Jul 2025 14:36:56 +0100 Subject: [PATCH 2/3] feat: use pipes to create homeConfigurations --- flake.nix | 49 +++++++++++++++++++++++++------------------- home-manager/irl.nix | 36 +++++++++++++++++++++++++------- 2 files changed, 57 insertions(+), 28 deletions(-) diff --git a/flake.nix b/flake.nix index 9688c4b..1000b92 100644 --- a/flake.nix +++ b/flake.nix @@ -36,11 +36,6 @@ sops-nix, }@inputs: let - homeRoles = [ - "desktop" - "minimal" - "server" - ]; outputs = inputs.self; overlays = [ apple-silicon.overlays.apple-silicon-overlay @@ -74,23 +69,35 @@ }; }; homeManagerModules = import ./modules/home-manager; - homeConfigurations = nixpkgs.lib.foldl' (c: e: - c // { - "irl-${e.role}-${e.system}" = home-manager.lib.homeManagerConfiguration { - pkgs = import nixpkgs { - inherit overlays; - system = e.system; - }; - extraSpecialArgs = { - inherit outputs; - }; - modules = [ - ./home-manager/irl.nix - { role = "${e.role}"; } - ]; - }; + homeConfigurations = + { + role = [ + "desktop" + "minimal" + "server" + ]; + system = supportedSystems; } - ) { } (nixpkgs.lib.cartesianProduct { role = homeRoles; system = supportedSystems; }); + |> nixpkgs.lib.cartesianProduct + |> nixpkgs.lib.foldl' ( + c: e: + c + // { + "irl-${e.role}-${e.system}" = home-manager.lib.homeManagerConfiguration { + pkgs = import nixpkgs { + inherit overlays; + system = e.system; + }; + extraSpecialArgs = { + inherit outputs; + }; + modules = [ + ./home-manager/irl.nix + { role = "${e.role}"; } + ]; + }; + } + ) { }; } // flake-utils.lib.eachSystem supportedSystems (system: { formatter = nixpkgs.legacyPackages.${system}.nixfmt-tree; diff --git a/home-manager/irl.nix b/home-manager/irl.nix index 4e31fe9..5447f03 100644 --- a/home-manager/irl.nix +++ b/home-manager/irl.nix @@ -11,26 +11,48 @@ options.role = lib.mkOption { description = "Home role to set up"; default = "minimal"; - type = with lib.types; enum ["desktop" "minimal" "server"]; + type = + with lib.types; + enum [ + "desktop" + "minimal" + "server" + ]; }; config = { - feature.cli.enable = builtins.elem config.role ["desktop" "minimal" "server"]; + feature.cli.enable = builtins.elem config.role [ + "desktop" + "minimal" + "server" + ]; feature.firefox.enable = config.role == "desktop"; - feature.git.enable = builtins.elem config.role ["desktop" "server"]; + feature.git.enable = builtins.elem config.role [ + "desktop" + "server" + ]; feature.ops.enable = config.role == "desktop"; - feature.tmux.enable = builtins.elem config.role ["desktop" "server"]; - feature.vim.enable = builtins.elem config.role ["desktop" "minimal" "server"]; + feature.tmux.enable = builtins.elem config.role [ + "desktop" + "server" + ]; + feature.vim.enable = builtins.elem config.role [ + "desktop" + "minimal" + "server" + ]; home.username = "irl"; home.homeDirectory = if lib.strings.hasSuffix "darwin" pkgs.system then "/Users/irl" else "/home/irl"; + home.file.".config/nix/nix.conf".text = '' + experimental-features = nix-command flakes pipe-operators + ''; home.packages = with pkgs; [ neofetch ]; home.shellAliases = { - hms = - "home-manager switch --flake ~/.config/nix-configs#irl-${config.role}-${pkgs.system}"; + hms = "home-manager switch --flake ~/.config/nix-configs#irl-${config.role}-${pkgs.system}"; drs = "sudo darwin-rebuild switch --flake ~/.config/nix-configs"; }; home.stateVersion = "25.05"; From 784a2b72ed56f5e572510644c2631e1710f1354f Mon Sep 17 00:00:00 2001 From: irl Date: Mon, 7 Jul 2025 21:55:13 +0100 Subject: [PATCH 3/3] feat: vim lsp setup --- modules/home-manager/vim/init.lua | 67 +++++++++++++++++++++++++++++-- modules/home-manager/vim/vim.nix | 2 + 2 files changed, 65 insertions(+), 4 deletions(-) diff --git a/modules/home-manager/vim/init.lua b/modules/home-manager/vim/init.lua index e6283c7..14d71f1 100644 --- a/modules/home-manager/vim/init.lua +++ b/modules/home-manager/vim/init.lua @@ -4,11 +4,19 @@ vim.g.loaded_netrwPlugin = 1 vim.g.mapleader = " " vim.opt.termguicolors = true + +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 vim.opt.expandtab = true -vim.cmd.colorscheme "catppuccin" +vim.opt.number = true +vim.opt.relativenumber = true +vim.opt.scrolloff = 8 --- Custom bindings +vim.cmd.colorscheme "catppuccin-mocha" + +-- Custom bindings for buffer navigation vim.keymap.set("n", "n", "bn", { noremap = true, silent = true }) vim.keymap.set("n", "p", "bp", { noremap = true, silent = true }) @@ -21,9 +29,60 @@ require("lualine").setup{} -- Telescope (anything search) vim.keymap.set("n", "b", "Telescope buffers", { noremap = true, silent = true }) vim.keymap.set("n", "f", "Telescope find_files", { noremap = true, silent = true }) +vim.keymap.set("n", "g", "Telescope git_files", { noremap = true, silent = true }) + +-- Tree (file manager) +require("nvim-tree").setup() +vim.keymap.set("n", "t", "NvimTreeToggle", { noremap = true, silent = true }) -- lspconfig (LSPs) -vim.lsp.enable("nil") +vim.lsp.enable("lua_ls") +vim.lsp.enable("nil_ls") vim.lsp.enable("pyright") -vim.lsp.enable("rust-analyzer") +vim.lsp.enable("rust_analyzer") + +vim.keymap.set("n", "o", vim.lsp.buf.format) + +vim.api.nvim_create_autocmd('LspAttach', { + desc = 'LSP actions', + callback = function() + local bufmap = function(mode, lhs, rhs) + local opts = {buffer = true} + vim.keymap.set(mode, lhs, rhs, opts) + end + + -- Displays hover information about the symbol under the cursor + bufmap('n', 'K', vim.lsp.buf.hover) + + -- Jump to the definition + bufmap('n', 'gd', vim.lsp.buf.definition) + + -- Jump to declaration + bufmap('n', 'gD', vim.lsp.buf.declaration) + + -- Lists all the implementations for the symbol under the cursor + bufmap('n', 'gi', vim.lsp.buf.implementation) + + -- Jumps to the definition of the type symbol + bufmap('n', 'go', vim.lsp.buf.type_definition) + + -- Lists all the references + bufmap('n', 'gr', vim.lsp.buf.references) + + -- Displays a function's signature information + bufmap('n', '', vim.lsp.buf.signature_help) + + -- Renames all references to the symbol under the cursor + bufmap('n', 'R', vim.lsp.buf.rename) + + -- Show diagnostics in a floating window + bufmap('n', 'gl', vim.diagnostic.open_float) + + -- Move to the previous diagnostic + bufmap('n', '[d', vim.diagnostic.goto_prev) + + -- Move to the next diagnostic + bufmap('n', ']d', vim.diagnostic.goto_next) + end +}) diff --git a/modules/home-manager/vim/vim.nix b/modules/home-manager/vim/vim.nix index 20a34a9..deaef85 100644 --- a/modules/home-manager/vim/vim.nix +++ b/modules/home-manager/vim/vim.nix @@ -14,6 +14,7 @@ in config = lib.mkIf cfg.enable { home.packages = with pkgs; [ + lua-language-server nil pyright rust-analyzer @@ -29,6 +30,7 @@ in bufferline-nvim catppuccin-nvim lualine-nvim + nvim-tree-lua nvim-lspconfig telescope-nvim nvim-web-devicons