Merge pull request #2 from cything/gh-actions

make nix flake check also check formatting in gh actions
This commit is contained in:
cy 2024-12-28 11:54:02 -05:00 committed by GitHub
commit e9897830e6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 276 additions and 239 deletions

View file

@ -1,4 +1,4 @@
name: "nix build and flake check" name: "nix flake and fmt check"
on: on:
pull_request: pull_request:
push: push:
@ -6,20 +6,8 @@ jobs:
flake-check: flake-check:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: cachix/install-nix-action@v30 - uses: cachix/install-nix-action@v30
with: with:
github_access_token: ${{ secrets.github_token }} github_access_token: ${{ secrets.github_token }}
- run: nix flake check - run: nix flake check
nixfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v30
with:
github_access_token: ${{ secrets.github_token }}
- name: install nixfmt
run: nix-env -f <nixpkgs> -iAP nixfmt-rfc-style
- name: check that nix files are formatted correctly
run : nixfmt --check

37
flake.lock generated
View file

@ -84,6 +84,22 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": {
"locked": {
"lastModified": 1733097829,
"narHash": "sha256-9hbb1rqGelllb4kVUCZ307G2k3/UhmA8PPGBoyuWaSw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "2c15aa59df0017ca140d9ba302412298ab4bf22a",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
@ -91,7 +107,8 @@
"nixpkgs-borg": "nixpkgs-borg", "nixpkgs-borg": "nixpkgs-borg",
"nixpkgs-evolution": "nixpkgs-evolution", "nixpkgs-evolution": "nixpkgs-evolution",
"nixpkgs-master": "nixpkgs-master", "nixpkgs-master": "nixpkgs-master",
"sops-nix": "sops-nix" "sops-nix": "sops-nix",
"treefmt": "treefmt"
} }
}, },
"sops-nix": { "sops-nix": {
@ -113,6 +130,24 @@
"repo": "sops-nix", "repo": "sops-nix",
"type": "github" "type": "github"
} }
},
"treefmt": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1735135567,
"narHash": "sha256-8T3K5amndEavxnludPyfj3Z1IkcFdRpR23q+T0BVeZE=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "9e09d30a644c57257715902efbb3adc56c79cf28",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -11,6 +11,7 @@
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
treefmt.url = "github:numtide/treefmt-nix";
nixpkgs-borg.url = "github:cything/nixpkgs/borg"; nixpkgs-borg.url = "github:cything/nixpkgs/borg";
nixpkgs-master.url = "github:nixos/nixpkgs/master"; nixpkgs-master.url = "github:nixos/nixpkgs/master";
nixpkgs-evolution.url = "github:nixos/nixpkgs/a49023bcb550bcd84e1fa8afcbe7aa8bc0850bf4"; nixpkgs-evolution.url = "github:nixos/nixpkgs/a49023bcb550bcd84e1fa8afcbe7aa8bc0850bf4";
@ -21,6 +22,7 @@
self, self,
nixpkgs, nixpkgs,
home-manager, home-manager,
treefmt,
... ...
}@inputs: }@inputs:
let let
@ -65,10 +67,22 @@
}; };
} }
); );
treefmtEval = forEachSystem (
pkgs:
treefmt.lib.evalModule pkgs {
projectRootFile = "flake.nix";
programs.nixfmt.enable = true;
programs.stylua.enable = true;
}
);
in in
{ {
packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; }); packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; });
formatter = forEachSystem (pkgs: pkgs.nixfmt-rfc-style); formatter = forEachSystem (pkgs: treefmtEval.${pkgs.system}.config.build.wrapper);
checks = forEachSystem (pkgs: {
formatting = treefmtEval.${pkgs.system}.config.build.check self;
});
nixosConfigurations = nixosConfigurations =
let let

View file

