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; [ gnupg zsh-powerlevel9k fzf # also needed for fzf.vim xclip # needed for nvim nixpkgs-fmt ]; programs.vscode = { package = pkgs.vscodium; userSettings = { "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.nixpkgs-fmt}/bin/nixpkgs-fmt"; "nix.serverPath" = "${pkgs.rnix-lsp}/bin/rnix-lsp"; "nix.enableLanguageServer" = true; "rust-client.disableRustup" = true; "editor.formatOnSave" = true; # "vscode-dhall-lsp-server.executable" = "${pkgs.dhall-lsp-server}/bin/dhall-lsp-server"; # "purescript.pursExe" = "${pkgs.purescript}/bin/purs"; # "purescript.buildCommand" = "${pkgs.spago}/bin/spago build --purs-args --json-errors"; }; extensions = with pkgs.vscode-extensions; [ vscodevim.vim jnoortheen.nix-ide haskell.haskell justusadam.language-haskell dhall.dhall-lang dhall.vscode-dhall-lsp-server ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ { name = "rust"; publisher = "rust-lang"; version = "0.7.8"; sha256 = "sha256-Y33agSNMVmaVCQdYd5mzwjiK5JTZTtzTkmSGTQrSNg0="; } { 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="; } ]; }; 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.runCommandNoCC "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) 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" ''; fonts.favFont = { name = "Anonymice Nerd Font"; package = pkgs.nerdfonts.override { fonts = [ "AnonymousPro" ]; }; size = 11; }; colors.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"; }; }