feat: move nixvim out

This commit is contained in:
Kat Inskip 2025-12-02 01:01:36 -08:00
parent 4477a98282
commit 57815057f6
Signed by: kat
GPG key ID: 465E64DECEA8CF0F
11 changed files with 329 additions and 109 deletions

6
flake.lock generated
View file

@ -975,11 +975,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1762128458, "lastModified": 1764310947,
"narHash": "sha256-3HzJXCdXVNP+FxIeXRYit/fkNoDw7h2P47898Szokto=", "narHash": "sha256-iOzr6zahmX+bb/OXQopueTKc8Ae7ZGz//9MlavuNsCU=",
"owner": "kittywitch", "owner": "kittywitch",
"repo": "mewtris", "repo": "mewtris",
"rev": "22e623f0a1689e98f0d3217c23c22b59aabf6bf1", "rev": "d6cce244bd3bed11bea2d01ace6340ede9fccc22",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -1,109 +1,20 @@
{ {
lib,
tree, tree,
std, std,
... ...
}: let }: let
inherit (std) set; stdarg = _: {
inherit (lib.attrsets) genAttrs; _module.args = {
inherit std;
};
};
in { in {
programs.nixvim = { programs.nixvim = {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
imports = [ imports = [
tree.home.profiles.nixvim.plugins stdarg
tree.nixvim
]; ];
vimAlias = true;
opts = {
mouse = "a";
clipboard = "unnamedplus";
completeopt = "longest,menuone";
backup = false;
writebackup = false;
ttimeoutlen = 100;
number = true;
relativenumber = true;
showmatch = true;
foldmethod = "marker";
colorcolumn = "80";
splitright = true;
splitbelow = true;
ignorecase = true;
smartcase = true;
wrap = true;
linebreak = true;
showbreak = "";
termguicolors = true;
laststatus = 3;
cursorline = true;
cmdheight = 1;
hlsearch = true;
expandtab = true;
shiftwidth = 2;
tabstop = 2;
smartindent = true;
list = true;
listchars = {
tab = "» ";
extends = "";
precedes = "";
nbsp = "·";
trail = "";
};
hidden = true;
history = 1000;
shada = "'1000,f1,<500,@500,/500";
lazyredraw = true;
synmaxcol = 240;
updatetime = 700;
};
globals = {
mapleader = " ";
maplocalleader = ",";
};
plugins = let
pluginsToGen = [
"lastplace"
"commentary"
"treesitter"
"treesitter-context"
"nix-develop"
"lualine"
"startup"
"lazygit"
"web-devicons"
"auto-session"
"overseer"
"twilight"
"bufferline"
"zk"
"rainbow"
];
basePlugin = {
enable = true;
autoLoad = true;
};
in
set.merge [
(genAttrs pluginsToGen (_: basePlugin))
{
auto-session.settings = {
auto_save = true;
auto_create = true;
bypass_save_filetypes = ["startup"];
close_filetypes_on_save = ["startup"];
};
twilight.settings = {
context = 10;
dimming.alpha = 0.5;
expand = [
"function"
"method"
"table"
"if_statement"
];
};
}
];
}; };
} }

View file

