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 = [""]; commands = ["workbench.action.nextEditorInGroup"]; } { before = [""]; 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"]; "rust-analyzer.checkOnSave.command" = "clippy"; }; 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 ''; } ( 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 :bnext map :bprev ''; }; 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; }; }