diff options
Diffstat (limited to 'users/timmy/home.nix')
| -rw-r--r-- | users/timmy/home.nix | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/users/timmy/home.nix b/users/timmy/home.nix new file mode 100644 index 0000000..77934bc --- /dev/null +++ b/users/timmy/home.nix @@ -0,0 +1,109 @@ +{ lib, pkgs, config, ... }: let + cfg = config._users.${username}.home; + username = "timmy"; + email = "tjk@tjkeller.xyz"; + fullname = "Tim Keller"; + home = "/home/${username}"; + userDirs = { + desktop = "${home}"; + download = "${home}/dls"; + documents = "${home}/docs"; + pictures = "${home}/pics"; + # Set these as null so they're not created + music = null; + publicShare = null; + templates = null; + videos = null; + #projects = "${home}/docs/src" + }; +in { + options._users.${username}.home = { + enable = lib.mkEnableOption "configure home for user ${username}"; + #neovim = { + # enableLSP = lib.mkEnableOption "whether to enable lsp"; + #}; + }; + + config = lib.mkIf cfg.enable { + # Setup home-manager + home = { + username = username; + homeDirectory = home; + stateVersion = "24.05"; + }; + + # Setup userdirs + xdg.userDirs = { + enable = true; + createDirectories = true; + } // userDirs; + + # Setup git + programs.git = { + enable = true; + settings = { + user = { + name = fullname; + email = email; + }; + merge.tool = "nvimdiff"; + mergetool.nvimdiff = { + cmd = ''nvim -d "$LOCAL" "$MERGED" "$REMOTE"''; + prompt = false; + }; + # Unfortunately, this doesn't work for some reason + #url = { + # "ssh://git@publicgit/".insteadOf = "https://git.tjkeller.xyz/"; + #}; + }; + }; + + # Setup gtk bookmarks + gtk.gtk3.bookmarks = ( + lib.mapAttrsToList (name: dir: + lib.mkIf (dir != null) "file://${dir} ${lib.toUpper (lib.substring 0 1 name)}${lib.substring 1 (-1) name}" # Make first letter upper case + ) userDirs + ); + + # Setup neovim + programs._neovim = { + enable = true; + package = pkgs.unstable.neovim; + viAlias = true; + vimAlias = true; + plugins = { + lsp = { + enable = lib.mkDefault true; + languageServers.packages = with pkgs; [ + python313Packages.python-lsp-server + svelte-language-server + tailwindcss-language-server + typescript-language-server + vscode-langservers-extracted + ]; + }; + treesitter = let + allTSParserPackages = builtins.filter lib.isDerivation + (builtins.attrValues pkgs.vimPlugins.nvim-treesitter-parsers); + in { + enable = lib.mkDefault true; + parsers.packages = allTSParserPackages; + }; + packages.start = with pkgs.vimPlugins; [ + autoclose-nvim + blink-cmp + gruvbox-nvim + minitab-nvim + nvim-colorizer-lua + nvim-ts-autotag # depends on treesitter + pkgs.unstable.vimPlugins.rainbow-delimiters-nvim # depends on treesitter + snacks-nvim + ]; + }; + extraPackages = with pkgs; [ + gcc # Treesitter requires a C compiler + unzip # For zip, xlsx, etc. files + ]; + }; + }; +} |
