nixfiles/home-manager/users/notgne2.nix

274 lines
7.1 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";
};
sc = pkgs.writeScript "sc.sh" ''
#!${pkgs.zsh}/bin/zsh
git commit -am "$*"
'';
in
{
programs.home-manager.enable = true;
home.packages = with pkgs; [
bat
gnupg
zsh-powerlevel9k
fzf # also needed for fzf.vim
xclip # needed for nvim
nixpkgs-fmt
alejandra
];
programs.vscode = {
package = pkgs.vscodium;
userSettings = {
"[nix]" = {
"editor.defaultFormatter" = "kamadorueda.alejandra";
"editor.formatOnPaste" = true;
"editor.formatOnSave" = true;
"editor.formatOnType" = false;
};
"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; [
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)
filename=$(basename $1)
extension=$(echo "''${filename##*.}" | awk '{gsub(/^ +| +$/,"")} {print $0}')
if [[ "$extension" = "$filename" ]] then
extension=$(grep "$(file -b --mime-type $1)" ${mimeTypes} | awk '{print $2}')
fi
rsync -a --chmod=664 "$1" "wizbos.club:~/public/uploads/$fileid.$extension"
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 = "282936";
base01 = "3a3c4e";
base02 = "4d4f68";
base03 = "626483";
base04 = "62d6e8";
base05 = "e9e9f4";
base06 = "f1f2f8";
base07 = "f7f7fb";
base08 = "ea51b2";
base09 = "b45bcf";
base0A = "00f769";
base0B = "ebff87";
base0C = "a1efe4";
base0D = "62d6e8";
base0E = "b45bcf";
base0F = "00f769";
};
services.gpg-agent = {
enableSshSupport = true;
enableExtraSocket = true;
};
home.sessionVariables = {
FZF_DEFAULT_COMMAND = "${pkgs.fd}/bin/fd --type f";
};
programs.fish.shellAliases = {
bp = "npm version patch && npm publish && git push";
sc = "${sc}";
};
xdg.configFile."nvim-qt/nvim-qt.conf".text = ''
ext_tabline=false
ext_popupmenu=false
'';
programs.git = {
signing.key = "70420458F2C01295";
signing.signByDefault = true;
enable = true;
lfs.enable = true;
userName = "notgne2";
userEmail = "gen2@gen2.space";
ignores = [ ".envrc" ];
};
}