Home manager

Taking the ideas of the Nix package manager and applying them to a users home folder (Home manager, Home manager options).

{ config, lib, pkgs, ... }:

{
  home.username = "tom";
  home.homeDirectory = "/home/tom";

  home.stateVersion = "23.05";

  home.packages = with pkgs; [
    atool
    cinnamon.nemo
    clinfo
    dstat
    gimp
    gnome.file-roller
    gnome.gedit
    gnome.gnome-system-monitor
    gnome.simple-scan
    lm_sensors
    firefox
    gthumb
    htop
    libarchive
    libreoffice
    mpv
    nixpkgs-fmt
    nix-index
    nix-prefetch-github
    radeontop
    rescale
    unzip
    vlc
    wget
    xpano
  ];

  home.file = {
    ".config/dunst".source = ./dunst;
    ".config/hypr/hyprland.conf".source =
      pkgs.substituteAll { src = ./hyprland/template.conf; launch_waybar = ./hyprland/waybar.sh; };
    ".config/hypr/hyprpaper.conf".source =
      pkgs.substituteAll { src = ./hyprpaper/template.conf; wallpaper = ./hyprpaper/nixos.png; };
    ".config/kitty".source = ./kitty;
    ".config/rofi".source = ./rofi;
    ".config/swayidle".source = ./swayidle;
    ".config/swaylock".source = ./swaylock;
    ".config/waybar".source = ./waybar;
    ".config/wireplumber".source = ./wireplumber;
    ".local/share/gedit".source = ./gedit;
  };

  programs.home-manager.enable = true;

  programs.vscode = {
    enable = true;
    package = pkgs.vscodium;
    extensions = with pkgs; [
      vscode-extensions.dracula-theme.theme-dracula
      vscode-extensions.jnoortheen.nix-ide
      vscode-extensions.llvm-vs-code-extensions.vscode-clangd
      vscode-extensions.ms-vscode.cmake-tools
      vscode-extensions.twxs.cmake
      vscode-extensions.xaver.clang-format
      vscode-extensions.vadimcn.vscode-lldb
    ];
  };

  programs.git = {
    enable = true;
    userName = "Tomas Krupka";
    userEmail = "6817216+krupkat@users.noreply.github.com";
  };

  programs.bash.enable = true;

  programs.vim = {
    enable = true;
    extraConfig = ''
      set nu
      syntax enable
      let g:dracula_colorterm = 0
      colorscheme dracula
    '';
    plugins = [ pkgs.vimPlugins.dracula-vim ];
  };

  gtk = {
    enable = true;
    theme = {
      name = "Dracula";
      package = pkgs.dracula-theme;
    };
    iconTheme = {
      name = "Dracula";
      package = dracula-icon-theme-custom;
    };
  };
}