277 lines
7.2 KiB
Nix
277 lines
7.2 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"];
|
|
};
|
|
}
|