@ -8,13 +8,13 @@ vim.g.loaded_netrwPlugin = 1
vim.opt.termguicolors = true vim.opt.termguicolors = true
require("nvim-tree").setup() require("nvim-tree").setup()
require("lualine").setup { require("lualine").setup({
options = { options = {
theme = "auto", theme = "auto",
icons_enabled = true, icons_enabled = true,
globalstatus = true, globalstatus = true,
} },
} })
require("gitsigns").setup() require("gitsigns").setup()
@ -34,24 +34,24 @@ opt.showmode = false
opt.mouse = "" opt.mouse = ""
opt.wrap = false opt.wrap = false
vim.cmd.colorscheme "iceberg" vim.cmd.colorscheme("iceberg")
keymap.set("n", "<space>s", require("nvim-tree.api").tree.toggle, { keymap.set("n", "<space>s", require("nvim-tree.api").tree.toggle, {
desc = "toggle nvim-tree", desc = "toggle nvim-tree",
silent = true, silent = true,
}) })
-- shortcut to command mode -- shortcut to command mode
keymap.set({ "n", "x" }, ";", ":", { silent = true }) keymap.set({ "n", "x" }, ";", ":", { silent = true })
keymap.set("n", "<space>o", "printf('m`%so<ESC>``', v:count1)", { keymap.set("n", "<space>o", "printf('m`%so<ESC>``', v:count1)", {
expr = true, expr = true,
desc = "insert line below without moving cursor", desc = "insert line below without moving cursor",
}) })
keymap.set("n", "<space>O", "printf('m`%sO<ESC>``', v:count1)", { keymap.set("n", "<space>O", "printf('m`%sO<ESC>``', v:count1)", {
expr = true, expr = true,
desc = "insert line above without moving cursor", desc = "insert line above without moving cursor",
}) })
keymap.set("n", "/", [[/\v]]) keymap.set("n", "/", [[/\v]])
@ -65,7 +65,7 @@ keymap.set("x", "p", '"_c<Esc>p')
-- Break inserted text into smaller undo units when we insert some punctuation chars. -- Break inserted text into smaller undo units when we insert some punctuation chars.
local undo_ch = { ",", ".", "!", "?", ";", ":" } local undo_ch = { ",", ".", "!", "?", ";", ":" }
for _, ch in ipairs(undo_ch) do for _, ch in ipairs(undo_ch) do
keymap.set("i", ch, ch .. "<c-g>u") keymap.set("i", ch, ch .. "<c-g>u")
end end
keymap.set("i", "<C-A>", "<HOME>") keymap.set("i", "<C-A>", "<HOME>")

View file

@ -8,14 +8,14 @@ keymap.set("n", "<leader>fc", fzf.resume, { silent = true })
keymap.set("n", "<leader>fs", fzf.treesitter, { silent = true }) keymap.set("n", "<leader>fs", fzf.treesitter, { silent = true })
keymap.set("n", "<leader>fg", fzf.grep_project, { silent = true }) keymap.set("n", "<leader>fg", fzf.grep_project, { silent = true })
fzf.setup { fzf.setup({
"fzf-native", "fzf-native",
keymap = { keymap = {
fzf = { fzf = {
["ctrl-u"] = "half-page-up", ["ctrl-u"] = "half-page-up",
["ctrl-d"] = "half-page-down", ["ctrl-d"] = "half-page-down",
["ctrl-j"] = "preview-page-down", ["ctrl-j"] = "preview-page-down",
["ctrl-k"] = "preview-page-up", ["ctrl-k"] = "preview-page-up",
} },
} },
} })

View file

@ -1,16 +1,16 @@
local hop = require('hop') local hop = require("hop")
local keymap = vim.keymap local keymap = vim.keymap
hop.setup { hop.setup({
case_insensitive = true; case_insensitive = true,
char2_fallback_key = "<CR>", char2_fallback_key = "<CR>",
quit_key = "<Esc", quit_key = "<Esc",
} })
keymap.set({ 'n', 'v', 'o' }, '<C-t>', "", { keymap.set({ "n", "v", "o" }, "<C-t>", "", {
silent = true; silent = true,
noremap = true; noremap = true,
callback = function() callback = function()
hop.hint_char1() hop.hint_char1()
end, end,
}) })

View file

