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



                         

                


                                    
 

                           
              


             
          





               
             
         
                 
                  
                 
                  
               
                                                     
               
            



                        
            
       
    
 


                                   











                                                              



                              
                                                               
                                   
                                 
                               
                             
      




                                  





                                                          

    




                                                     
                 
                             
                                                         
        



                                      

      



                               
 




                                          

              





                       






                   








                                                             
 





                                                              
               










                                      

                                  

                                    





                                                                     

                    











































                                                                           
































                                                                              



                                                                       
                                                                

                                                            





                                           






                                           

                                                                    
                                                              
    
 
               
                                               
                                                      




                                                
                                                     
    
 


                                                         
                              
 
{ config, lib, pkgs, inputs, user, hostname, secrets, location, ... }:
let
  dotfiles = ../dotfiles;
in
{
  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
    ] ++
    (with pkgs.custom; [
      smart-wallpaper
      dwmbar
      lemacs
    ]);
  };

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

  programs.xmobar = {
    enable = true;
    extraConfig = builtins.readFile (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 -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 (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 (dotfiles + "/.bashrc");
      profileExtra = builtins.readFile (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."zathura/zathurarc".source = dotfiles + "/zathurarc";
    configFile."dunst/dunstrc".source = dotfiles + "/dunstrc";
  };

  home.file = {
    ".xinitrc".source = dotfiles + "/.xinitrc";
    ".Xresources".source = dotfiles + "/.Xresources/";

    ".scripts/".source = 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";
}