chore: resolve merge conflict
This commit is contained in:
		
						commit
						686dbaeff7
					
				@ -7,11 +7,12 @@
 | 
			
		||||
  imports = [
 | 
			
		||||
    inputs.sops-nix.nixosModules.sops
 | 
			
		||||
    ./system/hardware-configuration.nix
 | 
			
		||||
    ./services.nix
 | 
			
		||||
    ./services
 | 
			
		||||
    ../../modules/system.nix
 | 
			
		||||
    ../../modules/sops.nix
 | 
			
		||||
    ../../modules/opentablet.nix
 | 
			
		||||
    ../../programs/flatpak.nix
 | 
			
		||||
    ../../programs/hyprland.nix
 | 
			
		||||
    ../../programs/steam.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
@ -54,6 +55,8 @@
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  modules.hyprland.enable = true;
 | 
			
		||||
 | 
			
		||||
  security.rtkit.enable = true;
 | 
			
		||||
 | 
			
		||||
  nix.settings.trusted-users = ["root" "phundrak"];
 | 
			
		||||
@ -64,8 +67,13 @@
 | 
			
		||||
    curl
 | 
			
		||||
    openssl
 | 
			
		||||
    wget
 | 
			
		||||
    alsa-scarlett-gui
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  boot.extraModprobeConfig = ''
 | 
			
		||||
    options snd_usb_audio vid=0x1235 pid=0x8212 device_setup=1
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  programs.nix-ld.enable = true;
 | 
			
		||||
 | 
			
		||||
  # This value determines the NixOS release from which the default
 | 
			
		||||
 | 
			
		||||
@ -1,23 +1,24 @@
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ../../modules/ssh.nix
 | 
			
		||||
    ../../modules/sunshine.nix
 | 
			
		||||
    ../../modules/xserver.nix
 | 
			
		||||
    ../../../modules/ssh.nix
 | 
			
		||||
    ../../../modules/sunshine.nix
 | 
			
		||||
    ../../../modules/xserver.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  modules = {
 | 
			
		||||
    xserver = {
 | 
			
		||||
      amdgpu.enable = true;
 | 
			
		||||
      de = "gnome";
 | 
			
		||||
    };
 | 
			
		||||
    sunshine = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      autostart = true;
 | 
			
		||||
    };
 | 
			
		||||
    xserver = {
 | 
			
		||||
      amdgpu.enable = true;
 | 
			
		||||
      de = "gnome";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  services = {
 | 
			
		||||
    blueman.enable = true;
 | 
			
		||||
    fwupd.enable = true;
 | 
			
		||||
    printing.enable = true;
 | 
			
		||||
    openssh.enable = true;
 | 
			
		||||
    fwupd.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -6,44 +6,9 @@
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.hyprland;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.hyprland = {
 | 
			
		||||
    enable = mkEnableOption "Enables Hyprland";
 | 
			
		||||
    config = mkOption {
 | 
			
		||||
      type = types.lines;
 | 
			
		||||
      default = "";
 | 
			
		||||
    };
 | 
			
		||||
    waybar = {
 | 
			
		||||
      config = mkOption {
 | 
			
		||||
        type = types.lines;
 | 
			
		||||
        default = "";
 | 
			
		||||
      };
 | 
			
		||||
      style = mkOption {
 | 
			
		||||
        type = types.nullOr types.path;
 | 
			
		||||
        default = null;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = {
 | 
			
		||||
    wayland.windowManager.hyprland = mkIf cfg.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      xwayland.enable = true;
 | 
			
		||||
      systemd.enable = true;
 | 
			
		||||
      extraConfig = cfg.config;
 | 
			
		||||
    };
 | 
			
		||||
    services.wpaperd = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = ''
 | 
			
		||||
        [default]
 | 
			
		||||
        path = "/home/phundrak/Pictures/Wallpapers/nord"
 | 
			
		||||
        duration = "5m"
 | 
			
		||||
        sorting = "ascending"
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    programs.waybar = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      inherit (cfg.waybar) config style;
 | 
			
		||||
      systemd.enableInspect = true;
 | 
			
		||||
    };
 | 
			
		||||
  options.modules.hyprland.enable = mkEnableOption "Enables Hyprland";
 | 
			
		||||
  config.programs.hyprland = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    withUWSM = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,15 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.kdeconnect;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.kdeconnect.enable = mkEnableOption "Enable KDEConnect";
 | 
			
		||||
 | 
			
		||||
  config.services.kdeconnect = mkIf cfg.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    indicator = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										0
									
								
								users/modules/eww-config/eww.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								users/modules/eww-config/eww.scss
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										12
									
								
								users/modules/eww-config/eww.yuck
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								users/modules/eww-config/eww.yuck
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
(defwindow example
 | 
			
		||||
           :monitor 0
 | 
			
		||||
           :geometry (geometry :x "0%"
 | 
			
		||||
                               :y "20%"
 | 
			
		||||
                               :width "90%"
 | 
			
		||||
                               :height "30px"
 | 
			
		||||
                               :anchor "top center")
 | 
			
		||||
           :stacking "fg"
 | 
			
		||||
           :reserve (struts :distance "40px" :side "top")
 | 
			
		||||
           :windowtype "dock"
 | 
			
		||||
           :wm-ignore false
 | 
			
		||||
           "example content")
 | 
			
		||||
							
								
								
									
										0
									
								
								users/modules/eww-config/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								users/modules/eww-config/test
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										6
									
								
								users/modules/eww.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								users/modules/eww.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  programs.eww = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    configDir = ./eww-config;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,8 +1,300 @@
 | 
			
		||||
{
 | 
			
		||||
  imports = [../../programs/hyprland.nix];
 | 
			
		||||
  modules.hyprland = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    config = builtins.readFile ./config/hypr/hyprland.conf;
 | 
			
		||||
    waybar.style = ./config/waybar/style.css;
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.hyprland;
 | 
			
		||||
  rofi-emoji = import ../scripts/rofi-emoji.nix {inherit pkgs;};
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./swaync.nix
 | 
			
		||||
    ./waybar.nix
 | 
			
		||||
    ./wlsunset.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.modules.hyprland = {
 | 
			
		||||
    enable = mkEnableOption "Enables Hyprland";
 | 
			
		||||
    swaync = mkEnableOption "Enables swaync";
 | 
			
		||||
    emacsPkg = mkOption {
 | 
			
		||||
      type = types.package;
 | 
			
		||||
      default = pkgs.emacs;
 | 
			
		||||
    };
 | 
			
		||||
    host = mkOption {
 | 
			
		||||
      type = types.enum ["tilo" "gampo"];
 | 
			
		||||
      default = "tilo";
 | 
			
		||||
      description = ''
 | 
			
		||||
        Which host is Hyprland running on.
 | 
			
		||||
 | 
			
		||||
        This helps determine the monitors layout.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    waybar = {
 | 
			
		||||
      enable = mkEnableOption "Enables waybar.";
 | 
			
		||||
      battery = mkEnableOption "Enables battery support.";
 | 
			
		||||
      style = mkOption {
 | 
			
		||||
        type = types.path;
 | 
			
		||||
        example = ./style.css;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = mkIf cfg.enable {
 | 
			
		||||
    wayland.windowManager.hyprland = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      xwayland.enable = true;
 | 
			
		||||
      systemd.enable = false;
 | 
			
		||||
      importantPrefixes = ["$left" "$right" "$up" "$down" "$menu"];
 | 
			
		||||
      settings = {
 | 
			
		||||
        input = {
 | 
			
		||||
          kb_layout = "fr";
 | 
			
		||||
          kb_variant = "bepo_afnor";
 | 
			
		||||
          kb_options = "caps:ctrl_modifier";
 | 
			
		||||
          numlock_by_default = true;
 | 
			
		||||
          follow_mouse = 1;
 | 
			
		||||
          touchpad.natural_scroll = false;
 | 
			
		||||
          sensitivity = "0";
 | 
			
		||||
        };
 | 
			
		||||
        monitor =
 | 
			
		||||
          {
 | 
			
		||||
            "tilo" = [
 | 
			
		||||
              "DP-1, 3440x1440@144, 0x725, 1"
 | 
			
		||||
              "DP-3, 2560x1080@60, 3440x0, 1, transform, 3"
 | 
			
		||||
            ];
 | 
			
		||||
            "gampo" = [];
 | 
			
		||||
          }."${cfg.host}";
 | 
			
		||||
        general = {
 | 
			
		||||
          gaps_in = 5;
 | 
			
		||||
          gaps_out = 20;
 | 
			
		||||
          border_size = 2;
 | 
			
		||||
          "col.active_border" = "rgb(81a1c1) rgb(a3be8c) 45deg";
 | 
			
		||||
          "col.inactive_border" = "rgb(4c566a)";
 | 
			
		||||
          layout = "dwindle";
 | 
			
		||||
        };
 | 
			
		||||
        decoration = {
 | 
			
		||||
          rounding = 5;
 | 
			
		||||
          # blur = {
 | 
			
		||||
          #   enable = true;
 | 
			
		||||
          #   size = 9;
 | 
			
		||||
          #   passes = 1;
 | 
			
		||||
          # };
 | 
			
		||||
          # shadow = {
 | 
			
		||||
          #   enable = true;
 | 
			
		||||
          #   color = "rgba(2e3440aa)";
 | 
			
		||||
          #   range = 4;
 | 
			
		||||
          #   render_power = 3;
 | 
			
		||||
          # };
 | 
			
		||||
        };
 | 
			
		||||
        animations = {
 | 
			
		||||
          enabled = true;
 | 
			
		||||
          animation = [
 | 
			
		||||
            # "windows, 1, 7, myBezier"
 | 
			
		||||
            "windowsOut, 1, 7, default, popin 80%"
 | 
			
		||||
            "border, 1, 10, default"
 | 
			
		||||
            "borderangle, 1, 8, default"
 | 
			
		||||
            "fade, 1, 7, default"
 | 
			
		||||
            "workspaces, 1, 6, default"
 | 
			
		||||
          ];
 | 
			
		||||
        };
 | 
			
		||||
        dwindle = {
 | 
			
		||||
          pseudotile = true;
 | 
			
		||||
          preserve_split = true;
 | 
			
		||||
        };
 | 
			
		||||
        exec-once = [
 | 
			
		||||
          "pactl load-module module-switch-on-connect"
 | 
			
		||||
          "${pkgs.mpc}/bin/mpc stop"
 | 
			
		||||
          "${pkgs.networkmanagerapplet}/bin/nm-applet"
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
        $left = c
 | 
			
		||||
        $right = r
 | 
			
		||||
        $up = s
 | 
			
		||||
        $down = t
 | 
			
		||||
        $menu = ${pkgs.wofi}/bin/wofi --show drun
 | 
			
		||||
 | 
			
		||||
        bind = SUPER, Return, exec, kitty
 | 
			
		||||
        bind = SUPER, Space, submap, leader
 | 
			
		||||
        bind = , Print, submap, screenshot
 | 
			
		||||
 | 
			
		||||
        submap = leader
 | 
			
		||||
        bind = , l, exec, plock
 | 
			
		||||
        bind = , l, submap, reset
 | 
			
		||||
        bind = , a, submap, apps
 | 
			
		||||
        bind = , b, submap, buffers
 | 
			
		||||
        bind = , w, submap, windows
 | 
			
		||||
        bind = , escape, submap, reset
 | 
			
		||||
        bind = CTRL, g, submap, reset
 | 
			
		||||
 | 
			
		||||
        submap = apps
 | 
			
		||||
        bind = , b, exec, zen
 | 
			
		||||
        bind = , b, submap, reset
 | 
			
		||||
        bind = SHIFT, b, exec, qutebrowser
 | 
			
		||||
        bind = SHIFT, b, submap, reset
 | 
			
		||||
        bind = , d, exec, vesktop
 | 
			
		||||
        bind = , d, submap, reset
 | 
			
		||||
        bind = , e, exec, ${cfg.emacsPkg}/bin/emacsclient -c -n
 | 
			
		||||
        bind = , e, submap, reset
 | 
			
		||||
        bind = , g, exec, ${pkgs.gimp}/bin/gimp
 | 
			
		||||
        bind = , g, submap, reset
 | 
			
		||||
        bind = , n, exec, ${pkgs.nemo}/bin/nemo
 | 
			
		||||
        bind = , n, submap, reset
 | 
			
		||||
        bind = , r, submap, rofi
 | 
			
		||||
        bind = , u, exec, $menu
 | 
			
		||||
        bind = , u, submap, reset
 | 
			
		||||
        bind = , escape, submap, reset
 | 
			
		||||
        bind = CTRL, g, submap, reset
 | 
			
		||||
        submap = buffers
 | 
			
		||||
        bind = , d, killactive,
 | 
			
		||||
        bind = , d, submap, reset
 | 
			
		||||
        bind = , escape, submap, reset
 | 
			
		||||
        bind = CTRL, g, submap, reset
 | 
			
		||||
        submap = resize
 | 
			
		||||
        binde = , $left, resizeactive, -10 0
 | 
			
		||||
        binde = , $right, resizeactive, 10 0
 | 
			
		||||
        binde = , $up, resizeactive, 0 -10
 | 
			
		||||
        binde = , $down, resizeactive, 0 10
 | 
			
		||||
        bind = , q, submap, reset
 | 
			
		||||
        bind = , escape, submap, reset
 | 
			
		||||
        bind = CTRL, g, submap, reset
 | 
			
		||||
        submap = rofi
 | 
			
		||||
        bind = , e, exec, ${rofi-emoji}/bin/rofi-emoji
 | 
			
		||||
        bind = , e, submap, reset
 | 
			
		||||
        bind = , r, exec, $menu
 | 
			
		||||
        bind = , r, submap, reset
 | 
			
		||||
        bind = , y, exec, ytplay
 | 
			
		||||
        bind = , y, submap, reset
 | 
			
		||||
        bind = , escape, submap, reset
 | 
			
		||||
        bind = CTRL, g, submap, reset
 | 
			
		||||
        submap = screenshot
 | 
			
		||||
        bind = , Print, exec, screenshot
 | 
			
		||||
        bind = , Print, submap, reset
 | 
			
		||||
        bind = , d, exec, screenshot -d 3
 | 
			
		||||
        bind = , d, submap, reset
 | 
			
		||||
        bind = Shift, d, exec, screenshot -sced 3
 | 
			
		||||
        bind = Shift, d, submap, reset
 | 
			
		||||
        bind = , e, exec, screenshot -sec
 | 
			
		||||
        bind = , e, submap, reset
 | 
			
		||||
        bind = , s, exec, screenshot -s
 | 
			
		||||
        bind = , s, submap, reset
 | 
			
		||||
        bind = Shift, s, exec, screenshot -sc
 | 
			
		||||
        bind = Shift, s, submap, reset
 | 
			
		||||
        bind = , escape, submap, reset
 | 
			
		||||
        bind = CTRL, g, submap, reset
 | 
			
		||||
        submap = windows
 | 
			
		||||
        bind = , period, submap, resize
 | 
			
		||||
        bind = , $left, movefocus, l
 | 
			
		||||
        bind = , $left, submap, reset
 | 
			
		||||
        bind = , $right, movefocus, r
 | 
			
		||||
        bind = , $right, submap, reset
 | 
			
		||||
        bind = , $up, movefocus, u
 | 
			
		||||
        bind = , $up, submap, reset
 | 
			
		||||
        bind = , $down, movefocus, d
 | 
			
		||||
        bind = , $down, submap, reset
 | 
			
		||||
        bind = SHIFT, $left, movewindow, l
 | 
			
		||||
        bind = SHIFT, $left, submap, reset
 | 
			
		||||
        bind = SHIFT, $right, movewindow, r
 | 
			
		||||
        bind = SHIFT, $right, submap, reset
 | 
			
		||||
        bind = SHIFT, $up, movewindow, u
 | 
			
		||||
        bind = SHIFT, $up, submap, reset
 | 
			
		||||
        bind = SHIFT, $down, movewindow, d
 | 
			
		||||
        bind = SHIFT, $down, submap, reset
 | 
			
		||||
        bind = CTRL_SHIFT, $left, moveworkspacetomonitor, e+0 +1
 | 
			
		||||
        bind = CTRL_SHIFT, $left, submap, reset
 | 
			
		||||
        bind = CTRL_SHIFT, $right, moveworkspacetomonitor, e+0 -1
 | 
			
		||||
        bind = CTRL_SHIFT, $right, submap, reset
 | 
			
		||||
        bind = , d, killactive,
 | 
			
		||||
        bind = , d, submap, reset
 | 
			
		||||
        bind = , f, fullscreen,
 | 
			
		||||
        bind = , f, submap, reset
 | 
			
		||||
        bind = SHIFT, f, togglefloating,
 | 
			
		||||
        bind = SHIFT, f, submap, reset
 | 
			
		||||
        bind = , escape, submap, reset
 | 
			
		||||
        bind = CTRL, g, submap, reset
 | 
			
		||||
 | 
			
		||||
        submap = reset
 | 
			
		||||
        bindl = , XF86AudioPlay, exec, playerctl play-pause
 | 
			
		||||
        bindl = , XF86AudioPause, exec, playerctl pause
 | 
			
		||||
        bindl = , XF86AudioStop, exec, playerctl stop
 | 
			
		||||
        bindl = , XF86AudioPrev, exec, playerctl previous
 | 
			
		||||
        bindl = , XF86AudioNext, exec, playerctl next
 | 
			
		||||
        bindl = , XF86AudioForward, exec, playerctl position +1
 | 
			
		||||
        bindl = , XF86AudioRewind, exec, playerctl position -1
 | 
			
		||||
        bindl = , XF86AudioRaiseVolume, exec, pamixer -i 2
 | 
			
		||||
        bindl = , XF86AudioLowerVolume, exec, pamixer -d 2
 | 
			
		||||
        bindl = , XF86MonBrightnessUp, exec, xbacklight -perceived -inc 2
 | 
			
		||||
        bindl = , XF86MonBrightnessDown, exec, xbacklight -perceived -dec 2
 | 
			
		||||
        bindl = , XF86KbdBrightnessUp, exec, xbacklight -perceived -inc 2
 | 
			
		||||
        bindl = , XF86KbdBrightnessDown, exec, xbacklight -perceived -dec 2
 | 
			
		||||
        bind = SUPER, $left, movefocus, l
 | 
			
		||||
        bind = SUPER, $right, movefocus, r
 | 
			
		||||
        bind = SUPER, $up, movefocus, u
 | 
			
		||||
        bind = SUPER, $down, movefocus, d
 | 
			
		||||
        bind = SUPER_SHIFT, $left, movewindow, l
 | 
			
		||||
        bind = SUPER_SHIFT, $left, submap, reset
 | 
			
		||||
        bind = SUPER_SHIFT, $right, movewindow, r
 | 
			
		||||
        bind = SUPER_SHIFT, $right, submap, reset
 | 
			
		||||
        bind = SUPER_SHIFT, $up, movewindow, u
 | 
			
		||||
        bind = SUPER_SHIFT, $up, submap, reset
 | 
			
		||||
        bind = SUPER_SHIFT, $down, movewindow, d
 | 
			
		||||
        bind = SUPER_SHIFT, $down, submap, reset
 | 
			
		||||
        bind = SUPER_CTRL_SHIFT, $left, moveworkspacetomonitor, e+0 +1
 | 
			
		||||
        bind = SUPER_CTRL_SHIFT, $left, submap, reset
 | 
			
		||||
        bind = SUPER_CTRL_SHIFT, $right, moveworkspacetomonitor, e+0 -1
 | 
			
		||||
        bind = SUPER_CTRL_SHIFT, $right, submap, reset
 | 
			
		||||
        bind = SUPER, Tab, cyclenext,
 | 
			
		||||
        bind = SUPER_SHIFT, Tab, cyclenext, prev
 | 
			
		||||
        bindm = SUPER, mouse:272, movewindow
 | 
			
		||||
        bindm = SUPER, mouse:273, resizewindow
 | 
			
		||||
        bind = SUPER, quotedbl, workspace, 1
 | 
			
		||||
        bind = SUPER, guillemotleft, workspace, 2
 | 
			
		||||
        bind = SUPER, guillemotright, workspace, 3
 | 
			
		||||
        bind = SUPER, parenleft, workspace, 4
 | 
			
		||||
        bind = SUPER, parenright, workspace, 5
 | 
			
		||||
        bind = SUPER, at, workspace, 6
 | 
			
		||||
        bind = SUPER, plus, workspace, 7
 | 
			
		||||
        bind = SUPER, minus, workspace, 8
 | 
			
		||||
        bind = SUPER, slash, workspace, 9
 | 
			
		||||
        bind = SUPER, asterisk, workspace, 10
 | 
			
		||||
        bind = SUPER, mouse_down, workspace, e+1
 | 
			
		||||
        bind = SUPER, mouse_up, workspace, e-1
 | 
			
		||||
        bind = SUPER_SHIFT, quotedbl, movetoworkspace, 1
 | 
			
		||||
        bind = SUPER_SHIFT, guillemotleft, movetoworkspace, 2
 | 
			
		||||
        bind = SUPER_SHIFT, guillemotright, movetoworkspace, 3
 | 
			
		||||
        bind = SUPER_SHIFT, parenleft, movetoworkspace, 4
 | 
			
		||||
        bind = SUPER_SHIFT, parenright, movetoworkspace, 5
 | 
			
		||||
        bind = SUPER_SHIFT, at, movetoworkspace, 6
 | 
			
		||||
        bind = SUPER_SHIFT, plus, movetoworkspace, 7
 | 
			
		||||
        bind = SUPER_SHIFT, minus, movetoworkspace, 8
 | 
			
		||||
        bind = SUPER_SHIFT, slash, movetoworkspace, 9
 | 
			
		||||
        bind = SUPER_SHIFT, asterisk, movetoworkspace, 10
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    services = {
 | 
			
		||||
      blueman-applet.enable = true;
 | 
			
		||||
      wpaperd = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        settings = {
 | 
			
		||||
          default = {
 | 
			
		||||
            path = "/home/phundrak/Pictures/Wallpapers/nord";
 | 
			
		||||
            duration = "5m";
 | 
			
		||||
            sorting = "random";
 | 
			
		||||
            mode = "center";
 | 
			
		||||
            recursive = true;
 | 
			
		||||
          };
 | 
			
		||||
          DP-3 = {
 | 
			
		||||
            mode = "fit-border-color";
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    modules = {
 | 
			
		||||
      swaync.enable = cfg.swaync;
 | 
			
		||||
      waybar = mkIf cfg.waybar.enable {
 | 
			
		||||
        inherit (cfg.waybar) enable battery style;
 | 
			
		||||
      };
 | 
			
		||||
      wlsunset.enable = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -29,32 +29,6 @@ in {
 | 
			
		||||
  config = mkIf cfg.enable {
 | 
			
		||||
    systemd.user.services.mbsync.unitConfig.After = ["sops-nix.service"];
 | 
			
		||||
    services.mbsync.enable = cfg.service.enable;
 | 
			
		||||
    programs.mbsync = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
        IMAPAccount Main
 | 
			
		||||
        Host ${cfg.host}
 | 
			
		||||
        User ${cfg.user}
 | 
			
		||||
        PassCmd "cat ${cfg.passwordFile}"
 | 
			
		||||
        SSLType IMAPS
 | 
			
		||||
        SSLVersion TLSv1.2
 | 
			
		||||
        CertificateFile /etc/ssl/certs/ca-certificates.crt
 | 
			
		||||
 | 
			
		||||
        IMAPStore main-remote
 | 
			
		||||
        Account Main
 | 
			
		||||
 | 
			
		||||
        MaildirStore main-local
 | 
			
		||||
        Subfolders Verbatim
 | 
			
		||||
        Path ~/Mail/
 | 
			
		||||
        Inbox ~/Mail/Inbox
 | 
			
		||||
 | 
			
		||||
        Channel main
 | 
			
		||||
        Far :main-remote:
 | 
			
		||||
        Near :main-local:
 | 
			
		||||
        Create Both
 | 
			
		||||
        SyncState *
 | 
			
		||||
        Patterns *
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    programs.mbsync.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -3,16 +3,14 @@
 | 
			
		||||
    enable = true;
 | 
			
		||||
    config = {
 | 
			
		||||
      force-window = "immediate";
 | 
			
		||||
      ytdl-format = "bestvideo[height<=1080]+bestaudio";
 | 
			
		||||
      force-seekable = true; # force streams to be seekable
 | 
			
		||||
      cache-default = 4000000;
 | 
			
		||||
      slang = "jpn,jp,eng,en,fra,fr";
 | 
			
		||||
      alang = "eng,en,fra,fr";
 | 
			
		||||
      gpu-api = "vulkan";
 | 
			
		||||
      osc = true;
 | 
			
		||||
      profile = "gpu-hq";
 | 
			
		||||
      geometry = "50%x50%";
 | 
			
		||||
      autofit-larger = "90%x90%";
 | 
			
		||||
      # geometry = "50%x50%";
 | 
			
		||||
      # autofit-larger = "90%x90%";
 | 
			
		||||
 | 
			
		||||
      # Screenshots
 | 
			
		||||
      screenshot-format = "png";
 | 
			
		||||
@ -24,14 +22,12 @@
 | 
			
		||||
      deband-iterations = 2;
 | 
			
		||||
      deband-threshold = 35;
 | 
			
		||||
      deband-range = 20;
 | 
			
		||||
      deband-grand = 5;
 | 
			
		||||
 | 
			
		||||
      dither-depth = "auto";
 | 
			
		||||
 | 
			
		||||
      sub-auto = "fuzzy";
 | 
			
		||||
 | 
			
		||||
      scale = "ewa_lanczossharp";
 | 
			
		||||
      dscale = "mitchel";
 | 
			
		||||
      cscale = "ewa_lanczossharp";
 | 
			
		||||
    };
 | 
			
		||||
    scripts = with pkgs.mpvScripts; [
 | 
			
		||||
@ -43,7 +39,7 @@
 | 
			
		||||
      quality-menu
 | 
			
		||||
      sponsorblock
 | 
			
		||||
      thumbfast
 | 
			
		||||
      # twitch-chat
 | 
			
		||||
      twitch-chat
 | 
			
		||||
      youtube-chat
 | 
			
		||||
      youtube-upnext
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										18
									
								
								users/modules/swaync.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								users/modules/swaync.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.swaync;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.swaync = {
 | 
			
		||||
    enable = mkEnableOption "Enables swaync";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = mkIf cfg.enable {
 | 
			
		||||
    services.swaync.enable = true;
 | 
			
		||||
    home.packages = [pkgs.swaynotificationcenter];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										154
									
								
								users/modules/waybar.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										154
									
								
								users/modules/waybar.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,154 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.waybar;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.waybar = {
 | 
			
		||||
    enable = mkEnableOption "Enables waybar.";
 | 
			
		||||
    battery = mkEnableOption "Enables battery support.";
 | 
			
		||||
    style = mkOption {
 | 
			
		||||
      type = types.path;
 | 
			
		||||
      example = ./style.css;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  config.programs.waybar = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    systemd.enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      topBar = {
 | 
			
		||||
        height = 24;
 | 
			
		||||
        spacing = 2;
 | 
			
		||||
        modules-left = ["hyprland/workspaces" "hyprland/submap" "hyprland/window"];
 | 
			
		||||
        modules-center = [];
 | 
			
		||||
        modules-right = [
 | 
			
		||||
          "idle_inhibitor"
 | 
			
		||||
          "group/audio"
 | 
			
		||||
          "group/hardware"
 | 
			
		||||
          "network"
 | 
			
		||||
          "privacy"
 | 
			
		||||
          "clock"
 | 
			
		||||
          "tray"
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        idle_inhibitor = {
 | 
			
		||||
          format = "{icon}";
 | 
			
		||||
          format-icons = {
 | 
			
		||||
            activated = "";
 | 
			
		||||
            deactivated = "";
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        mpris = {
 | 
			
		||||
          dynamic-order = ["title" "artist" "album"];
 | 
			
		||||
          dynamic-importance-order = ["title" "artist" "album"];
 | 
			
		||||
          format = "DEFAULT: {player_icon} {dynamic}";
 | 
			
		||||
          format-paused = "DEFAULT: {status_icon} <i>{dynamic}</i>";
 | 
			
		||||
          player-icons = {
 | 
			
		||||
            default = "▶";
 | 
			
		||||
            mpv = "🎵";
 | 
			
		||||
          };
 | 
			
		||||
          status-icons.paused = "⏸";
 | 
			
		||||
          ignored-players = [];
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        pulseaudio = {
 | 
			
		||||
          format = "{volume}% {icon} {format_source}";
 | 
			
		||||
          format-bluetooth = "{volume}% {icon} {format_source}";
 | 
			
		||||
          format-bluetooth-muted = " {icon} {format_source}";
 | 
			
		||||
          format-muted = " {format_source}";
 | 
			
		||||
          format-source = "{volume}% ";
 | 
			
		||||
          format-source-muted = "";
 | 
			
		||||
          format-icons = {
 | 
			
		||||
            headphone = "";
 | 
			
		||||
            hands-free = "";
 | 
			
		||||
            headset = "";
 | 
			
		||||
            phone = "";
 | 
			
		||||
            portable = "";
 | 
			
		||||
            car = "";
 | 
			
		||||
            default = ["" "" ""];
 | 
			
		||||
          };
 | 
			
		||||
          on-click = "pavucontrol";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        network = {
 | 
			
		||||
          format-wifi = "{essid} ({signalStrength}%) ";
 | 
			
		||||
          format-ethernet = "{ipaddr}/{cidr} ";
 | 
			
		||||
          tooltip-format = "{ifname} via {gwaddr} ";
 | 
			
		||||
          format-linked = "{ifname} (No IP) ";
 | 
			
		||||
          format-disconnected = "Disconnected ⚠";
 | 
			
		||||
          format-alt = "{ifname}: {ipaddr}/{cidr}";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        "group/audio" = {
 | 
			
		||||
          modules = ["mpris" "pulseaudio" "pulseaudio/slider"];
 | 
			
		||||
          orientation = "inherit";
 | 
			
		||||
          drawer.transition-duration = 300;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        "group/hardware" = {
 | 
			
		||||
          modules = lists.optional cfg.battery "battery" ++ ["cpu" "memory" "disk"];
 | 
			
		||||
          orientation = "inherit";
 | 
			
		||||
          drawer.transition-duration = 300;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        cpu = {
 | 
			
		||||
          format = "{usage}% ";
 | 
			
		||||
          tooltip = false;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        memory.format = "{}% ";
 | 
			
		||||
 | 
			
		||||
        disk = {
 | 
			
		||||
          format = "{path}: {used}/{total} ({percentage_used}%)";
 | 
			
		||||
          unit = "GB";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        battery = {
 | 
			
		||||
          states = {
 | 
			
		||||
            good = 90;
 | 
			
		||||
            warning = 30;
 | 
			
		||||
            critical = 15;
 | 
			
		||||
          };
 | 
			
		||||
          format = "{capacity}% {icon}";
 | 
			
		||||
          format-charging = "{capacity}% ";
 | 
			
		||||
          format-plugged = "{capacity}% ";
 | 
			
		||||
          format-alt = "{time} {icon}";
 | 
			
		||||
          # An empty format will hide the module
 | 
			
		||||
          format-good = "";
 | 
			
		||||
          format-full = "";
 | 
			
		||||
          format-icons = ["" "" "" "" ""];
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        clock = {
 | 
			
		||||
          timezones = ["Europe/Paris" "Asia/Tokyo" "America/New_York" "America/Los_Angeles" "Asia/Kathmandu"];
 | 
			
		||||
          tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
 | 
			
		||||
          format-alt = "{:%Y-%m-%d}";
 | 
			
		||||
          actions = {
 | 
			
		||||
            on-click-right = "mode";
 | 
			
		||||
            on-scroll-up = "tz_up";
 | 
			
		||||
            on-scroll-down = "tz_down";
 | 
			
		||||
          };
 | 
			
		||||
          calendar = {
 | 
			
		||||
            mode = "year";
 | 
			
		||||
            mode-mon-col = 3;
 | 
			
		||||
            weeks-pos = "right";
 | 
			
		||||
            on-scroll = 1;
 | 
			
		||||
            format = {
 | 
			
		||||
              months = "<span color='#eceff4'><b>{}</b></span>";
 | 
			
		||||
              days = "<span color='#5e81ac'><b>{}</b></span>";
 | 
			
		||||
              weeks = "<span color='#8fbcbb'><b>W{:%W}</b></span>";
 | 
			
		||||
              weekdays = "<span color='#d8dee9'><b>{}</b></span>";
 | 
			
		||||
              today = "<span color='#a3be8c'><b><u>{}</u></b></span>";
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        tray.spacing = 10;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    style = builtins.readFile cfg.style;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								users/modules/wlsunset.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								users/modules/wlsunset.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.wlsunset;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.wlsunset = {
 | 
			
		||||
    enable = mkEnableOption "Enables wlsunset";
 | 
			
		||||
    latitude = mkOption {
 | 
			
		||||
      type = with types; nullOr (oneOf [str ints.unsigned float]);
 | 
			
		||||
      default = 48.5;
 | 
			
		||||
    };
 | 
			
		||||
    longitude = mkOption {
 | 
			
		||||
      type = with types; nullOr (oneOf [str ints.unsigned float]);
 | 
			
		||||
      default = 2.2;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config.services.wlsunset = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable latitude longitude;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,249 +0,0 @@
 | 
			
		||||
env = XCURSOR_SIZE,24
 | 
			
		||||
env = SDL_VIDEODRIVER,wayland
 | 
			
		||||
 | 
			
		||||
input {
 | 
			
		||||
    kb_layout = fr
 | 
			
		||||
    kb_variant = bepo_afnor
 | 
			
		||||
    kb_model =
 | 
			
		||||
    kb_options = caps:ctrl_modifier
 | 
			
		||||
    kb_rules =
 | 
			
		||||
    numlock_by_default = true
 | 
			
		||||
 | 
			
		||||
    follow_mouse = 1
 | 
			
		||||
 | 
			
		||||
    touchpad {
 | 
			
		||||
        natural_scroll = false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
monitor = HDMI-A-1, 2560x1080, 0x0, 1
 | 
			
		||||
monitor = eDP-1, 1920x1080@120, 2560x0, 1
 | 
			
		||||
 | 
			
		||||
general {
 | 
			
		||||
    gaps_in = 5
 | 
			
		||||
    gaps_out = 20
 | 
			
		||||
    border_size = 2
 | 
			
		||||
    col.active_border = rgb(81a1c1) rgb(a3be8c) 45deg
 | 
			
		||||
    col.inactive_border = rgb(4c566a)
 | 
			
		||||
    layout = dwindle
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
decoration {
 | 
			
		||||
    rounding = 5
 | 
			
		||||
    blur {
 | 
			
		||||
        enabled = true
 | 
			
		||||
        size = 9
 | 
			
		||||
        passes = 1
 | 
			
		||||
    }
 | 
			
		||||
    shadow {
 | 
			
		||||
        enabled = true
 | 
			
		||||
        color = rgba(2e3440aa)
 | 
			
		||||
        range = 4
 | 
			
		||||
        render_power = 3
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
animations {
 | 
			
		||||
    enabled = true
 | 
			
		||||
    bezier = myBezier, 0.05, 0.9, 0.1, 1.05
 | 
			
		||||
    animation = windows, 1, 7, myBezier
 | 
			
		||||
    animation = windowsOut, 1, 7, default, popin 80%
 | 
			
		||||
    animation = border, 1, 10, default
 | 
			
		||||
    animation = borderangle, 1, 8, default
 | 
			
		||||
    animation = fade, 1, 7, default
 | 
			
		||||
    animation = workspaces, 1, 6, default
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
dwindle {
 | 
			
		||||
    pseudotile = true
 | 
			
		||||
    preserve_split = true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
exec-once = wpaperd
 | 
			
		||||
exec-once = waybar
 | 
			
		||||
 | 
			
		||||
exec-once = pactl load-module module-switch-on-connect
 | 
			
		||||
exec-once = mpc stop
 | 
			
		||||
 | 
			
		||||
exec-once = xfce-polkit
 | 
			
		||||
 | 
			
		||||
exec-once = swaync
 | 
			
		||||
 | 
			
		||||
exec-once = wlsunset -l 48.5 -L 2.2 -d 1500
 | 
			
		||||
 | 
			
		||||
exec-once = nm-applet
 | 
			
		||||
exec-once = blueman-applet
 | 
			
		||||
 | 
			
		||||
$left = c
 | 
			
		||||
$right = r
 | 
			
		||||
$up = s
 | 
			
		||||
$down = t
 | 
			
		||||
$menu = rofi -combi-modi drun -show combi
 | 
			
		||||
 | 
			
		||||
bind = SUPER, Return, exec, kitty
 | 
			
		||||
bind = SUPER, Space, submap, leader
 | 
			
		||||
bind = , Print, submap, screenshot
 | 
			
		||||
 | 
			
		||||
submap = leader
 | 
			
		||||
bind = , l, exec, plock
 | 
			
		||||
bind = , l, submap, reset
 | 
			
		||||
bind = , a, submap, apps
 | 
			
		||||
bind = , b, submap, buffers
 | 
			
		||||
bind = , w, submap, windows
 | 
			
		||||
bind = , escape, submap, reset
 | 
			
		||||
bind = CTRL, g, submap, reset
 | 
			
		||||
 | 
			
		||||
submap = apps
 | 
			
		||||
bind = , b, exec, zen-browser
 | 
			
		||||
bind = , b, submap, reset
 | 
			
		||||
bind = SHIFT, b, exec, qutebrowser
 | 
			
		||||
bind = SHIFT, b, submap, reset
 | 
			
		||||
bind = , d, exec, vesktop
 | 
			
		||||
bind = , d, submap, reset
 | 
			
		||||
bind = , e, exec, emacsclient -c -n
 | 
			
		||||
bind = , e, submap, reset
 | 
			
		||||
bind = , g, exec, gimp
 | 
			
		||||
bind = , g, submap, reset
 | 
			
		||||
bind = , n, exec, nemo
 | 
			
		||||
bind = , n, submap, reset
 | 
			
		||||
bind = , r, submap, rofi
 | 
			
		||||
bind = , u, exec, $menu
 | 
			
		||||
bind = , u, submap, reset
 | 
			
		||||
bind = , escape, submap, reset
 | 
			
		||||
bind = CTRL, g, submap, reset
 | 
			
		||||
submap = buffers
 | 
			
		||||
bind = , d, killactive,
 | 
			
		||||
bind = , d, submap, reset
 | 
			
		||||
bind = , escape, submap, reset
 | 
			
		||||
bind = CTRL, g, submap, reset
 | 
			
		||||
submap = resize
 | 
			
		||||
binde = , $left, resizeactive, -10 0
 | 
			
		||||
binde = , $right, resizeactive, 10 0
 | 
			
		||||
binde = , $up, resizeactive, 0 -10
 | 
			
		||||
binde = , $down, resizeactive, 0 10
 | 
			
		||||
bind = , q, submap, reset
 | 
			
		||||
bind = , escape, submap, reset
 | 
			
		||||
bind = CTRL, g, submap, reset
 | 
			
		||||
submap = rofi
 | 
			
		||||
bind = , a, exec, awiki
 | 
			
		||||
bind = , a, submap, reset
 | 
			
		||||
bind = , b, exec, bluetooth-connect
 | 
			
		||||
bind = , b, submap, reset
 | 
			
		||||
bind = , e, exec, rofi-emoji
 | 
			
		||||
bind = , e, submap, reset
 | 
			
		||||
bind = , r, exec, $menu
 | 
			
		||||
bind = , r, submap, reset
 | 
			
		||||
bind = , s, exec, rofi -show ssh
 | 
			
		||||
bind = , s, submap, reset
 | 
			
		||||
bind = , y, exec, ytplay
 | 
			
		||||
bind = , y, submap, reset
 | 
			
		||||
bind = SHIFT, y, exec, rofi-ytdl
 | 
			
		||||
bind = SHIFT, y, submap, reset
 | 
			
		||||
bind = , escape, submap, reset
 | 
			
		||||
bind = CTRL, g, submap, reset
 | 
			
		||||
submap = screenshot
 | 
			
		||||
bind = , Print, exec, screenshot
 | 
			
		||||
bind = , Print, submap, reset
 | 
			
		||||
bind = , d, exec, screenshot -d 3
 | 
			
		||||
bind = , d, submap, reset
 | 
			
		||||
bind = Shift, d, exec, screenshot -sced 3
 | 
			
		||||
bind = Shift, d, submap, reset
 | 
			
		||||
bind = , e, exec, screenshot -sec
 | 
			
		||||
bind = , e, submap, reset
 | 
			
		||||
bind = , s, exec, screenshot -s
 | 
			
		||||
bind = , s, submap, reset
 | 
			
		||||
bind = Shift, s, exec, screenshot -sc
 | 
			
		||||
bind = Shift, s, submap, reset
 | 
			
		||||
bind = , escape, submap, reset
 | 
			
		||||
bind = CTRL, g, submap, reset
 | 
			
		||||
submap = windows
 | 
			
		||||
bind = , period, submap, resize
 | 
			
		||||
bind = , $left, movefocus, l
 | 
			
		||||
bind = , $left, submap, reset
 | 
			
		||||
bind = , $right, movefocus, r
 | 
			
		||||
bind = , $right, submap, reset
 | 
			
		||||
bind = , $up, movefocus, u
 | 
			
		||||
bind = , $up, submap, reset
 | 
			
		||||
bind = , $down, movefocus, d
 | 
			
		||||
bind = , $down, submap, reset
 | 
			
		||||
bind = SHIFT, $left, movewindow, l
 | 
			
		||||
bind = SHIFT, $left, submap, reset
 | 
			
		||||
bind = SHIFT, $right, movewindow, r
 | 
			
		||||
bind = SHIFT, $right, submap, reset
 | 
			
		||||
bind = SHIFT, $up, movewindow, u
 | 
			
		||||
bind = SHIFT, $up, submap, reset
 | 
			
		||||
bind = SHIFT, $down, movewindow, d
 | 
			
		||||
bind = SHIFT, $down, submap, reset
 | 
			
		||||
bind = CTRL_SHIFT, $left, moveworkspacetomonitor, e+0 +1
 | 
			
		||||
bind = CTRL_SHIFT, $left, submap, reset
 | 
			
		||||
bind = CTRL_SHIFT, $right, moveworkspacetomonitor, e+0 -1
 | 
			
		||||
bind = CTRL_SHIFT, $right, submap, reset
 | 
			
		||||
bind = , d, killactive,
 | 
			
		||||
bind = , d, submap, reset
 | 
			
		||||
bind = , f, fullscreen,
 | 
			
		||||
bind = , f, submap, reset
 | 
			
		||||
bind = SHIFT, f, togglefloating,
 | 
			
		||||
bind = SHIFT, f, submap, reset
 | 
			
		||||
bind = , escape, submap, reset
 | 
			
		||||
bind = CTRL, g, submap, reset
 | 
			
		||||
 | 
			
		||||
submap = reset
 | 
			
		||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
 | 
			
		||||
bindl = , XF86AudioPause, exec, playerctl pause
 | 
			
		||||
bindl = , XF86AudioStop, exec, playerctl stop
 | 
			
		||||
bindl = , XF86AudioPrev, exec, playerctl previous
 | 
			
		||||
bindl = , XF86AudioNext, exec, playerctl next
 | 
			
		||||
bindl = , XF86AudioForward, exec, playerctl position +1
 | 
			
		||||
bindl = , XF86AudioRewind, exec, playerctl position -1
 | 
			
		||||
bindl = , XF86AudioRaiseVolume, exec, pamixer -i 2
 | 
			
		||||
bindl = , XF86AudioLowerVolume, exec, pamixer -d 2
 | 
			
		||||
bindl = , XF86MonBrightnessUp, exec, xbacklight -perceived -inc 2
 | 
			
		||||
bindl = , XF86MonBrightnessDown, exec, xbacklight -perceived -dec 2
 | 
			
		||||
bindl = , XF86KbdBrightnessUp, exec, xbacklight -perceived -inc 2
 | 
			
		||||
bindl = , XF86KbdBrightnessDown, exec, xbacklight -perceived -dec 2
 | 
			
		||||
bind = SUPER, $left, movefocus, l
 | 
			
		||||
bind = SUPER, $right, movefocus, r
 | 
			
		||||
bind = SUPER, $up, movefocus, u
 | 
			
		||||
bind = SUPER, $down, movefocus, d
 | 
			
		||||
bind = SUPER_SHIFT, $left, movewindow, l
 | 
			
		||||
bind = SUPER_SHIFT, $left, submap, reset
 | 
			
		||||
bind = SUPER_SHIFT, $right, movewindow, r
 | 
			
		||||
bind = SUPER_SHIFT, $right, submap, reset
 | 
			
		||||
bind = SUPER_SHIFT, $up, movewindow, u
 | 
			
		||||
bind = SUPER_SHIFT, $up, submap, reset
 | 
			
		||||
bind = SUPER_SHIFT, $down, movewindow, d
 | 
			
		||||
bind = SUPER_SHIFT, $down, submap, reset
 | 
			
		||||
bind = SUPER_CTRL_SHIFT, $left, moveworkspacetomonitor, e+0 +1
 | 
			
		||||
bind = SUPER_CTRL_SHIFT, $left, submap, reset
 | 
			
		||||
bind = SUPER_CTRL_SHIFT, $right, moveworkspacetomonitor, e+0 -1
 | 
			
		||||
bind = SUPER_CTRL_SHIFT, $right, submap, reset
 | 
			
		||||
bind = SUPER, Tab, cyclenext,
 | 
			
		||||
bind = SUPER_SHIFT, Tab, cyclenext, prev
 | 
			
		||||
bindm = SUPER, mouse:272, movewindow
 | 
			
		||||
bindm = SUPER, mouse:273, resizewindow
 | 
			
		||||
bind = SUPER, quotedbl, workspace, 1
 | 
			
		||||
bind = SUPER, guillemotleft, workspace, 2
 | 
			
		||||
bind = SUPER, guillemotright, workspace, 3
 | 
			
		||||
bind = SUPER, parenleft, workspace, 4
 | 
			
		||||
bind = SUPER, parenright, workspace, 5
 | 
			
		||||
bind = SUPER, at, workspace, 6
 | 
			
		||||
bind = SUPER, plus, workspace, 7
 | 
			
		||||
bind = SUPER, minus, workspace, 8
 | 
			
		||||
bind = SUPER, slash, workspace, 9
 | 
			
		||||
bind = SUPER, asterisk, workspace, 10
 | 
			
		||||
bind = SUPER, mouse_down, workspace, e+1
 | 
			
		||||
bind = SUPER, mouse_up, workspace, e-1
 | 
			
		||||
bind = SUPER_SHIFT, quotedbl, movetoworkspace, 1
 | 
			
		||||
bind = SUPER_SHIFT, guillemotleft, movetoworkspace, 2
 | 
			
		||||
bind = SUPER_SHIFT, guillemotright, movetoworkspace, 3
 | 
			
		||||
bind = SUPER_SHIFT, parenleft, movetoworkspace, 4
 | 
			
		||||
bind = SUPER_SHIFT, parenright, movetoworkspace, 5
 | 
			
		||||
bind = SUPER_SHIFT, at, movetoworkspace, 6
 | 
			
		||||
bind = SUPER_SHIFT, plus, movetoworkspace, 7
 | 
			
		||||
bind = SUPER_SHIFT, minus, movetoworkspace, 8
 | 
			
		||||
bind = SUPER_SHIFT, slash, movetoworkspace, 9
 | 
			
		||||
bind = SUPER_SHIFT, asterisk, movetoworkspace, 10
 | 
			
		||||
 | 
			
		||||
windowrulev2 = float,class:^(xfce-polkit)$
 | 
			
		||||
							
								
								
									
										37
									
								
								users/phundrak/email.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								users/phundrak/email.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
{config, ...}: {
 | 
			
		||||
  accounts.email = {
 | 
			
		||||
    maildirBasePath = "Mail";
 | 
			
		||||
    accounts."lucien@phundrak.com" = {
 | 
			
		||||
      realName = "Lucien Cartier-Tilet";
 | 
			
		||||
      address = "lucien@phundrak.com";
 | 
			
		||||
      aliases = [
 | 
			
		||||
        "lucien@cartier-tilet.com"
 | 
			
		||||
        "admin@phundrak.com"
 | 
			
		||||
        "webmaster@phundrak.com"
 | 
			
		||||
        "youdontknow@phundrak.com"
 | 
			
		||||
      ];
 | 
			
		||||
      passwordCommand = "cat ${config.sops.secrets.emailPassword.path}";
 | 
			
		||||
      signature = {
 | 
			
		||||
        text = ''
 | 
			
		||||
          Lucien “Phundrak” Cartier-Tilet
 | 
			
		||||
          https://phundrak.com (Français)
 | 
			
		||||
          https://phundrak.com/en (English)
 | 
			
		||||
          Sent from GNU/Emacs
 | 
			
		||||
        '';
 | 
			
		||||
        showSignature = "append";
 | 
			
		||||
      };
 | 
			
		||||
      userName = "lucien@phundrak.com";
 | 
			
		||||
      imap.host = "mail.phundrak.com";
 | 
			
		||||
      smtp.host = "mail.phundrak.com";
 | 
			
		||||
      mu.enable = true;
 | 
			
		||||
      primary = true;
 | 
			
		||||
 | 
			
		||||
      mbsync = {
 | 
			
		||||
        create = "maildir";
 | 
			
		||||
        enable = true;
 | 
			
		||||
        expunge = "both";
 | 
			
		||||
        remove = "both";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -7,9 +7,11 @@
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./light-home.nix
 | 
			
		||||
    ./packages.nix
 | 
			
		||||
    ./email.nix
 | 
			
		||||
    ../modules/emacs.nix
 | 
			
		||||
    ../modules/kdeconnect.nix
 | 
			
		||||
    ../modules/kitty.nix
 | 
			
		||||
    ../modules/hyprland.nix
 | 
			
		||||
    ../modules/mbsync.nix
 | 
			
		||||
    ../modules/mpd.nix
 | 
			
		||||
    ../modules/mpv.nix
 | 
			
		||||
@ -47,6 +49,11 @@
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    modules = {
 | 
			
		||||
      shell.starship.jjIntegration = true;
 | 
			
		||||
      bat.extras = true;
 | 
			
		||||
      packages.emacsPackage = emacsPkg;
 | 
			
		||||
      mopidy.enable = true;
 | 
			
		||||
 | 
			
		||||
      emacs = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        service = true;
 | 
			
		||||
@ -54,11 +61,16 @@
 | 
			
		||||
        mu4eMime = true;
 | 
			
		||||
        org-protocol = true;
 | 
			
		||||
      };
 | 
			
		||||
      shell.starship.jjIntegration = true;
 | 
			
		||||
      bat.extras = true;
 | 
			
		||||
      packages.emacsPackage = emacsPkg;
 | 
			
		||||
      mopidy.enable = true;
 | 
			
		||||
 | 
			
		||||
      hyprland = {
 | 
			
		||||
        inherit emacsPkg;
 | 
			
		||||
        enable = true;
 | 
			
		||||
        swaync = true;
 | 
			
		||||
        waybar = {
 | 
			
		||||
          enable = true;
 | 
			
		||||
          battery = false;
 | 
			
		||||
          style = ./config/waybar/style.css;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
      mbsync = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        passwordFile = config.sops.secrets.emailPassword.path;
 | 
			
		||||
@ -96,6 +108,12 @@
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    services = {
 | 
			
		||||
      mpris-proxy.enable = true;
 | 
			
		||||
      playerctld.enable = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    manual.html.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@ in {
 | 
			
		||||
    default = pkgs.emacs;
 | 
			
		||||
  };
 | 
			
		||||
  config.home.packages = with pkgs; let
 | 
			
		||||
    scripts = import ../scripts/scripts.nix {
 | 
			
		||||
    scripts = import ../scripts {
 | 
			
		||||
      inherit pkgs;
 | 
			
		||||
      config.emacsPkg = cfg.emacsPackage;
 | 
			
		||||
    };
 | 
			
		||||
@ -46,7 +46,6 @@ in {
 | 
			
		||||
      plex-media-player
 | 
			
		||||
      spicetify-cli
 | 
			
		||||
      spotify
 | 
			
		||||
      spotify-tray
 | 
			
		||||
 | 
			
		||||
      # Social
 | 
			
		||||
      vesktop # Discord alternative that works well with wayland
 | 
			
		||||
 | 
			
		||||
@ -7,12 +7,13 @@
 | 
			
		||||
in [
 | 
			
		||||
  askpass
 | 
			
		||||
  (import ./backup.nix {inherit pkgs;})
 | 
			
		||||
  (import ./hyprland-autostart.nix {inherit pkgs;})
 | 
			
		||||
  (import ./keygen.nix {inherit pkgs;})
 | 
			
		||||
  (import ./launch-with-emacsclient.nix {
 | 
			
		||||
    inherit pkgs;
 | 
			
		||||
    emacsPackage = config.emacsPkg;
 | 
			
		||||
  })
 | 
			
		||||
  (import ./mp42webm.nix {inherit pkgs;})
 | 
			
		||||
  (import ./plock.nix {inherit pkgs;})
 | 
			
		||||
  (import ./screenshot.nix {inherit pkgs;})
 | 
			
		||||
  (import ./sshbind.nix {inherit pkgs;})
 | 
			
		||||
]
 | 
			
		||||
@ -1,4 +0,0 @@
 | 
			
		||||
{pkgs, ...}:
 | 
			
		||||
pkgs.writeShellScriptBin "hyprland-autostart" ''
 | 
			
		||||
  ${pkgs.waybar}/bin/waybar &
 | 
			
		||||
  ${pkgs.wlsunset}/bin/wlsunset -l 48.5 -L 2.2 -d 1500''
 | 
			
		||||
							
								
								
									
										16
									
								
								users/scripts/plock.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								users/scripts/plock.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
{pkgs, ...}:
 | 
			
		||||
pkgs.writeShellScriptBin "plock" ''
 | 
			
		||||
  TMPBG="/tmp/screen.png"
 | 
			
		||||
  if [ "$XDG_SESSION_TYPE" = "wayland" ]; then
 | 
			
		||||
      SCREENER=${pkgs.grim}/bin/grim
 | 
			
		||||
      LOCKER="${pkgs.swaylock}/bin/swaylock -feF"
 | 
			
		||||
  else
 | 
			
		||||
      SCREENER=${pkgs.scrot}/bin/scrot
 | 
			
		||||
      LOCKER="${pkgs.i3lock}/bin/i3lock -ef"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  $SCREENER "$TMPBG"
 | 
			
		||||
  ${pkgs.corrupter}/bin/corrupter -add 0 "$TMPBG" "$TMPBG"
 | 
			
		||||
  $LOCKER -ti "$TMPBG"
 | 
			
		||||
  rm "$TMPBG"
 | 
			
		||||
''
 | 
			
		||||
							
								
								
									
										18
									
								
								users/scripts/rofi-emoji.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								users/scripts/rofi-emoji.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
			
		||||
{pkgs, ...}:
 | 
			
		||||
pkgs.writeShellScriptBin "rofi-emoji" ''
 | 
			
		||||
  SELECTED_EMOJI=$(grep -v "#" ~/.config/emoji | ${pkgs.wofi}/bin/wofi --dmenu -p "Select emoji" -i | awk '{print $1}' | tr -d '\n')
 | 
			
		||||
  if [ "$XDG_SESSION_TYPE" = "wayland" ]; then
 | 
			
		||||
    printf "%s" "$SELECTED_EMOJI" | ${pkgs.wl-clipboard-rs}/bin/wl-copy
 | 
			
		||||
  else
 | 
			
		||||
    printf "%s" "$SELECTED_EMOJI" | ${pkgs.xclip}/bin/xclip -sel clip
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [ "$XDG_SESSION_TYPE" = "wayland" ]
 | 
			
		||||
  then EMOJI=$(${pkgs.wl-clipboard-rs}/bin/wl-paste)
 | 
			
		||||
  else EMOJI=$(${pkgs.xclip}/bin/xclip -o)
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  test -z "$EMOJI" && notify-send "No emoji copied" -u low && exit
 | 
			
		||||
  EMOJI="$EMOJI copied to clipboard"
 | 
			
		||||
  ${pkgs.libnotify}/bin/notify-send -u low "$EMOJI"
 | 
			
		||||
''
 | 
			
		||||
							
								
								
									
										56
									
								
								users/scripts/screenshot.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								users/scripts/screenshot.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,56 @@
 | 
			
		||||
{pkgs, ...}:
 | 
			
		||||
pkgs.writeShellScriptBin "screenshot" ''
 | 
			
		||||
  OUTFILE_BASE="$HOME/Pictures/Screenshots/Screenshot_$(date +%Y-%m-%d_%H.%M.%S)"
 | 
			
		||||
  OUTFILE="$OUTFILE_BASE.png"
 | 
			
		||||
  SUFFIX=0
 | 
			
		||||
 | 
			
		||||
  while getopts ':cd:egs' OPTION; do
 | 
			
		||||
      case "$OPTION" in
 | 
			
		||||
          c )
 | 
			
		||||
              COPY="yes"
 | 
			
		||||
              ;;
 | 
			
		||||
          d )
 | 
			
		||||
              DELAY="$OPTARG"
 | 
			
		||||
              ;;
 | 
			
		||||
          e )
 | 
			
		||||
              EDIT="yes"
 | 
			
		||||
              ;;
 | 
			
		||||
          g )
 | 
			
		||||
              GIMP="yes"
 | 
			
		||||
              ;;
 | 
			
		||||
          s )
 | 
			
		||||
              SELECT="yes"
 | 
			
		||||
              ;;
 | 
			
		||||
          ? )
 | 
			
		||||
              echo "Usage: $(basename "$0") [-c] [-d DELAY] [-e] [-g] [-s]"
 | 
			
		||||
              exit 1
 | 
			
		||||
              ;;
 | 
			
		||||
      esac
 | 
			
		||||
  done
 | 
			
		||||
 | 
			
		||||
  if [ "$SELECT" = "yes" ]; then
 | 
			
		||||
    AREA="$(${pkgs.slurp}/bin/slurp)"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [ -n "$DELAY" ]; then
 | 
			
		||||
    sleep "$DELAY"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [ "$SELECT" = "yes" ]; then
 | 
			
		||||
    ${pkgs.grim}/bin/grim -g "$AREA" "$OUTFILE"
 | 
			
		||||
  else
 | 
			
		||||
    ${pkgs.grim}/bin/grim "$OUTFILE"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [ "$EDIT" = "yes" ];then
 | 
			
		||||
    ${pkgs.swappy}/bin/swappy -f "$OUTFILE" -o "$OUTFILE"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [ "$GIMP" = "yes" ]; then
 | 
			
		||||
    ${pkgs.gimp}/bin/gimp "$OUTFILE"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  if [ "$COPY" = "yes" ]; then
 | 
			
		||||
    ${pkgs.wl-clipboard-rs}/bin/wl-copy < "$OUTFILE"
 | 
			
		||||
  fi
 | 
			
		||||
''
 | 
			
		||||
@ -1,18 +1,16 @@
 | 
			
		||||
{pkgs, ...}: let
 | 
			
		||||
  rofi = pkgs.rofi-wayland;
 | 
			
		||||
in
 | 
			
		||||
  pkgs.writeShellScriptBin "ytplay" ''
 | 
			
		||||
    URL=$(${rofi}/bin/rofi -dmenu -i -p "Video URL")
 | 
			
		||||
    if [ -z "$URL" ]; then
 | 
			
		||||
        echo "You need to provide a URL"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    RESOLUTION_CHOICE=$(${pkgs.yt-dlp}/bin/yt-dlp --list-formats "$URL" | \
 | 
			
		||||
                            grep -E "webm.*[0-9]+x[0-9]" | \
 | 
			
		||||
                            awk '{print $3 " " $1}' | \
 | 
			
		||||
                            sort -gu | \
 | 
			
		||||
                            ${rofi}/bin/rofi -dmenu -i -p "Resolution")
 | 
			
		||||
    mapfile -t RESOLUTION <<< "$RESOLUTION_CHOICE"
 | 
			
		||||
    RESOLUTION_CODE=''${RESOLUTION[0]}
 | 
			
		||||
    ${pkgs.mpv}/bin/mpv --ytdl-format="''${RESOLUTION_CODE}+bestaudio/best" "$URL"
 | 
			
		||||
  ''
 | 
			
		||||
{pkgs, ...}:
 | 
			
		||||
pkgs.writeShellScriptBin "ytplay" ''
 | 
			
		||||
  URL=$(${pkgs.wofi}/bin/wofi --dmenu -i -p "Video URL")
 | 
			
		||||
  if [ -z "$URL" ]; then
 | 
			
		||||
      echo "You need to provide a URL"
 | 
			
		||||
      exit 1
 | 
			
		||||
  fi
 | 
			
		||||
  RESOLUTION_CHOICE=$(${pkgs.yt-dlp}/bin/yt-dlp --list-formats "$URL" | \
 | 
			
		||||
                          grep -E "webm.*[0-9]+x[0-9]" | \
 | 
			
		||||
                          awk '{print $3 " " $1}' | \
 | 
			
		||||
                          sort -gu | \
 | 
			
		||||
                          ${pkgs.wofi}/bin/wofi --dmenu -i -p "Resolution")
 | 
			
		||||
  mapfile -t RESOLUTION <<< "$RESOLUTION_CHOICE"
 | 
			
		||||
  RESOLUTION_CODE=''${RESOLUTION[0]}
 | 
			
		||||
  ${pkgs.mpv}/bin/mpv --ytdl-format="''${RESOLUTION_CODE}+bestaudio/best" "$URL"
 | 
			
		||||
''
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user