@ -8,69 +8,69 @@ keymap.set("n", "gr", lsp.buf.references)
keymap.set("n", "[d", diagnostic.goto_prev) keymap.set("n", "[d", diagnostic.goto_prev)
keymap.set("n", "]d", diagnostic.goto_next) keymap.set("n", "]d", diagnostic.goto_next)
diagnostic.config { diagnostic.config({
signs = false, signs = false,
} })
local lspconfig = require("lspconfig") local lspconfig = require("lspconfig")
local capabilities = require("cmp_nvim_lsp").default_capabilities() local capabilities = require("cmp_nvim_lsp").default_capabilities()
lspconfig.pylsp.setup { capabilities = capabilities } lspconfig.pylsp.setup({ capabilities = capabilities })
lspconfig.clangd.setup { capabilities = capabilities } lspconfig.clangd.setup({ capabilities = capabilities })
lspconfig.vimls.setup { capabilities = capabilities } lspconfig.vimls.setup({ capabilities = capabilities })
lspconfig.bashls.setup { capabilities = capabilities } lspconfig.bashls.setup({ capabilities = capabilities })
lspconfig.rust_analyzer.setup { lspconfig.rust_analyzer.setup({
capabilities = capabilities, capabilities = capabilities,
} })
lspconfig.gopls.setup { lspconfig.gopls.setup({
settings = { settings = {
gopls = { gopls = {
analyses = { analyses = {
unusedparams = true, unusedparams = true,
}, },
staticcheck = true, staticcheck = true,
gofumpt = true, gofumpt = true,
} },
}, },
capabilities = capabilities, capabilities = capabilities,
} })
lspconfig.lua_ls.setup { lspconfig.lua_ls.setup({
capabilities = capabilities, capabilities = capabilities,
on_init = function(client) on_init = function(client)
if client.workspace_folders then if client.workspace_folders then
local path = client.workspace_folders[1].name local path = client.workspace_folders[1].name
if vim.uv.fs_stat(path..'/.luarc.json') or vim.uv.fs_stat(path..'/.luarc.jsonc') then if vim.uv.fs_stat(path .. "/.luarc.json") or vim.uv.fs_stat(path .. "/.luarc.jsonc") then
return return
end end
end end
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, { client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
runtime = { runtime = {
-- Tell the language server which version of Lua you're using -- Tell the language server which version of Lua you're using
-- (most likely LuaJIT in the case of Neovim) -- (most likely LuaJIT in the case of Neovim)
version = 'LuaJIT' version = "LuaJIT",
}, },
-- Make the server aware of Neovim runtime files -- Make the server aware of Neovim runtime files
workspace = { workspace = {
checkThirdParty = false, checkThirdParty = false,
library = { library = {
vim.env.VIMRUNTIME vim.env.VIMRUNTIME,
-- Depending on the usage, you might want to add additional paths here. -- Depending on the usage, you might want to add additional paths here.
-- "${3rd}/luv/library" -- "${3rd}/luv/library"
-- "${3rd}/busted/library", -- "${3rd}/busted/library",
} },
-- or pull in all of 'runtimepath'. NOTE: this is a lot slower -- or pull in all of 'runtimepath'. NOTE: this is a lot slower
-- library = vim.api.nvim_get_runtime_file("", true) -- library = vim.api.nvim_get_runtime_file("", true)
} },
}) })
end, end,
settings = { settings = {
Lua = {} Lua = {},
} },
} })
lspconfig.nixd.setup { capabilities = capabilities } lspconfig.nixd.setup({ capabilities = capabilities })
lspconfig.sqls.setup { capabilities = capabilities } lspconfig.sqls.setup({ capabilities = capabilities })
lspconfig.hls.setup { capabilities = capabilities } lspconfig.hls.setup({ capabilities = capabilities })

View file

@ -1,54 +1,54 @@
local cmp = require("cmp") local cmp = require("cmp")
local luasnip = require("luasnip"); local luasnip = require("luasnip")
cmp.setup { cmp.setup({
snippet = { snippet = {
expand = function(args) expand = function(args)
require('luasnip').lsp_expand(args.body) require("luasnip").lsp_expand(args.body)
end, end,
}, },
mapping = { mapping = {
["<C-h"] = cmp.mapping.abort(), ["<C-h"] = cmp.mapping.abort(),
["<C-k>"] = cmp.mapping(function(fallback) ["<C-k>"] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
if luasnip.expandable() then if luasnip.expandable() then
luasnip.expand() luasnip.expand()
else else
cmp.confirm({ cmp.confirm({
select = true, select = true,
}) })
end end
else else
fallback() fallback()
end end
end), end),
["<C-n>"] = cmp.mapping(function(fallback) ["<C-n>"] = cmp.mapping(function(fallback)
if luasnip.locally_jumpable(1) then if luasnip.locally_jumpable(1) then
luasnip.jump(1) luasnip.jump(1)
elseif cmp.visible() then elseif cmp.visible() then
cmp.select_next_item() cmp.select_next_item()
else else
fallback() fallback()
end end
end, { "i", "s" }), end, { "i", "s" }),
["<C-p>"] = cmp.mapping(function(fallback) ["<C-p>"] = cmp.mapping(function(fallback)
if luasnip.locally_jumpable(-1) then if luasnip.locally_jumpable(-1) then
luasnip.jump(-1) luasnip.jump(-1)
elseif cmp.visible() then elseif cmp.visible() then
cmp.select_prev_item() cmp.select_prev_item()
else else
fallback() fallback()
end end
end, { "i", "s" }), end, { "i", "s" }),
}, },
sources = cmp.config.sources ({ sources = cmp.config.sources({
{ name = "nvim_lsp" }, { name = "nvim_lsp" },
{ name = "luasnip" }, { name = "luasnip" },
}, { }, {
{ name = "buffer" }, { name = "buffer" },
{ name = "path" }, { name = "path" },
}) }),
} })

