#
#  General Home-manager configuration
#
#  flake.nix
#   ├─ ./hosts
#   │   └─ home.nix *
#   └─ ./modules
#       ├─ ./editors
#       │   └─ default.nix
#       ├─ ./programs
#       │   └─ default.nix
#       ├─ ./services
#       │   └─ default.nix
#       └─ ./shell
#           └─ default.nix
#

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

{ 
  imports =                                   # Home Manager Modules
    (import ../modules/editors) ++
    (import ../modules/programs) ++
    (import ../modules/programs/configs) ++
    (import ../modules/services) ++
    (import ../modules/shell);

  home = {
    username = "${user}";
    homeDirectory = "/home/${user}";

    packages = with pkgs; [
# Terminal
      pfetch            # Minimal fetch
      ranger            # File Manager
      gnupg             # sign and authorize 2nd Fac

      xdg-utils
      steam
      wakelan

# dev ols
      gcc
      gnumake
      gnupatch
      gnulib
      yubioath-flutter
      nitrokey-app

      tailscale
      wireguard-tools

# VideAudio
      mpv               # Media Player
      youtube-dl

# Apps
      galculator
      tdesktop
      hdparm
      python3Full
      android-tools
      calibre
      mtpfs
      vimiv-qt
      freecad

# Fileanagement
      #okular            # PDF viewer
      #gnome.file-roller # Archive Manager
      ark
      pcmanfm           # File Manager
      rsync             # Syncer $ rsync -r dir1/ dir2/
      unzip             # Zip files
      unrar             # Rar files
      papirus-icon-theme

# Genel configuration
      keepassxc
      libreoffice

      # Flatpak
      prusa-slicer
      #vscodium
      (vscode-with-extensions.override {
          vscode = vscodium;
          vscodeExtensions = with vscode-extensions; [
            vscodevim.vim
            github.copilot
            #ms-python.python
            ms-vscode.cpptools
            dracula-theme.theme-dracula
            catppuccin.catppuccin-vsc
            catppuccin.catppuccin-vsc-icons

          ];
      })
    ];
    file.".config/wall".source = ../modules/themes/wall.jpg;
    file.".config/lockwall".source = ../modules/themes/lockwall.jpg;
    pointerCursor = {                         # This will set cursor systemwide so applications can not choose their own
      name = "Dracula-cursors";
      package = pkgs.dracula-theme;
      size = 16;
      gtk.enable = true;
    };
    stateVersion = "23.05";
  };

  programs = {
    home-manager.enable = true;
  };


#  gtk = {                                     # Theming
#    enable = true;
#    theme = {
#      name = "Dracula";
#      package = pkgs.dracula-theme;
#    };
#    iconTheme = {
#      name = "Papirus-Dark";
#      package = pkgs.papirus-icon-theme;
#    };
#    font = {
#      name = "Cascadia Code";         # or FiraCode Nerd Font Mono Medium
#    };                                        # Cursor is declared under home.pointerCursor
#  };
  systemd.user.services.mpris-proxy = {
    Unit.Description = "Mpris proxy";
    Unit.After = [ "network.target" "sound.target" ];
    Service.ExecStart = "${pkgs.bluez}/bin/mpris-proxy";
    Install.WantedBy = [ "default.target" ];
  };
}