Complete overview of the setup

Setup Overview

This section documents the tools, configs, and workflows behind my daily setup. It combines real dotfiles, short tutorials, and practical context so the system is not just shown, but also explained.

The topics below cover the desktop, terminal, shell, notifications, widgets, Git, and supporting tools. Documentation files can be read as rendered guides, while config files stay available as raw source.

Selected File

git.lua

.config/nvim/lua/core/git.lua

local M = {}

local function current_dir()
    local current_file = vim.api.nvim_buf_get_name(0)

    if current_file ~= "" then
        return vim.fs.dirname(current_file)
    end

    return vim.uv.cwd()
end

local function systemlist(cmd)
    local lines = vim.fn.systemlist(cmd)

    if vim.v.shell_error ~= 0 then
        return {}
    end

    return lines
end

local function outermost_git_root()
    local root = systemlist({ "git", "-C", current_dir(), "rev-parse", "--show-toplevel" })[1]

    if not root or root == "" then
        return current_dir()
    end

    while true do
        local super_root = systemlist({ "git", "-C", root, "rev-parse", "--show-superproject-working-tree" })[1]

        if not super_root or super_root == "" then
            return root
        end

        root = super_root
    end
end

local function submodule_paths(root)
    return systemlist({
        "git",
        "-C",
        root,
        "submodule",
        "foreach",
        "--quiet",
        "--recursive",
        "printf '%s\\n' \"$displaypath\"",
    })
end

local function changed_files(repo, module_name)
    local items = {}
    local lines = systemlist({ "git", "-C", repo, "status", "--porcelain", "--untracked-files=all" })

    for _, line in ipairs(lines) do
        local status = line:sub(1, 2)
        local path = line:sub(4)
        path = path:match(".* %-> (.*)") or path

        local absolute = repo .. "/" .. path
        local label = module_name == "." and path or module_name .. "/" .. path

        items[#items + 1] = {
            text = string.format("%s  %s", status, label),
            file = absolute,
            pos = { 1, 0 },
            item = {
                status = status,
                module = module_name,
                path = path,
            },
        }
    end

    return items
end

function M.workspace_status()
    local root = outermost_git_root()
    local modules = { { name = ".", repo = root } }

    for _, path in ipairs(submodule_paths(root)) do
        modules[#modules + 1] = { name = path, repo = root .. "/" .. path }
    end

    local items = {}

    for _, module in ipairs(modules) do
        vim.list_extend(items, changed_files(module.repo, module.name))
    end

    if #items == 0 then
        vim.notify("Git workspace clean")
        return
    end

    Snacks.picker({
        title = "Git Workspace Status",
        finder = function()
            return items
        end,
        format = function(item)
            local status = item.item.status
            local module = item.item.module == "." and "root" or item.item.module
            local path = item.item.path

            return {
                { status, "DiagnosticWarn" },
                { "  " },
                { module, "Comment" },
                { "  " },
                { path },
            }
        end,
        preview = "file",
    })
end

return M