about summary refs log blame commit diff
path: root/hosts/home.nix
blob: a73f4e911cfaf7ebacc7d6d1637ce7640490a88f (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                                                                      
 

                


                                    
 

                           
              


             
          





               
             
         
                 
                  
                 
                  
               
                                                     
               
            
          
                  
                     
            
               
             
                     


                  

              


               
              

                        
            
       
    
 


                                   
                                            

    




                                                                     





                             



                              
                                                               
                                   
                                 
                               
                             
      




                                  


                     
                                                                                 

                               

    




                                                     
                 
                             
                                                         
        



                                      

      



                               
 




                                          

              





                       






                   






                       
                                                                  
      
 





                                                              
               










                                      

                                  

                                    

                    

                                                                          

      

                    











































                                                                           
































                                                                              



                                                                       
                                                                

                                                            





                                           






                                           
         


                                                                       

                                                                           
    
 
               

                                                            
 
                                                       


               
                                                     
    
 


                                                         
                              
 
 
{ config, lib, pkgs, inputs, user, hostname, secrets, location, ... }:
{
  imports = [ ];

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

    packages = with pkgs; [
      scrot
      redshift
      discord
      mpv
      sxiv
      #dwm
      st
      dmenu
      unclutter
      clipmenu
      dunst
      sxhkd
      zathura
      feh
      pavucontrol
      polkit_gnome
      nixpkgs-fmt
      virt-manager
      xmonadctl
      xdotool #needed for xmobar clickable workspaces
      xlockmore
      arandr
      jrnl
      todo-txt-cli
      element-desktop
      dwmbar
      manga-cli
      mov-cli
      smart-wallpaper
      waybar
      wl-clipboard
      sway
      swayidle
      swaylock
      swaybg
      river
      wlr-randr
      wlsunset
    ] ++
    (with pkgs.custom; [
      lemacs
    ]);
  };

  xsession.windowManager.xmonad = {
    enable = true;
    enableContribAndExtras = true;
    config = "${inputs.dotfiles}/xmonad.hs";
  };

  programs = {
    xmobar = {
      enable = true;
      extraConfig = builtins.readFile "${inputs.dotfiles}/xmobar.hs";
    };
  };

  home.sessionVariables = {
    LOCATION = "${location}";
  };

  services = {
    gpg-agent = {
      enable = true;
      enableSshSupport = true;
      sshKeys = [ "BC10A40920B576F641480795B9C7E01A4E47DA9F" ];
      defaultCacheTtl = 43200; #12h
      defaultCacheTtlSsh = 43200;
      maxCacheTtl = 86400; #24h
      maxCacheTtlSsh = 86400;
    };

    emacs = {
      enable = true;
      startWithUserSession = true;
    };

    screen-locker = {
      enable = true;
      lockCmd = "${pkgs.xlockmore}/bin/xlock +resetsaver -dpmsoff 5 -mode blank";
      xautolock.enable = false;
    };
  };

  programs = {
    git = {
      enable = true;
      userName = "Baitinq";
      userEmail = "manuelpalenzuelamerino@gmail.com";
      signing = {
        signByDefault = true;
        key = "18BE4F736F27FC190C1E1000BB3C0BC698650937";
      };
      extraConfig = {
        push.autoSetupRemote = true;
        init.defaultBranch = "master";
      };
    };

    direnv = {
      enable = true;
      nix-direnv.enable = true;
    };

    emacs = {
      enable = true;
      extraPackages = epkgs: with epkgs; [
        use-package

        direnv

        evil
        evil-collection

        doom-modeline
        dashboard

        lsp-ui
        projectile

        lsp-mode
        company
        lsp-haskell

        nix-mode
        haskell-mode
        typescript-mode
        jq-mode

        doom-themes
      ];
      extraConfig = builtins.readFile "${inputs.dotfiles}/.emacs";
    };

    firefox = {
      enable = true;
      extensions = with pkgs.nur.repos.rycee.firefox-addons; [
        ublock-origin
        darkreader
        https-everywhere
        h264ify
      ];
      profiles.default = {
        id = 0;
        name = "Default";
        isDefault = true;
        settings = {
          "general.autoScroll" = true;
        };
      };
    };

    rtorrent = { enable = true; };

    obs-studio = { enable = true; };

    bash = {
      enable = true;
      bashrcExtra = builtins.readFile "${inputs.dotfiles}/.bashrc";
      profileExtra = builtins.readFile "${inputs.dotfiles}/.bash_profile";
    };

    zsh = {
      enable = true;

      oh-my-zsh.enable = true;

      plugins = [
        {
          # will source zsh-autosuggestions.plugin.zsh
          name = "zsh-autosuggestions";
          src = pkgs.fetchFromGitHub {
            owner = "zsh-users";
            repo = "zsh-autosuggestions";
            rev = "v0.7.0";
            sha256 = "sha256-KLUYpUu4DHRumQZ3w59m9aTW6TBKMCXl2UcKi4uMd7w=";
          };
        }
        {
          name = "zsh-256color";
          src = pkgs.fetchFromGitHub {
            owner = "chrissicool";
            repo = "zsh-256color";
            rev = "9d8fa1015dfa895f2258c2efc668bc7012f06da6";
            sha256 = "sha256-Qd9pjDSQk+kz++/UjGVbM4AhAklc1xSTimLQXxN57pI=";
          };
        }
        {
          name = "zsh-syntax-highlighting";
          src = pkgs.fetchFromGitHub {
            owner = "zsh-users";
            repo = "zsh-syntax-highlighting";
            rev = "0.7.0";
            sha256 = "sha256-eRTk0o35QbPB9kOIV0iDwd0j5P/yewFFISVS/iEfP2g=";
          };
        }
        {
          name = "agnoster-nanof";
          file = "agnoster-nanof.zsh-theme";
          src = pkgs.fetchFromGitHub {
            owner = "fsegouin";
            repo = "oh-my-zsh-agnoster-mod-theme";
            rev = "46832da7156a4cd67e9b7ed245bb2782c690b8bb";
            sha256 = "sha256-hCG/N0AbjAxDLbMo+lLpf6SKyx5Athru84nWL/3spb4=";
          };
        }
      ];

      shellAliases = {
        ls = "ls --color";
        l = "ls -l";
        ll = "ls -la";
        weather = "(){ curl -s v2.wttr.in/$1 }";
        vim = "nvim";
        q = "exit";
        c = "clear";
        extract = ''
          () {
            if [ -f $1 ] ; then
              case $1 in
                *.tar.bz2)   tar xvjf $1    ;;
                *.tar.gz)    tar xvzf $1    ;;
                *.tar.xz)    tar Jxvf $1    ;;
                *.bz2)       bunzip2 $1     ;;
                *.rar)       rar x $1       ;;
                *.gz)        gunzip $1      ;;
                *.tar)       tar xvf $1     ;;
                *.tbz2)      tar xvjf $1    ;;
                *.tgz)       tar xvzf $1    ;;
                *.zip)       unzip -d `echo $1 | sed 's/\(.*\)\.zip/\1/'` $1;;
                *.Z)         uncompress $1  ;;
                *.7z)        7z x $1        ;;
                *)           echo "don't know how to extract '$1'" ;;
              esac
            else
              echo "'$1' is not a valid file!"
            fi
          }'';
      };

      initExtra = ''
        autoload -U history-search-end #needed for -end
        zle -N history-beginning-search-backward-end history-search-end
        zle -N history-beginning-search-forward-end history-search-end

        #when going up go up only beggining of curr word history
        bindkey '\e[A' history-beginning-search-backward-end
        bindkey '\e[B' history-beginning-search-forward-end
        #ctrl + arrow forward/backward word
        bindkey "^[[1;5C" forward-word
        bindkey "^[[1;5D" backward-word
        #alt + arrow forward/backward word
        bindkey "^[[1;3C" forward-word
        bindkey "^[[1;3D" backward-word
        #alt + delete delete whole word
        bindkey "\e\x7f" backward-kill-word
      '';
    };

  };

  xdg = {
    configFile."sway/config".source = "${inputs.dotfiles}/sway_config";
    configFile."river/".source = "${inputs.dotfiles}/river/";
    configFile."waybar/".source = "${inputs.dotfiles}/waybar/";
    configFile."zathura/zathurarc".source = "${inputs.dotfiles}/zathurarc";
    configFile."dunst/dunstrc".source = "${inputs.dotfiles}/dunstrc";
  };

  home.file = {
    ".xinitrc".source = "${inputs.dotfiles}/.xinitrc";
    ".Xresources".source = "${inputs.dotfiles}/.Xresources";

    ".scripts/".source = "${inputs.dotfiles}/scripts/";
  };

  home.file = {
    "./Images/Wallpapers".source = inputs.wallpapers;
  };

  # For disabling the automatic creation of $HOME/Desktop
  xdg.userDirs.desktop = "$HOME/";

  home.stateVersion = "22.05";

}