Compare commits
27 Commits
disko
...
feat/flaki
| Author | SHA1 | Date | |
|---|---|---|---|
| 318524004b | |||
| 799348ff91 | |||
| 52bf665774 | |||
| 4f011cf8ef | |||
| 1b57185b72 | |||
| a3437b04e8 | |||
| 59e4821b4c | |||
| 9a4c8df398 | |||
| 7c36539033 | |||
| b25fc9a2b8 | |||
| 7bbd0dd8a8 | |||
| 07e4669bb8 | |||
| 203665a051 | |||
| 431fa046be | |||
| 83464117ae | |||
| c8cf7aa5ca | |||
| 0ad84eed45 | |||
| 811388006f | |||
| fc7e346f1e | |||
| 0da72e9513 | |||
| 749bd75992 | |||
| 54b228381d | |||
| ee62f092e5 | |||
| 6007760092 | |||
| f8fddbba14 | |||
| f824649f85 | |||
| c4fe75a1b9 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@
|
||||
result
|
||||
result-*
|
||||
|
||||
nixos-efi-vars.fd
|
||||
|
||||
14
README.md
14
README.md
@@ -1,9 +1,15 @@
|
||||
# nixos
|
||||
|
||||
My NixOS config
|
||||
## Set up virtual machine ([`disko`](https://github.com/nix-community/disko/blob/master/docs/interactive-vm.md))
|
||||
|
||||
1. Build the virtual machine
|
||||
|
||||
```
|
||||
git clone https://git.hektormisplon.xyz/hektor/nix.git
|
||||
cd nix
|
||||
sudo nix run 'github:nix-community/disko/latest#disko-install' -- --flake .#vm --disk root /dev/vda
|
||||
nix build -L '.#nixosConfigurations.vm.config.system.build.vmWithDisko'
|
||||
```
|
||||
|
||||
2. Run the virtual machine
|
||||
|
||||
```
|
||||
./result/bin/disko-vm
|
||||
```
|
||||
|
||||
6
dots/.config/nvim/README.md
Normal file
6
dots/.config/nvim/README.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# Neovim configuration
|
||||
|
||||
My neovim configuration. Available as a Nix flake [^nixcats]. When installing manually,
|
||||
`paq.nvim` is used as a fallback plugin manager.
|
||||
|
||||
[^nixcats] Based on [this nixCats `example` template](https://github.com/BirdeeHub/nixCats-nvim/tree/77dffad8235eb77684fcb7599487c8e9f23d5b8f/templates/example)
|
||||
162
dots/.config/nvim/flake.lock
generated
Normal file
162
dots/.config/nvim/flake.lock
generated
Normal file
@@ -0,0 +1,162 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixCats": {
|
||||
"locked": {
|
||||
"lastModified": 1759730664,
|
||||
"narHash": "sha256-boRlBQ/c4CaHsK/z04QL6+t81mcar37Io94HBX2GflY=",
|
||||
"owner": "BirdeeHub",
|
||||
"repo": "nixCats-nvim",
|
||||
"rev": "77dffad8235eb77684fcb7599487c8e9f23d5b8f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "BirdeeHub",
|
||||
"repo": "nixCats-nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1760256791,
|
||||
"narHash": "sha256-uTpzDHRASEDeFUuToWSQ46Re8beXyG9dx4W36FQa0/c=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "832e3b6db48508ae436c2c7bfc0cf914eac6938e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-beancount-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1707748314,
|
||||
"narHash": "sha256-LuACGVB3kiaiJqoGtvFy6kbPNtqoGliKLDeR+Z7Wzbw=",
|
||||
"owner": "polarmutex",
|
||||
"repo": "beancount.nvim",
|
||||
"rev": "869564aba3087ee5df8f282aa37555e314aa2152",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "polarmutex",
|
||||
"repo": "beancount.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-crazy-node-movement": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1693654676,
|
||||
"narHash": "sha256-hQcQEp39zFN2zphMfcr97yRVcuHhBsSkzKO7XNloDpQ=",
|
||||
"owner": "theHamsta",
|
||||
"repo": "crazy-node-movement",
|
||||
"rev": "d5cf01cc44c5715501d3d6fe439af7c8b7fa5df2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "theHamsta",
|
||||
"repo": "crazy-node-movement",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-helm-ls-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1757598429,
|
||||
"narHash": "sha256-nzuJxAAaEmuVYg9k0B8OKslxsihhg6RKlhz6E7xJTQU=",
|
||||
"owner": "qvalentin",
|
||||
"repo": "helm-ls.nvim",
|
||||
"rev": "f36ecbd3e7b0b2ac8358a9d6a3213888e29943db",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "qvalentin",
|
||||
"repo": "helm-ls.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-mcphub-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1759035242,
|
||||
"narHash": "sha256-I6EbgY/2sAdtrxtmH0qbAAQvMCHhOsfolJfblV0fXOk=",
|
||||
"owner": "ravitemer",
|
||||
"repo": "mcphub.nvim",
|
||||
"rev": "8ff40b5edc649959bb7e89d25ae18e055554859a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ravitemer",
|
||||
"repo": "mcphub.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-nvimkit-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1721393835,
|
||||
"narHash": "sha256-MdmrhLHMxrn6upu1chjKyitPZ5WkCQtpI465AKJXDOA=",
|
||||
"owner": "jamesblckwell",
|
||||
"repo": "nvimkit.nvim",
|
||||
"rev": "af363d22699760f66988e8d36539a5753039217a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "jamesblckwell",
|
||||
"repo": "nvimkit.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-shipwright-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1711725275,
|
||||
"narHash": "sha256-xh/2m//Cno5gPucjOYih79wVZj3X1Di/U3/IQhKXjc0=",
|
||||
"owner": "rktjmp",
|
||||
"repo": "shipwright.nvim",
|
||||
"rev": "e596ab48328c31873f4f4d2e070243bf9de16ff3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rktjmp",
|
||||
"repo": "shipwright.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-tailwind-fold-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1752559116,
|
||||
"narHash": "sha256-8uefZIVsn9USEd6FyiO3m3TRKAS/vigU4t9Tk5ijd3c=",
|
||||
"owner": "razak17",
|
||||
"repo": "tailwind-fold.nvim",
|
||||
"rev": "d9e7ca11691d252b35795726dff087bf013b2ebf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "razak17",
|
||||
"repo": "tailwind-fold.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixCats": "nixCats",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"plugins-beancount-nvim": "plugins-beancount-nvim",
|
||||
"plugins-crazy-node-movement": "plugins-crazy-node-movement",
|
||||
"plugins-helm-ls-nvim": "plugins-helm-ls-nvim",
|
||||
"plugins-mcphub-nvim": "plugins-mcphub-nvim",
|
||||
"plugins-nvimkit-nvim": "plugins-nvimkit-nvim",
|
||||
"plugins-shipwright-nvim": "plugins-shipwright-nvim",
|
||||
"plugins-tailwind-fold-nvim": "plugins-tailwind-fold-nvim"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
212
dots/.config/nvim/flake.nix
Normal file
212
dots/.config/nvim/flake.nix
Normal file
@@ -0,0 +1,212 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
nixCats.url = "github:BirdeeHub/nixCats-nvim";
|
||||
|
||||
plugins-shipwright-nvim = {
|
||||
url = "github:rktjmp/shipwright.nvim";
|
||||
flake = false;
|
||||
};
|
||||
plugins-crazy-node-movement = {
|
||||
url = "github:theHamsta/crazy-node-movement";
|
||||
flake = false;
|
||||
};
|
||||
plugins-beancount-nvim = {
|
||||
url = "github:polarmutex/beancount.nvim";
|
||||
flake = false;
|
||||
};
|
||||
plugins-tailwind-fold-nvim = {
|
||||
url = "github:razak17/tailwind-fold.nvim";
|
||||
flake = false;
|
||||
};
|
||||
plugins-nvimkit-nvim = {
|
||||
url = "github:jamesblckwell/nvimkit.nvim";
|
||||
flake = false;
|
||||
};
|
||||
plugins-mcphub-nvim = {
|
||||
url = "github:ravitemer/mcphub.nvim";
|
||||
flake = false;
|
||||
};
|
||||
plugins-helm-ls-nvim = {
|
||||
url = "github:qvalentin/helm-ls.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
nixCats,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
inherit (nixCats) utils;
|
||||
luaPath = ./.;
|
||||
forEachSystem = utils.eachSystem nixpkgs.lib.platforms.all;
|
||||
extra_pkg_config = { };
|
||||
|
||||
dependencyOverlays = [
|
||||
(utils.standardPluginOverlay inputs)
|
||||
];
|
||||
|
||||
categoryDefinitions =
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
lspsAndRuntimeDeps = with pkgs; {
|
||||
general = [
|
||||
tree-sitter
|
||||
];
|
||||
};
|
||||
|
||||
startupPlugins = {
|
||||
general = with pkgs.vimPlugins; [
|
||||
eyeliner-nvim
|
||||
fzf-lua
|
||||
ltex_extra-nvim
|
||||
nvim-lspconfig
|
||||
lsp_lines-nvim
|
||||
lsp-progress-nvim
|
||||
neodev-nvim
|
||||
SchemaStore-nvim
|
||||
nvim-lint
|
||||
conform-nvim
|
||||
luasnip
|
||||
cmp_luasnip
|
||||
nvim-cmp
|
||||
cmp-nvim-lsp
|
||||
cmp-buffer
|
||||
cmp-path
|
||||
plenary-nvim
|
||||
nui-nvim
|
||||
trouble-nvim
|
||||
pkgs.neovimPlugins.shipwright-nvim
|
||||
lush-nvim
|
||||
zenbones-nvim
|
||||
pkgs.neovimPlugins.crazy-node-movement
|
||||
nvim-treesitter.withAllGrammars
|
||||
nvim-treesitter-textobjects
|
||||
# nvim-treesitter-context
|
||||
nvim-ts-context-commentstring
|
||||
treesj
|
||||
sniprun
|
||||
gitsigns-nvim
|
||||
nvim-highlight-colors
|
||||
pkgs.neovimPlugins.tailwind-fold-nvim
|
||||
auto-session
|
||||
nvim-dbee
|
||||
image-nvim
|
||||
pkgs.neovimPlugins.beancount-nvim
|
||||
pkgs.neovimPlugins.nvimkit-nvim
|
||||
codecompanion-nvim
|
||||
pkgs.neovimPlugins.mcphub-nvim
|
||||
copilot-lua
|
||||
copilot-cmp
|
||||
pkgs.neovimPlugins.helm-ls-nvim
|
||||
];
|
||||
};
|
||||
|
||||
optionalPlugins = {
|
||||
general = with pkgs.vimPlugins; [
|
||||
];
|
||||
};
|
||||
|
||||
sharedLibraries = {
|
||||
general = [ ];
|
||||
};
|
||||
|
||||
environmentVariables = { };
|
||||
};
|
||||
|
||||
packageDefinitions = {
|
||||
nvim =
|
||||
{ ... }:
|
||||
{
|
||||
settings = {
|
||||
suffix-path = true;
|
||||
suffix-LD = true;
|
||||
wrapRc = true;
|
||||
aliases = [ "vim" ];
|
||||
};
|
||||
categories = {
|
||||
general = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
defaultPackageName = "nvim";
|
||||
in
|
||||
|
||||
forEachSystem (
|
||||
system:
|
||||
let
|
||||
nixCatsBuilder = utils.baseBuilder luaPath {
|
||||
inherit
|
||||
nixpkgs
|
||||
system
|
||||
dependencyOverlays
|
||||
extra_pkg_config
|
||||
;
|
||||
} categoryDefinitions packageDefinitions;
|
||||
defaultPackage = nixCatsBuilder defaultPackageName;
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
in
|
||||
{
|
||||
packages = utils.mkAllWithDefault defaultPackage;
|
||||
|
||||
devShells = {
|
||||
default = pkgs.mkShell {
|
||||
name = defaultPackageName;
|
||||
packages = [ defaultPackage ];
|
||||
inputsFrom = [ ];
|
||||
shellHook = '''';
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
)
|
||||
// (
|
||||
let
|
||||
nixosModule = utils.mkNixosModules {
|
||||
moduleNamespace = [ defaultPackageName ];
|
||||
inherit
|
||||
defaultPackageName
|
||||
dependencyOverlays
|
||||
luaPath
|
||||
categoryDefinitions
|
||||
packageDefinitions
|
||||
extra_pkg_config
|
||||
nixpkgs
|
||||
;
|
||||
};
|
||||
homeModule = utils.mkHomeModules {
|
||||
moduleNamespace = [ defaultPackageName ];
|
||||
inherit
|
||||
defaultPackageName
|
||||
dependencyOverlays
|
||||
luaPath
|
||||
categoryDefinitions
|
||||
packageDefinitions
|
||||
extra_pkg_config
|
||||
nixpkgs
|
||||
;
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
overlays = utils.makeOverlays luaPath {
|
||||
inherit nixpkgs dependencyOverlays extra_pkg_config;
|
||||
} categoryDefinitions packageDefinitions defaultPackageName;
|
||||
|
||||
nixosModules.default = nixosModule;
|
||||
homeModules.default = homeModule;
|
||||
|
||||
inherit utils nixosModule homeModule;
|
||||
inherit (utils) templates;
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
@@ -1,9 +1,12 @@
|
||||
require("nixCatsUtils").setup({ non_nix_value = true }) -- https://github.com/BirdeeHub/nixCats-nvim/blob/77dffad8235eb77684fcb7599487c8e9f23d5b8f/templates/example/init.lua
|
||||
|
||||
require("vim")
|
||||
require("ftdetect")
|
||||
require("keymaps")
|
||||
require("highlight")
|
||||
require("paq-setup")
|
||||
require("diagnostic")
|
||||
|
||||
require("paq-setup") -- when not on nixCats
|
||||
|
||||
-- vim.opt.background = "dark"
|
||||
-- vim.opt.laststatus = 3
|
||||
|
||||
53
dots/.config/nvim/lua/nixCatsUtils/catPacker.lua
Normal file
53
dots/.config/nvim/lua/nixCatsUtils/catPacker.lua
Normal file
@@ -0,0 +1,53 @@
|
||||
-- Source: https://github.com/BirdeeHub/nixCats-nvim/blob/main/templates/example/lua/nixCatsUtils/catPacker.lua
|
||||
--[[
|
||||
This directory is the luaUtils template.
|
||||
You can choose what things from it that you would like to use.
|
||||
And then delete the rest.
|
||||
Everything in this directory is optional.
|
||||
--]]
|
||||
|
||||
local M = {}
|
||||
-- NOTE: This function is for defining a paq.nvim fallback method of downloading plugins
|
||||
-- when nixCats was not used to install your config.
|
||||
-- If you only ever load your config using nixCats, you don't need this file.
|
||||
|
||||
-- it literally just only runs it when not on nixCats
|
||||
-- all neovim package managers that use the regular plugin loading scheme
|
||||
-- can be used this way, just do whatever the plugin manager needs to put it in the
|
||||
-- opt directory for lazy loading, and add the build steps so that when theres no nix the steps are ran
|
||||
function M.setup(v)
|
||||
if not vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] then
|
||||
local function clone_paq()
|
||||
local path = vim.fn.stdpath("data") .. "/site/pack/paqs/start/paq-nvim"
|
||||
local is_installed = vim.fn.empty(vim.fn.glob(path)) == 0
|
||||
if not is_installed then
|
||||
vim.fn.system({ "git", "clone", "--depth=1", "https://github.com/savq/paq-nvim.git", path })
|
||||
return true
|
||||
end
|
||||
end
|
||||
local function bootstrap_paq(packages)
|
||||
local first_install = clone_paq()
|
||||
vim.cmd.packadd("paq-nvim")
|
||||
local paq = require("paq")
|
||||
if first_install then
|
||||
vim.notify("Installing plugins... If prompted, hit Enter to continue.")
|
||||
end
|
||||
paq(packages)
|
||||
paq.install()
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
once = true,
|
||||
callback = function()
|
||||
local pkgs_count = #require("paq").query("to_install")
|
||||
if pkgs_count < 1 then
|
||||
return
|
||||
end
|
||||
vim.notify(string.format("There are %d to install", pkgs_count))
|
||||
end,
|
||||
})
|
||||
|
||||
bootstrap_paq(vim.list_extend({ "savq/paq-nvim" }, v))
|
||||
end
|
||||
end
|
||||
return M
|
||||
136
dots/.config/nvim/lua/nixCatsUtils/init.lua
Normal file
136
dots/.config/nvim/lua/nixCatsUtils/init.lua
Normal file
@@ -0,0 +1,136 @@
|
||||
-- Source: https://github.com/BirdeeHub/nixCats-nvim/blob/main/templates/example/lua/nixCatsUtils/init.lua
|
||||
--[[
|
||||
This directory is the luaUtils template.
|
||||
You can choose what things from it that you would like to use.
|
||||
And then delete the rest.
|
||||
Everything in this directory is optional.
|
||||
--]]
|
||||
|
||||
local M = {}
|
||||
|
||||
--[[
|
||||
This file is for making your config still work WITHOUT nixCats.
|
||||
When you don't use nixCats to load your config,
|
||||
you wont have the nixCats plugin.
|
||||
|
||||
The setup function defined here defines a mock nixCats plugin when nixCats wasnt used to load the config.
|
||||
This will help avoid indexing errors when the nixCats plugin doesnt exist.
|
||||
|
||||
NOTE: If you only ever use nixCats to load your config, you don't need this file.
|
||||
--]]
|
||||
|
||||
---@type boolean
|
||||
M.isNixCats = vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] ~= nil
|
||||
|
||||
---@class nixCatsSetupOpts
|
||||
---@field non_nix_value boolean|nil
|
||||
|
||||
---This function will setup a mock nixCats plugin when not using nix
|
||||
---It will help prevent you from running into indexing errors without a nixCats plugin from nix.
|
||||
---If you loaded the config via nix, it does nothing
|
||||
---non_nix_value defaults to true if not provided or is not a boolean.
|
||||
---@param v nixCatsSetupOpts
|
||||
function M.setup(v)
|
||||
if not M.isNixCats then
|
||||
local nixCats_default_value
|
||||
if type(v) == "table" and type(v.non_nix_value) == "boolean" then
|
||||
nixCats_default_value = v.non_nix_value
|
||||
else
|
||||
nixCats_default_value = true
|
||||
end
|
||||
local mk_with_meta = function(tbl)
|
||||
return setmetatable(tbl, {
|
||||
__call = function(_, attrpath)
|
||||
local strtable = {}
|
||||
if type(attrpath) == "table" then
|
||||
strtable = attrpath
|
||||
elseif type(attrpath) == "string" then
|
||||
for key in attrpath:gmatch("([^%.]+)") do
|
||||
table.insert(strtable, key)
|
||||
end
|
||||
else
|
||||
print("function requires a table of strings or a dot separated string")
|
||||
return
|
||||
end
|
||||
return vim.tbl_get(tbl, unpack(strtable))
|
||||
end,
|
||||
})
|
||||
end
|
||||
package.preload["nixCats"] = function()
|
||||
local ncsub = {
|
||||
get = function(_)
|
||||
return nixCats_default_value
|
||||
end,
|
||||
cats = mk_with_meta({
|
||||
nixCats_config_location = vim.fn.stdpath("config"),
|
||||
wrapRc = false,
|
||||
}),
|
||||
settings = mk_with_meta({
|
||||
nixCats_config_location = vim.fn.stdpath("config"),
|
||||
configDirName = os.getenv("NVIM_APPNAME") or "nvim",
|
||||
wrapRc = false,
|
||||
}),
|
||||
petShop = mk_with_meta({}),
|
||||
extra = mk_with_meta({}),
|
||||
pawsible = mk_with_meta({
|
||||
allPlugins = {
|
||||
start = {},
|
||||
opt = {},
|
||||
},
|
||||
}),
|
||||
configDir = vim.fn.stdpath("config"),
|
||||
packageBinPath = os.getenv("NVIM_WRAPPER_PATH_NIX") or vim.v.progpath,
|
||||
}
|
||||
return setmetatable(ncsub, {
|
||||
__call = function(_, cat)
|
||||
return ncsub.get(cat)
|
||||
end,
|
||||
})
|
||||
end
|
||||
_G.nixCats = require("nixCats")
|
||||
end
|
||||
end
|
||||
|
||||
---allows you to guarantee a boolean is returned, and also declare a different
|
||||
---default value than specified in setup when not using nix to load the config
|
||||
---@overload fun(v: string|string[]): boolean
|
||||
---@overload fun(v: string|string[], default: boolean): boolean
|
||||
function M.enableForCategory(v, default)
|
||||
if M.isNixCats or default == nil then
|
||||
if nixCats(v) then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
else
|
||||
return default
|
||||
end
|
||||
end
|
||||
|
||||
---if nix, return value of nixCats(v) else return default
|
||||
---Exists to specify a different non_nix_value than the one in setup()
|
||||
---@param v string|string[]
|
||||
---@param default any
|
||||
---@return any
|
||||
function M.getCatOrDefault(v, default)
|
||||
if M.isNixCats then
|
||||
return nixCats(v)
|
||||
else
|
||||
return default
|
||||
end
|
||||
end
|
||||
|
||||
---for conditionally disabling build steps on nix, as they are done via nix
|
||||
---I should probably have named it dontAddIfCats or something.
|
||||
---@overload fun(v: any): any|nil
|
||||
---Will return the second value if nix, otherwise the first
|
||||
---@overload fun(v: any, o: any): any
|
||||
function M.lazyAdd(v, o)
|
||||
if M.isNixCats then
|
||||
return o
|
||||
else
|
||||
return v
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
@@ -1,38 +1,4 @@
|
||||
-- Automate paq installation {{{
|
||||
local function clone_paq()
|
||||
local path = vim.fn.stdpath("data") .. "/site/pack/paqs/start/paq-nvim"
|
||||
local is_installed = vim.fn.empty(vim.fn.glob(path)) == 0
|
||||
if not is_installed then
|
||||
vim.fn.system({ "git", "clone", "--depth=1", "https://github.com/savq/paq-nvim.git", path })
|
||||
return true
|
||||
end
|
||||
end
|
||||
local function bootstrap_paq(packages)
|
||||
local first_install = clone_paq()
|
||||
vim.cmd.packadd("paq-nvim")
|
||||
local paq = require("paq")
|
||||
if first_install then
|
||||
vim.notify("Installing plugins... If prompted, hit Enter to continue.")
|
||||
end
|
||||
paq(packages)
|
||||
paq.install()
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
once = true,
|
||||
callback = function()
|
||||
local pkgs_count = #require("paq").query("to_install")
|
||||
if pkgs_count < 1 then
|
||||
return
|
||||
end
|
||||
vim.notify(string.format("There are %d to install", pkgs_count))
|
||||
end,
|
||||
})
|
||||
|
||||
-- }}}
|
||||
|
||||
-- Set up paq plugins {{{
|
||||
bootstrap_paq({
|
||||
require("nixCatsUtils.catPacker").setup({
|
||||
{ "savq/paq-nvim" },
|
||||
{ "jinh0/eyeliner.nvim" },
|
||||
{ "ibhagwan/fzf-lua" },
|
||||
@@ -77,4 +43,3 @@ bootstrap_paq({
|
||||
{ "zbirenbaum/copilot-cmp" },
|
||||
{ "qvalentin/helm-ls.nvim", ft = "helm" },
|
||||
})
|
||||
-- }}}
|
||||
|
||||
160
flake.lock
generated
160
flake.lock
generated
@@ -42,13 +42,28 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixCats": {
|
||||
"locked": {
|
||||
"lastModified": 1759730664,
|
||||
"narHash": "sha256-boRlBQ/c4CaHsK/z04QL6+t81mcar37Io94HBX2GflY=",
|
||||
"owner": "BirdeeHub",
|
||||
"repo": "nixCats-nvim",
|
||||
"rev": "77dffad8235eb77684fcb7599487c8e9f23d5b8f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "BirdeeHub",
|
||||
"repo": "nixCats-nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1759439645,
|
||||
"narHash": "sha256-oiAyQaRilPk525Z5aTtTNWNzSrcdJ7IXM0/PL3CGlbI=",
|
||||
"lastModified": 1760423683,
|
||||
"narHash": "sha256-Tb+NYuJhWZieDZUxN6PgglB16yuqBYQeMJyYBGCXlt8=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "879bd460b3d3e8571354ce172128fbcbac1ed633",
|
||||
"rev": "a493e93b4a259cd9fea8073f89a7ed9b1c5a1da2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -58,11 +73,148 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nvim": {
|
||||
"inputs": {
|
||||
"nixCats": "nixCats",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"plugins-beancount-nvim": "plugins-beancount-nvim",
|
||||
"plugins-crazy-node-movement": "plugins-crazy-node-movement",
|
||||
"plugins-helm-ls-nvim": "plugins-helm-ls-nvim",
|
||||
"plugins-mcphub-nvim": "plugins-mcphub-nvim",
|
||||
"plugins-nvimkit-nvim": "plugins-nvimkit-nvim",
|
||||
"plugins-shipwright-nvim": "plugins-shipwright-nvim",
|
||||
"plugins-tailwind-fold-nvim": "plugins-tailwind-fold-nvim"
|
||||
},
|
||||
"locked": {
|
||||
"path": "./dots/.config/nvim",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"path": "./dots/.config/nvim",
|
||||
"type": "path"
|
||||
},
|
||||
"parent": []
|
||||
},
|
||||
"plugins-beancount-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1707748314,
|
||||
"narHash": "sha256-LuACGVB3kiaiJqoGtvFy6kbPNtqoGliKLDeR+Z7Wzbw=",
|
||||
"owner": "polarmutex",
|
||||
"repo": "beancount.nvim",
|
||||
"rev": "869564aba3087ee5df8f282aa37555e314aa2152",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "polarmutex",
|
||||
"repo": "beancount.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-crazy-node-movement": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1693654676,
|
||||
"narHash": "sha256-hQcQEp39zFN2zphMfcr97yRVcuHhBsSkzKO7XNloDpQ=",
|
||||
"owner": "theHamsta",
|
||||
"repo": "crazy-node-movement",
|
||||
"rev": "d5cf01cc44c5715501d3d6fe439af7c8b7fa5df2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "theHamsta",
|
||||
"repo": "crazy-node-movement",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-helm-ls-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1757598429,
|
||||
"narHash": "sha256-nzuJxAAaEmuVYg9k0B8OKslxsihhg6RKlhz6E7xJTQU=",
|
||||
"owner": "qvalentin",
|
||||
"repo": "helm-ls.nvim",
|
||||
"rev": "f36ecbd3e7b0b2ac8358a9d6a3213888e29943db",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "qvalentin",
|
||||
"repo": "helm-ls.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-mcphub-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1759035242,
|
||||
"narHash": "sha256-I6EbgY/2sAdtrxtmH0qbAAQvMCHhOsfolJfblV0fXOk=",
|
||||
"owner": "ravitemer",
|
||||
"repo": "mcphub.nvim",
|
||||
"rev": "8ff40b5edc649959bb7e89d25ae18e055554859a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ravitemer",
|
||||
"repo": "mcphub.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-nvimkit-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1721393835,
|
||||
"narHash": "sha256-MdmrhLHMxrn6upu1chjKyitPZ5WkCQtpI465AKJXDOA=",
|
||||
"owner": "jamesblckwell",
|
||||
"repo": "nvimkit.nvim",
|
||||
"rev": "af363d22699760f66988e8d36539a5753039217a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "jamesblckwell",
|
||||
"repo": "nvimkit.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-shipwright-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1711725275,
|
||||
"narHash": "sha256-xh/2m//Cno5gPucjOYih79wVZj3X1Di/U3/IQhKXjc0=",
|
||||
"owner": "rktjmp",
|
||||
"repo": "shipwright.nvim",
|
||||
"rev": "e596ab48328c31873f4f4d2e070243bf9de16ff3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rktjmp",
|
||||
"repo": "shipwright.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plugins-tailwind-fold-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1752559116,
|
||||
"narHash": "sha256-8uefZIVsn9USEd6FyiO3m3TRKAS/vigU4t9Tk5ijd3c=",
|
||||
"owner": "razak17",
|
||||
"repo": "tailwind-fold.nvim",
|
||||
"rev": "d9e7ca11691d252b35795726dff087bf013b2ebf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "razak17",
|
||||
"repo": "tailwind-fold.nvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"disko": "disko",
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs"
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nvim": "nvim"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
35
flake.nix
35
flake.nix
@@ -3,28 +3,39 @@
|
||||
nixpkgs = {
|
||||
url = "github:nixos/nixpkgs?ref=nixos-25.05";
|
||||
};
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-25.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
disko = {
|
||||
url = "github:nix-community/disko/latest";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-25.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nvim = {
|
||||
url = "path:./dots/.config/nvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, disko, home-manager }: {
|
||||
nixosConfigurations.vm = nixpkgs.lib.nixosSystem {
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
disko,
|
||||
home-manager,
|
||||
nvim,
|
||||
}:
|
||||
{
|
||||
nixosConfigurations = {
|
||||
vm = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
./hosts/vm/configuration.nix
|
||||
disko.nixosModules.disko
|
||||
home-manager.nixosModules.home-manager {
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.h = ./hosts/vm/home.nix;
|
||||
}
|
||||
home-manager.nixosModules.home-manager
|
||||
./hosts/vm/configuration.nix
|
||||
{ environment.systemPackages = [ nvim.packages.x86_64-linux.nvim ]; }
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
{ pkgs, ... }:
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
system.stateVersion = "25.05";
|
||||
|
||||
imports =
|
||||
[
|
||||
imports = [
|
||||
./hard.nix
|
||||
./disk.nix
|
||||
../../modules/bootloader.nix
|
||||
@@ -16,26 +15,40 @@
|
||||
../../modules/x.nix
|
||||
];
|
||||
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
nix.settings.experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
|
||||
# These are needed for ZFS
|
||||
|
||||
networking.hostId = "25698a58";
|
||||
# https://discourse.nixos.org/t/zfs-with-disko-faluire-to-import-zfs-pool/61988/3
|
||||
boot = {
|
||||
zfs = {
|
||||
devNodes = "/dev/disk/by-uuid";
|
||||
};
|
||||
disko = {
|
||||
devices.disk.main.device = "/dev/vda";
|
||||
devices.disk.main.imageName = "nixos-vm";
|
||||
devices.disk.main.imageSize = "32G";
|
||||
};
|
||||
|
||||
programs.git.enable = true;
|
||||
programs.firefox.enable = true;
|
||||
virtualisation.vmVariantWithDisko = {
|
||||
virtualisation = {
|
||||
cores = 8;
|
||||
memorySize = 16384;
|
||||
qemu.options = [
|
||||
"-enable-kvm"
|
||||
"-cpu host"
|
||||
"-nographic"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [ neovim ];
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users.h = ./home.nix;
|
||||
};
|
||||
|
||||
services.qemuGuest.enable = true;
|
||||
services.spice-vdagentd.enable = true;
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
startWhenNeeded = true;
|
||||
|
||||
@@ -1 +1,36 @@
|
||||
import ../../modules/disko.zfs-encrypted-root.nix
|
||||
{
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
boot = {
|
||||
size = "1M";
|
||||
type = "EF02"; # for grub MBR
|
||||
};
|
||||
ESP = {
|
||||
size = "1G";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = [ "umask=0077" ];
|
||||
};
|
||||
};
|
||||
root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "ext4";
|
||||
mountpoint = "/";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,14 +1,26 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||
imports = [
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ];
|
||||
boot.initrd.availableKernelModules = [
|
||||
"ahci"
|
||||
"xhci_pci"
|
||||
"virtio_pci"
|
||||
"sr_mod"
|
||||
"virtio_blk"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
@@ -6,7 +6,86 @@
|
||||
home.username = "h";
|
||||
home.homeDirectory = "/home/h";
|
||||
|
||||
home.file.".inputrc".source = ../../dots/.inputrc;
|
||||
programs = {
|
||||
bash = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
initExtra = ''
|
||||
for f in ${config.home.homeDirectory}/.bashrc.d/*; do
|
||||
[ -f "$f" ] && source "$f"
|
||||
done
|
||||
'';
|
||||
};
|
||||
firefox.enable = true;
|
||||
fzf = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
};
|
||||
git.enable = true;
|
||||
home-manager.enable = true;
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
home.packages = with pkgs; [
|
||||
bash-completion
|
||||
bash-language-server
|
||||
bat
|
||||
brightnessctl
|
||||
entr
|
||||
eslint_d
|
||||
feh
|
||||
firefox-devedition
|
||||
fzf
|
||||
git
|
||||
haskell-language-server
|
||||
haskellPackages.pandoc-crossref
|
||||
haskellPackages.hadolint
|
||||
htop
|
||||
iosevka
|
||||
jq
|
||||
keepassxc
|
||||
kitty
|
||||
lua-language-server
|
||||
# neovim
|
||||
nmap
|
||||
nodejs_24
|
||||
nodePackages.ts-node
|
||||
nvimpager
|
||||
ormolu
|
||||
pandoc
|
||||
parallel
|
||||
pass
|
||||
pnpm
|
||||
ripgrep
|
||||
silver-searcher
|
||||
sshfs
|
||||
stylelint
|
||||
svelte-language-server
|
||||
tailwindcss-language-server
|
||||
taskwarrior3
|
||||
tldr
|
||||
tmux
|
||||
tmuxp
|
||||
tree
|
||||
tree-sitter
|
||||
typescript-language-server
|
||||
unzip
|
||||
vim-language-server
|
||||
vimPlugins.vim-plug
|
||||
vtsls
|
||||
wget
|
||||
xbanish
|
||||
xclip
|
||||
yaml-language-server
|
||||
];
|
||||
|
||||
home.file = {
|
||||
".inputrc".source = ../../dots/.inputrc;
|
||||
".bashrc.d/prompt".source = ../../dots/.bashrc.d/prompt;
|
||||
".bashrc.d/editor".source = ../../dots/.bashrc.d/editor;
|
||||
".config/kitty/kitty.conf".source = ../../dots/.config/kitty/kitty.conf;
|
||||
".config/kitty/themes/zenwritten_light.conf".source =
|
||||
../../dots/.config/kitty/themes/zenwritten_light.conf;
|
||||
".config/kitty/themes/zenwritten_dark.conf".source =
|
||||
../../dots/.config/kitty/themes/zenwritten_dark.conf;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
|
||||
{
|
||||
networking.hostName = "nixos";
|
||||
networking.wireless = { iwd = { enable = true; }; };
|
||||
networking.wireless = {
|
||||
iwd = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [ 22 ];
|
||||
|
||||
Reference in New Issue
Block a user