wip: interface-like structure but im sadge on development with no type-safety
parent
e67a18e465
commit
1537fea0bd
|
@ -1,4 +1,4 @@
|
||||||
# Vim Plugins
|
# Offset Vim Plugins onto nix packer
|
||||||
|
|
||||||
The current [`scripts/vim.dsl`](../scripts/vim.dsl) grabs the upstream supported vim plugins
|
The current [`scripts/vim.dsl`](../scripts/vim.dsl) grabs the upstream supported vim plugins
|
||||||
onto a sqlite database to be stored in memory. We could perform some data exploration via this database
|
onto a sqlite database to be stored in memory. We could perform some data exploration via this database
|
||||||
|
|
199
flake.lock
199
flake.lock
|
@ -77,21 +77,18 @@
|
||||||
},
|
},
|
||||||
"devshell": {
|
"devshell": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
|
||||||
"std",
|
|
||||||
"flake-utils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"std",
|
"std",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
],
|
||||||
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1682700442,
|
"lastModified": 1686680692,
|
||||||
"narHash": "sha256-qjaAAcCYgp1pBBG7mY9z95ODUBZMtUpf0Qp3Gt/Wha0=",
|
"narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "devshell",
|
"repo": "devshell",
|
||||||
"rev": "fb6673fe9fe4409e3f43ca86968261e970918a83",
|
"rev": "fd6223370774dd9c33354e87a007004b5fd36442",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -117,10 +114,13 @@
|
||||||
},
|
},
|
||||||
"dmerge": {
|
"dmerge": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"haumea": "haumea_2",
|
"haumea": [
|
||||||
"namaka": "namaka",
|
"std",
|
||||||
|
"haumea"
|
||||||
|
],
|
||||||
"nixlib": [
|
"nixlib": [
|
||||||
"std",
|
"std",
|
||||||
|
"haumea",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"yants": [
|
"yants": [
|
||||||
|
@ -129,16 +129,16 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1684178600,
|
"lastModified": 1686862774,
|
||||||
"narHash": "sha256-EtSQcCHRQUBBEj4vbYU0vgPUYiKP261ero5k1QfQ3Bc=",
|
"narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=",
|
||||||
"owner": "divnix",
|
"owner": "divnix",
|
||||||
"repo": "dmerge",
|
"repo": "dmerge",
|
||||||
"rev": "ac9932f26325afac5baa59cf6478432d17762a4e",
|
"rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "divnix",
|
"owner": "divnix",
|
||||||
"ref": "0.2.0",
|
"ref": "0.2.1",
|
||||||
"repo": "dmerge",
|
"repo": "dmerge",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
@ -248,44 +248,19 @@
|
||||||
},
|
},
|
||||||
"haumea_2": {
|
"haumea_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs_4"
|
||||||
"std",
|
|
||||||
"dmerge",
|
|
||||||
"nixlib"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681176209,
|
"lastModified": 1685133229,
|
||||||
"narHash": "sha256-bJLDun6esIyWtwRVXcsgzGbh4UKu8wJDrPgykqPyzmg=",
|
"narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "haumea",
|
"repo": "haumea",
|
||||||
"rev": "b915b66b27da3a595d77b139e945bb0a2fcac926",
|
"rev": "34dd58385092a23018748b50f9b23de6266dffc2",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "haumea",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"haumea_3": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"std",
|
|
||||||
"paisano",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681176209,
|
|
||||||
"narHash": "sha256-bJLDun6esIyWtwRVXcsgzGbh4UKu8wJDrPgykqPyzmg=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "haumea",
|
|
||||||
"rev": "b915b66b27da3a595d77b139e945bb0a2fcac926",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
|
"ref": "v0.2.2",
|
||||||
"repo": "haumea",
|
"repo": "haumea",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
@ -333,6 +308,7 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixlib": [
|
"nixlib": [
|
||||||
"std",
|
"std",
|
||||||
|
"haumea",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -362,11 +338,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677330646,
|
"lastModified": 1685771919,
|
||||||
"narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=",
|
"narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=",
|
||||||
"owner": "nlewo",
|
"owner": "nlewo",
|
||||||
"repo": "nix2container",
|
"repo": "nix2container",
|
||||||
"rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc",
|
"rev": "95e2220911874064b5d809f8d35f7835184c4ddf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -375,57 +351,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"namaka": {
|
|
||||||
"inputs": {
|
|
||||||
"haumea": [
|
|
||||||
"std",
|
|
||||||
"dmerge",
|
|
||||||
"haumea"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"std",
|
|
||||||
"dmerge",
|
|
||||||
"nixlib"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1683059428,
|
|
||||||
"narHash": "sha256-ZTMqleCWmuNWhZE375gtF1j1JRkaKEUFN1AM43e7h4Y=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "namaka",
|
|
||||||
"rev": "2deba2f416454aec770bc1cc7365e39c73e6b1d7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"ref": "v0.1.1",
|
|
||||||
"repo": "namaka",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"namaka_2": {
|
|
||||||
"inputs": {
|
|
||||||
"haumea": [
|
|
||||||
"std",
|
|
||||||
"paisano",
|
|
||||||
"haumea"
|
|
||||||
],
|
|
||||||
"nixpkgs": "nixpkgs_5"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681604203,
|
|
||||||
"narHash": "sha256-oA/fW/85GmSNprghgAnZi0XeVMvW9xVuCYprzPw2hz0=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "namaka",
|
|
||||||
"rev": "1550ddc025334cff2e8ec9021256473b2ffb27e5",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "namaka",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixago": {
|
"nixago": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
"flake-utils": [
|
||||||
|
@ -504,11 +429,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1686592866,
|
"lastModified": 1686869522,
|
||||||
"narHash": "sha256-riGg89eWhXJcPNrQGcSwTEEm7CGxWC06oSX44hajeMw=",
|
"narHash": "sha256-tbJ9B8WLCTnVP/LwESRlg0dII6Zyg2LmUU/mB9Lu98E=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "0eeebd64de89e4163f4d3cf34ffe925a5cf67a05",
|
"rev": "7c67f006ea0e7d0265f16d7df07cc076fdffd91f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -519,6 +444,21 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681001314,
|
||||||
|
"narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1675940568,
|
"lastModified": 1675940568,
|
||||||
"narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=",
|
"narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=",
|
||||||
|
@ -534,22 +474,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1680758185,
|
|
||||||
"narHash": "sha256-sCVWwfnk7zEX8Z+OItiH+pcSklrlsLZ4TJTtnxAYREw=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "0e19daa510e47a40e06257e205965f3b96ce0ac9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_6": {
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1677063315,
|
"lastModified": 1677063315,
|
||||||
|
@ -695,8 +619,6 @@
|
||||||
},
|
},
|
||||||
"paisano_2": {
|
"paisano_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"haumea": "haumea_3",
|
|
||||||
"namaka": "namaka_2",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"std",
|
"std",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
|
@ -708,16 +630,16 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1685757649,
|
"lastModified": 1686862844,
|
||||||
"narHash": "sha256-gu21uo35i5OguZ5laGpqIFgVRcowbjvLn2mxSyNKZfQ=",
|
"narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=",
|
||||||
"owner": "paisano-nix",
|
"owner": "paisano-nix",
|
||||||
"repo": "core",
|
"repo": "core",
|
||||||
"rev": "db53b8a8e2e3e557bf5ec5842b7a52ee5de04e87",
|
"rev": "6674b3d3577212c1eeecd30d62d52edbd000e726",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "paisano-nix",
|
"owner": "paisano-nix",
|
||||||
"ref": "0.1.0",
|
"ref": "0.1.1",
|
||||||
"repo": "core",
|
"repo": "core",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
@ -786,6 +708,7 @@
|
||||||
"devshell": "devshell",
|
"devshell": "devshell",
|
||||||
"dmerge": "dmerge",
|
"dmerge": "dmerge",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
|
"haumea": "haumea_2",
|
||||||
"incl": "incl",
|
"incl": "incl",
|
||||||
"makes": [
|
"makes": [
|
||||||
"std",
|
"std",
|
||||||
|
@ -797,18 +720,18 @@
|
||||||
],
|
],
|
||||||
"n2c": "n2c",
|
"n2c": "n2c",
|
||||||
"nixago": "nixago",
|
"nixago": "nixago",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_5",
|
||||||
"paisano": "paisano_2",
|
"paisano": "paisano_2",
|
||||||
"paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor",
|
"paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor",
|
||||||
"paisano-tui": "paisano-tui",
|
"paisano-tui": "paisano-tui",
|
||||||
"yants": "yants_2"
|
"yants": "yants_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1686337240,
|
"lastModified": 1686890041,
|
||||||
"narHash": "sha256-JedAsyUIbSIhVrRWSl0R3lSWemVWsHg0w3MuzW7h4tg=",
|
"narHash": "sha256-yLucgr7q8o63yJHLd5b5rF/h27ktYTQrn9rYxVxrs3E=",
|
||||||
"owner": "divnix",
|
"owner": "divnix",
|
||||||
"repo": "std",
|
"repo": "std",
|
||||||
"rev": "1bd99cec90a5cee8575f45dbc193d6dd860a5f35",
|
"rev": "8671b6892e45d795d7409940750832d68c929dcf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -817,6 +740,21 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"utils": {
|
"utils": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1667395993,
|
"lastModified": 1667395993,
|
||||||
|
@ -858,15 +796,16 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"std",
|
"std",
|
||||||
|
"haumea",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1667096281,
|
"lastModified": 1686863218,
|
||||||
"narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=",
|
"narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=",
|
||||||
"owner": "divnix",
|
"owner": "divnix",
|
||||||
"repo": "yants",
|
"repo": "yants",
|
||||||
"rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c",
|
"rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
# Native configs
|
# Native configs
|
||||||
|
|
||||||
Contains all configurations that are written in their native language
|
Contains all configurations that are written in their native configuration language.
|
||||||
|
|
||||||
|
## Why native language?
|
||||||
|
|
||||||
|
- Easier portability
|
||||||
|
- Nix can read from [JSON](https://nixos.org/manual/nix/stable/language/builtins.html#builtins-fromJSON),
|
||||||
|
[TOML](https://nixos.org/manual/nix/stable/release-notes/rl-2.6.html#release-26-2022-01-24).
|
||||||
|
- We have also managed to hack together a [fromYaml](./../nix-conf/lib/serde/default.nix),
|
||||||
|
though it will not work for strictly pure builds or bootstrapping builds.
|
||||||
|
|
||||||
|
|
|
@ -293,12 +293,19 @@ vim.api.nvim_create_user_command(
|
||||||
|
|
||||||
-- telescope
|
-- telescope
|
||||||
local fb_actions = require "telescope".extensions.file_browser.actions
|
local fb_actions = require "telescope".extensions.file_browser.actions
|
||||||
|
local tel_actions = require("telescope.actions")
|
||||||
|
local tel_actionset = require("telescope.actions.set")
|
||||||
|
|
||||||
|
local function term_height()
|
||||||
|
return vim.opt.lines:get()
|
||||||
|
end
|
||||||
|
|
||||||
require('telescope').setup {
|
require('telescope').setup {
|
||||||
defaults = {
|
defaults = {
|
||||||
mappings = {
|
mappings = {
|
||||||
i = {
|
n = {
|
||||||
['<C-u>'] = false,
|
['<C-u>'] = function(prompt_bufnr) tel_actionset.shift_selection(prompt_bufnr, -math.floor(term_height() / 2)) end,
|
||||||
['<C-d>'] = false,
|
['<C-d>'] = function(prompt_bufnr) tel_actionset.shift_selection(prompt_bufnr, math.floor(term_height() / 2)) end,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -361,13 +368,13 @@ end, { desc = '[F]ind [A]ll files' })
|
||||||
|
|
||||||
remap('n', '<leader>fg', function()
|
remap('n', '<leader>fg', function()
|
||||||
require('telescope.builtin').live_grep()
|
require('telescope.builtin').live_grep()
|
||||||
end, { desc = '[F]ind by [G]rep' })
|
end, { desc = '[F]ind thru [G]rep' })
|
||||||
|
|
||||||
remap('n', '<leader>fug', function()
|
remap('n', '<leader>fug', function()
|
||||||
-- This relies on many factors: We use `rg` and that `-g '**/*'` effectively
|
-- This relies on many factors: We use `rg` and that `-g '**/*'` effectively
|
||||||
-- drops ignore rules like the default `.gitignore` rule.
|
-- drops ignore rules like the default `.gitignore` rule.
|
||||||
require('telescope.builtin').live_grep({ glob_pattern = '**/*' })
|
require('telescope.builtin').live_grep({ glob_pattern = '**/*' })
|
||||||
end, { desc = '[F]ind by [u]nrestricted [G]rep' })
|
end, { desc = '[F]ind thru [u]nrestricted [G]rep' })
|
||||||
|
|
||||||
remap('n', '<leader>fb', function()
|
remap('n', '<leader>fb', function()
|
||||||
require('telescope.builtin').buffers()
|
require('telescope.builtin').buffers()
|
||||||
|
@ -427,7 +434,7 @@ end
|
||||||
|
|
||||||
-- Close all tabs except the first one
|
-- Close all tabs except the first one
|
||||||
vim.api.nvim_set_keymap('n', '<C-t>x', ':tabdo if tabpagenr() > 1 | tabclose | endif<CR>',
|
vim.api.nvim_set_keymap('n', '<C-t>x', ':tabdo if tabpagenr() > 1 | tabclose | endif<CR>',
|
||||||
{ noremap = true, silent = true })
|
{ noremap = true, silent = true, desc = "Close all tabs except the first one", })
|
||||||
|
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
|
@ -749,7 +756,6 @@ local cmp_config = {
|
||||||
entry_filter(entry, function(entry)
|
entry_filter(entry, function(entry)
|
||||||
if entry.source_name == "nvim_lsp" then
|
if entry.source_name == "nvim_lsp" then
|
||||||
log.debug('format:entry: ' .. vim.inspect(entry, { depth = 2 }))
|
log.debug('format:entry: ' .. vim.inspect(entry, { depth = 2 }))
|
||||||
|
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -805,7 +811,7 @@ local cmp_config = {
|
||||||
cmp.setup(vim.tbl_deep_extend("force", require('cmp.config.default')(), cmp_config))
|
cmp.setup(vim.tbl_deep_extend("force", require('cmp.config.default')(), cmp_config))
|
||||||
-- set max autocomplete height. this prevents huge recommendations to take over the screen
|
-- set max autocomplete height. this prevents huge recommendations to take over the screen
|
||||||
vim.o.pumheight = 15 -- 15/70 is good enough ratio for me. I generally go with 80-90 max height, though
|
vim.o.pumheight = 15 -- 15/70 is good enough ratio for me. I generally go with 80-90 max height, though
|
||||||
vim.o.pumblend = 15 -- semi-transparent for the art, nothing too useful
|
vim.o.pumblend = 10 -- semi-transparent for the art, nothing too useful (neovim recommends 0-30)
|
||||||
|
|
||||||
-- `/` cmdline search.
|
-- `/` cmdline search.
|
||||||
cmp.setup.cmdline('/', {
|
cmp.setup.cmdline('/', {
|
||||||
|
@ -864,7 +870,10 @@ require("mason").setup({
|
||||||
})
|
})
|
||||||
require('mason-lspconfig').setup({
|
require('mason-lspconfig').setup({
|
||||||
-- ensure_installed = servers,
|
-- ensure_installed = servers,
|
||||||
ensure_installed = { "pylsp", "pyright", "tailwindcss", "svelte", "astro", "lua_ls", "tsserver" },
|
ensure_installed = {
|
||||||
|
"pylsp", "pyright", "tailwindcss", "svelte", "astro", "lua_ls", "tsserver",
|
||||||
|
"ansiblels", "yamlls", "docker_compose_language_service", "jsonls",
|
||||||
|
},
|
||||||
automatic_installation = false,
|
automatic_installation = false,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -1206,7 +1215,6 @@ require('zk.commands').add("ZkGrep", function(match_ctor)
|
||||||
if match_ctor == nil or match_ctor == '' then
|
if match_ctor == nil or match_ctor == '' then
|
||||||
vim.fn.inputsave()
|
vim.fn.inputsave()
|
||||||
grep_str = vim.fn.input('Grep string: >')
|
grep_str = vim.fn.input('Grep string: >')
|
||||||
vim.fn.inputrestore()
|
|
||||||
match = { match = grep_str }
|
match = { match = grep_str }
|
||||||
elseif type(match_ctor) == 'string' then
|
elseif type(match_ctor) == 'string' then
|
||||||
match = { match = grep_str }
|
match = { match = grep_str }
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
[aws]
|
[aws]
|
||||||
symbol = " "
|
symbol = " "
|
||||||
|
|
||||||
|
[c]
|
||||||
|
disabled = false
|
||||||
|
commmands = [ [ 'cc', '--version' ], [ 'gcc', '--version' ], [ 'clang', '--version' ] ]
|
||||||
|
detect_extensions = ["c", "h", "cc", "cpp", "hh", "hpp"]
|
||||||
|
|
||||||
[conda]
|
[conda]
|
||||||
symbol = " "
|
symbol = " "
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
# This patch exists since Darwin's search bar requires solid apps and not
|
|
||||||
# symlinked
|
|
||||||
# TODO: QA
|
|
||||||
# - [x] works for base case
|
|
||||||
# - [x] works for repeated case
|
|
||||||
# - [ ] works after base case, then removed
|
|
||||||
# - [ ] works for repeated case, then removed
|
|
||||||
{ lib, pkgs, config, ... }:
|
{ lib, pkgs, config, ... }:
|
||||||
{
|
{
|
||||||
|
# This patch exists since Darwin's search bar requires solid apps and not
|
||||||
|
# symlinked
|
||||||
|
# TODO: QA
|
||||||
|
# - [x] works for base case
|
||||||
|
# - [x] works for repeated case
|
||||||
|
# - [ ] works after base case, then removed
|
||||||
|
# - [ ] works for repeated case, then removed
|
||||||
|
|
||||||
# Copy GUI apps to "~/Applications/Home Manager Apps"
|
# Copy GUI apps to "~/Applications/Home Manager Apps"
|
||||||
# Based on this comment: https://github.com/nix-community/home-manager/issues/1341#issuecomment-778820334
|
# Based on this comment: https://github.com/nix-community/home-manager/issues/1341#issuecomment-778820334
|
||||||
home.activation.patch-spotlight =
|
home.activation.patch-spotlight =
|
||||||
|
|
|
@ -30,7 +30,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# importing shells does not mean we're enabling everything, if we do mkDefault false
|
# NOTE: importing shells does not mean we're enabling everything, if we do mkDefault false
|
||||||
# but the dilemma is, if the user import BOTH graphics.nix and shells.nix
|
# but the dilemma is, if the user import BOTH graphics.nix and shells.nix
|
||||||
# they will also need to do `config.base.shells.enable`
|
# they will also need to do `config.base.shells.enable`
|
||||||
# generally, we want the behavior: import means enable
|
# generally, we want the behavior: import means enable
|
||||||
|
|
|
@ -28,7 +28,7 @@ let
|
||||||
pkgs.rnix-lsp # doesn't work, Mason just installs it using cargo
|
pkgs.rnix-lsp # doesn't work, Mason just installs it using cargo
|
||||||
pkgs.rust4cargo
|
pkgs.rust4cargo
|
||||||
pkgs.nickel
|
pkgs.nickel
|
||||||
pkgs.lsp-nls
|
pkgs.nls
|
||||||
|
|
||||||
pkgs.go # doesn't work, Mason installs from runtime path
|
pkgs.go # doesn't work, Mason installs from runtime path
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ in
|
||||||
package = pkgs.ungoogled-chromium;
|
package = pkgs.ungoogled-chromium;
|
||||||
extensions =
|
extensions =
|
||||||
let
|
let
|
||||||
|
# TODO: how about a chrome extension registry?
|
||||||
mkChromiumExtForVersion = browserVersion: { id, sha256, extVersion, ... }:
|
mkChromiumExtForVersion = browserVersion: { id, sha256, extVersion, ... }:
|
||||||
{
|
{
|
||||||
inherit id;
|
inherit id;
|
||||||
|
|
|
@ -37,7 +37,6 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = myLib.mkIf cfg.enable {
|
config = myLib.mkIf cfg.enable {
|
||||||
xdg.configFile."starship.toml".source = "${proj_root.config.path}//starship/starship.toml";
|
|
||||||
# nix: Propagates the environment with packages and vars when enter (children of)
|
# nix: Propagates the environment with packages and vars when enter (children of)
|
||||||
# a directory with shell.nix-compatible and .envrc
|
# a directory with shell.nix-compatible and .envrc
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
|
@ -68,6 +67,15 @@ in
|
||||||
programs.starship = {
|
programs.starship = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
|
settings = let
|
||||||
|
native = builtins.fromTOML (builtins.readFile "${proj_root.config.path}/starship/starship.toml");
|
||||||
|
patch-nix = pkgs.lib.recursiveUpdate native ({
|
||||||
|
c.commands = [
|
||||||
|
["nix" "run" "nixpkgs#clang" "--" "--version"]
|
||||||
|
["nix" "run" "nixpkgs#gcc" "--" "--version"]
|
||||||
|
];
|
||||||
|
});
|
||||||
|
in patch-nix;
|
||||||
};
|
};
|
||||||
# Fuzzy finder. `fzf` for TUI, `fzf -f '<fuzzy query>'` for UNIX piping
|
# Fuzzy finder. `fzf` for TUI, `fzf -f '<fuzzy query>'` for UNIX piping
|
||||||
programs.fzf.enable = true;
|
programs.fzf.enable = true;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -18,7 +18,8 @@
|
||||||
nixpkgs-latest.url = "github:nixos/nixpkgs";
|
nixpkgs-latest.url = "github:nixos/nixpkgs";
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
# url = "github:pegasust/home-manager/starship-config-type";
|
||||||
|
follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
nixgl.url = "path:./../../out-of-tree/nixGL";
|
nixgl.url = "path:./../../out-of-tree/nixGL";
|
||||||
|
@ -40,7 +41,6 @@
|
||||||
url = "github:mic92/nix-index-database";
|
url = "github:mic92/nix-index-database";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
nickel.url = "github:tweag/nickel";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
|
@ -51,7 +51,6 @@
|
||||||
, flake-utils
|
, flake-utils
|
||||||
, kpcli-py
|
, kpcli-py
|
||||||
, neovim-nightly-overlay
|
, neovim-nightly-overlay
|
||||||
, nickel
|
|
||||||
, nix-boost
|
, nix-boost
|
||||||
, nixpkgs-latest
|
, nixpkgs-latest
|
||||||
, ...
|
, ...
|
||||||
|
|
|
@ -3,7 +3,6 @@ flake_input@{ kpcli-py
|
||||||
, rust-overlay
|
, rust-overlay
|
||||||
, neovim-nightly-overlay
|
, neovim-nightly-overlay
|
||||||
, system
|
, system
|
||||||
, nickel
|
|
||||||
, nix-boost
|
, nix-boost
|
||||||
, nixpkgs-latest
|
, nixpkgs-latest
|
||||||
, ...
|
, ...
|
||||||
|
@ -60,10 +59,6 @@ let
|
||||||
rust4normi = nightlyRustWithExts rust-default-components;
|
rust4normi = nightlyRustWithExts rust-default-components;
|
||||||
});
|
});
|
||||||
|
|
||||||
nickel = (final: prev: {
|
|
||||||
inherit (flake_input.nickel.packages.${system})
|
|
||||||
lsp-nls nickel nickelWasm;
|
|
||||||
});
|
|
||||||
|
|
||||||
vimPlugins = (final: prev: {
|
vimPlugins = (final: prev: {
|
||||||
inherit (nixpkgs-latest.legacyPackages.${system}) vimPlugins;
|
inherit (nixpkgs-latest.legacyPackages.${system}) vimPlugins;
|
||||||
|
@ -76,6 +71,5 @@ in
|
||||||
neovim-nightly-overlay.overlay
|
neovim-nightly-overlay.overlay
|
||||||
rust
|
rust
|
||||||
kpcli-py
|
kpcli-py
|
||||||
nickel
|
|
||||||
vimPlugins
|
vimPlugins
|
||||||
]
|
]
|
||||||
|
|
|
@ -26,5 +26,6 @@ in
|
||||||
(
|
(
|
||||||
builtins.readFile yamlPath)
|
builtins.readFile yamlPath)
|
||||||
"any-output.json"));
|
"any-output.json"));
|
||||||
# TODO: fromToml?
|
fromTOML = builtins.fromTOML;
|
||||||
|
fromJSON = builtins.fromJSON;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
{inputs, cell}: {
|
|
||||||
nerd_font_module = {config, pkgs, ...}: {
|
|
||||||
fonts.fontconfig.enable = true;
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.nerdfonts.override { fonts = [ "Hack" ]; })
|
|
||||||
];
|
|
||||||
base.alacritty.font.family = "Hack Nerd Font Mono";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -0,0 +1,241 @@
|
||||||
|
# This is an interface for home-profiles and should not contain opinionated
|
||||||
|
# configurations. It should provide alternative configurations, aggregates
|
||||||
|
# or new configurations
|
||||||
|
_imports@{inputs, cell}: let
|
||||||
|
namespace = "repo";
|
||||||
|
imports = _imports // {inherit namespace;};
|
||||||
|
in {
|
||||||
|
git = { config , lib , ... }: let
|
||||||
|
cfg = config."${namespace}".git;
|
||||||
|
baseAliases = {
|
||||||
|
a = "add";
|
||||||
|
c = "commit";
|
||||||
|
ca = "commit --amend";
|
||||||
|
cm = "commit -m";
|
||||||
|
lol = "log --graph --decorate --pretty=oneline --abbrev-commit";
|
||||||
|
lola = "log --graph --decorate --pretty=oneline --abbrev-commit --all";
|
||||||
|
sts = "status";
|
||||||
|
co = "checkout";
|
||||||
|
b = "branch";
|
||||||
|
};
|
||||||
|
default-user = "Pegasust";
|
||||||
|
default-email = "pegasucksgg@gmail.com";
|
||||||
|
in {
|
||||||
|
options."${namespace}".git = {
|
||||||
|
aliases = lib.mkOption {
|
||||||
|
type = lib.types.attrs;
|
||||||
|
default = { };
|
||||||
|
example = baseAliases;
|
||||||
|
description = ''
|
||||||
|
Additional git aliases. This settings comes with base configuration.
|
||||||
|
Redeclaring the base config will override the values.
|
||||||
|
''; # TODO: Add baseAliases as string here (builtins.toString doesn't work)
|
||||||
|
};
|
||||||
|
name = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = default-user;
|
||||||
|
description = "Git username that appears on commits";
|
||||||
|
example = default-user;
|
||||||
|
};
|
||||||
|
email = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = default-email;
|
||||||
|
example = default-email;
|
||||||
|
description = "Git email that appears on commits";
|
||||||
|
};
|
||||||
|
ignores = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [
|
||||||
|
".vscode" # vscode settings
|
||||||
|
".direnv" # .envrc cached outputs
|
||||||
|
".DS_Store" # MacOS users, amrite
|
||||||
|
];
|
||||||
|
description = ''
|
||||||
|
.gitignore patterns that are applied in every "${namespace}"sitory.
|
||||||
|
This is useful for IDE-specific settings.
|
||||||
|
'';
|
||||||
|
example = [ ".direnv" "node_modules" ];
|
||||||
|
};
|
||||||
|
enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Enables git
|
||||||
|
'';
|
||||||
|
example = false;
|
||||||
|
};
|
||||||
|
credentialCacheTimeoutSeconds = lib.mkOption {
|
||||||
|
type = lib.types.int;
|
||||||
|
default = 3000;
|
||||||
|
description = "Credential cache (in-memory store) for Git in seconds.";
|
||||||
|
example = 3000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# TODO : anyway to override configuration?
|
||||||
|
# idk wtf I was thinking about. there is no context in this question
|
||||||
|
config.programs.git = {
|
||||||
|
inherit (cfg) enable ignores;
|
||||||
|
userName = cfg.name;
|
||||||
|
userEmail = cfg.email;
|
||||||
|
aliases = baseAliases // cfg.aliases;
|
||||||
|
extraConfig = {
|
||||||
|
# TODO: in the case of darwin, git always open up the built-in keychain.
|
||||||
|
# possibly something we can't really control since we don't have access to `nix-darwin`
|
||||||
|
credential.helper = "cache --timeout=${builtins.toString cfg.credentialCacheTimeoutSeconds}";
|
||||||
|
};
|
||||||
|
lfs.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
alacritty = {config, lib}: let
|
||||||
|
inherit (inputs.cells.repo.lib) fromYAML;
|
||||||
|
cfg = config."${namespace}".alacritty;
|
||||||
|
in {
|
||||||
|
options."${namespace}".alacritty = {
|
||||||
|
font.family = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.singleLineStr;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
The font family for Alacritty
|
||||||
|
'';
|
||||||
|
example = "DroidSansMono NF";
|
||||||
|
};
|
||||||
|
font.size = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.number;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
The default font size for Alacritty. This is probably measured in px.
|
||||||
|
'';
|
||||||
|
example = 7.0;
|
||||||
|
};
|
||||||
|
enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enables alacritty
|
||||||
|
'';
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
config-file = lib.mkOption {
|
||||||
|
type = lib.types.path;
|
||||||
|
description = "Path to alacritty yaml";
|
||||||
|
default = null;
|
||||||
|
example = "./config/alacritty.yaml";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config.programs.alacritty = {
|
||||||
|
enable = cfg.enable;
|
||||||
|
settings = let ;
|
||||||
|
actualConfig = if cfg.config-file != null then fromYAML (builtins.readFile cfg.config-file) else {};
|
||||||
|
in lib.recursiveUpdate actualConfig {
|
||||||
|
font.normal.family = opt-toNullable(opt-leftmostSome (builtins.map opt-fromNullable [
|
||||||
|
cfg.font.family actualConfig.font.family actualConfig.font.normal.family
|
||||||
|
]));
|
||||||
|
font.size = cfg.font.size or actualConfig.font.size or 7.0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: chromium is not really supported on darwin
|
||||||
|
private_chromium = { config, pkgs, lib, ... }: let
|
||||||
|
cfg = config."${namespace}".private_chromium;
|
||||||
|
in {
|
||||||
|
options."${namespace}".private_chromium = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
description = ''
|
||||||
|
Enable extremely lightweight chromium with vimium plugin
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf (cfg.enable) {
|
||||||
|
# home.packages = [pkgs.ungoogled-chromium];
|
||||||
|
programs.chromium = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.ungoogled-chromium;
|
||||||
|
extensions =
|
||||||
|
let
|
||||||
|
# TODO: how about a chrome extension registry?
|
||||||
|
mkChromiumExtForVersion = browserVersion: { id, sha256, extVersion, ... }:
|
||||||
|
{
|
||||||
|
inherit id;
|
||||||
|
crxPath = builtins.fetchurl {
|
||||||
|
url = "https://clients2.google.com/service/update2/crx" +
|
||||||
|
"?response=redirect" +
|
||||||
|
"&acceptformat=crx2,crx3" +
|
||||||
|
"&prodversion=${browserVersion}" +
|
||||||
|
"&x=id%3D${id}%26installsource%3Dondemand%26uc";
|
||||||
|
name = "${id}.crx";
|
||||||
|
inherit sha256;
|
||||||
|
};
|
||||||
|
version = extVersion;
|
||||||
|
};
|
||||||
|
mkChromiumExt = mkChromiumExtForVersion (lib.versions.major pkgs.ungoogled-chromium.version);
|
||||||
|
in
|
||||||
|
[
|
||||||
|
# vimium
|
||||||
|
(mkChromiumExt {
|
||||||
|
id = "dbepggeogbaibhgnhhndojpepiihcmeb";
|
||||||
|
sha256 = "00qhbs41gx71q026xaflgwzzridfw1sx3i9yah45cyawv8q7ziic";
|
||||||
|
extVersion = "1.67.4";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
darwin-spotlight = { lib, pkgs, config, ... }: {
|
||||||
|
# This patch exists since Darwin's search bar requires solid apps and not
|
||||||
|
# symlinked
|
||||||
|
# TODO: QA
|
||||||
|
# - [x] works for base case
|
||||||
|
# - [x] works for repeated case
|
||||||
|
# - [ ] works after base case, then removed
|
||||||
|
# - [ ] works for repeated case, then removed
|
||||||
|
|
||||||
|
# Copy GUI apps to "~/Applications/Home Manager Apps"
|
||||||
|
# Based on this comment: https://github.com/nix-community/home-manager/issues/1341#issuecomment-778820334
|
||||||
|
home.activation.patch-spotlight =
|
||||||
|
if pkgs.stdenv.isDarwin then
|
||||||
|
let
|
||||||
|
apps = pkgs.buildEnv {
|
||||||
|
name = "home-manager-applications";
|
||||||
|
paths = config.home.packages;
|
||||||
|
pathsToLink = "/Applications";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
lib.hm.dag.entryAfter [ "linkGeneration" ] ''
|
||||||
|
# Install MacOS applications to the user environment.
|
||||||
|
HM_APPS="$HOME/Applications/Home Manager Apps"
|
||||||
|
# Reset current state
|
||||||
|
if [ -e "$HM_APPS" ]; then
|
||||||
|
$DRY_RUN_CMD mv "$HM_APPS" "$HM_APPS.$(date +%Y%m%d%H%M%S)"
|
||||||
|
fi
|
||||||
|
$DRY_RUN_CMD mkdir -p "$HM_APPS"
|
||||||
|
# .app dirs need to be actual directories for Finder to detect them as Apps.
|
||||||
|
# In the env of Apps we build, the .apps are symlinks. We pass all of them as
|
||||||
|
# arguments to cp and make it dereference those using -H
|
||||||
|
$DRY_RUN_CMD cp --archive -H --dereference ${apps}/Applications/* "$HM_APPS"
|
||||||
|
$DRY_RUN_CMD chmod +w -R "$HM_APPS"
|
||||||
|
''
|
||||||
|
else
|
||||||
|
"";
|
||||||
|
# We need this in case upstream home-manager changes the behavior of linking
|
||||||
|
# applications
|
||||||
|
home.activation.remove-patch-spotlight =
|
||||||
|
if pkgs.stdenv.isDarwin then
|
||||||
|
lib.hm.dag.entryBefore [ "checkLinkTargets" ] ''
|
||||||
|
HM_APPS="$HOME/Applications/Home Manager Apps"
|
||||||
|
# Reset current state
|
||||||
|
if [ -e "$HM_APPS" ]; then
|
||||||
|
$DRY_RUN_CMD mv "$HM_APPS" "$HM_APPS.$(date +%Y%m%d%H%M%S)"
|
||||||
|
fi
|
||||||
|
''
|
||||||
|
else
|
||||||
|
"";
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
{inputs, cell, namespace}: { pkgs, config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config."${namespace}".graphics;
|
||||||
|
cfgEnable = cfg.enable or (cfg.useNixGL.defaultPackage != null);
|
||||||
|
types = lib.types;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [ ./shells.nix ];
|
||||||
|
options."${namespace}".nixgl = {
|
||||||
|
enable = lib.mkEnableOption "nixgl";
|
||||||
|
useNixGL = {
|
||||||
|
package = lib.mkPackageOption pkgs "nixGL package" {
|
||||||
|
default = [
|
||||||
|
"nixgl"
|
||||||
|
"auto"
|
||||||
|
"nixGLDefault"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
defaultPackage = lib.mkOption {
|
||||||
|
type = types.nullOr (types.enum [ "nixGLIntel" "nixGLNvidia" "nixGLNvidiaBumblebee" ]);
|
||||||
|
description = "Which nixGL package to be aliased as `nixGL` on the shell";
|
||||||
|
default = null;
|
||||||
|
example = "nixGLIntel";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# NOTE: importing shells does not mean we're enabling everything, if we do mkDefault false
|
||||||
|
# but the dilemma is, if the user import BOTH graphics.nix and shells.nix
|
||||||
|
# they will also need to do `config."${namespace}".shells.enable`
|
||||||
|
# generally, we want the behavior: import means enable
|
||||||
|
config = lib.mkIf cfgEnable {
|
||||||
|
"${namespace}".graphics._enable = lib.mkForce true;
|
||||||
|
"${namespace}".shells = {
|
||||||
|
shellAliases = lib.mkIf (cfg.useNixGL.defaultPackage != null) {
|
||||||
|
nixGL = cfg.useNixGL.defaultPackage;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home.packages = [ cfg.useNixGL.package ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,121 @@
|
||||||
|
{inputs, cell, namespace}: { config
|
||||||
|
, lib
|
||||||
|
, pkgs
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
let cfg = config."${namespace}".shells;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options."${namespace}".shells = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enable umbrella shell configuration";
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
};
|
||||||
|
shellInitExtra = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Extra shell init. The syntax should be sh-compliant";
|
||||||
|
default = "";
|
||||||
|
example = ''
|
||||||
|
# X11 support for WSL
|
||||||
|
export DISPLAY=$(ip route list default | awk '{print $3}'):0
|
||||||
|
export LIBGL_ALWAYS_INDIRECT=1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
shellAliases = lib.mkOption {
|
||||||
|
type = lib.types.attrs;
|
||||||
|
description = "Shell command aliases";
|
||||||
|
default = { };
|
||||||
|
example = {
|
||||||
|
nixGL = "nixGLIntel";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# nix: Propagates the environment with packages and vars when enter (children of)
|
||||||
|
# a directory with shell.nix-compatible and .envrc
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
# nix-direnv.enableFlakes = true; # must remove. this will always be supported.
|
||||||
|
};
|
||||||
|
# z <path> as smarter cd
|
||||||
|
programs.zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
};
|
||||||
|
programs.tmux = {
|
||||||
|
enable = true;
|
||||||
|
# extraConfigBeforePlugin = builtins.readFile "${proj_root.config.path}/tmux/tmux.conf";
|
||||||
|
plugins = let inherit (pkgs.tmuxPlugins) cpu net-speed; in [ cpu net-speed ];
|
||||||
|
extraConfig = (builtins.readFile "${proj_root.config.path}/tmux/tmux.conf");
|
||||||
|
};
|
||||||
|
xdg.configFile."tmux/tmux.conf".text = lib.mkOrder 600 ''
|
||||||
|
set -g status-right '#{cpu_bg_color} CPU: #{cpu_icon} #{cpu_percentage} | %a %h-%d %H:%M '
|
||||||
|
'';
|
||||||
|
# Colored ls
|
||||||
|
programs.exa = {
|
||||||
|
enable = true;
|
||||||
|
enableAliases = true;
|
||||||
|
};
|
||||||
|
# Make the shell look beautiful
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
settings = let
|
||||||
|
native = builtins.fromTOML (builtins.readFile "${proj_root.config.path}/starship/starship.toml");
|
||||||
|
patch-nix = pkgs.lib.recursiveUpdate native ({
|
||||||
|
c.commands = [
|
||||||
|
["nix" "run" "nixpkgs#clang" "--" "--version"]
|
||||||
|
["nix" "run" "nixpkgs#gcc" "--" "--version"]
|
||||||
|
];
|
||||||
|
});
|
||||||
|
in patch-nix;
|
||||||
|
};
|
||||||
|
# Fuzzy finder. `fzf` for TUI, `fzf -f '<fuzzy query>'` for UNIX piping
|
||||||
|
programs.fzf.enable = true;
|
||||||
|
programs.bash = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
initExtra = cfg.shellInitExtra or "";
|
||||||
|
};
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
enableAutosuggestions = true;
|
||||||
|
shellAliases = {
|
||||||
|
nix-rebuild = "sudo nixos-rebuild switch";
|
||||||
|
hm-switch = "home-manager switch --flake";
|
||||||
|
} // (cfg.shellAliases or { });
|
||||||
|
history = {
|
||||||
|
size = 10000;
|
||||||
|
path = "${config.xdg.dataHome}/zsh/history";
|
||||||
|
};
|
||||||
|
oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [
|
||||||
|
"git" # git command aliases: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git#aliases
|
||||||
|
"command-not-found" # suggests which package to install; does not support nixos (we have solution already)
|
||||||
|
"gitignore" # `gi list` -> `gi java >>.gitignore`
|
||||||
|
"ripgrep" # adds completion for `rg`
|
||||||
|
"rust" # compe for rustc/cargo
|
||||||
|
"poetry" # compe for poetry - Python's cargo
|
||||||
|
];
|
||||||
|
};
|
||||||
|
sessionVariables = {
|
||||||
|
# Vim mode on the terminal
|
||||||
|
# VI_MODE_RESET_PROMPT_ON_MODE_CHANGE = true;
|
||||||
|
# VI_MODE_SET_CURSOR = true;
|
||||||
|
# ZVM_VI_ESCAPE_BINDKEY = "";
|
||||||
|
ZVM_READKEY_ENGINE = "$ZVM_READKEY_ENGINE_NEX";
|
||||||
|
ZVM_KEYTIMEOUT = 0.004; # 40ms, or subtly around 25 FPS. I'm a gamer :)
|
||||||
|
ZVM_ESCAPE_KEYTIMEOUT = 0.004; # 40ms, or subtly around 25 FPS. I'm a gamer :)
|
||||||
|
};
|
||||||
|
initExtra = (cfg.shellInitExtra or "") + ''
|
||||||
|
source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
_imports@{inputs, cell}: let
|
||||||
|
namespace = "repo";
|
||||||
|
imports = _imports // {inherit namespace;};
|
||||||
|
in {
|
||||||
|
neovim = import ./neovim.nix imports;
|
||||||
|
nerd_font_module = {config, pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
import inputs.cells."${namespace}"
|
||||||
|
];
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.nerdfonts.override { fonts = [ "Hack" ]; })
|
||||||
|
];
|
||||||
|
"${namespace}".alacritty.font.family = "Hack Nerd Font Mono";
|
||||||
|
};
|
||||||
|
|
||||||
|
secrets = {
|
||||||
|
age.secrets.s3fs = {
|
||||||
|
file = "${inputs.self}/secrets/s3fs.age";
|
||||||
|
# mode = "600"; # owner + group only
|
||||||
|
# owner = "hungtr";
|
||||||
|
# group = "users";
|
||||||
|
};
|
||||||
|
age.secrets."s3fs.digital-garden" = {
|
||||||
|
file = "${inputs.self}/secrets/s3fs.digital-garden.age";
|
||||||
|
};
|
||||||
|
age.secrets._nhitrl_cred = {
|
||||||
|
file = "${inputs.self}/secrets/_nhitrl.age";
|
||||||
|
};
|
||||||
|
age.secrets."wifi.env" = {
|
||||||
|
file = "${inputs.self}/secrets/wifi.env.age";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ssh = {config, lib, ...}: let cfg = config."${namespace}".ssh; in {
|
||||||
|
options."${namespace}".ssh.enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
example = false;
|
||||||
|
description = ''
|
||||||
|
Enables SSH
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config.programs.ssh = {
|
||||||
|
inherit (cfg) enable;
|
||||||
|
forwardAgent = true;
|
||||||
|
includes = ["${inputs.self}/native_configs/ssh/config"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
alacritty = {config, lib,...}: let cfg = config."${namespace}".alacritty; in {
|
||||||
|
imports = [
|
||||||
|
import "${inputs.cells.repo.home-modules.alacritty}"
|
||||||
|
];
|
||||||
|
configs."${namespace}".alacritty = {
|
||||||
|
enable = true;
|
||||||
|
config-file = "${inputs.self}//native-configs/alacritty/alacritty.yml";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,181 @@
|
||||||
|
# TODO: vim-plug and Mason supports laziness. Probably worth it to explore incremental dependencies based on the project TODO: just install these things, then symlink to mason's bin directory
|
||||||
|
#
|
||||||
|
# One thing to consider, though, /nix/store of `nix-shell` or `nix-develop`
|
||||||
|
# might be different from `home-manager`'s (~/.nix_profile/bin/jq)
|
||||||
|
{inputs, cell, namespace}: { pkgs, lib, config, ... }:
|
||||||
|
let
|
||||||
|
# NOTE: Add packages to nvim_pkgs instead, so that it's available at userspace
|
||||||
|
# and is added to the path after wrapping.
|
||||||
|
# check: nix repl `homeConfigurations.hungtr.config.programs.neovim.finalPackage.buildCommand`
|
||||||
|
# see: :/--suffix.*PATH
|
||||||
|
# there should be mentions of additional packages
|
||||||
|
my_neovim = pkgs.neovim-unwrapped;
|
||||||
|
rust_pkgs = (pkgs.rust-bin.selectLatestNightlyWith
|
||||||
|
(
|
||||||
|
toolchain:
|
||||||
|
toolchain.default.override {
|
||||||
|
extensions = [ "rust-src" "rust-analyzer" "rust-docs" "rustfmt" "clippy" "miri" ];
|
||||||
|
}
|
||||||
|
));
|
||||||
|
nvim_pkgs = [
|
||||||
|
# pkgs.gccStdenv
|
||||||
|
pkgs.tree-sitter
|
||||||
|
pkgs.fzf # file name fuzzy search
|
||||||
|
pkgs.ripgrep # content fuzzy search
|
||||||
|
pkgs.zk # Zettelkasten (limited support)
|
||||||
|
pkgs.fd # Required by a Telescope plugin (?)
|
||||||
|
pkgs.stdenv.cc.cc.lib
|
||||||
|
pkgs.rnix-lsp # doesn't work, Mason just installs it using cargo
|
||||||
|
pkgs.rust4cargo
|
||||||
|
pkgs.nickel
|
||||||
|
pkgs.nls
|
||||||
|
|
||||||
|
pkgs.go # doesn't work, Mason installs from runtime path
|
||||||
|
|
||||||
|
# Language-specific stuffs
|
||||||
|
pkgs.sumneko-lua-language-server
|
||||||
|
# pkgs.python3Packages.python-lsp-server
|
||||||
|
pkgs.nodePackages.pyright
|
||||||
|
pkgs.python3Packages.pylint
|
||||||
|
pkgs.python3Packages.flake8
|
||||||
|
# FIXME: installing ansible from here just doesn't work :/
|
||||||
|
# pkgs.ansible-lint
|
||||||
|
# pkgs.python38Packages.ansible
|
||||||
|
# pkgs.ansible-language-server
|
||||||
|
# TODO: the devShell should provide rust-analyzer so that
|
||||||
|
# cargo test builds binaries compatible with rust-analyzer
|
||||||
|
|
||||||
|
# pkgs.rust-analyzer
|
||||||
|
# rust_pkgs
|
||||||
|
# pkgs.evcxr # Rust REPL for Conjure!
|
||||||
|
] ++ lib.optionals (pkgs.stdenv.isDarwin) (
|
||||||
|
let
|
||||||
|
inherit (pkgs.darwin.apple_sdk.frameworks) System CoreFoundation; in
|
||||||
|
[
|
||||||
|
System
|
||||||
|
CoreFoundation
|
||||||
|
]
|
||||||
|
);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.base.neovim = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
description = "enable personalized neovim as default editor";
|
||||||
|
type = lib.types.bool;
|
||||||
|
example = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = lib.mkIf config.base.neovim.enable {
|
||||||
|
# home-manager
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
package = my_neovim;
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
withPython3 = true;
|
||||||
|
withNodeJs = true;
|
||||||
|
# NOTE: this adds path to the wrapped version of neovim
|
||||||
|
extraPackages = nvim_pkgs;
|
||||||
|
extraLuaConfig = (builtins.readFile "${inputs.self}/native_configs/neovim/init.lua");
|
||||||
|
plugins = (let inherit (pkgs.vimPlugins)
|
||||||
|
plenary-nvim
|
||||||
|
|
||||||
|
nvim-treesitter
|
||||||
|
nvim-treesitter-textobjects
|
||||||
|
nvim-treesitter-context
|
||||||
|
|
||||||
|
telescope-fzf-native-nvim
|
||||||
|
telescope-file-browser-nvim
|
||||||
|
telescope-nvim
|
||||||
|
|
||||||
|
nvim-lspconfig
|
||||||
|
|
||||||
|
gruvbox-community
|
||||||
|
|
||||||
|
neodev-nvim
|
||||||
|
|
||||||
|
cmp-nvim-lsp
|
||||||
|
cmp-path
|
||||||
|
cmp-buffer
|
||||||
|
cmp-cmdline
|
||||||
|
nvim-cmp
|
||||||
|
|
||||||
|
lspkind-nvim
|
||||||
|
nvim-autopairs
|
||||||
|
nvim-ts-autotag
|
||||||
|
guess-indent-nvim
|
||||||
|
harpoon
|
||||||
|
zk-nvim
|
||||||
|
luasnip
|
||||||
|
fidget-nvim
|
||||||
|
rust-tools-nvim
|
||||||
|
|
||||||
|
cmp_luasnip
|
||||||
|
gitsigns-nvim
|
||||||
|
indent-blankline-nvim
|
||||||
|
lualine-nvim
|
||||||
|
mason-lspconfig-nvim
|
||||||
|
mason-nvim
|
||||||
|
neogit
|
||||||
|
nlua-nvim
|
||||||
|
nvim-jqx
|
||||||
|
nvim-surround
|
||||||
|
nvim-web-devicons
|
||||||
|
playground
|
||||||
|
todo-comments-nvim
|
||||||
|
trouble-nvim
|
||||||
|
vim-dispatch
|
||||||
|
vim-dispatch-neovim
|
||||||
|
vim-fugitive
|
||||||
|
vim-jack-in
|
||||||
|
|
||||||
|
; in [
|
||||||
|
plenary-nvim
|
||||||
|
nvim-treesitter.withAllGrammars
|
||||||
|
nvim-treesitter-textobjects
|
||||||
|
telescope-fzf-native-nvim
|
||||||
|
telescope-file-browser-nvim
|
||||||
|
telescope-nvim
|
||||||
|
nvim-lspconfig
|
||||||
|
gruvbox-community
|
||||||
|
neodev-nvim
|
||||||
|
cmp-nvim-lsp
|
||||||
|
cmp-path
|
||||||
|
cmp-buffer
|
||||||
|
cmp-cmdline
|
||||||
|
nvim-cmp
|
||||||
|
lspkind-nvim
|
||||||
|
nvim-autopairs
|
||||||
|
nvim-ts-autotag
|
||||||
|
guess-indent-nvim
|
||||||
|
harpoon
|
||||||
|
zk-nvim
|
||||||
|
luasnip
|
||||||
|
nvim-treesitter-context
|
||||||
|
fidget-nvim
|
||||||
|
rust-tools-nvim
|
||||||
|
|
||||||
|
cmp_luasnip
|
||||||
|
gitsigns-nvim
|
||||||
|
indent-blankline-nvim
|
||||||
|
lualine-nvim
|
||||||
|
mason-lspconfig-nvim
|
||||||
|
mason-nvim
|
||||||
|
neogit
|
||||||
|
nlua-nvim
|
||||||
|
nvim-jqx
|
||||||
|
nvim-surround
|
||||||
|
nvim-web-devicons
|
||||||
|
playground
|
||||||
|
todo-comments-nvim
|
||||||
|
trouble-nvim
|
||||||
|
vim-dispatch
|
||||||
|
vim-dispatch-neovim
|
||||||
|
vim-fugitive
|
||||||
|
vim-jack-in
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
# home.packages = nvim_pkgs;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
{inputs, cell}: let
|
||||||
|
namespace = "repo";
|
||||||
|
|
||||||
|
|
||||||
|
yamlToJsonDrv = pkgs: yamlContent: outputPath: (pkgs.runCommand
|
||||||
|
outputPath { inherit yamlContent; nativeBuildInputs = [ pkgs.yq ]; }
|
||||||
|
# run yq which outputs '.' (no filter) on file at yamlPath
|
||||||
|
# note that $out is passed onto the bash/sh script for execution
|
||||||
|
''
|
||||||
|
echo "$yamlContent" | yq >$out
|
||||||
|
'')
|
||||||
|
{ });
|
||||||
|
in {
|
||||||
|
fromYAML = yamlContent: bulitins.fromJSON (builtins.readFile (yamlToJsonDrv inputs.nixpkgs yamlContent "fromYaml.json"));
|
||||||
|
|
||||||
|
# ctor
|
||||||
|
opt-some = a: [a];
|
||||||
|
opt-none = [];
|
||||||
|
opt-none_thunk = _: [];
|
||||||
|
|
||||||
|
# from-to null
|
||||||
|
opt-fromNullable = nullable: if nullable == null then [] else [nullable];
|
||||||
|
opt-toNullable = opt-fork (a:a) (_: null);
|
||||||
|
|
||||||
|
opt-map = builtins.map;
|
||||||
|
opt-filter = builtins.filter;
|
||||||
|
opt-fork = on_some: on_none: opt: if opt == [] then (on_none null) else (on_some (builtins.elemAt opt 0));
|
||||||
|
|
||||||
|
opt-unwrap = opt-fork (a:a) (_: throw "opt-unwrap: expected some, got none");
|
||||||
|
opt-unwrapOrElse = opt-fork (a:a);
|
||||||
|
opt-unwrapOr = fallback_val: opt-fork (a:a) (_: fallback_val);
|
||||||
|
|
||||||
|
opt-orElse = opt: fallback_opt: opt-fork (opt-some) (opt-none_thunk) (opt ++ fallback_opt);
|
||||||
|
opt-leftmostSome = opts: builtins.foldl' (opt-orElse) [] opts;
|
||||||
|
}
|
Loading…
Reference in New Issue