summaryrefslogtreecommitdiff
path: root/users/timmy/home.nix
diff options
context:
space:
mode:
Diffstat (limited to 'users/timmy/home.nix')
-rw-r--r--users/timmy/home.nix109
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
+ ];
+ };
+ };
+}