392 lines
12 KiB
Nix
392 lines
12 KiB
Nix
{
|
|
inputs = {
|
|
# Default to sane nixpkgs versions
|
|
nixpkgs.url = "github:nixos/nixpkgs/release-25.05";
|
|
unstable.url = "nixpkgs";
|
|
nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-25.05-darwin";
|
|
#lean4-flake = {
|
|
# url = "github:leanprover/lean4/v4.4.0";
|
|
# inputs.nixpkgs.follows = "nixpkgs";
|
|
#};
|
|
darwin = {
|
|
url = "github:lnl7/nix-darwin/nix-darwin-25.05";
|
|
# ensure that darwinSystem uses our nixpkgs version
|
|
inputs.nixpkgs.follows = "nixpkgs-darwin";
|
|
};
|
|
sheetsui-flake.url = "github:zaphar/sheetsui";
|
|
sile-flake.url = "github:sile-typesetter/sile";
|
|
durnitisp-flake.url = "github:zaphar/durnitisp";
|
|
runwhen-flake.url = "github:zaphar/runwhen";
|
|
agenix-flake.url = "github:ryantm/agenix";
|
|
nurl-flake.url = "github:nix-community/nurl";
|
|
nil-flake = {
|
|
url = "github:oxalica/nil";
|
|
};
|
|
clio-flake = {
|
|
url = "github:zaphar/clio";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
rust-overlay-flake = {
|
|
url = "github:oxalica/rust-overlay";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
#neovim-flake = {
|
|
# url = "github:neovim/neovim/stable?dir=contrib";
|
|
# # NOTE(jeremy): Currently this needs a newer nixpkgs version
|
|
# #inputs.nixpkgs.follows = "nixpkgs";
|
|
#};
|
|
jujutsu-flake.url = "github:martinvonz/jj";
|
|
custom-flakes = {
|
|
url = "github:zaphar/nix-flakes";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
neogit-src = {
|
|
url = "github:NeogitOrg/neogit";
|
|
flake = false;
|
|
};
|
|
d2-vim-src = {
|
|
url = "github:terrastruct/d2-vim";
|
|
flake = false;
|
|
};
|
|
roslyn-lsp = {
|
|
url = "github:zaphar/roslyn.nvim/main";
|
|
flake = false;
|
|
};
|
|
heracles-flake.url = "github:zaphar/Heracles";
|
|
mcphub-flake.url = "github:ravitemer/mcphub.nvim/v5.0.1";
|
|
};
|
|
|
|
outputs = {
|
|
darwin,
|
|
sile-flake,
|
|
jujutsu-flake,
|
|
runwhen-flake,
|
|
durnitisp-flake,
|
|
rust-overlay-flake,
|
|
agenix-flake,
|
|
nil-flake,
|
|
nurl-flake,
|
|
custom-flakes,
|
|
unstable,
|
|
heracles-flake,
|
|
clio-flake,
|
|
sheetsui-flake,
|
|
mcphub-flake,
|
|
... # We don't use the self or nixpkgs args here so we just glob it.
|
|
}:
|
|
rec {
|
|
vimModule = system: let
|
|
nil-pkg = nil-flake.packages."${system}".default;
|
|
mcp-hub-binary = custom-flakes.packages."${system}".mcp-hub;
|
|
claude-code-binary = custom-flakes.packages."${system}".claude-code;
|
|
in
|
|
{ config, pkgs, ...}: let
|
|
unstablePkgs = import unstable { inherit system; };
|
|
neogit-nvim = custom-flakes.packages."${system}".neogit-nvim;
|
|
d2-vim = custom-flakes.packages."${system}".d2-vim;
|
|
hunk-nvim = custom-flakes.packages."${system}".hunk-nvim;
|
|
# TODO(zaphar): Apparently this is a remote plugin so it needs some additional love.
|
|
#nvim-bnf = custom-flakes.packages."${system}".nvim-bnf;
|
|
roslyn-nvim = custom-flakes.packages."${system}".roslyn-nvim;
|
|
ionide-nvim = custom-flakes.packages."${system}".ionide-nvim;
|
|
claude-code-nvim = custom-flakes.packages."${system}".claude-code-nvim;
|
|
# TODO(zaphar): Until nixpkgs update to a newer version of tree-sitter the queries will be wrong
|
|
# for csharp
|
|
#tree-sitter-csharp = pkgs.callPackage ./nvim-treesitter-csharp.nix {
|
|
# inherit (pkgs.neovimUtils) grammarToPlugin;
|
|
# inherit (pkgs.tree-sitter) buildGrammar;
|
|
# inherit (pkgs) fetchFromGitHub;
|
|
#};
|
|
# TODO(jwall): When this actually builds we should use it.
|
|
#nvim-treesitter-powershell = pkgs.callPackage ./nvim-powershell.nix {
|
|
# inherit (pkgs.tree-sitter) buildGrammar;
|
|
# inherit (pkgs) fetchFromGitHub;
|
|
#};
|
|
mcphub-nvim = mcphub-flake.packages."${system}".default;
|
|
in {
|
|
imports = [
|
|
./program-neovim.nix
|
|
];
|
|
config = {
|
|
environment.variables = {
|
|
EDITOR="nvim";
|
|
PAGER="less -R";
|
|
OMNISHARP_BIN = "${pkgs.omnisharp-roslyn}/bin/OmniSharp";
|
|
};
|
|
|
|
nixpkgs.overlays = [
|
|
(final: prev: {
|
|
lorri = unstablePkgs.lorri;
|
|
})
|
|
];
|
|
programs = with unstablePkgs; {
|
|
neovim.enable = true;
|
|
neovim.vimAlias = true;
|
|
neovim.viAlias = true;
|
|
neovim.package = unstablePkgs.neovim-unwrapped;
|
|
neovim.configure = {
|
|
customRC = "lua << EOF
|
|
${builtins.readFile ./init.lua}
|
|
EOF";
|
|
packages.myVimPackage = {
|
|
start = (with pkgs.vimPlugins; [
|
|
copilot-lua
|
|
avante-nvim
|
|
vim-sile
|
|
nvim-tree-lua
|
|
nvim-lspconfig
|
|
packer-nvim
|
|
vim-ps1
|
|
vim-lsp
|
|
vim-vsnip
|
|
nvim-cmp
|
|
cmp-nvim-lua
|
|
cmp-nvim-lsp
|
|
cmp-vsnip
|
|
cmp-buffer
|
|
cmp-path
|
|
cmp-nvim-lsp-signature-help
|
|
nvim-dap # Debug Adapter Protocol support
|
|
#nvim-dap-ui
|
|
hoon-vim
|
|
nvim-treesitter
|
|
lualine-nvim
|
|
lualine-lsp-progress
|
|
lean-nvim
|
|
roslyn-nvim
|
|
ionide-nvim # Fsharp lsp support
|
|
nvim-treesitter-context
|
|
nvim-treesitter-textobjects
|
|
nvim-treesitter-parsers.ini
|
|
nvim-treesitter-parsers.ebnf
|
|
nvim-treesitter-parsers.rust
|
|
nvim-treesitter-parsers.c
|
|
#nvim-treesitter-parsers.c_sharp # currently broken for some reason
|
|
nvim-treesitter-parsers.cpp
|
|
nvim-treesitter-parsers.clojure
|
|
nvim-treesitter-parsers.latex
|
|
nvim-treesitter-parsers.terraform
|
|
nvim-treesitter-parsers.hcl
|
|
nvim-treesitter-parsers.yaml
|
|
nvim-treesitter-parsers.lua
|
|
nvim-treesitter-parsers.vim
|
|
nvim-treesitter-parsers.go
|
|
nvim-treesitter-parsers.toml
|
|
nvim-treesitter-parsers.tlaplus
|
|
nvim-treesitter-parsers.typescript
|
|
nvim-treesitter-parsers.starlark
|
|
nvim-treesitter-parsers.python
|
|
nvim-treesitter-parsers.sql
|
|
nvim-treesitter-parsers.javascript
|
|
nvim-treesitter-parsers.ocaml
|
|
nvim-treesitter-parsers.haskell
|
|
nvim-treesitter-parsers.css
|
|
nvim-treesitter-parsers.promql
|
|
nvim-treesitter-parsers.nix
|
|
nvim-treesitter-parsers.zig
|
|
nvim-treesitter-parsers.hoon
|
|
#omnisharp-extended-lsp-nvim
|
|
#neotest-dotnet
|
|
nix-develop-nvim
|
|
trouble-nvim
|
|
nightfox-nvim
|
|
melange-nvim
|
|
telescope-nvim
|
|
telescope-lsp-handlers-nvim
|
|
plenary-nvim
|
|
vim-dadbod
|
|
vim-dadbod-ui
|
|
vim-dadbod-completion
|
|
vim-dasht
|
|
direnv-vim
|
|
mcphub-nvim
|
|
claude-code-nvim
|
|
]) ++ [
|
|
d2-vim
|
|
hunk-nvim
|
|
neogit-nvim
|
|
# tree-sitter-csharp.neovim-plugin # Until nixpkgs updates their nvim-treesitter config the csharp queries will be broken
|
|
];
|
|
};
|
|
};
|
|
};
|
|
environment.systemPackages = (with pkgs; [
|
|
terraform-ls
|
|
tinymist
|
|
nodePackages.typescript-language-server
|
|
nodePackages.jsdoc
|
|
# TODO find a version of the julia package that will install
|
|
# on darwin and add it as an overlay
|
|
nil-pkg
|
|
lua-language-server
|
|
rust-analyzer
|
|
dasht
|
|
direnv
|
|
lorri
|
|
devenv
|
|
unstablePkgs.fq
|
|
mcp-hub-binary
|
|
claude-code-binary
|
|
]);
|
|
};
|
|
};
|
|
systemModule = system: let
|
|
runwhen = runwhen-flake.defaultPackage."${system}";
|
|
durnitisp = durnitisp-flake.defaultPackage."${system}";
|
|
rust-overlay = rust-overlay-flake.overlays.default;
|
|
sile = sile-flake.defaultPackage.${system};
|
|
jujutsu = jujutsu-flake.packages.${system}.jujutsu;
|
|
age = agenix-flake.packages."${system}".default;
|
|
nurl = nurl-flake.packages."${system}".default;
|
|
clio = clio-flake.packages."${system}".default;
|
|
unstablePkgs = import unstable { inherit system; };
|
|
sheetsui = sheetsui-flake.packages."${system}".default;
|
|
#lean4Pkg = lean4-flake.defaultPackage."${system}";
|
|
in { config, pkgs, ... }: {
|
|
|
|
imports = [
|
|
agenix-flake.nixosModules.default
|
|
./program-neovim.nix
|
|
];
|
|
|
|
config = {
|
|
|
|
nixpkgs.overlays = [
|
|
(final: prev: {
|
|
# This is needed because the ccache used by lean4Pkg is broken
|
|
ccache = prev.ccache.override { doCheck = false; };
|
|
heracles = heracles-flake.packages."${system}".default;
|
|
durnitisp = durnitisp;
|
|
clio = clio;
|
|
victoria-logs = pkgs.callPackage ../packages/victoria-logs.nix { };
|
|
podman = unstablePkgs.podman;
|
|
podman-compose = unstablePkgs.podman-compose;
|
|
sc-im = unstablePkgs.sc-im;
|
|
gnumeric = prev.gnumeric.overrideAttrs(oldAttrs: {
|
|
meta.broken = false;
|
|
});
|
|
uv = unstablePkgs.uv;
|
|
quint = (pkgs.callPackage ../packages/quint/default.nix {})."@informalsystems/quint";
|
|
quint-lsp = (pkgs.callPackage ../packages/quint/default.nix {})."@informalsystems/quint-language-server";
|
|
ollama = unstablePkgs.ollama;
|
|
})
|
|
rust-overlay
|
|
];
|
|
|
|
# TODO(jwall): This is needed for terraform
|
|
nixpkgs.config.allowUnfree = true;
|
|
|
|
environment.etc."nvim.lua" = {
|
|
source = ./init.lua;
|
|
};
|
|
|
|
programs = {
|
|
zsh = {
|
|
enable = true; # default shell on catalina
|
|
# This is a total hack but we don't want the default clobbering it which it does if it's an empty string or null
|
|
promptInit = "#noop";
|
|
interactiveShellInit = (builtins.readFile ./zshrc);
|
|
};
|
|
|
|
tmux = {
|
|
enable = true;
|
|
enableVim = true;
|
|
extraConfig = (builtins.readFile ./tmux.conf);
|
|
};
|
|
};
|
|
environment.systemPackages = (with pkgs; [
|
|
sheetsui
|
|
lean4
|
|
quint
|
|
quint-lsp
|
|
terraform # TODO(jeremy): Replace with opentofu when that is an option.
|
|
oha
|
|
nodejs
|
|
gnumake
|
|
# TODO(zaphar): find a version of the julia package that will install
|
|
# on darwin and add it as an overlay
|
|
uv
|
|
emacs
|
|
git
|
|
mercurial
|
|
curl
|
|
wget
|
|
jq
|
|
trippy
|
|
coreutils
|
|
watch
|
|
iterm2
|
|
go
|
|
htop
|
|
colima
|
|
ghidra
|
|
podman
|
|
podman-compose
|
|
qemu
|
|
lima
|
|
rlwrap
|
|
docker-client
|
|
google-cloud-sdk
|
|
awscli2
|
|
alloy6
|
|
tlaplus
|
|
jdk
|
|
d2
|
|
plantuml-c4
|
|
nssTools
|
|
nomad
|
|
mkcert
|
|
kubo
|
|
#netcoredbg
|
|
powershell
|
|
# NOTE(jwall): I include these initially for nvim telescope
|
|
ripgrep
|
|
fd
|
|
sc-im
|
|
gnumeric
|
|
wezterm
|
|
wezterm.terminfo
|
|
#ocaml
|
|
#opam
|
|
unstablePkgs.vector
|
|
victoriametrics
|
|
# TODO add sonic-pi here if it supports the arch
|
|
unstablePkgs.dbeaver-bin
|
|
postgresql
|
|
unstablePkgs.ollama
|
|
])
|
|
#++ (with pkgs.ocamlPackages; [
|
|
# dune_3
|
|
# odoc
|
|
# ocaml-lsp
|
|
# merlin
|
|
# utop
|
|
#])
|
|
++ [
|
|
sile
|
|
runwhen
|
|
durnitisp
|
|
age
|
|
nurl
|
|
jujutsu
|
|
];
|
|
};
|
|
};
|
|
|
|
darwinConfigurations."jeremys-mbp" = darwin.lib.darwinSystem rec {
|
|
system = "aarch64-darwin";
|
|
modules = [
|
|
(systemModule system)
|
|
(vimModule system)
|
|
./modules/darwin-monitor.nix
|
|
./modules/victoria-logs.nix
|
|
./modules/vector.nix
|
|
./modules/lorri.nix
|
|
./modules/ollama.nix
|
|
./darwin-configuration.nix
|
|
];
|
|
};
|
|
};
|
|
}
|