@ -8,6 +8,9 @@
inherit (lib.modules) mkMerge mkForce; inherit (lib.modules) mkMerge mkForce;
cfg = config.mewtris; cfg = config.mewtris;
in { in {
# Future notes for kat:
# dotnet40 dotnet48 vcrun2010 vcrun2012 vcrun2018
# set msvcr110.dll to native
mewtris = let mewtris = let
inherit (lib.strings) concatStringsSep; inherit (lib.strings) concatStringsSep;
gameStorage = "/home/kat/Games"; gameStorage = "/home/kat/Games";
@ -18,6 +21,9 @@ in {
runnerVariants = { runnerVariants = {
PROTON_CACHYOS = "${inputs.chaotic.packages.${pkgs.system}.proton-cachyos_x86_64_v3.out}/bin"; PROTON_CACHYOS = "${inputs.chaotic.packages.${pkgs.system}.proton-cachyos_x86_64_v3.out}/bin";
PROTON_GE = "${inputs.chaotic.packages.${pkgs.system}.proton-ge-custom.out}/bin"; PROTON_GE = "${inputs.chaotic.packages.${pkgs.system}.proton-ge-custom.out}/bin";
PROTON_EXPERIMENTAL = "/games/Steam Library/steamapps/common/Proton - Experimental";
PROTON_HOTFIX = "/games/Steam Library/steamapps/common/Proton Hotfix/";
PROTON_VRC = "/home/kat/.local/share/Steam/compatibilitytools.d/GE-Proton10-20-rtsp19/";
WINE_TKG = pkgs.wine-tkg; WINE_TKG = pkgs.wine-tkg;
WINE_CACHYOS = pkgs.wine-cachyos; WINE_CACHYOS = pkgs.wine-cachyos;
}; };
@ -27,7 +33,6 @@ in {
]; ];
runnerEnvironments = { runnerEnvironments = {
common = { common = {
# inherit WINEDEBUG;
PROTON_LOG = builtins.toString 1; PROTON_LOG = builtins.toString 1;
WINEUSERSANDBOX = builtins.toString 1; WINEUSERSANDBOX = builtins.toString 1;
}; };
@ -68,7 +73,8 @@ in {
}; };
proton = { proton = {
PROTON_USE_NTSYNC = builtins.toString 1; PROTON_USE_NTSYNC = builtins.toString 1;
PRESSURE_VESSEL_FILESYSTEMS_RW = "/games"; PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES = "1";
PRESSURE_VESSEL_FILESYSTEMS_RW = "/games:$XDG_RUNTIME_DIR/wivrn_comp_ipc:$XDG_RUNTIME_DIR/wivrn/comp_ipc:$XDG_RUNTIME_DIR/monado_comp_ipc";
}; };
}; };
winTimezoneVariant = "PST8PDT"; winTimezoneVariant = "PST8PDT";
@ -85,6 +91,11 @@ in {
"shaderCache" "shaderCache"
]; ];
}; };
vrCommon = {
variant = lib.mkForce "PROTON_GE";
environment = {
};
};
wineCommon = { wineCommon = {
runner = "wine"; runner = "wine";
variant = "WINE_TKG"; variant = "WINE_TKG";
@ -204,6 +215,42 @@ in {
} }
]; ];
#
# Bethesda
#
f4vr = mkMerge [
protonCommon
vrCommon
rec {
enableGamemode = lib.mkForce false;
long_name = "Fallout 4 VR";
prefixFolder = gameStorage + "/Fallout-4-VR";
gameFolder = prefixFolder + "/drive_c/Modding/MO2";
gameExecutable = gameFolder + "/ModOrganizer.exe";
environments = ["vkbasalt"];
environment = {
WINEDLLOVERRIDES = "xaudio2_7=n,b";
};
}
];
skyrimvr = mkMerge [
protonCommon
vrCommon
rec {
enableGamemode = lib.mkForce false;
long_name = "Skyrim VR";
prefixFolder = gameStorage + "/Skyrim-VR";
gameFolder = prefixFolder + "/drive_c/Modding/MO2";
gameExecutable = gameFolder + "/ModOrganizer.exe";
environments = ["vkbasalt"];
environment = {
WINEDLLOVERRIDES = "xaudio2_7=n,b";
};
}
];
# #
# Battle.net games # Battle.net games
# #
@ -276,8 +323,27 @@ in {
gamescope-wsi gamescope-wsi
mangohud mangohud
vkbasalt vkbasalt
umu-launcher
]; ];
systemd.user.services = let
inherit (lib.attrsets) genAttrs;
in
genAttrs [
"f4vr"
"skyrimvr"
] (_g: {
serviceConfig = {
#ProtectHome = true;
#BindPaths = (list.optionals (g == "f4vr") [
# "/home/kat/Games/Fallout-4-VR"
# "/games/Fallout\\ 4\\ VR"
#]) ++ (list.optionals (g == "skyrimvr") [
# "/home/kat/Games/Skyrim-VR"
# "/games/SkyrimVR"
#]);
};
});
home-manager.users.kat.home.file = let home-manager.users.kat.home.file = let
inherit (lib.attrsets) listToAttrs nameValuePair attrNames; inherit (lib.attrsets) listToAttrs nameValuePair attrNames;
inherit (lib.lists) concatMap; inherit (lib.lists) concatMap;
@ -288,6 +354,8 @@ in {
pfxes = [ pfxes = [
"Games/VNs/drive_c/windows" "Games/VNs/drive_c/windows"
"Games/guild-wars/drive_c/windows" "Games/guild-wars/drive_c/windows"
"Games/Fallout-4-VR/drive_c/windows"
"Games/Skyrim-VR/drive_c/windows"
]; ];
arches = { arches = {
"x32" = "system32"; "x32" = "system32";
@ -300,6 +368,15 @@ in {
"d3d11.dll" "d3d11.dll"
"dxgi.dll" "dxgi.dll"
]; ];
vkd3d = pkgs.vkd3d-proton;
vkd3d_files = [
"libvkd3d-proton-d3d12.so"
"libvkd3d-proton-d3d12core.so"
];
vkd3dLinker = pfx: arch: file:
nameValuePair "${pfx}/${arches.${arch}}/${file}" {
source = "${vkd3d}/lib/${file}";
};
dxvkLinker = pfx: arch: file: let dxvkLinker = pfx: arch: file: let
dxvk = dxvks.${arch}; dxvk = dxvks.${arch};
in in
@ -311,10 +388,14 @@ in {
pfx: pfx:
concatMap ( concatMap (
arch: arch:
concatMap ( (concatMap (
file: [(dxvkLinker pfx arch file)] file: [(dxvkLinker pfx arch file)]
) )
files files)
++ (concatMap (
file: [(vkd3dLinker pfx arch file)]
)
vkd3d_files)
) (attrNames arches) ) (attrNames arches)
) )
pfxes)) pfxes))