View file

@ -1,99 +1,99 @@
-- Bootstrap lazy.nvim -- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git" local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({ vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" }, { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" }, { out, "WarningMsg" },
{ "\nPress any key to exit..." }, { "\nPress any key to exit..." },
}, true, {}) }, true, {})
vim.fn.getchar() vim.fn.getchar()
os.exit(1) os.exit(1)
end end
end end
vim.opt.rtp:prepend(lazypath) vim.opt.rtp:prepend(lazypath)
vim.g.mapleader = "," vim.g.mapleader = ","
local plugin_specs = { local plugin_specs = {
{ {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
build = ":TSUpdate", build = ":TSUpdate",
event = "VeryLazy", event = "VeryLazy",
}, },
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
event = { "BufRead", "BufNewFile" }, event = { "BufRead", "BufNewFile" },
config = function() config = function()
require("config.lsp") require("config.lsp")
end, end,
}, },
{ {
"hrsh7th/nvim-cmp", "hrsh7th/nvim-cmp",
event = 'VeryLazy', event = "VeryLazy",
dependencies = { dependencies = {
"hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-path", "hrsh7th/cmp-path",
"hrsh7th/cmp-buffer", "hrsh7th/cmp-buffer",
"hrsh7th/cmp-omni", "hrsh7th/cmp-omni",
"hrsh7th/cmp-cmdline", "hrsh7th/cmp-cmdline",
"saadparwaiz1/cmp_luasnip", "saadparwaiz1/cmp_luasnip",
}, },
config = function() config = function()
require("config.nvim-cmp") require("config.nvim-cmp")
end, end,
}, },
{ {
"L3MON4D3/LuaSnip", "L3MON4D3/LuaSnip",
version = "v2.*", version = "v2.*",
build = "make install_jsregexp", build = "make install_jsregexp",
}, },
{ "stevearc/dressing.nvim", event = "VeryLazy" }, { "stevearc/dressing.nvim", event = "VeryLazy" },
{ {
"nvim-tree/nvim-tree.lua", "nvim-tree/nvim-tree.lua",
lazy = false, lazy = false,
dependencies = { dependencies = {
"nvim-tree/nvim-web-devicons", "nvim-tree/nvim-web-devicons",
}, },
}, },
{ {
"ibhagwan/fzf-lua", "ibhagwan/fzf-lua",
dependencies = { "nvim-tree/nvim-web-devicons" }, dependencies = { "nvim-tree/nvim-web-devicons" },
config = function() config = function()
require("config.fzf") require("config.fzf")
end, end,
}, },
{ "windwp/nvim-autopairs", event = "InsertEnter", config = true }, { "windwp/nvim-autopairs", event = "InsertEnter", config = true },
{ "tpope/vim-commentary", event = "VeryLazy" }, { "tpope/vim-commentary", event = "VeryLazy" },
{ "folke/tokyonight.nvim", lazy = false, priority = 1000 }, { "folke/tokyonight.nvim", lazy = false, priority = 1000 },
{ "lewis6991/gitsigns.nvim"}, { "lewis6991/gitsigns.nvim" },
{ "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons" } }, { "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons" } },
{ {
'smoka7/hop.nvim', "smoka7/hop.nvim",
version = "*", version = "*",
config = function() config = function()
require("config.hop") require("config.hop")
end, end,
}, },
{ "cocopon/iceberg.vim" } { "cocopon/iceberg.vim" },
} }
require("lazy").setup({ require("lazy").setup({
spec = plugin_specs, spec = plugin_specs,
rocks = { enabled = true }, rocks = { enabled = true },
}) })