diff --git a/flake.lock b/flake.lock index cfc502c..1c84f71 100644 --- a/flake.lock +++ b/flake.lock @@ -885,6 +885,24 @@ "type": "github" } }, + "nixos-search-api": { + "inputs": { + "nixpkgs": "nixpkgs_7" + }, + "locked": { + "lastModified": 1743755053, + "narHash": "sha256-OD7od7FZqRGaqdZqcds+gvOKMQ5wljXEeh00siFe/yc=", + "owner": "anotherhadi", + "repo": "nixos-search-api", + "rev": "d00e07aece54461d0b49164f8dbaaa917ac44877", + "type": "github" + }, + "original": { + "owner": "anotherhadi", + "repo": "nixos-search-api", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1730200266, @@ -902,6 +920,22 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1741513245, + "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { "locked": { "lastModified": 1742288794, "narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=", @@ -998,6 +1032,22 @@ } }, "nixpkgs_7": { + "locked": { + "lastModified": 1743583204, + "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { "locked": { "lastModified": 1743315132, "narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=", @@ -1013,7 +1063,7 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_9": { "locked": { "lastModified": 1743076231, "narHash": "sha256-yQugdVfi316qUfqzN8JMaA2vixl+45GxNm4oUfXlbgw=", @@ -1029,22 +1079,6 @@ "type": "github" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1741513245, - "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixvim": { "inputs": { "flake-parts": "flake-parts_2", @@ -1160,7 +1194,8 @@ "nixarr": "nixarr", "nixcord": "nixcord", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_7", + "nixos-search-api": "nixos-search-api", + "nixpkgs": "nixpkgs_8", "nixvim": "nixvim", "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix", @@ -1254,7 +1289,7 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_8" + "nixpkgs": "nixpkgs_9" }, "locked": { "lastModified": 1743305778, @@ -1303,7 +1338,7 @@ "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_9", + "nixpkgs": "nixpkgs_10", "nur": "nur", "systems": "systems_7", "tinted-foot": "tinted-foot", @@ -1634,7 +1669,7 @@ }, "zen-browser": { "inputs": { - "nixpkgs": "nixpkgs_10" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1743216975, diff --git a/home/programs/kitty/default.nix b/home/programs/kitty/default.nix index 013f144..4194287 100644 --- a/home/programs/kitty/default.nix +++ b/home/programs/kitty/default.nix @@ -21,11 +21,13 @@ remember_window_size = "no"; disable_ligatures = "never"; url_style = "curly"; + copy_on_select = "clipboard"; cursor_shape = "Underline"; cursor_underline_thickness = 3; cursor_trail = 3; cursor_trail_decay = "0.1 0.4"; window_padding_width = 10; + open_url_with = "default"; }; }; } diff --git a/home/system/hyprland/default.nix b/home/system/hyprland/default.nix index b7bc952..8b83ad6 100644 --- a/home/system/hyprland/default.nix +++ b/home/system/hyprland/default.nix @@ -43,7 +43,12 @@ in { xwayland.enable = true; systemd.enable = true; # withUWSM = true; # One day, but not today + systemd.variables = [ + "--all" + ]; # https://wiki.hyprland.org/Nix/Hyprland-on-Home-Manager/#programs-dont-work-in-systemd-services-but-do-on-the-terminal package = inputs.hyprland.packages."${pkgs.system}".hyprland; + portalPackage = + inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; settings = { "$mod" = "SUPER"; @@ -132,8 +137,39 @@ in { new_window_takes_over_fullscreen = 2; }; - windowrulev2 = - [ "float, tag:modal" "pin, tag:modal" "center, tag:modal" ]; + windowrulev2 = [ + "float, tag:modal" + "pin, tag:modal" + "center, tag:modal" + # telegram media viewer + "float, title:^(Media viewer)$" + + # Bitwarden extension + "float, title:^(.*Bitwarden Password Manager.*)$" + + # gnome calculator + "float, class:^(org.gnome.Calculator)$" + "size 360 490, class:^(org.gnome.Calculator)$" + + # make Firefox/Zen PiP window floating and sticky + "float, title:^(Picture-in-Picture)$" + "pin, title:^(Picture-in-Picture)$" + + # idle inhibit while watching videos + "idleinhibit focus, class:^(mpv|.+exe|celluloid)$" + "idleinhibit focus, class:^(zen)$, title:^(.*YouTube.*)$" + "idleinhibit fullscreen, class:^(zen)$" + + "dimaround, class:^(gcr-prompter)$" + "dimaround, class:^(xdg-desktop-portal-gtk)$" + "dimaround, class:^(polkit-gnome-authentication-agent-1)$" + "dimaround, class:^(zen)$, title:^(File Upload)$" + + # fix xwayland apps + "rounding 0, xwayland:1" + "center, class:^(.*jetbrains.*)$, title:^(Confirm Exit|Open Project|win424|win201|splash)$" + "size 640 400, class:^(.*jetbrains.*)$, title:^(splash)$" + ]; layerrule = [ "noanim, launcher" "noanim, ^ags-.*" ]; diff --git a/home/system/mime/default.nix b/home/system/mime/default.nix index 6ca6143..58ed8d8 100644 --- a/home/system/mime/default.nix +++ b/home/system/mime/default.nix @@ -30,19 +30,20 @@ "image/jpg" = "imv.desktop"; "image/webp" = "imv.desktop"; "image/gif" = "zen.desktop"; - "x-scheme-handler/http" = "zen.desktop"; - "x-scheme-handler/https" = "zen.desktop"; - "text/html" = "zen.desktop"; "inode/directory" = "thunar.desktop"; "application/pdf" = "zathura.desktop"; "image/png" = "imv-dir.desktop"; - "x-scheme-handler/chrome" = "zen.desktop"; - "application/x-extension-htm" = "zen.desktop"; - "application/x-extension-html" = "zen.desktop"; - "application/x-extension-shtml" = "zen.desktop"; - "application/xhtml+xml" = "zen.desktop"; - "application/x-extension-xhtml" = "zen.desktop"; - "application/x-extension-xht" = "zen.desktop"; + + "x-scheme-handler/http" = "userapp-Zen-64DC42.desktop"; + "x-scheme-handler/https" = "userapp-Zen-64DC42.desktop"; + "x-scheme-handler/chrome" = "userapp-Zen-64DC42.desktop"; + "text/html" = "userapp-Zen-64DC42.desktop"; + "application/x-extension-htm" = "userapp-Zen-64DC42.desktop"; + "application/x-extension-html" = "userapp-Zen-64DC42.desktop"; + "application/x-extension-shtml" = "userapp-Zen-64DC42.desktop"; + "application/xhtml+xml" = "userapp-Zen-64DC42.desktop"; + "application/x-extension-xhtml" = "userapp-Zen-64DC42.desktop"; + "application/x-extension-xht" = "userapp-Zen-64DC42.desktop"; }; }; }; diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index 12181c2..10c4b33 100644 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -53,6 +53,7 @@ textpieces # Manipulate texts curtail # Compress images resources + gnome-clocks # Dev go diff --git a/nixos/nix.nix b/nixos/nix.nix index 47bafaa..cbb9c0d 100644 --- a/nixos/nix.nix +++ b/nixos/nix.nix @@ -22,7 +22,9 @@ in { auto-optimise-store = true; experimental-features = [ "nix-command" "flakes" ]; substituters = [ - "https://cache.nixos.org/" + # high priority since it's almost always used + "https://cache.nixos.org?priority=10" + "https://hyprland.cachix.org" "https://nix-community.cachix.org" "https://cache.garnix.io" diff --git a/nixos/tailscale.nix b/nixos/tailscale.nix index 2dd7370..14bf7e8 100644 --- a/nixos/tailscale.nix +++ b/nixos/tailscale.nix @@ -13,5 +13,14 @@ } ]; }]; - services.tailscale = { enable = true; }; + services.tailscale = { + enable = true; + openFirewall = true; + }; + + networking.firewall = { + trustedInterfaces = [ "tailscale0" ]; + # required to connect to Tailscale exit nodes + checkReversePath = "loose"; + }; } diff --git a/nixos/utils.nix b/nixos/utils.nix index 55e2674..c4cceca 100644 --- a/nixos/utils.nix +++ b/nixos/utils.nix @@ -45,6 +45,10 @@ in { xkb.variant = ""; }; gnome.gnome-keyring.enable = true; + psd = { + enable = true; + resyncTimer = "10m"; + }; }; console.keyMap = keyboardLayout; @@ -60,13 +64,20 @@ in { services.libinput.enable = true; programs.dconf.enable = true; services = { - dbus.enable = true; + dbus = { + enable = true; + implementation = "broker"; + packages = with pkgs; [ gcr gnome-settings-daemon ]; + }; gvfs.enable = true; upower.enable = true; power-profiles-daemon.enable = true; udisks2.enable = true; }; + # enable zsh autocompletion for system packages (systemd, etc) + environment.pathsToLink = [ "/share/zsh" ]; + # Faster rebuilding documentation = { enable = true; @@ -89,6 +100,28 @@ in { vim ]; + xdg.portal = { + enable = true; + xdgOpenUsePortal = true; + config = { + common.default = [ "gtk" ]; + hyprland.default = [ "gtk" "hyprland" ]; + }; + + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + }; + + security = { + # allow wayland lockers to unlock the screen + pam.services.hyprlock.text = "auth include login"; + + # userland niceness + rtkit.enable = true; + + # don't ask for password for wheel group + sudo.wheelNeedsPassword = false; + }; + services.logind.extraConfig = '' # don’t shutdown when power button is short-pressed HandlePowerKey=ignore