161
nixvim/general.nix Normal file
View file

@ -0,0 +1,161 @@
{
std,
lib,
...
}: let
inherit (std) set;
inherit (lib.attrsets) genAttrs;
in {
vimAlias = true;
opts = {
mouse = "a";
clipboard = "unnamedplus";
completeopt = "longest,menuone";
backup = false;
writebackup = false;
ttimeoutlen = 100;
number = true;
relativenumber = true;
showmatch = true;
foldmethod = "marker";
colorcolumn = "80";
splitright = true;
splitbelow = true;
ignorecase = true;
smartcase = true;
wrap = true;
linebreak = true;
showbreak = "";
termguicolors = true;
laststatus = 3;
cursorline = true;
cmdheight = 1;
hlsearch = true;
expandtab = true;
shiftwidth = 2;
tabstop = 2;
smartindent = true;
list = true;
listchars = {
tab = "» ";
extends = "";
precedes = "";
nbsp = "·";
trail = "";
};
hidden = true;
history = 1000;
shada = "'1000,f1,<500,@500,/500";
lazyredraw = true;
synmaxcol = 240;
updatetime = 700;
};
globals = {
mapleader = " ";
maplocalleader = ",";
};
plugins = let
pluginsToGen = [
"lastplace"
"mini-animate"
"mini-clue"
"commentary"
"treesitter"
"treesitter-context"
"nix-develop"
"lualine"
"startup"
"lazygit"
"web-devicons"
"auto-session"
"overseer"
"twilight"
"bufferline"
"zk"
"rainbow"
"indent-blankline"
];
basePlugin = {
enable = true;
autoLoad = true;
};
in
set.merge [
(genAttrs pluginsToGen (_: basePlugin))
{
mini-animate.settings = {
scroll.enable = false;
};
indent-blankline = {
luaConfig.pre = ''
local highlight = {
"RainbowRed",
"RainbowYellow",
"RainbowBlue",
"RainbowOrange",
"RainbowGreen",
"RainbowViolet",
"RainbowCyan",
}
local hooks = require "ibl.hooks"
-- create the highlight groups in the highlight setup hook, so they are reset
-- every time the colorscheme changes
hooks.register(hooks.type.HIGHLIGHT_SETUP, function()
vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#E06C75" })
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#E5C07B" })
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#61AFEF" })
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#D19A66" })
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#98C379" })
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C678DD" })
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" })
end)
'';
settings = {
exclude = {
buftypes = [
"terminal"
"quickfix"
];
filetypes = [
""
"checkhealth"
"help"
"lspinfo"
"packer"
"TelescopePrompt"
"TelescopeResults"
"yaml"
];
};
indent = {
char = "";
highlight.__raw = ''highlight'';
};
scope = {
show_end = false;
show_exact_scope = true;
show_start = false;
};
};
};
auto-session.settings = {
auto_save = true;
auto_create = true;
bypass_save_filetypes = ["startup"];
close_filetypes_on_save = ["startup"];
};
twilight.settings = {
context = 10;
dimming.alpha = 0.5;
expand = [
"function"
"method"
"table"
"if_statement"
];
};
}
];
}

