352 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			352 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   lib,
 | |
|   pkgs,
 | |
|   ...
 | |
| }:
 | |
| let
 | |
|   qutebrowser_firejail = pkgs.writeShellScriptBin "qutebrowser" ''
 | |
|     firejail -- ${lib.getExe pkgs.qutebrowser} "$@"
 | |
|   '';
 | |
| in
 | |
| {
 | |
|   imports = [
 | |
|     ../common/zsh.nix
 | |
|     ../common/i3status-rust.nix
 | |
|     ../common/sway.nix
 | |
|     ../common/i3.nix
 | |
|     ./home_packages.nix
 | |
|     ../common/whatsapp-for-linux.nix
 | |
|   ];
 | |
| 
 | |
|   home.stateVersion = "22.11";
 | |
|   home.username = "akill";
 | |
|   home.homeDirectory = "/home/akill";
 | |
| 
 | |
|   xdg.enable = true;
 | |
|   xdg.mimeApps = {
 | |
|     enable = true;
 | |
|     defaultApplications = {
 | |
|       "application/pdf" = "sioyek.desktop";
 | |
|       "default-web-browser" = "org.qutebrowser.qutebrowser.desktop";
 | |
|       "text/html" = "org.qutebrowser.qutebrowser.desktop";
 | |
|       "x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop";
 | |
|       "x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop";
 | |
|       "x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop";
 | |
|       "x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop";
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   fonts.fontconfig.enable = true;
 | |
| 
 | |
|   home.sessionVariables = rec {
 | |
|     BROWSER = lib.getExe qutebrowser_firejail;
 | |
|     DEFAULT_BROWSER = "${BROWSER}";
 | |
|     EDITOR = "nvim";
 | |
|     _JAVA_AWT_WM_NONREPARENTING = "1";
 | |
|     MOZ_ENABLE_WAYLAND = "1";
 | |
|     NIXOS_OZONE_WL = "1";
 | |
|     QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
 | |
|     SUDO_EDITOR = "nvim";
 | |
|     WLR_RENDERER = "vulkan";
 | |
|   };
 | |
| 
 | |
|   wayland.windowManager.sway = {
 | |
|     enable = true;
 | |
|   };
 | |
| 
 | |
|   programs = {
 | |
|     home-manager.enable = true;
 | |
| 
 | |
|     librewolf = {
 | |
|       enable = true;
 | |
|       package = pkgs.librewolf-wayland;
 | |
|       settings = {
 | |
|         "webgl.disable" = true;
 | |
|         "middlemouse.paste" = false;
 | |
|       };
 | |
|     };
 | |
| 
 | |
|     tmux = {
 | |
|       enable = true;
 | |
|       clock24 = true;
 | |
|       keyMode = "vi";
 | |
|       terminal = "screen-256color";
 | |
|       plugins = with pkgs.tmuxPlugins; [
 | |
|         sysstat
 | |
|         net-speed
 | |
|         gruvbox
 | |
|       ];
 | |
|     };
 | |
| 
 | |
|     mpv = {
 | |
|       enable = true;
 | |
|       config = {
 | |
|         slang = "eng,en";
 | |
|         alang = "eng,en";
 | |
|         hwdec = "auto";
 | |
|         vo = "gpu-next";
 | |
|         ao = "pipewire";
 | |
|         osd-bar = "no";
 | |
|         border = "no";
 | |
|         script-opts-set = "";
 | |
|         ytdl-format = "bestvideo[height<=?1080]+bestaudio/best";
 | |
|       };
 | |
| 
 | |
|       bindings = {
 | |
|         WHEEL_UP = "ignore";
 | |
|         WHEEL_DOWN = "ignore";
 | |
|         WHEEL_LEFT = "ignore";
 | |
|         WHEEL_RIGHT = "ignore";
 | |
|       };
 | |
|     };
 | |
| 
 | |
|     alacritty = {
 | |
|       enable = true;
 | |
| 
 | |
|       settings = {
 | |
|         font = {
 | |
|           normal.family = "JetBrainsMono";
 | |
|           italic.family = "JetBrainsMono";
 | |
|           bold.family = "JetBrainsMono";
 | |
|           bold_italic.family = "JetBrainsMono";
 | |
|           size = 14.0;
 | |
|         };
 | |
| 
 | |
|         selection = {
 | |
|           text = "0xcfcfc2";
 | |
|           background = "0x232629";
 | |
| 
 | |
|           normal = {
 | |
|             black = "0x1c1b19";
 | |
|             red = "0xef2f27";
 | |
|             green = "0x519f50";
 | |
|             yellow = "0xfbb829";
 | |
|             blue = "0x2c78bf";
 | |
|             magenta = "0xe02c6d";
 | |
|             cyan = "0x0aaeb3";
 | |
|             white = "0x918175";
 | |
|           };
 | |
| 
 | |
|           bright = {
 | |
|             black = "0x2D2C29";
 | |
|             red = "0xf75341";
 | |
|             green = "0x98bc37";
 | |
|             yellow = "0xfed06e";
 | |
|             blue = "0x68A8E4";
 | |
|             magenta = "0xff5c8f";
 | |
|             cyan = "0x53fde9";
 | |
|             white = "0xfce8c3";
 | |
|           };
 | |
|         };
 | |
|       };
 | |
|     };
 | |
| 
 | |
|     rofi = {
 | |
|       enable = true;
 | |
|       theme = "gruvbox-dark";
 | |
|     };
 | |
| 
 | |
|     foot = {
 | |
|       enable = true;
 | |
|       server.enable = true;
 | |
|       settings = {
 | |
|         main = {
 | |
|           font = "JetBrainsMono:size=10";
 | |
|           dpi-aware = "yes";
 | |
|         };
 | |
|         mouse = {
 | |
|           hide-when-typing = "yes";
 | |
|         };
 | |
|       };
 | |
|     };
 | |
| 
 | |
|     qutebrowser = {
 | |
|       enable = true;
 | |
|       keyBindings = {
 | |
|         normal = {
 | |
|           "j" = "scroll-px 0 25";
 | |
|           "k" = "scroll-px 0 -25";
 | |
|           "u" = "undo --window";
 | |
|           ";v" = "hint links spawn mpv {hint-url}";
 | |
|         };
 | |
|       };
 | |
| 
 | |
|       settings = {
 | |
|         content.notifications.enabled = false;
 | |
|         content.pdfjs = true;
 | |
|         content.webgl = false;
 | |
|         fonts.completion.category = "14pt monospace";
 | |
|         fonts.completion.entry = "14pt monospace";
 | |
|         fonts.contextmenu = "14pt monospace";
 | |
|         fonts.debug_console = "14pt monospace";
 | |
|         fonts.downloads = "14pt monospace";
 | |
|         fonts.hints = "14pt monospace";
 | |
|         fonts.keyhint = "14pt monospace";
 | |
|         fonts.messages.info = "14pt monospace";
 | |
|         fonts.prompts = "14pt monospace";
 | |
|         fonts.statusbar = "14pt monospace";
 | |
|         hints.chars = "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol0p";
 | |
|         tabs.last_close = "close";
 | |
|         tabs.position = "left";
 | |
|         tabs.show = "multiple";
 | |
|         tabs.tabs_are_windows = true;
 | |
|         tabs.width = "12%";
 | |
|         zoom.default = "125%";
 | |
|       };
 | |
|     };
 | |
| 
 | |
|     git = {
 | |
|       enable = true;
 | |
|       userName = "Asmir A";
 | |
|       userEmail = "asmir.abdulahovic@gmail.com";
 | |
|       extraConfig = {
 | |
|         init.defaultBranch = "master";
 | |
|         pull = {
 | |
|           rebase = true;
 | |
|         };
 | |
|         credential = {
 | |
|           helper = "store";
 | |
|         };
 | |
|       };
 | |
|       signing.key = "020C42B7A9ABA3E2";
 | |
|       signing.signByDefault = true;
 | |
|     };
 | |
| 
 | |
|     obs-studio = {
 | |
|       enable = true;
 | |
|       plugins = with pkgs.obs-studio-plugins; [
 | |
|         obs-vkcapture
 | |
|         input-overlay
 | |
|         obs-multi-rtmp
 | |
|         obs-pipewire-audio-capture
 | |
|         wlrobs
 | |
|         obs-vaapi
 | |
|       ];
 | |
|     };
 | |
| 
 | |
|     i3status-rust.enable = true;
 | |
|     z-lua.enable = true;
 | |
|     zsh.enable = true;
 | |
|   };
 | |
| 
 | |
|   services = {
 | |
|     lorri.enable = false;
 | |
|     mako.enable = true;
 | |
|     cliphist.enable = true;
 | |
|     gammastep = {
 | |
|       enable = true;
 | |
|       latitude = "44.53";
 | |
|       longitude = "18.67";
 | |
|       temperature.day = 5500;
 | |
|       temperature.night = 2900;
 | |
|     };
 | |
| 
 | |
|     gnome-keyring.enable = true;
 | |
| 
 | |
|     gpg-agent = {
 | |
|       enable = true;
 | |
|       defaultCacheTtl = 1800;
 | |
|       enableSshSupport = true;
 | |
|     };
 | |
| 
 | |
|     swayidle =
 | |
|       let
 | |
|         locker = pkgs.writeShellScriptBin "swaylock_fancy" ''
 | |
|           ALL_IMGS=""
 | |
|           LOCK_ARGS=""
 | |
|           for OUTPUT in $(${pkgs.sway}/bin/swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[].name')
 | |
|           do
 | |
|             TMP_FILE=$(${pkgs.coreutils}/bin/mktemp /tmp/.swaylock_ss_XXXXXX.jpg)
 | |
|             ${lib.getExe pkgs.grim} -t ppm -o $OUTPUT - | \
 | |
|               ${lib.getExe pkgs.ffmpeg} -y -loglevel 0 -i - -vframes 1 -vf "boxblur=10" "$TMP_FILE"
 | |
|             LOCK_ARGS="$LOCK_ARGS --image $OUTPUT:$TMP_FILE"
 | |
|             ALL_IMGS="$ALL_IMGS $TMP_FILE"
 | |
|           done
 | |
|             ${lib.getExe pkgs.swaylock} -f $LOCK_ARGS
 | |
|             ${pkgs.coreutils}/bin/shred $ALL_IMGS
 | |
|             ${pkgs.coreutils}/bin/rm $ALL_IMGS
 | |
|         '';
 | |
|       in
 | |
|       /*
 | |
|         refresh_i3status = pkgs.writeShellScriptBin "refresh_i3status" ''
 | |
|           ${pkgs.coreutils}/bin/sleep 1 && ${pkgs.procps}/bin/pkill -USR1 i3status-rs
 | |
|         '';
 | |
|       */
 | |
|       {
 | |
|         enable = true;
 | |
|         events = [
 | |
|           {
 | |
|             event = "before-sleep";
 | |
|             command = "${locker}/bin/swaylock_fancy";
 | |
|           }
 | |
|           {
 | |
|             event = "lock";
 | |
|             command = "${locker}/bin/swaylock_fancy";
 | |
|           }
 | |
|           /*
 | |
|             {
 | |
|               event = "after-resume";
 | |
|               command = "${refresh_i3status}/bin/refresh_i3status";
 | |
|             }
 | |
|           */
 | |
|         ];
 | |
|         timeouts = [
 | |
|           {
 | |
|             timeout = 15 * 60;
 | |
|             command = "${locker}/bin/swaylock_fancy";
 | |
|           }
 | |
|         ];
 | |
|       };
 | |
| 
 | |
|     kanshi = {
 | |
|       enable = true;
 | |
|       settings = [
 | |
|         {
 | |
|           profile.name = "undocked";
 | |
|           profile.outputs = [
 | |
|             {
 | |
|               criteria = "eDP-1";
 | |
|             }
 | |
|           ];
 | |
|         }
 | |
| 
 | |
|         {
 | |
|           profile.name = "docked";
 | |
|           profile.outputs = [
 | |
|             {
 | |
|               criteria = "eDP-1";
 | |
|               position = "0,0";
 | |
|             }
 | |
|             {
 | |
|               criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026536";
 | |
|               mode = "1920x1080@74.973Hz";
 | |
|               position = "1920,0";
 | |
|             }
 | |
|             {
 | |
|               criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026535";
 | |
|               mode = "1920x1080@74.973Hz";
 | |
|               position = "3840,0";
 | |
|             }
 | |
|           ];
 | |
|         }
 | |
|       ];
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   systemd.user = {
 | |
|     services = {
 | |
|       wayland-pipewire-idle-inhibit = {
 | |
|         Unit.Description = "inhibit sleep while audio output is active";
 | |
|         Service = {
 | |
|           ExecStart = "${lib.getExe pkgs.wayland-pipewire-idle-inhibit}";
 | |
|           Restart = "always";
 | |
|           RestartSec = 10;
 | |
|         };
 | |
|         Install = {
 | |
|           WantedBy = [ "graphical-session.target" ];
 | |
|         };
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 |