1
Fork 0
nixos-system-config/dotfiles/nvim/lua/util/get_distro.lua

73 lines
1.4 KiB
Lua

local function distro_traits(name)
local icons = {
[ "unknown" ] = {
icon = "",
color = "#f3be25",
},
[ "debian" ] = {
icon = "",
color = "#d70a53",
},
[ "gentoo" ] = {
icon = "",
color = "#54487A",
},
[ "nixos" ] = {
icon = "",
color = "#5277C3",
},
[ "\"opensuse-tumbleweed\"" ] = {
icon = "",
color = "#73ba25",
},
}
if os.getenv("CONTAINER_ID") ~= nil then
icons["distrobox"] = {
icon = "[󰏗 " .. os.getenv("CONTAINER_ID") .. "]",
color = "#917d62",
}
end
local icon = icons[name]
if icon == nil then
icon = icons["unknown"]
end
return icon
end
return function()
if os.getenv("CONTAINER_ID") ~= nil then
return {
name = "distrobox",
traits = distro_traits("distrobox"),
}
end
local release_file = io.open("/etc/os-release", "rb")
if release_file == nil then
return {
name = "unknown",
traits = distro_traits("unknown"),
}
end
local content = vim.split(release_file:read("*a"), "\n")
local distro_id = nil
for _, line in ipairs(content) do
if string.sub(line, 0, 3) == "ID=" then
distro_id = string.sub(line, 4, -1)
goto distro_id_found
end
end
::distro_id_found::
release_file:close()
return {
name = distro_id,
traits = distro_traits(distro_id)
}
end