View file

@ -1,4 +1,9 @@
{lib, ...}: let {
lib,
std,
...
}: let
inherit (std) set;
inherit (lib.attrsets) genAttrs; inherit (lib.attrsets) genAttrs;
in { in {
lsp.servers = let lsp.servers = let
@ -6,15 +11,29 @@ in {
enable = true; enable = true;
activate = true; activate = true;
}; };
disablePackage = {
package = null;
};
serversToGen = [ serversToGen = [
"rust_analyzer" "rust_analyzer"
"nixd" "nixd"
"zk" "zk"
"gleam"
"luau_lsp"
"stylua"
];
disabledPackageServers = [
"rust_analyzer"
"luau_lsp"
"stylua"
]; ];
in in
(genAttrs serversToGen (_: baseServer)) set.merge [
// { (genAttrs serversToGen (_: baseServer))
}; (genAttrs disabledPackageServers (_: disablePackage))
{
}
];
plugins = let plugins = let
pluginsToGen = [ pluginsToGen = [
"lspconfig" "lspconfig"

44
packages/jackify-bin.nix Normal file
View file

@ -0,0 +1,44 @@
{
appimageTools,
fetchurl,
lib,
stdenv,
python3,
libGL,
}: let
version = "0.1.6.6";
pname = "Jackify";
id = "com.jackify.app";
src = fetchurl {
url = "https://github.com/Omni-guides/Jackify/releases/download/v${version}/${pname}.AppImage";
hash = "sha256-4BLqhmZC/ltom0rTzJpYUvHdn6WzUwS4UYo9TZAhFBI=";
};
appimageContents = appimageTools.extract {inherit pname version src;};
in
appimageTools.wrapType2 {
inherit pname version src;
extraPkgs = pkgs: (with pkgs; [
icu
zstd
python3
protontricks
stdenv.cc.cc.lib
libGL
]);
extraInstallCommands = ''
install -Dm444 ${appimageContents}/${id}.desktop -t $out/share/applications
install -Dm444 ${appimageContents}/${id}.png -t $out/share/pixmaps
'';
meta = {
description = "A modlist installation and configuration tool for Wabbajack modlists on Linux";
homepage = "https://github.com/Omni-guides/Jackify";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [merrkry];
platforms = lib.platforms.linux;
};
}

View file

@ -30,6 +30,10 @@
"microvms/*".functor.enable = true; "microvms/*".functor.enable = true;
"nixvim".functor.enable = true;
"nixvim/*".functor.enable = true;
"nixvim/plugins/*".functor.enable = true;
"home/*".functor.enable = true; "home/*".functor.enable = true;
"home/profiles/*".functor.enable = true; "home/profiles/*".functor.enable = true;
"home/profiles/nixvim".functor.excludes = [ "home/profiles/nixvim".functor.excludes = [