105 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   config,
 | |
|   pkgs,
 | |
|   lib,
 | |
|   extra,
 | |
|   ...
 | |
| }:
 | |
| let
 | |
|   symlink = path: config.lib.file.mkOutOfStoreSymlink "/home/${extra.user}/.dotfiles/${path}";
 | |
| in
 | |
| {
 | |
|   nixpkgs.config.allowUnfree = true;
 | |
| 
 | |
|   home.username = "${extra.user}";
 | |
|   home.homeDirectory = "/home/${extra.user}";
 | |
| 
 | |
|   # This value determines the Home Manager release that your configuration is
 | |
|   # compatible with. This helps avoid breakage when a new Home Manager release
 | |
|   # introduces backwards incompatible changes.
 | |
|   #
 | |
|   # You should not change this value, even if you update Home Manager. If you do
 | |
|   # want to update the value, then make sure to first check the Home Manager
 | |
|   # release notes.
 | |
|   home.stateVersion = "23.05"; # Please read the comment before changing.
 | |
| 
 | |
|   # Home Manager is pretty good at managing dotfiles. The primary way to manage
 | |
|   # plain files is through 'home.file'.
 | |
|   xdg.configFile = {
 | |
|     "nvim".source = symlink "nvim";
 | |
|     # "hypr".source = symlink "hypr";
 | |
|     "ghostty".source = symlink "ghostty";
 | |
|   };
 | |
| 
 | |
|   # The home.packages option allows you to install Nix packages into your
 | |
|   # environment.
 | |
|   home.packages = with pkgs; [
 | |
|     just
 | |
|     ripgrep # "rg" cli, alternative to grep, used by nvim
 | |
|     fd # find alternative, used by nvim
 | |
|     lsd # "ls" alternative
 | |
|     zoxide # "z" command
 | |
|     devenv
 | |
|     devbox
 | |
|     tldr
 | |
|     biome
 | |
|     dive
 | |
|   ];
 | |
| 
 | |
|   fonts.fontconfig.enable = true;
 | |
| 
 | |
|   programs.git = {
 | |
|     enable = true;
 | |
|     includes = [
 | |
|       {
 | |
|         contents = {
 | |
|           init.defaultBranch = "main";
 | |
|           pull.rebase = true;
 | |
|         };
 | |
|       }
 | |
|     ];
 | |
|   };
 | |
| 
 | |
|   programs.fish = {
 | |
|     enable = true;
 | |
|     shellInit = lib.strings.concatStringsSep "\n" (
 | |
|       [
 | |
|         (builtins.readFile ./fish/config.fish)
 | |
|       ]
 | |
|       ++ lib.attrsets.mapAttrsToList (name: value: builtins.readFile (./fish/functions + ("/" + name))) (
 | |
|         builtins.readDir ./fish/functions
 | |
|       )
 | |
|     );
 | |
|   };
 | |
| 
 | |
|   programs.neovim = {
 | |
|     enable = true;
 | |
|     defaultEditor = true;
 | |
|     package = pkgs.neovim;
 | |
|     extraPackages = [
 | |
|       pkgs.nixd
 | |
|       pkgs.nixfmt-rfc-style
 | |
|       pkgs.efm-langserver # Generic language server
 | |
|       pkgs.lua-language-server # Lua lsp
 | |
|       pkgs.gopls # Go lsp
 | |
|       pkgs.lexical # Elixir lsp
 | |
|       pkgs.shellcheck
 | |
|       pkgs.nodePackages.intelephense # PHP lsp
 | |
|       pkgs.nodePackages.typescript-language-server
 | |
|       pkgs.nodePackages.svelte-language-server
 | |
|       pkgs.nodePackages.bash-language-server
 | |
|       pkgs.prettierd
 | |
|       pkgs.eslint_d
 | |
|       pkgs.zls
 | |
|       pkgs.nodejs_24
 | |
|     ];
 | |
|   };
 | |
| 
 | |
|   programs.direnv = {
 | |
|     enable = true;
 | |
|     nix-direnv.enable = true;
 | |
|   };
 | |
| 
 | |
|   # Let Home Manager install and manage itself.
 | |
|   programs.home-manager.enable = true;
 | |
| }
 |