nixfiles/home-manager/users/notgne2.nix
2023-01-07 21:23:29 -07:00

266 lines
7.0 KiB
Nix

inputs: {
config,
pkgs,
lib,
...
}: let
# TODO: find a better source
mimeTypes = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/eprints/eprints3.4/master/lib/mime.types";
sha256 = "0cdhq71wk5h3zcfrz8dyqc3vrjyikwjqsla855v036r54lch0kn2";
};
in {
programs.home-manager.enable = true;
home.packages = with pkgs; [
bat
fzf
xclip
alejandra
];
programs.vscode = {
package = pkgs.vscodium;
userSettings = {
"[nix]" = {
"editor.defaultFormatter" = "kamadorueda.alejandra";
"editor.formatOnPaste" = true;
"editor.formatOnSave" = true;
"editor.formatOnType" = false;
};
"files.insertFinalNewline" = true;
"alejandra.program" = "alejandra";
"workbench.startupEditor" = "none";
"editor.bracketPairColorization.enabled" = true;
"editor.guides.bracketPairs" = "active";
"window.menuBarVisibility" = "toggle";
"workbench.sideBar.location" = "right";
"vim.overrideCopy" = true;
"vim.useSystemClipboard" = true;
"vim.easymotion" = true;
"vim.sneak" = true;
"vim.hlsearch" = true;
"vim.ignorecase" = true;
"vim.normalModeKeyBindings" = [
{
before = ["<Tab>"];
commands = ["workbench.action.nextEditorInGroup"];
}
{
before = ["<S-Tab>"];
commands = ["workbench.action.previousEditorInGroup"];
}
];
"nix.formatterPath" = "${pkgs.alejandra}/bin/alejandra";
"nix.serverPath" = "${pkgs.rnix-lsp}/bin/rnix-lsp";
"nix.enableLanguageServer" = true;
"editor.formatOnSave" = true;
"elmLS.elmReviewDiagnostics" = "warning";
"elmLS.elmPath" = "${pkgs.elmPackages.elm}/bin/elm";
"elmLS.elmReviewPath" = "${pkgs.elmPackages.elm-review}/bin/elm-review";
"elmLS.elmFormatPath" = "${pkgs.elmPackages.elm-format}/bin/elm-format";
"rust-analyzer.diagnostics.disabled" = ["unresolved-proc-macro"];
};
extensions = with pkgs.vscode-extensions;
[
tamasfe.even-better-toml
vscodevim.vim
jnoortheen.nix-ide
haskell.haskell
justusadam.language-haskell
dhall.dhall-lang
dhall.vscode-dhall-lsp-server
elmtooling.elm-ls-vscode
kamadorueda.alejandra
hashicorp.terraform
(rust-lang.rust-analyzer.override {
rust-analyzer = pkgs.writeShellScriptBin "rust-analyzer" ''
exec rust-analyzer "$@"
'';
})
]
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "vscode-autohide";
publisher = "sirmspencer";
version = "1.0.7";
sha256 = "sha256-VaG/eTE2BGbHAYgFdS31c47rgLZVjHGK+/U8MSYKDt8=";
}
{
name = "ide-purescript";
publisher = "nwolverson";
version = "0.25.11";
sha256 = "sha256-9MgPAVfIdA7frR4EUDqVJB0N/LZY4NQSXtsKhEueNeg=";
}
{
name = "language-purescript";
publisher = "nwolverson";
version = "0.2.8";
sha256 = "sha256-2uOwCHvnlQQM8s8n7dtvIaMgpW8ROeoUraM02rncH9o=";
}
{
name = "direnv";
publisher = "mkhl";
version = "0.6.1";
sha256 = "sha256-5/Tqpn/7byl+z2ATflgKV1+rhdqj+XMEZNbGwDmGwLQ=";
}
{
name = "vscode-test-explorer";
publisher = "hbenl";
version = "2.21.1";
sha256 = "sha256-fHyePd8fYPt7zPHBGiVmd8fRx+IM3/cSBCyiI/C0VAg=";
}
{
name = "test-adapter-converter";
publisher = "ms-vscode";
version = "0.1.6";
sha256 = "sha256-UC8tUe+JJ3r8nb9SsPlvVXw74W75JWjMifk39JClRF4=";
}
];
};
programs.neovim = {
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
withNodeJs = true;
withPython3 = true;
plugins = with pkgs.vimPlugins; [
direnv-vim
fugitive
vim-nix
camelcasemotion
vim-indent-object
vim-commentary
vim-surround
{
plugin = vim-airline;
config = ''
if exists('g:started_by_firenvim')
let g:airline#extensions#tabline#enabled = 0
let g:airline_powerline_fonts = 0
else
let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts = 1
endif
" remove c, which contains filename, without firevim it's in the buffer, with firevim I don't want to see it, so this can always be applied
let g:airline#extensions#default#layout = [
\ [ 'a', 'b' ],
\ [ 'x', 'y', 'z', 'error', 'warning' ]
\ ]
'';
}
vim-visual-multi
{
plugin = fzf-vim;
config = ''
map ; :Files<CR>
'';
}
(
pkgs.vimUtils.buildVimPlugin {
pname = "firenvim";
src = inputs.firenvim;
# yes im stupid
version = builtins.readFile (pkgs.runCommand "firenvim-version" {} ''
${pkgs.jq}/bin/jq -j .version < ${inputs.firenvim}/package.json > $out
'');
}
)
vim-gitgutter
];
extraConfig = ''
set encoding=utf-8
set hidden
set nobackup
set nowritebackup
set cmdheight=2
set updatetime=200
set shortmess+=c
" maybe should be number?
set signcolumn=yes
set clipboard+=unnamedplus
set mouse=a
map <Tab> :bnext<CR>
map <S-Tab> :bprev<CR>
'';
};
ezpcusr.uploadScript = pkgs.writeScript "upload_file.sh" ''
#!${pkgs.zsh}/bin/zsh
fileid=$(${pkgs.pwgen}/bin/pwgen 16 1)
extension=$(file "$1" --extension | cut -d' ' -f2 | sed 's/???/txt/')
ssh wizbos.club "cat > ~/public/uploads/$fileid.$extension" < "$1"
echo "https://p.gen2.space/uploads/$fileid.$extension"
'';
ezfonts.font = {
name = "Anonymice Nerd Font";
package = pkgs.nerdfonts.override {fonts = ["AnonymousPro"];};
size = 11;
};
ezcolors.baseColors = {
base00 = "0b1c2c";
base01 = "223b54";
base02 = "405c79";
base03 = "627e99";
base04 = "aabcce";
base05 = "cbd6e2";
base06 = "e5ebf1";
base07 = "f7f9fb";
base08 = "bf8b56";
base09 = "bfbf56";
base0A = "8bbf56";
base0B = "56bf8b";
base0C = "568bbf";
base0D = "8b56bf";
base0E = "bf568b";
base0F = "bf5656";
};
home.sessionVariables = {
FZF_DEFAULT_COMMAND = "${pkgs.fd}/bin/fd --type f";
};
xdg.configFile."nvim-qt/nvim-qt.conf".text = ''
ext_tabline=false
ext_popupmenu=false
'';
programs.git = {
signing.key = null;
signing.signByDefault = true;
iniContent = {
gpg.format = "ssh";
gpg.ssh.defaultKeyCommand = toString (pkgs.writeShellScript "git-ssh-key" ''
echo -n 'key::'
${pkgs.openssh}/bin/ssh-add -L | ${pkgs.gnugrep}/bin/grep -v 'no-touch-required'
'');
};
enable = true;
lfs.enable = true;
userName = "notgne2";
userEmail = "gen2@gen2.space";
ignores = [".envrc"];
extraConfig.push.autoSetupRemote = true;
};
}