diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000..a9b7eb4 --- /dev/null +++ b/.mailmap @@ -0,0 +1,5 @@ +zoey zackartz +zoey zack +zoey zack +zoey Zachary Myers +zoey Zachary Myers diff --git a/.sops.yaml b/.sops.yaml new file mode 100644 index 0000000..9049d07 --- /dev/null +++ b/.sops.yaml @@ -0,0 +1,25 @@ +keys: + - &personal_pgp_key 0x141576B17B4AE789 + - &pc_main 0DCB1C584AECEB2674BB76C179FE3B714935CDAB + - &venus age1l6v7c5cp6sh6typgskwfufzkn3qw4av7r42z7lqyns6mtupytqhs2fg49u + - &personal_age_key age16p54d6tx3mg0htkzj43q2mzpvlqj4gz63mz5qzx8mpsp5zx4xexsszdhuk + +creation_rules: + # This rule applies to any file named 'secrets.yaml' directly in the 'secrets/' directory + # or 'secrets/github-deploy-key.yaml' etc. + - path_regex: "secrets/vpn-config.yaml$" + key_groups: + - pgp: + - *personal_pgp_key + - *pc_main + - path_regex: "secrets/matrix-db.yaml$" + key_groups: + - age: + - *venus + - *personal_age_key + # Add host keys for decryption on the target system + # sops-nix will automatically pick up the system's SSH host keys + # as decryption keys if enabled in your NixOS config. + # So you typically don't list them explicitly here unless you + # want to restrict it to specific fingerprints, which is rare. + # This part ensures your *personal* key can decrypt it. diff --git a/f.nix b/f.nix new file mode 100644 index 0000000..494efd3 --- /dev/null +++ b/f.nix @@ -0,0 +1,201 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: +with lib; +with lib.custom; let + cfg = config.wms.hyprland; + + mkService = recursiveUpdate { + Unit.PartOf = ["graphical-session.target"]; + Unit.After = ["graphical-session.target"]; + Install.WantedBy = ["graphical-session.target"]; + }; + + mod = "SUPER"; +in { + options.wms.hyprland = with types; { + enable = mkBoolOpt false "Enable Hyprland"; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + xwayland + grim + slurp + ]; + + wayland.windowManager.hyprland = { + enable = true; + # package = inputs.hyprland.packages.${pkgs.system}.hyprland; + xwayland.enable = true; + + systemd = { + enable = false; + enableXdgAutostart = true; + }; + }; + imports = [./conf/binds.nix]; + wayland.windowManager.hyprland.settings = with colors; { + exec-once = [ + # "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + # "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + "zen" + "vesktop" + "cider-2" + "networkmanagerapplet" + "[workspace 9 silent] kitty" + "[workspace 9 silent] kitty" + "[workspace 9 silent] kitty" + "[workspace 10 silent] kitty" + ]; + + env = [ + "XDG_SESSION_TYPE,wayland" + "XDG_SESSION_DESKTOP,Hyprland" + "XDG_CURRENT_DESKTOP,Hyprland" + ]; + + general = { + # gaps + gaps_in = 2; + gaps_out = 4; + + # border thiccness + border_size = 2; + + # active border color + "col.active_border" = "rgb(${rose})"; + "col.inactive_border" = "rgb(${muted})"; + }; + + input = { + kb_layout = "us,ru(phonetic)"; + kb_options = grp:win_space_toggle; + sensitivity = 0; # -1.0 - 1.0, 0 means no modification. + accel_profile = "flat"; + force_no_accel = false; + }; + + dwindle = { + force_split = 2; + }; + + decoration = { + # fancy corners + rounding = 6; + # blur + blur = { + enabled = true; + size = 8; + passes = 2; + new_optimizations = 1; + contrast = 1; + brightness = 1; + }; + + shadow = { + # shadow config + enabled = false; + # range = 60; + # render_power = 5; + # color = "rgba(07061f29)"; + }; + }; + + misc = { + # disable redundant renders + disable_splash_rendering = true; + force_default_wallpaper = 0; + disable_hyprland_logo = true; + + vfr = false; + vrr = 2; + + # dpms + # mouse_move_enables_dpms = true; # enable dpms on mouse/touchpad action + # key_press_enables_dpms = true; # enable dpms on keyboard action + disable_autoreload = true; # autoreload is unnecessary on nixos, because the config is readonly anyway + }; + + xwayland = { + force_zero_scaling = true; + }; + + cursor = { + no_hardware_cursors = true; + }; + + monitor = ["DP-1,1920x1080@165,0x0,1"]; + + layerrule = [ + "blur, ^(gtk-layer-shell)$" + "blur, ^(launcher)$" + "ignorezero, ^(gtk-layer-shell)$" + "ignorezero, ^(launcher)$" + "blur, notifications" + "ignorezero, notificatios" + "blur, bar" + "ignorezero, bar" + "ignorezero, ^(gtk-layer-shell|anyrun)$" + "blur, ^(gtk-layer-shell|anyrun)$" + "noanim, launcher" + "noanim, bar" + ]; + workspace = [ + "1,monitor:DP-1" + "2,monitor:DP-1" + "3,monitor:DP-1" + "9,monitor:DP-1" + "10,monitor:DP-1" + ]; + windowrulev2 = [ + # only allow shadows for floating windows + "noshadow, floating:0" + "tile, title:Cider" + + "idleinhibit focus, class:^(mpv)$" + + "float, title:^(Picture-in-Picture)$" + "pin, title:^(Picture-in-Picture)$" + + "float,class:udiskie" + + # "workspace special silent,class:^(pavucontrol)$" + + "float, class:^(imv)$" + + # throw sharing indicators away + "workspace special silent, title:^(Firefox — Sharing Indicator)$" + "workspace special silent, title:^(.*is sharing (your screen|a window)\.)$" + + # specify what applications start on (at boot and normal startup of the app) + "workspace 2, class:^(vesktop)$" + "workspace 3, class:^(cider)$" + "workspace 4, class:^(zen)" + ]; + }; + + # # fake a tray to let apps start + # # https://github.com/nix-community/home-manager/issues/2064 + # systemd.user.targets.tray = { + # Unit = { + # Description = "Home Manager System Tray"; + # Requires = ["graphical-session-pre.target"]; + # }; + # }; + + systemd.user.services = { + swaybg = mkService { + Unit.Description = "Wallpaper chooser"; + Service = { + ExecStart = "${getExe pkgs.swaybg} -i ${wallpaper}"; + Restart = "always"; + }; + }; + }; + }; +} diff --git a/flake.lock b/flake.lock index 42f2a35..ff47e4f 100644 --- a/flake.lock +++ b/flake.lock @@ -10,11 +10,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1747575206, - "narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=", + "lastModified": 1762618334, + "narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=", "owner": "ryantm", "repo": "agenix", - "rev": "4835b1dc898959d8547a871ef484930675cb47f1", + "rev": "fcdea223397448d35d9b31f798479227e80183f6", "type": "github" }, "original": { @@ -65,11 +65,11 @@ ] }, "locked": { - "lastModified": 1749155310, - "narHash": "sha256-t0HfHg/1+TbSra5s6nNM0o4tnb3uqWedShSpZXsUMYY=", + "lastModified": 1767024902, + "narHash": "sha256-sMdk6QkMDhIOnvULXKUM8WW8iyi551SWw2i6KQHbrrU=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "94981cf75a9f11da0b6dd6a1abbd7c50a36ab2d3", + "rev": "b8a0c5ba5a9fbd2c660be7dd98bdde0ff3798556", "type": "github" }, "original": { @@ -139,11 +139,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1750153510, - "narHash": "sha256-NYHXXJZ9m4fJpKk9tKn/EExX87SqcBcRINOGF7hKRLI=", + "lastModified": 1767967164, + "narHash": "sha256-Cx4VETh9dGoQYDtWhre7g66d7SAr+h1h6f+SSHxVrck=", "owner": "catppuccin", "repo": "nix", - "rev": "4e95eaf8a351956d75cc400318579967ca2b6d0f", + "rev": "e973584280e3b0e1d5b5a1a5e9948dc222c54af7", "type": "github" }, "original": { @@ -154,34 +154,57 @@ }, "chaotic": { "inputs": { - "fenix": "fenix", "flake-schemas": "flake-schemas", "home-manager": "home-manager_2", "jovian": "jovian", - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_5", + "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1748296215, - "narHash": "sha256-xRctAsHhXMvjLHrTEYT9oOn4EHZuYxXA/13JZBOuweQ=", + "lastModified": 1765204341, + "narHash": "sha256-7xd45skcuLCu2DHxVvU+W/z+7CUOjyv+QPtT4PLZaIU=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "7b20daf110d06962ee99114220f2fb98cdc8673d", + "rev": "aacb796ccd42be1555196c20013b9b674b71df75", "type": "github" }, "original": { "owner": "chaotic-cx", "repo": "nyx", - "rev": "7b20daf110d06962ee99114220f2fb98cdc8673d", "type": "github" } }, + "ciderd": { + "inputs": { + "crane": "crane", + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay_2", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1753646135, + "narHash": "sha256-2u+EWR5ivcoGyfjvchoRoyiFdZMvia2uJv/W3JhNN88=", + "ref": "refs/heads/main", + "rev": "c12b4787ca1d99d5bcb2172a625c31c0ac306daa", + "revCount": 4, + "type": "git", + "url": "https://code.zoeys.cloud/zoey/ciderd" + }, + "original": { + "type": "git", + "url": "https://code.zoeys.cloud/zoey/ciderd" + } + }, "crane": { "locked": { - "lastModified": 1733016477, - "narHash": "sha256-Hh0khbqBeCtiNS0SJgqdWrQDem9WlPEc2KF5pAY+st0=", + "lastModified": 1753316655, + "narHash": "sha256-tzWa2kmTEN69OEMhxFy+J2oWSvZP5QhEgXp3TROOzl0=", "owner": "ipetkov", "repo": "crane", - "rev": "76d64e779e2fbaf172110038492343a8c4e29b55", + "rev": "f35a3372d070c9e9ccb63ba7ce347f0634ddf3d2", "type": "github" }, "original": { @@ -191,18 +214,27 @@ } }, "crane_2": { - "inputs": { - "nixpkgs": [ - "lanzaboote", - "nixpkgs" - ] - }, "locked": { - "lastModified": 1717535930, - "narHash": "sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU=", + "lastModified": 1762189950, + "narHash": "sha256-aotggLUXjlDGqKWibGPQcMZJGgdr79S21ISrv1Wz6RI=", "owner": "ipetkov", "repo": "crane", - "rev": "55e7754ec31dac78980c8be45f8a28e80e370946", + "rev": "50700219af884287ad7c85507e2f163b23a027a9", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "crane_3": { + "locked": { + "lastModified": 1754269165, + "narHash": "sha256-0tcS8FHd4QjbCVoxN9jI+PjHgA4vc/IjkUSp+N3zy0U=", + "owner": "ipetkov", + "repo": "crane", + "rev": "444e81206df3f7d92780680e45858e31d2f07a08", "type": "github" }, "original": { @@ -235,14 +267,14 @@ }, "darwin_2": { "inputs": { - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1749873626, - "narHash": "sha256-1Mc/D/1RwwmDKY59f4IpDBgcQttxffm+4o0m67lQ8hc=", + "lastModified": 1768220509, + "narHash": "sha256-8wMrJP/Xk5Dkm0TxzaERLt3eGFEhHTWaJKUpK3AoL4o=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "2f140d6ac8840c6089163fb43ba95220c230f22b", + "rev": "7b1d394e7d9112d4060e12ef3271b38a7c43e83b", "type": "github" }, "original": { @@ -258,11 +290,11 @@ ] }, "locked": { - "lastModified": 1750040002, - "narHash": "sha256-KrC9iOVYIn6ukpVlHbqSA4hYCZ6oDyJKrcLqv4c5v84=", + "lastModified": 1766150702, + "narHash": "sha256-P0kM+5o+DKnB6raXgFEk3azw8Wqg5FL6wyl9jD+G5a4=", "owner": "nix-community", "repo": "disko", - "rev": "7f1857b31522062a6a00f88cbccf86b43acceed1", + "rev": "916506443ecd0d0b4a0f4cf9d40a3c22ce39b378", "type": "github" }, "original": { @@ -271,17 +303,38 @@ "type": "github" } }, + "dms": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "quickshell": "quickshell" + }, + "locked": { + "lastModified": 1768311656, + "narHash": "sha256-u8ag2bxkOmsn5l20sdWDnSKZX+HAjGRZGzsADEpKah0=", + "owner": "AvengeMedia", + "repo": "DankMaterialShell", + "rev": "8891c388d0f06343da507087412d07199ddad153", + "type": "github" + }, + "original": { + "owner": "AvengeMedia", + "repo": "DankMaterialShell", + "type": "github" + } + }, "emacs-overlay": { "inputs": { - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_9", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1750152107, - "narHash": "sha256-EtSUmvOKU7mfocPNsBSmgjOcqPBKWshSN/jsxmHZqfI=", + "lastModified": 1768295847, + "narHash": "sha256-vcHIiukrOYQLaGv/rtYS8BlkiwoZwJ+odNhgxOWNGZs=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "cff16fc129c76889ddfb0ebb17b53b6633c77ba5", + "rev": "51c96db303d7c57290f14660b8832c25743d3971", "type": "github" }, "original": { @@ -290,52 +343,36 @@ "type": "github" } }, - "fenix": { + "firefox-addons": { "inputs": { "nixpkgs": [ - "chaotic", "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" + ] }, "locked": { - "lastModified": 1747392669, - "narHash": "sha256-zky3+lndxKRu98PAwVK8kXPdg+Q1NVAhaI7YGrboKYA=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c3c27e603b0d9b5aac8a16236586696338856fbb", - "type": "github" + "dir": "pkgs/firefox-addons", + "lastModified": 1768277016, + "narHash": "sha256-nGObauOcAGhTlyb/MfZ4uOOCIHqBc7jtV+gJjPjsPDw=", + "owner": "rycee", + "repo": "nur-expressions", + "rev": "a648659ba1699d97760cca3eadcae82114b03b48", + "type": "gitlab" }, "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" + "dir": "pkgs/firefox-addons", + "owner": "rycee", + "repo": "nur-expressions", + "type": "gitlab" } }, "flake-compat": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_10": { - "flake": false, - "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", "type": "github" }, "original": { @@ -347,15 +384,15 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "NixOS", "repo": "flake-compat", "type": "github" } @@ -363,11 +400,11 @@ "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -379,11 +416,11 @@ "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", "type": "github" }, "original": { @@ -395,11 +432,11 @@ "flake-compat_5": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { @@ -411,59 +448,11 @@ "flake-compat_6": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_7": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_8": { - "flake": false, - "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_9": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", "type": "github" }, "original": { @@ -477,11 +466,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1733269028, - "narHash": "sha256-kVq/jAKKtbvWwbL9wf0SKDxtxsC5Gb+nlIYEFnyXhGA=", + "lastModified": 1753121425, + "narHash": "sha256-TVcTNvOeWWk1DXljFxVRp+E0tzG1LhrVjOGGoMHuXio=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "e37654df08605b510ad84eceaafcc7248495e843", + "rev": "644e0fc48951a860279da645ba77fe4a6e814c5e", "type": "github" }, "original": { @@ -492,17 +481,14 @@ }, "flake-parts_2": { "inputs": { - "nixpkgs-lib": [ - "lanzaboote", - "nixpkgs" - ] + "nixpkgs-lib": "nixpkgs-lib_2" }, "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "lastModified": 1762440070, + "narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8", "type": "github" }, "original": { @@ -514,16 +500,16 @@ "flake-parts_3": { "inputs": { "nixpkgs-lib": [ - "neovim-nightly-overlay", + "lanzaboote", "nixpkgs" ] }, "locked": { - "lastModified": 1749398372, - "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "lastModified": 1754091436, + "narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd", "type": "github" }, "original": { @@ -536,33 +522,33 @@ "inputs": { "nixpkgs-lib": [ "neovim-nightly-overlay", - "hercules-ci-effects", "nixpkgs" ] }, "locked": { - "lastModified": 1743550720, - "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", + "lastModified": 1768135262, + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c621e8422220273271f52058f618c94e405bb0f5", + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", "type": "github" }, "original": { - "id": "flake-parts", - "type": "indirect" + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" } }, "flake-parts_5": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib_2" + "nixpkgs-lib": "nixpkgs-lib_3" }, "locked": { - "lastModified": 1748821116, - "narHash": "sha256-F82+gS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE=", + "lastModified": 1767609335, + "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "49f0870db23e8c1ca0b5259734a02cd9e1e371a1", + "rev": "250481aafeb741edfe23d29195671c19b36b6dca", "type": "github" }, "original": { @@ -573,7 +559,7 @@ }, "flake-parts_6": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib_3" + "nixpkgs-lib": "nixpkgs-lib_4" }, "locked": { "lastModified": 1727826117, @@ -591,7 +577,7 @@ }, "flake-parts_7": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib_4" + "nixpkgs-lib": "nixpkgs-lib_5" }, "locked": { "lastModified": 1719994518, @@ -658,25 +644,6 @@ "type": "github" } }, - "flake-utils-plus_2": { - "inputs": { - "flake-utils": "flake-utils_8" - }, - "locked": { - "lastModified": 1715533576, - "narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=", - "owner": "gytis-ivaskevicius", - "repo": "flake-utils-plus", - "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", - "type": "github" - }, - "original": { - "owner": "gytis-ivaskevicius", - "repo": "flake-utils-plus", - "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", - "type": "github" - } - }, "flake-utils_2": { "inputs": { "systems": "systems_4" @@ -718,11 +685,11 @@ "systems": "systems_10" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -736,11 +703,11 @@ "systems": "systems_11" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -822,16 +789,17 @@ "inputs": { "flake-compat": "flake-compat", "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_8", + "home-manager": "home-manager_3", + "nixpkgs": "nixpkgs_10", "zig": "zig", "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1750168134, - "narHash": "sha256-4+cF1IH67WNb5IhnEMSDSOl8cTP7yqTA7G0zK0ckxl8=", + "lastModified": 1768242096, + "narHash": "sha256-lqjA2rS5WL7+ZXqHjMp2/gvQfrYczFt8BICiQUGlStA=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "f794693bdc161efc18942bbc5cd26cc3b7b71336", + "rev": "c90f47f11f5ceaf0f161350c3755db2c50ade3f1", "type": "github" }, "original": { @@ -853,34 +821,11 @@ ] }, "locked": { - "lastModified": 1749636823, - "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=", + "lastModified": 1763988335, + "narHash": "sha256-QlcnByMc8KBjpU37rbq5iP7Cp97HvjRP0ucfdh+M4Qc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "623c56286de5a3193aa38891a6991b28f9bab056", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "git-hooks_2": { - "inputs": { - "flake-compat": "flake-compat_6", - "gitignore": "gitignore_4", - "nixpkgs": [ - "neovim-nightly-overlay", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1749636823, - "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "623c56286de5a3193aa38891a6991b28f9bab056", + "rev": "50b9238891e388c9fdc6a5c49e49c42533a1b5ce", "type": "github" }, "original": { @@ -955,50 +900,6 @@ "type": "github" } }, - "gitignore_4": { - "inputs": { - "nixpkgs": [ - "neovim-nightly-overlay", - "git-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": [ - "neovim-nightly-overlay", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1748000383, - "narHash": "sha256-EaAJhwfJGBncgIV/0NlJviid2DP93cTMc9h0q6P6xXk=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "231726642197817d20310b9d39dd4afb9e899489", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -1028,11 +929,11 @@ ] }, "locked": { - "lastModified": 1748182899, - "narHash": "sha256-r6MHSalDFydlUmjorVTSsyhLjIt8VWNtGc5+mffXvFQ=", + "lastModified": 1764998300, + "narHash": "sha256-fZatn/KLfHLDXnF0wy7JxXqGaZmGDTVufT4o/AOlj44=", "owner": "nix-community", "repo": "home-manager", - "rev": "901f8fef7f349cf8a8e97b3230b22fd592df9160", + "rev": "27a6182347ccae90a88231ae0dc5dfa7d15815bb", "type": "github" }, "original": { @@ -1044,15 +945,16 @@ "home-manager_3": { "inputs": { "nixpkgs": [ + "ghostty", "nixpkgs" ] }, "locked": { - "lastModified": 1750127463, - "narHash": "sha256-K2xFtlD3PcKAZriOE3LaBLYmVfGQu+rIF4Jr1RFYR0Q=", + "lastModified": 1768068402, + "narHash": "sha256-bAXnnJZKJiF7Xr6eNW6+PhBf1lg2P1aFUO9+xgWkXfA=", "owner": "nix-community", "repo": "home-manager", - "rev": "28eef8722d1af18ca13e687dbf485e1c653a0402", + "rev": "8bc5473b6bc2b6e1529a9c4040411e1199c43b4c", "type": "github" }, "original": { @@ -1062,6 +964,26 @@ } }, "home-manager_4": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768271922, + "narHash": "sha256-zmFw7AtcmfMxW3vR7AiGeQQeHhdrd2x7a3hxzd6vJYI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "fbd566923adcfa67be512a14a79467e2ab8a5777", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_5": { "inputs": { "nixpkgs": [ "zen-browser", @@ -1069,11 +991,11 @@ ] }, "locked": { - "lastModified": 1743604125, - "narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=", + "lastModified": 1767104570, + "narHash": "sha256-GKgwu5//R+cLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk=", "owner": "nix-community", "repo": "home-manager", - "rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a", + "rev": "e4e78a2cbeaddd07ab7238971b16468cc1d14daf", "type": "github" }, "original": { @@ -1098,11 +1020,11 @@ ] }, "locked": { - "lastModified": 1749155331, - "narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=", + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", "type": "github" }, "original": { @@ -1127,11 +1049,11 @@ ] }, "locked": { - "lastModified": 1749238452, - "narHash": "sha256-8qiKEWcxUrjpUpK+WyFNg/72C8rp70LUuyTD23T+SdQ=", + "lastModified": 1766946335, + "narHash": "sha256-MRD+Jr2bY11MzNDfenENhiK6pvN+nHygxdHoHbZ1HtE=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "c7225d73755a6c4c7c72f4d4f3925ea426e325a8", + "rev": "4af02a3925b454deb1c36603843da528b67ded6c", "type": "github" }, "original": { @@ -1152,11 +1074,11 @@ "systems": "systems_7" }, "locked": { - "lastModified": 1749162425, - "narHash": "sha256-8LFke/vOxFOW1t9fJoLmO1r4kA8oXXRe8QKKq/lsPlc=", + "lastModified": 1766230298, + "narHash": "sha256-9Qg2/L69yghAH9KLjxOv/n7Sn5JSJDLGnQjJok4r3ZM=", "owner": "hyprwm", "repo": "hypridle", - "rev": "b2bc15baffb5182051e94787f1342464fc9d241e", + "rev": "833eb85d05deb73ead48e57826e7385384fd55a6", "type": "github" }, "original": { @@ -1170,22 +1092,23 @@ "aquamarine": "aquamarine", "hyprcursor": "hyprcursor", "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", "hyprland-protocols": "hyprland-protocols_2", - "hyprland-qtutils": "hyprland-qtutils", "hyprlang": "hyprlang_2", "hyprutils": "hyprutils_2", "hyprwayland-scanner": "hyprwayland-scanner_2", - "nixpkgs": "nixpkgs_9", + "hyprwire": "hyprwire", + "nixpkgs": "nixpkgs_11", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems_8", "xdph": "xdph" }, "locked": { - "lastModified": 1750106438, - "narHash": "sha256-hJKE++mkJU3Ux5fMo5xi3TACrt7gujHRrQVDNpfrsVQ=", + "lastModified": 1768238888, + "narHash": "sha256-6+TIBr+Cm41UgoSqYGl2zQOxKt35sHcemv/dRPsZQzQ=", "ref": "refs/heads/main", - "rev": "0ece4af36a988ad06b28ed666011d84372d9e4dc", - "revCount": 6198, + "rev": "8d03fcc8d76245be013254ea30fbe534f680dc9f", + "revCount": 6807, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1196,6 +1119,52 @@ "url": "https://github.com/hyprwm/Hyprland" } }, + "hyprland-guiutils": { + "inputs": { + "aquamarine": [ + "hyprland", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1767023960, + "narHash": "sha256-R2HgtVS1G3KSIKAQ77aOZ+Q0HituOmPgXW9nBNkpp3Q=", + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "rev": "c2e906261142f5dd1ee0bfc44abba23e2754c660", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "type": "github" + } + }, "hyprland-protocols": { "inputs": { "nixpkgs": [ @@ -1208,11 +1177,11 @@ ] }, "locked": { - "lastModified": 1749046714, - "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", + "lastModified": 1765214753, + "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", + "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", "type": "github" }, "original": { @@ -1233,11 +1202,11 @@ ] }, "locked": { - "lastModified": 1749046714, - "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", + "lastModified": 1765214753, + "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", + "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", "type": "github" }, "original": { @@ -1246,74 +1215,6 @@ "type": "github" } }, - "hyprland-qt-support": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprland-qtutils", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "hyprland-qtutils", - "nixpkgs" - ], - "systems": [ - "hyprland", - "hyprland-qtutils", - "systems" - ] - }, - "locked": { - "lastModified": 1749154592, - "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", - "owner": "hyprwm", - "repo": "hyprland-qt-support", - "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qt-support", - "type": "github" - } - }, - "hyprland-qtutils": { - "inputs": { - "hyprland-qt-support": "hyprland-qt-support", - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "hyprutils": [ - "hyprland", - "hyprland-qtutils", - "hyprlang", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1749155776, - "narHash": "sha256-t1PM0wxQLQwv2F2AW23uA7pm5giwmcgYEWbNIRct9r4=", - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "rev": "396e8aa1c06274835b69da7f9a015fff9a9b7522", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "type": "github" - } - }, "hyprlang": { "inputs": { "hyprutils": [ @@ -1330,11 +1231,11 @@ ] }, "locked": { - "lastModified": 1749145882, - "narHash": "sha256-qr0KXeczF8Sma3Ae7+dR2NHhvG7YeLBJv19W4oMu6ZE=", + "lastModified": 1764612430, + "narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676", + "rev": "0d00dc118981531aa731150b6ea551ef037acddd", "type": "github" }, "original": { @@ -1359,11 +1260,11 @@ ] }, "locked": { - "lastModified": 1749145882, - "narHash": "sha256-qr0KXeczF8Sma3Ae7+dR2NHhvG7YeLBJv19W4oMu6ZE=", + "lastModified": 1764612430, + "narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676", + "rev": "0d00dc118981531aa731150b6ea551ef037acddd", "type": "github" }, "original": { @@ -1372,6 +1273,58 @@ "type": "github" } }, + "hyprtoolkit": { + "inputs": { + "aquamarine": [ + "hyprland", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprland-guiutils", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-guiutils", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprland-guiutils", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "hyprland-guiutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-guiutils", + "systems" + ] + }, + "locked": { + "lastModified": 1764592794, + "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", + "owner": "hyprwm", + "repo": "hyprtoolkit", + "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprtoolkit", + "type": "github" + } + }, "hyprutils": { "inputs": { "nixpkgs": [ @@ -1384,11 +1337,11 @@ ] }, "locked": { - "lastModified": 1749135356, - "narHash": "sha256-Q8mAKMDsFbCEuq7zoSlcTuxgbIBVhfIYpX0RjE32PS0=", + "lastModified": 1766160771, + "narHash": "sha256-roINUGikWRqqgKrD4iotKbGj3ZKJl3hjMz5l/SyKrHw=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "e36db00dfb3a3d3fdcc4069cb292ff60d2699ccb", + "rev": "5ac060bfcf2f12b3a6381156ebbc13826a05b09f", "type": "github" }, "original": { @@ -1409,11 +1362,11 @@ ] }, "locked": { - "lastModified": 1749819919, - "narHash": "sha256-7F/KG8dwSH9JXdlpOVrEEArS+PJSn0iEnx5eVCk89/I=", + "lastModified": 1766253372, + "narHash": "sha256-1+p4Kw8HdtMoFSmJtfdwjxM4bPxDK9yg27SlvUMpzWA=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "57ab2a867d8b554ad89f29060c15efd11631db91", + "rev": "51a4f93ce8572e7b12b7284eb9e6e8ebf16b4be9", "type": "github" }, "original": { @@ -1434,11 +1387,11 @@ ] }, "locked": { - "lastModified": 1749145760, - "narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=", + "lastModified": 1763640274, + "narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6", + "rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671", "type": "github" }, "original": { @@ -1459,11 +1412,11 @@ ] }, "locked": { - "lastModified": 1749145760, - "narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=", + "lastModified": 1763640274, + "narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6", + "rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671", "type": "github" }, "original": { @@ -1472,6 +1425,35 @@ "type": "github" } }, + "hyprwire": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1767473322, + "narHash": "sha256-RGOeG+wQHeJ6BKcsSB8r0ZU77g9mDvoQzoTKj2dFHwA=", + "owner": "hyprwm", + "repo": "hyprwire", + "rev": "d5e7d6b49fe780353c1cf9a1cf39fa8970bd9d11", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwire", + "type": "github" + } + }, "jovian": { "inputs": { "nix-github-actions": "nix-github-actions", @@ -1481,11 +1463,11 @@ ] }, "locked": { - "lastModified": 1747990026, - "narHash": "sha256-sG5VbID+x5+xUC+jjgHibnzg8IllVcH+K2TLmYHLPME=", + "lastModified": 1764922999, + "narHash": "sha256-LSvUxKm6S6ZAd/otQSkAHd3+8KJhi8OwGJGSe0K//B8=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "e2f4ced874406541a7957f7e2b8f05a0d59a0f00", + "rev": "9b9ead1b5591b68f4048e7205ba1397bc85ce6c4", "type": "github" }, "original": { @@ -1496,21 +1478,21 @@ }, "kb-gui": { "inputs": { - "crane": "crane", - "flake-parts": "flake-parts", + "crane": "crane_2", + "flake-parts": "flake-parts_2", "nixpkgs": [ "nixpkgs" ], - "rust-overlay": "rust-overlay", + "rust-overlay": "rust-overlay_3", "systems": "systems_9", - "treefmt-nix": "treefmt-nix" + "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1733281564, - "narHash": "sha256-Yr9mk33lrryea4b7dlOWgI7Cjrfz5Q3cjEyjPqZ9FK8=", + "lastModified": 1762441433, + "narHash": "sha256-YWYrxn2MK8cxvg8eFXRQa2on57ScJK9cR3e6ojnkQx8=", "owner": "zackartz", "repo": "kb-gui", - "rev": "499dab14fc2935e802e259501e86f5ffe8fb2f2e", + "rev": "10a48d8de7504c7860aa32afc5a8c2e9e68a1339", "type": "github" }, "original": { @@ -1521,36 +1503,54 @@ }, "lanzaboote": { "inputs": { - "crane": "crane_2", + "crane": "crane_3", "flake-compat": "flake-compat_3", - "flake-parts": "flake-parts_2", - "flake-utils": "flake-utils_4", + "flake-parts": "flake-parts_3", "nixpkgs": [ "nixpkgs" ], "pre-commit-hooks-nix": "pre-commit-hooks-nix", - "rust-overlay": "rust-overlay_2" + "rust-overlay": "rust-overlay_4" }, "locked": { - "lastModified": 1718178907, - "narHash": "sha256-eSZyrQ9uoPB9iPQ8Y5H7gAmAgAvCw3InStmU3oEjqsE=", + "lastModified": 1762205063, + "narHash": "sha256-If6vQ+KvtKs3ARBO9G3l+4wFSCYtRBrwX1z+I+B61wQ=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "b627ccd97d0159214cee5c7db1412b75e4be6086", + "rev": "88b8a563ff5704f4e8d8e5118fb911fa2110ca05", "type": "github" }, "original": { "owner": "nix-community", - "ref": "v0.4.1", + "ref": "v0.4.3", "repo": "lanzaboote", "type": "github" } }, + "lazyvim": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_14" + }, + "locked": { + "lastModified": 1767986188, + "narHash": "sha256-z3m/3JomuimxQUVauP9n1GO+QHa50xvAMLKKw1vWE0Q=", + "owner": "pfassina", + "repo": "lazyvim-nix", + "rev": "af3997a8b663ae0d570ae04867cd4b51873adfe2", + "type": "github" + }, + "original": { + "owner": "pfassina", + "repo": "lazyvim-nix", + "type": "github" + } + }, "lexical": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_24", - "systems": "systems_21" + "nixpkgs": "nixpkgs_25", + "systems": "systems_20" }, "locked": { "lastModified": 1727126932, @@ -1569,15 +1569,15 @@ "lix": { "flake": false, "locked": { - "lastModified": 1729298361, - "narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=", - "rev": "ad9d06f7838a25beec425ff406fe68721fef73be", + "lastModified": 1751235704, + "narHash": "sha256-J4ycLoXHPsoBoQtEXFCelL4xlq5pT8U9tNWNKm43+YI=", + "rev": "1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be" + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6.tar.gz?rev=1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6" }, "original": { "type": "tarball", - "url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz" + "url": "https://git.lix.systems/lix-project/lix/archive/release-2.93.tar.gz" } }, "lix-module": { @@ -1590,15 +1590,15 @@ ] }, "locked": { - "lastModified": 1729360442, - "narHash": "sha256-6U0CyPycIBc04hbYy2hBINnVso58n/ZyywY2BD3hu+s=", - "rev": "9098ac95768f7006d7e070b88bae76939f6034e6", + "lastModified": 1751240025, + "narHash": "sha256-SXUAlxpjPRkArRMHy5+Hdi+PiC+ND9yzzIjiaHmTvQU=", + "rev": "8b1094356f4723d6e89d3f8a95b333ee16d9ab02", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/9098ac95768f7006d7e070b88bae76939f6034e6.tar.gz?rev=9098ac95768f7006d7e070b88bae76939f6034e6" + "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/8b1094356f4723d6e89d3f8a95b333ee16d9ab02.tar.gz" }, "original": { "type": "tarball", - "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz" + "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz" } }, "mailserver": { @@ -1606,15 +1606,14 @@ "blobs": "blobs", "flake-compat": "flake-compat_4", "git-hooks": "git-hooks", - "nixpkgs": "nixpkgs_12", - "nixpkgs-25_05": "nixpkgs-25_05" + "nixpkgs": "nixpkgs_15" }, "locked": { - "lastModified": 1750052062, - "narHash": "sha256-sRiACsZZgKfm5zqz/2Kzd/R7MsldTI2FlxYGhBUD4pY=", + "lastModified": 1766321686, + "narHash": "sha256-icOWbnD977HXhveirqA10zoqvErczVs3NKx8Bj+ikHY=", "owner": "simple-nixos-mailserver", "repo": "nixos-mailserver", - "rev": "7405122ddeefa690b9fa6f25a23195ba57f5f599", + "rev": "7d433bf89882f61621f95082e90a4ab91eb0bdd3", "type": "gitlab" }, "original": { @@ -1625,20 +1624,16 @@ }, "neovim-nightly-overlay": { "inputs": { - "flake-compat": "flake-compat_5", - "flake-parts": "flake-parts_3", - "git-hooks": "git-hooks_2", - "hercules-ci-effects": "hercules-ci-effects", + "flake-parts": "flake-parts_4", "neovim-src": "neovim-src", - "nixpkgs": "nixpkgs_13", - "treefmt-nix": "treefmt-nix_2" + "nixpkgs": "nixpkgs_16" }, "locked": { - "lastModified": 1750119416, - "narHash": "sha256-wGa5HXzU9lK4Q7ODv8/n5oY/QbIl8R2wUyDxcLsV3B4=", + "lastModified": 1768262756, + "narHash": "sha256-XQkiKx2Ht/C4P4CLMPFwd2clweZ//QgQP/q7ia5l+FM=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "5b231a9c0efd15547569bd753dbec420b90c8c98", + "rev": "8412b167e9c931c249f5cb41b62127aeed6543f7", "type": "github" }, "original": { @@ -1650,11 +1645,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1750116292, - "narHash": "sha256-JTG1BFIIKmFfuT+sIhwrphAIjREgV4FfRcyuztr89P0=", + "lastModified": 1768244281, + "narHash": "sha256-lf5o9k+rUrYhwFlvE9GPUPeni/rEGf/KXU+u58lpfh4=", "owner": "neovim", "repo": "neovim", - "rev": "3e984cf02bdcebe2d4f31792505b6a3784fd1b1b", + "rev": "d2ca90d87e3246b5b827ed08f8c0dfc8ad6ae4c8", "type": "github" }, "original": { @@ -1667,17 +1662,17 @@ "inputs": { "niri-stable": "niri-stable", "niri-unstable": "niri-unstable", - "nixpkgs": "nixpkgs_14", - "nixpkgs-stable": "nixpkgs-stable_3", + "nixpkgs": "nixpkgs_17", + "nixpkgs-stable": "nixpkgs-stable_2", "xwayland-satellite-stable": "xwayland-satellite-stable", "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1750146866, - "narHash": "sha256-Eu3/uTRnenjCJUY76T3zDWiUtIGG+RMQoDu1QdIU8AI=", + "lastModified": 1768306584, + "narHash": "sha256-GWLONqOKcsWKFYqoEIFbIv6Ti/xoSvsYC9LzZzB1oj4=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "e2401ec11b2ed71337931aa1123faf469c4df327", + "rev": "1b8c8ba473cf336d74ffb05ee453c8fe6a05bbbc", "type": "github" }, "original": { @@ -1688,18 +1683,17 @@ }, "niri-src": { "inputs": { - "nix-filter": "nix-filter", "nixpkgs": [ "nixpkgs" ], - "rust-overlay": "rust-overlay_3" + "rust-overlay": "rust-overlay_5" }, "locked": { - "lastModified": 1750142220, - "narHash": "sha256-5gUJXh0/mm1YIsLhWgaGitUtGsQvrYRsT4zmGmRHn9M=", + "lastModified": 1768196703, + "narHash": "sha256-mttBQdVnVFO3mn+M+oqCsZZOtS2HvXYy+VaHxb8YuMw=", "owner": "YaLTeR", "repo": "niri", - "rev": "e53f8527b0517cf965961ae729b7dd631ed76db5", + "rev": "3672e79369d72297abda8878245ea4ec327062c6", "type": "github" }, "original": { @@ -1711,16 +1705,16 @@ "niri-stable": { "flake": false, "locked": { - "lastModified": 1748151941, - "narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=", + "lastModified": 1756556321, + "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", "owner": "YaLTeR", "repo": "niri", - "rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7", + "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", "type": "github" }, "original": { "owner": "YaLTeR", - "ref": "v25.05.1", + "ref": "v25.08", "repo": "niri", "type": "github" } @@ -1728,11 +1722,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1750142220, - "narHash": "sha256-5gUJXh0/mm1YIsLhWgaGitUtGsQvrYRsT4zmGmRHn9M=", + "lastModified": 1768196703, + "narHash": "sha256-mttBQdVnVFO3mn+M+oqCsZZOtS2HvXYy+VaHxb8YuMw=", "owner": "YaLTeR", "repo": "niri", - "rev": "e53f8527b0517cf965961ae729b7dd631ed76db5", + "rev": "3672e79369d72297abda8878245ea4ec327062c6", "type": "github" }, "original": { @@ -1748,11 +1742,11 @@ ] }, "locked": { - "lastModified": 1749873626, - "narHash": "sha256-1Mc/D/1RwwmDKY59f4IpDBgcQttxffm+4o0m67lQ8hc=", - "owner": "LnL7", + "lastModified": 1768220509, + "narHash": "sha256-8wMrJP/Xk5Dkm0TxzaERLt3eGFEhHTWaJKUpK3AoL4o=", + "owner": "nix-darwin", "repo": "nix-darwin", - "rev": "2f140d6ac8840c6089163fb43ba95220c230f22b", + "rev": "7b1d394e7d9112d4060e12ef3271b38a7c43e83b", "type": "github" }, "original": { @@ -1760,21 +1754,6 @@ "type": "indirect" } }, - "nix-filter": { - "locked": { - "lastModified": 1731533336, - "narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=", - "owner": "numtide", - "repo": "nix-filter", - "rev": "f7653272fd234696ae94229839a99b73c9ab7de0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "nix-filter", - "type": "github" - } - }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -1798,6 +1777,26 @@ "type": "github" } }, + "nix-matrix-modules": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765214213, + "narHash": "sha256-WSk8CTdIDFFP5VMJj9beve19nPMMdTsWnkCHVXqO/3E=", + "owner": "D4ndellion", + "repo": "nixos-matrix-modules", + "rev": "82959f612ffd523a49c92f84358a9980a851747b", + "type": "github" + }, + "original": { + "owner": "D4ndellion", + "repo": "nixos-matrix-modules", + "type": "github" + } + }, "nixlib": { "locked": { "lastModified": 1736643958, @@ -1821,11 +1820,11 @@ ] }, "locked": { - "lastModified": 1747663185, - "narHash": "sha256-Obh50J+O9jhUM/FgXtI3he/QRNiV9+J53+l+RlKSaAk=", + "lastModified": 1764234087, + "narHash": "sha256-NHF7QWa0ZPT8hsJrvijREW3+nifmF2rTXgS2v0tpcEA=", "owner": "nix-community", "repo": "nixos-generators", - "rev": "ee07ba0d36c38e9915c55d2ac5a8fb0f05f2afcc", + "rev": "032a1878682fafe829edfcf5fdfad635a2efe748", "type": "github" }, "original": { @@ -1836,27 +1835,27 @@ }, "nixos-stable": { "locked": { - "lastModified": 1749995256, - "narHash": "sha256-LEGfcombb0otUf23oAmYCXR4+lMQKa49XmU0G5HItGI=", + "lastModified": 1767313136, + "narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", "owner": "nixos", "repo": "nixpkgs", - "rev": "daa45f10955cc2207ac9c5f0206774d2f757c162", + "rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-24.11", + "ref": "nixos-25.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs": { "locked": { - "lastModified": 1750134718, - "narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=", + "lastModified": 1768127708, + "narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c", + "rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38", "type": "github" }, "original": { @@ -1866,41 +1865,28 @@ "type": "github" } }, - "nixpkgs-25_05": { - "locked": { - "lastModified": 1749727998, - "narHash": "sha256-mHv/yeUbmL91/TvV95p+mBVahm9mdQMJoqaTVTALaFw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fd487183437963a59ba763c0cc4f27e3447dd6dd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-25.05", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-lib": { "locked": { - "lastModified": 1733096140, - "narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" + "lastModified": 1751159883, + "narHash": "sha256-urW/Ylk9FIfvXfliA1ywh75yszAbiTEVgpPeinFyVZo=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "14a40a1d7fb9afa4739275ac642ed7301a9ba1ab", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" } }, "nixpkgs-lib_2": { "locked": { - "lastModified": 1748740939, - "narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=", + "lastModified": 1761765539, + "narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "656a64127e9d791a334452c6b6606d17539476e2", + "rev": "719359f4562934ae99f5443f20aa06c2ffff91fc", "type": "github" }, "original": { @@ -1910,6 +1896,21 @@ } }, "nixpkgs-lib_3": { + "locked": { + "lastModified": 1765674936, + "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-lib_4": { "locked": { "lastModified": 1727825735, "narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=", @@ -1921,7 +1922,7 @@ "url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz" } }, - "nixpkgs-lib_4": { + "nixpkgs-lib_5": { "locked": { "lastModified": 1719876945, "narHash": "sha256-Fm2rDDs86sHy0/1jxTOKB1118Q0O3Uc7EC0iXvXKpbI=", @@ -1935,43 +1936,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1749995256, - "narHash": "sha256-LEGfcombb0otUf23oAmYCXR4+lMQKa49XmU0G5HItGI=", + "lastModified": 1767313136, + "narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "daa45f10955cc2207ac9c5f0206774d2f757c162", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_2": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_3": { - "locked": { - "lastModified": 1750005367, - "narHash": "sha256-h/aac1dGLhS3qpaD2aZt25NdKY7b+JT0ZIP2WuGsJMU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c64dabd3aa85e0c02ef1cdcb6e1213de64baee3", + "rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d", "type": "github" }, "original": { @@ -1981,151 +1950,52 @@ "type": "github" } }, - "nixpkgs_10": { + "nixpkgs-stable_2": { "locked": { - "lastModified": 1728538411, - "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", + "lastModified": 1768242861, + "narHash": "sha256-F4IIxa5xDHjtrmMcayM8lHctUq1oGltfBQu2+oqDWP4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", + "rev": "1327e798cb055f96f92685df444e9a2c326ab5ed", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-25.11", "repo": "nixpkgs", "type": "github" } }, + "nixpkgs_10": { + "locked": { + "lastModified": 1768032153, + "narHash": "sha256-zvxtwlM8ZlulmZKyYCQAPpkm5dngSEnnHjmjV7Teloc=", + "rev": "3146c6aa9995e7351a398e17470e15305e6e18ff", + "type": "tarball", + "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.05pre925418.3146c6aa9995/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" + } + }, "nixpkgs_11": { "locked": { - "lastModified": 1731890469, - "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=", - "owner": "nixos", + "lastModified": 1767379071, + "narHash": "sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf+Okucw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "5083ec887760adfe12af64830a66807423a859a7", + "rev": "fb7944c166a3b630f177938e478f0378e64ce108", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_12": { - "locked": { - "lastModified": 1749285348, - "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1749903597, - "narHash": "sha256-jp0D4vzBcRKwNZwfY4BcWHemLGUs4JrS3X9w5k/JYDA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "41da1e3ea8e23e094e5e3eeb1e6b830468a7399e", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { - "locked": { - "lastModified": 1749794982, - "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { - "locked": { - "lastModified": 1749794982, - "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_16": { - "locked": { - "lastModified": 1702151865, - "narHash": "sha256-9VAt19t6yQa7pHZLDbil/QctAgVsA66DLnzdRGqDisg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "666fc80e7b2afb570462423cb0e1cf1a3a34fedd", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { - "locked": { - "lastModified": 1736189585, - "narHash": "sha256-GBC2LIBk9BuJR4HXfjuNlIWeY15U6jFvaqc7PeToGLw=", - "owner": "jorikvanveen", - "repo": "nixpkgs-posting", - "rev": "135109926a3f11510d6f340ea9c8880385a0438f", - "type": "github" - }, - "original": { - "owner": "jorikvanveen", - "repo": "nixpkgs-posting", - "rev": "135109926a3f11510d6f340ea9c8880385a0438f", - "type": "github" - } - }, - "nixpkgs_18": { - "locked": { - "lastModified": 1712883908, - "narHash": "sha256-icE1IJE9fHcbDfJ0+qWoDdcBXUoZCcIJxME4lMHwvSM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a0c9e3aee1000ac2bfb0e5b98c94c946a5d180a9", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_19": { "locked": { "lastModified": 1744536153, "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", @@ -2141,6 +2011,118 @@ "type": "github" } }, + "nixpkgs_13": { + "locked": { + "lastModified": 1761236834, + "narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1752480373, + "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1764374374, + "narHash": "sha256-naS7hg/D1yLKSZoENx9gvsPLFiNEOTcqamJSu0OEvCA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6a49303095abc094ee77dc243a9e351b642e8e75", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1768178648, + "narHash": "sha256-kz/F6mhESPvU1diB7tOM3nLcBfQe7GU7GQCymRlTi/s=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3fbab70c6e69c87ea2b6e48aa6629da2aa6a23b0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1768127708, + "narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { + "locked": { + "lastModified": 1768127708, + "narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_19": { + "locked": { + "lastModified": 1702151865, + "narHash": "sha256-9VAt19t6yQa7pHZLDbil/QctAgVsA66DLnzdRGqDisg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "666fc80e7b2afb570462423cb0e1cf1a3a34fedd", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1712883908, @@ -2159,11 +2141,27 @@ }, "nixpkgs_20": { "locked": { - "lastModified": 1744868846, - "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", + "lastModified": 1736189585, + "narHash": "sha256-GBC2LIBk9BuJR4HXfjuNlIWeY15U6jFvaqc7PeToGLw=", + "owner": "jorikvanveen", + "repo": "nixpkgs-posting", + "rev": "135109926a3f11510d6f340ea9c8880385a0438f", + "type": "github" + }, + "original": { + "owner": "jorikvanveen", + "ref": "135109926a3f11510d6f340ea9c8880385a0438f", + "repo": "nixpkgs-posting", + "type": "github" + } + }, + "nixpkgs_21": { + "locked": { + "lastModified": 1712883908, + "narHash": "sha256-icE1IJE9fHcbDfJ0+qWoDdcBXUoZCcIJxME4lMHwvSM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", + "rev": "a0c9e3aee1000ac2bfb0e5b98c94c946a5d180a9", "type": "github" }, "original": { @@ -2173,7 +2171,23 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_22": { + "locked": { + "lastModified": 1768032153, + "narHash": "sha256-6kD1MdY9fsE6FgSwdnx29hdH2UcBKs3/+JJleMShuJg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3146c6aa9995e7351a398e17470e15305e6e18ff", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_23": { "locked": { "lastModified": 1740547748, "narHash": "sha256-Ly2fBL1LscV+KyCqPRufUBuiw+zmWrlJzpWOWbahplg=", @@ -2189,39 +2203,23 @@ "type": "github" } }, - "nixpkgs_22": { - "locked": { - "lastModified": 1747542820, - "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_23": { - "locked": { - "lastModified": 1743448293, - "narHash": "sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm+seVaGhs=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "77b584d61ff80b4cef9245829a6f1dfad5afdfa3", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_24": { + "locked": { + "lastModified": 1766902085, + "narHash": "sha256-coBu0ONtFzlwwVBzmjacUQwj3G+lybcZ1oeNSQkgC0M=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "c0b0e0fddf73fd517c3471e546c0df87a42d53f4", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_25": { "locked": { "lastModified": 1719931832, "narHash": "sha256-0LD+KePCKKEb4CcPsTBOwf019wDtZJanjoKm1S8q3Do=", @@ -2253,11 +2251,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1744463964, - "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", + "lastModified": 1767116409, + "narHash": "sha256-5vKw92l1GyTnjoLzEagJy5V5mDFck72LiQWZSOnSicw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", + "rev": "cad22e7d996aea55ecab064e84834289143e44a0", "type": "github" }, "original": { @@ -2269,11 +2267,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1748190013, - "narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=", + "lastModified": 1764950072, + "narHash": "sha256-BmPWzogsG2GsXZtlT+MTcAWeDK5hkbGRZTeZNW42fwA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "62b852f6c6742134ade1abdd2a21685fd617a291", + "rev": "f61125a668a320878494449750330ca58b78c557", "type": "github" }, "original": { @@ -2285,11 +2283,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1747728033, - "narHash": "sha256-NnXFQu7g4LnvPIPfJmBuZF7LFy/fey2g2+LCzjQhTUk=", + "lastModified": 1744536153, + "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2f9173bde1d3fbf1ad26ff6d52f952f9e9da52ea", + "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", "type": "github" }, "original": { @@ -2301,40 +2299,43 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1749794982, - "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", - "owner": "NixOS", + "lastModified": 1747958103, + "narHash": "sha256-qmmFCrfBwSHoWw7cVK4Aj+fns+c54EBP8cGqp/yK410=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", + "rev": "fe51d34885f7b5e3e7b59572796e1bcb427eccb1", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_8": { "locked": { - "lastModified": 1748189127, - "narHash": "sha256-zRDR+EbbeObu4V2X5QCd2Bk5eltfDlCr5yvhBwUT6pY=", - "rev": "7c43f080a7f28b2774f3b3f43234ca11661bf334", - "type": "tarball", - "url": "https://releases.nixos.org/nixos/25.05/nixos-25.05.802491.7c43f080a7f2/nixexprs.tar.xz" + "lastModified": 1765934234, + "narHash": "sha256-pJjWUzNnjbIAMIc5gRFUuKCDQ9S1cuh3b2hKgA7Mc4A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "af84f9d270d404c17699522fab95bbf928a2d92f", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://channels.nixos.org/nixos-25.05/nixexprs.tar.xz" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_9": { "locked": { - "lastModified": 1749794982, - "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", + "lastModified": 1768127708, + "narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", + "rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38", "type": "github" }, "original": { @@ -2366,7 +2367,7 @@ "pnpm2nix_2": { "inputs": { "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_19" }, "locked": { "lastModified": 1706694632, @@ -2384,7 +2385,7 @@ }, "posting": { "inputs": { - "nixpkgs": "nixpkgs_17", + "nixpkgs": "nixpkgs_20", "utils": "utils" }, "locked": { @@ -2411,11 +2412,11 @@ ] }, "locked": { - "lastModified": 1749636823, - "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=", + "lastModified": 1767281941, + "narHash": "sha256-6MkqajPICgugsuZ92OMoQcgSHnD6sJHwk8AxvMcIgTE=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "623c56286de5a3193aa38891a6991b28f9bab056", + "rev": "f0927703b7b1c8d97511c4116eb9b4ec6645a0fa", "type": "github" }, "original": { @@ -2434,15 +2435,14 @@ "nixpkgs": [ "lanzaboote", "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_2" + ] }, "locked": { - "lastModified": 1717664902, - "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", + "lastModified": 1750779888, + "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", + "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", "type": "github" }, "original": { @@ -2469,26 +2469,28 @@ "quickshell": { "inputs": { "nixpkgs": [ + "dms", "nixpkgs" ] }, "locked": { - "lastModified": 1750053656, - "narHash": "sha256-RLICfwDvIEFtLc3GrVsPu46sdGLlPe3ULGz4gSgLxCA=", + "lastModified": 1766725085, + "narHash": "sha256-O2aMFdDUYJazFrlwL7aSIHbUSEm3ADVZjmf41uBJfHs=", "ref": "refs/heads/master", - "rev": "9a3033340529881ae5e564d1aedf6884f53e3ea1", - "revCount": 582, + "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff", + "revCount": 715, "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + "url": "https://git.outfoxxed.me/quickshell/quickshell" }, "original": { + "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff", "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + "url": "https://git.outfoxxed.me/quickshell/quickshell" } }, "resume": { "inputs": { - "nixpkgs": "nixpkgs_18", + "nixpkgs": "nixpkgs_21", "systems": "systems_14" }, "locked": { @@ -2511,15 +2513,15 @@ "nixpkgs": [ "nixpkgs" ], - "rust-overlay": "rust-overlay_4", + "rust-overlay": "rust-overlay_6", "systems": "systems_15" }, "locked": { - "lastModified": 1750169389, - "narHash": "sha256-wl0+V2s355Pq6/HNZxCWsxPbH4s8Vj2K6d4C/zCxiZo=", + "lastModified": 1768157344, + "narHash": "sha256-aqmqpQmw7amFqo2V/TKLUH+vTnUAAQ2tt4wBVPOM6Ak=", "owner": "raphamorim", "repo": "rio", - "rev": "1a94ff5d1637e22aaffeb50977d81b0de25bc8cc", + "rev": "203f2968ecf4b64791457b982e6e070392004dbb", "type": "github" }, "original": { @@ -2536,69 +2538,58 @@ "blog": "blog", "catppuccin": "catppuccin", "chaotic": "chaotic", + "ciderd": "ciderd", "darwin": "darwin_2", "disko": "disko", + "dms": "dms", "emacs-overlay": "emacs-overlay", + "firefox-addons": "firefox-addons", "ghostty": "ghostty", - "home-manager": "home-manager_3", + "home-manager": "home-manager_4", "hypridle": "hypridle", "hyprland": "hyprland", "kb-gui": "kb-gui", "lanzaboote": "lanzaboote", + "lazyvim": "lazyvim", "lix-module": "lix-module", "mailserver": "mailserver", "neovim-nightly-overlay": "neovim-nightly-overlay", "niri": "niri", "niri-src": "niri-src", "nix-darwin": "nix-darwin", + "nix-matrix-modules": "nix-matrix-modules", "nixos-generators": "nixos-generators", "nixos-stable": "nixos-stable", - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_18", "pnpm2nix": "pnpm2nix_2", "posting": "posting", - "quickshell": "quickshell", "resume": "resume", "rio-term": "rio-term", - "rust-overlay": "rust-overlay_5", "snowfall-lib": "snowfall-lib", "solaar": "solaar", "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix", "systems": "systems_19", "umu": "umu", - "walker": "walker", + "vpn-confinement": "vpn-confinement", "waybar": "waybar", "zen-browser": "zen-browser", "zoeycomputer": "zoeycomputer" } }, - "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1747323949, - "narHash": "sha256-G4NwzhODScKnXqt2mEQtDFOnI0wU3L1WxsiHX3cID/0=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f8e784353bde7cbf9a9046285c1caf41ac484ebe", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, "rust-overlay": { "inputs": { - "nixpkgs": "nixpkgs_10" + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] }, "locked": { - "lastModified": 1733279627, - "narHash": "sha256-NCNDAGPkdFdu+DLErbmNbavmVW9AwkgP7azROFFSB0U=", + "lastModified": 1765075567, + "narHash": "sha256-KFDCdQcHJ0hE3Nt5Gm5enRIhmtEifAjpxgUQ3mzSJpA=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "4da5a80ef76039e80468c902f1e9f5c0eab87d96", + "rev": "769156779b41e8787a46ca3d7d76443aaf68be6f", "type": "github" }, "original": { @@ -2609,21 +2600,14 @@ }, "rust-overlay_2": { "inputs": { - "flake-utils": [ - "lanzaboote", - "flake-utils" - ], - "nixpkgs": [ - "lanzaboote", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1717813066, - "narHash": "sha256-wqbRwq3i7g5EHIui0bIi84mdqZ/It1AXBSLJ5tafD28=", + "lastModified": 1753584741, + "narHash": "sha256-i147iFSy4K4PJvID+zoszLbRi2o+YV8AyG4TUiDQ3+I=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "6dc3e45fe4aee36efeed24d64fc68b1f989d5465", + "rev": "69dfe029679e73b8d159011c9547f6148a85ca6b", "type": "github" }, "original": { @@ -2634,17 +2618,14 @@ }, "rust-overlay_3": { "inputs": { - "nixpkgs": [ - "niri-src", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_12" }, "locked": { - "lastModified": 1742697269, - "narHash": "sha256-Lpp0XyAtIl1oGJzNmTiTGLhTkcUjwSkEb0gOiNzYFGM=", + "lastModified": 1762396738, + "narHash": "sha256-BarSecuxtzp1boERdABLkkoxQTi6s/V33lJwUbWLrLY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "01973c84732f9275c50c5f075dd1f54cc04b3316", + "rev": "c63598992afd54d215d54f2b764adc0484c2b159", "type": "github" }, "original": { @@ -2655,14 +2636,17 @@ }, "rust-overlay_4": { "inputs": { - "nixpkgs": "nixpkgs_19" + "nixpkgs": [ + "lanzaboote", + "nixpkgs" + ] }, "locked": { - "lastModified": 1749263796, - "narHash": "sha256-m52UsUrcNjAzgc0cwcg94INkiFyVPTn6KbFGr4x4cu8=", + "lastModified": 1761791894, + "narHash": "sha256-myRIDh+PxaREz+z9LzbqBJF+SnTFJwkthKDX9zMyddY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "6e1d910306edfe6e4b718878f222c5672500d6b2", + "rev": "59c45eb69d9222a4362673141e00ff77842cd219", "type": "github" }, "original": { @@ -2674,15 +2658,37 @@ "rust-overlay_5": { "inputs": { "nixpkgs": [ + "niri-src", "nixpkgs" ] }, "locked": { - "lastModified": 1750127910, - "narHash": "sha256-FIgEIS0RAlOyXGqoj/OufTfcKItYq668yPYL4SXdU0M=", + "lastModified": 1757989933, + "narHash": "sha256-9cpKYWWPCFhgwQTww8S94rTXgg8Q8ydFv9fXM6I8xQM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "45418795a73b77b7726c62ce265d68cf541ffb49", + "rev": "8249aa3442fb9b45e615a35f39eca2fe5510d7c3", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_6": { + "inputs": { + "nixpkgs": [ + "rio-term", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768012928, + "narHash": "sha256-HFFVQaux1JoOjEvgBT0ASk1Je+jsipyO5c91FoLMed8=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "312b4371e72f644ffcff25b23615195e3b390643", "type": "github" }, "original": { @@ -2693,18 +2699,18 @@ }, "snowfall-lib": { "inputs": { - "flake-compat": "flake-compat_7", + "flake-compat": "flake-compat_5", "flake-utils-plus": "flake-utils-plus", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1736130495, - "narHash": "sha256-4i9nAJEZFv7vZMmrE0YG55I3Ggrtfo5/T07JEpEZ/RM=", + "lastModified": 1765361626, + "narHash": "sha256-kX0Dp/kYSRbQ+yd9e3lmmUWdNbipufvKfL2IzbrSpnY=", "owner": "snowfallorg", "repo": "lib", - "rev": "02d941739f98a09e81f3d2d9b3ab08918958beac", + "rev": "c566ad8b7352c30ec3763435de7c8f1c46ebb357", "type": "github" }, "original": { @@ -2713,44 +2719,19 @@ "type": "github" } }, - "snowfall-lib_2": { - "inputs": { - "flake-compat": "flake-compat_9", - "flake-utils-plus": "flake-utils-plus_2", - "nixpkgs": [ - "solaar", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1718097323, - "narHash": "sha256-zCgs8Wp7rdt0tjNUHMUIvi6sIvDoprWIHwvTGq+LMK0=", - "owner": "snowfallorg", - "repo": "lib", - "rev": "aa19b02b63025263cec041fcb7a0857c3cb98859", - "type": "github" - }, - "original": { - "owner": "snowfallorg", - "ref": "v3.0.3", - "repo": "lib", - "type": "github" - } - }, "solaar": { "inputs": { - "flake-compat": "flake-compat_8", "nixpkgs": [ "nixpkgs" ], - "snowfall-lib": "snowfall-lib_2" + "utils": "utils_2" }, "locked": { - "lastModified": 1736760170, - "narHash": "sha256-GvMN9vsy59xitBKt0Qh/grANYi0AWHXokrr6FY4JXRM=", + "lastModified": 1767894877, + "narHash": "sha256-DB9vEEnEYilGUaHCljMRzT1embzD7uEjJugzRJgiLos=", "owner": "Svenum", "repo": "Solaar-Flake", - "rev": "255c70259546c7201141e7903cd94b0507c6377e", + "rev": "f5cac914bdeeecac7fca07e99c8fee18336f5bd5", "type": "github" }, "original": { @@ -2762,14 +2743,14 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_20" + "nixpkgs": "nixpkgs_22" }, "locked": { - "lastModified": 1750119275, - "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=", + "lastModified": 1768271704, + "narHash": "sha256-jJqlW8A3OZ5tYbXphF7U8P8g/3Cn8PPwPa4YlJ/9agg=", "owner": "Mic92", "repo": "sops-nix", - "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2", + "rev": "691b8b6713855d0fe463993867291c158472fc6f", "type": "github" }, "original": { @@ -2786,11 +2767,11 @@ "systems": "systems_18" }, "locked": { - "lastModified": 1749961984, - "narHash": "sha256-1Nmycj9cVUIkoDsVEn9k8SGMS9V+BcBUL+rDXNapslw=", + "lastModified": 1768107098, + "narHash": "sha256-mSthw4k7jkB5S8+NYZwrQFItLj+17Se7Wn0pIfdASbc=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "c9f12a733e8edcf8d408ccd178c1a11e753ffa08", + "rev": "2e40e07527f9d724b1578f0af590ab345e836ec3", "type": "github" }, "original": { @@ -2890,7 +2871,6 @@ } }, "systems_15": { - "flake": false, "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -2981,21 +2961,6 @@ } }, "systems_20": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_21": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -3010,7 +2975,7 @@ "type": "github" } }, - "systems_22": { + "systems_21": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -3132,14 +3097,14 @@ }, "treefmt-nix": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1733222881, - "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "lastModified": 1753439394, + "narHash": "sha256-Bv9h1AJegLI8uAhiJ1sZ4XAndYxhgf38tMgCQwiEpmc=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "rev": "2673921c03d6e75fdf4aa93e025772608d1482cf", "type": "github" }, "original": { @@ -3150,17 +3115,14 @@ }, "treefmt-nix_2": { "inputs": { - "nixpkgs": [ - "neovim-nightly-overlay", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_13" }, "locked": { - "lastModified": 1749194973, - "narHash": "sha256-eEy8cuS0mZ2j/r/FE0/LYBSBcIs/MKOIVakwHVuqTfk=", + "lastModified": 1762410071, + "narHash": "sha256-aF5fvoZeoXNPxT0bejFUBXeUjXfHLSL7g+mjR/p5TEg=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "a05be418a1af1198ca0f63facb13c985db4cb3c5", + "rev": "97a30861b13c3731a84e09405414398fbf3e109f", "type": "github" }, "original": { @@ -3171,15 +3133,15 @@ }, "umu": { "inputs": { - "nixpkgs": "nixpkgs_21" + "nixpkgs": "nixpkgs_23" }, "locked": { "dir": "packaging/nix", - "lastModified": 1750119474, - "narHash": "sha256-Xx7KHIUjCBsUhFPsxtcZ3+j6GZdlTP+akd0Aj5xs2IA=", + "lastModified": 1765757739, + "narHash": "sha256-mFur6BsNkJm4tH0O4lkOaCVtZnEeNlw9xDkZUSnzHIU=", "owner": "Open-Wine-Components", "repo": "umu-launcher", - "rev": "42f553b2ed8e6c786a10ce05e111f436349af8f4", + "rev": "bb5c870fe076e21fe60cb652b57365022fbfd77a", "type": "github" }, "original": { @@ -3207,38 +3169,53 @@ "type": "github" } }, - "walker": { + "utils_2": { "inputs": { - "nixpkgs": "nixpkgs_22", - "systems": "systems_20" + "flake-utils": "flake-utils_8" }, "locked": { - "lastModified": 1748502384, - "narHash": "sha256-nmTVxvbENySXZryA+TOGZ9nRr3m/+Xqc07Sy3aSN5Nw=", - "owner": "abenz1267", - "repo": "walker", - "rev": "ade63feb9f1d91f1b1bf709bb139060579126c19", + "lastModified": 1738591040, + "narHash": "sha256-4WNeriUToshQ/L5J+dTSWC5OJIwT39SEP7V7oylndi8=", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "afcb15b845e74ac5e998358709b2b5fe42a948d1", "type": "github" }, "original": { - "owner": "abenz1267", - "repo": "walker", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "afcb15b845e74ac5e998358709b2b5fe42a948d1", + "type": "github" + } + }, + "vpn-confinement": { + "locked": { + "lastModified": 1767604552, + "narHash": "sha256-FddhMxnc99KYOZ/S3YNqtDSoxisIhVtJ7L4s8XD2u0A=", + "owner": "Maroka-chan", + "repo": "VPN-Confinement", + "rev": "a6b2da727853886876fd1081d6bb2880752937f3", + "type": "github" + }, + "original": { + "owner": "Maroka-chan", + "repo": "VPN-Confinement", "type": "github" } }, "waybar": { "inputs": { - "flake-compat": "flake-compat_10", + "flake-compat": "flake-compat_6", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1749796347, - "narHash": "sha256-29g4SN3Yr4q7zxYS3dU48i634jVsXHBwUUeALPAHZGM=", + "lastModified": 1767985335, + "narHash": "sha256-JDeI7oyjibtX7FKQYMCBP6l0Q2aSdSephIb74X6tASM=", "owner": "Alexays", "repo": "Waybar", - "rev": "2c482a29173ffcc03c3e4859808eaef6c9014a1f", + "rev": "a02180a815b651f1bc08a359f23241c941bfafed", "type": "github" }, "original": { @@ -3275,11 +3252,11 @@ ] }, "locked": { - "lastModified": 1749490041, - "narHash": "sha256-R9Dn9IyUdPaJHD2Oqd7XJnnxpka6M6UYw4Ld0iA46HM=", + "lastModified": 1761431178, + "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "3cf35e178bc192ee51e3fddfd69e531e2c106a30", + "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", "type": "github" }, "original": { @@ -3291,16 +3268,16 @@ "xwayland-satellite-stable": { "flake": false, "locked": { - "lastModified": 1748488455, - "narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=", + "lastModified": 1755491097, + "narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73", + "rev": "388d291e82ffbc73be18169d39470f340707edaa", "type": "github" }, "original": { "owner": "Supreeeme", - "ref": "v0.6", + "ref": "v0.7", "repo": "xwayland-satellite", "type": "github" } @@ -3308,11 +3285,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1749315541, - "narHash": "sha256-bEik1BfVOFnWvtOrcOHluos/edJ8f+G2y1QySbt/0Ak=", + "lastModified": 1768106915, + "narHash": "sha256-HlLo9zH4ULRXlmlIK948cHmdVhxyHgTHxGaoCRlW4k8=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "da2ecb5be816de35e2efe23a408a1c49fe8b11ba", + "rev": "72245e108f3b03c3c4474d2de9de2d1830849603", "type": "github" }, "original": { @@ -3323,15 +3300,15 @@ }, "zen-browser": { "inputs": { - "home-manager": "home-manager_4", - "nixpkgs": "nixpkgs_23" + "home-manager": "home-manager_5", + "nixpkgs": "nixpkgs_24" }, "locked": { - "lastModified": 1750152169, - "narHash": "sha256-XN5OBCCXKmPBL+UXyyScI5HGgs4U8OFGQTnKuxurBFI=", + "lastModified": 1768279254, + "narHash": "sha256-D4+/DD5/dhSihHxbSJnY9hi/3QiYnfqWT29ZpQRf1xw=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "ed811ab0d0b407b59cda1023820e9986fd28c8c3", + "rev": "e862bd9ebbcd3265f1da6d1bdfe37d8732029d08", "type": "github" }, "original": { @@ -3343,7 +3320,8 @@ "zig": { "inputs": { "flake-compat": [ - "ghostty" + "ghostty", + "flake-compat" ], "flake-utils": [ "ghostty", @@ -3355,11 +3333,11 @@ ] }, "locked": { - "lastModified": 1748261582, - "narHash": "sha256-3i0IL3s18hdDlbsf0/E+5kyPRkZwGPbSFngq5eToiAA=", + "lastModified": 1763295135, + "narHash": "sha256-sGv/NHCmEnJivguGwB5w8LRmVqr1P72OjS+NzcJsssE=", "owner": "mitchellh", "repo": "zig-overlay", - "rev": "aafb1b093fb838f7a02613b719e85ec912914221", + "rev": "64f8b42cfc615b2cf99144adf2b7728c7847c72a", "type": "github" }, "original": { @@ -3376,14 +3354,14 @@ "nixpkgs" ], "process-compose-flake": "process-compose-flake", - "systems": "systems_22" + "systems": "systems_21" }, "locked": { - "lastModified": 1731607548, - "narHash": "sha256-a0xLkdgQ4TIJVtY8fXnidtmsqlg63V9YYM7Hf32m7pk=", + "lastModified": 1762532307, + "narHash": "sha256-oXTQEIkvEzVRzsXVwubyVKJlD7C87d++FmJ5zIkV7o4=", "ref": "refs/heads/main", - "rev": "49677f2d9b2cb94c36fe7a9df2bd5e9a8c00b94f", - "revCount": 75, + "rev": "ee959326475cb1fb9d6488a9b31c0ac205d8bbe0", + "revCount": 76, "type": "git", "url": "https://code.zoeys.cloud/zoey/zoeys.computer.git" }, @@ -3394,27 +3372,23 @@ }, "zon2nix": { "inputs": { - "flake-utils": [ - "ghostty", - "flake-utils" - ], "nixpkgs": [ "ghostty", "nixpkgs" ] }, "locked": { - "lastModified": 1742104771, - "narHash": "sha256-LhidlyEA9MP8jGe1rEnyjGFCzLLgCdDpYeWggibayr0=", + "lastModified": 1768231828, + "narHash": "sha256-wL/8Iij4T2OLkhHcc4NieOjf7YeJffaUYbCiCqKv/+0=", "owner": "jcollie", "repo": "zon2nix", - "rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613", + "rev": "c28e93f3ba133d4c1b1d65224e2eebede61fd071", "type": "github" }, "original": { "owner": "jcollie", "repo": "zon2nix", - "rev": "56c159be489cc6c0e73c3930bd908ddc6fe89613", + "rev": "c28e93f3ba133d4c1b1d65224e2eebede61fd071", "type": "github" } } diff --git a/flake.nix b/flake.nix index cb6423a..76d4b68 100644 --- a/flake.nix +++ b/flake.nix @@ -12,7 +12,7 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - nixos-stable.url = "github:nixos/nixpkgs/nixos-24.11"; + nixos-stable.url = "github:nixos/nixpkgs/nixos-25.05"; home-manager = { url = "github:nix-community/home-manager"; @@ -31,19 +31,28 @@ inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; - walker.url = "github:abenz1267/walker"; - resume.url = "git+https://code.zoeys.cloud/zoey/resume.git"; ags.url = "github:Aylur/ags/v1"; ags.inputs.nixpkgs.follows = "nixpkgs"; agenix.url = "github:ryantm/agenix"; agenix.inputs.nixpkgs.follows = "nixpkgs"; + firefox-addons = { + url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # to replace with sops-nix sops-nix.url = "github:Mic92/sops-nix"; pnpm2nix.url = "github:nzbr/pnpm2nix-nzbr"; + dms.url = "github:AvengeMedia/DankMaterialShell"; + dms.inputs.nixpkgs.follows = "nixpkgs"; + + nix-matrix-modules.url = "github:D4ndellion/nixos-matrix-modules"; + nix-matrix-modules.inputs.nixpkgs.follows = "nixpkgs"; + solaar = { url = "github:Svenum/Solaar-Flake/main"; # Uncomment line for latest unstable version inputs.nixpkgs.follows = "nixpkgs"; @@ -57,12 +66,18 @@ blog.url = "git+https://code.zoeys.cloud/zoey/web.git"; lanzaboote = { - url = "github:nix-community/lanzaboote/v0.4.1"; + url = "github:nix-community/lanzaboote/v0.4.3"; # Optional but recommended to limit the size of your system closure. inputs.nixpkgs.follows = "nixpkgs"; }; + ciderd = { + url = "git+https://code.zoeys.cloud/zoey/ciderd"; + + inputs.nixpkgs.follows = "nixpkgs"; + }; + hypridle = { url = "github:hyprwm/hypridle"; inputs.nixpkgs.follows = "nixpkgs"; @@ -114,7 +129,7 @@ posting.url = "github:jorikvanveen/posting-flake"; lix-module = { - url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz"; + url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -124,26 +139,21 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - rust-overlay = { - url = "github:oxalica/rust-overlay"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - disko.url = "github:nix-community/disko"; disko.inputs.nixpkgs.follows = "nixpkgs"; niri-src.url = "github:YaLTeR/niri"; niri-src.inputs.nixpkgs.follows = "nixpkgs"; - quickshell = { - url = "git+https://git.outfoxxed.me/outfoxxed/quickshell"; - - inputs.nixpkgs.follows = "nixpkgs"; - }; + # niri-src.url = "github:visualglitch91/niri/feat/blur"; + # niri-src.inputs.nixpkgs.follows = "nixpkgs"; niri.url = "github:sodiboo/niri-flake"; - chaotic.url = "github:chaotic-cx/nyx/7b20daf110d06962ee99114220f2fb98cdc8673d"; + chaotic.url = "github:chaotic-cx/nyx"; + lazyvim.url = "github:pfassina/lazyvim-nix"; + + vpn-confinement.url = "github:Maroka-chan/VPN-Confinement"; }; outputs = inputs @ {self, ...}: let @@ -152,22 +162,22 @@ src = ./.; overlays = with inputs; [ - rust-overlay.overlays.default + # rust-overlay.overlays.default (final: prev: { ghostty = ghostty.packages."x86_64-linux".default; }) - (final: prev: { - shadps4 = prev.shadps4.overrideAttrs { - src = prev.fetchFromGitHub { - owner = "shadps4-emu"; - repo = "shadPS4"; - rev = "41b39428335025e65f9e707ed8d5a9a1b09ba942"; - hash = "sha256-5oe2By8TjJJIVubkp5lzqx2slBR7hxIHV4wZLgRYKl8="; - fetchSubmodules = true; - }; - patches = []; - }; - }) + # (final: prev: { + # shadps4 = prev.shadps4.overrideAttrs { + # src = prev.fetchFromGitHub { + # owner = "shadps4-emu"; + # repo = "shadPS4"; + # rev = "41b39428335025e65f9e707ed8d5a9a1b09ba942"; + # hash = "sha256-5oe2By8TjJJIVubkp5lzqx2slBR7hxIHV4wZLgRYKl8="; + # fetchSubmodules = true; + # }; + # patches = []; + # }; + # }) niri.overlays.niri ]; @@ -186,7 +196,9 @@ spicetify-nix.homeManagerModules.default catppuccin.homeModules.default ags.homeManagerModules.default - walker.homeManagerModules.default + dms.homeModules.dankMaterialShell.default + dms.homeModules.dankMaterialShell.niri + lazyvim.homeManagerModules.default ]; systems.modules.nixos = with inputs; [ @@ -202,6 +214,8 @@ disko.nixosModules.disko niri.nixosModules.niri chaotic.nixosModules.default + nix-matrix-modules.nixosModules.default + vpn-confinement.nixosModules.default ]; systems.modules.earth = with inputs; [ diff --git a/homes/aarch64-darwin/zack@mercury/default.nix b/homes/aarch64-darwin/zack@mercury/default.nix index 0023d2e..48eb55a 100644 --- a/homes/aarch64-darwin/zack@mercury/default.nix +++ b/homes/aarch64-darwin/zack@mercury/default.nix @@ -44,8 +44,6 @@ catppuccin.fzf.enable = true; home.packages = with pkgs; [ - devenv - (discord.override { withOpenASAR = true; withVencord = true; diff --git a/homes/x86_64-linux/aspect@pluto/default.nix b/homes/x86_64-linux/aspect@pluto/default.nix index 7f23280..07ecf15 100644 --- a/homes/x86_64-linux/aspect@pluto/default.nix +++ b/homes/x86_64-linux/aspect@pluto/default.nix @@ -53,12 +53,10 @@ programs.cava = { enable = true; - catppuccin.enable = true; }; programs.btop = { enable = true; - catppuccin.enable = true; extraConfig = '' update_ms = 100 vim_keys = true @@ -67,11 +65,9 @@ programs.lazygit = { enable = true; - catppuccin.enable = true; }; programs.fzf = { enable = true; - catppuccin.enable = true; }; } diff --git a/homes/x86_64-linux/zack@pluto/default.nix b/homes/x86_64-linux/zack@pluto/default.nix index 0d117f0..3246fc9 100644 --- a/homes/x86_64-linux/zack@pluto/default.nix +++ b/homes/x86_64-linux/zack@pluto/default.nix @@ -52,12 +52,10 @@ programs.cava = { enable = true; - catppuccin.enable = true; }; programs.btop = { enable = true; - catppuccin.enable = true; extraConfig = '' update_ms = 100 vim_keys = true @@ -66,11 +64,9 @@ programs.lazygit = { enable = true; - catppuccin.enable = true; }; programs.fzf = { enable = true; - catppuccin.enable = true; }; } diff --git a/homes/x86_64-linux/zoey@earth/default.nix b/homes/x86_64-linux/zoey@earth/default.nix index d00f826..ce16dd2 100644 --- a/homes/x86_64-linux/zoey@earth/default.nix +++ b/homes/x86_64-linux/zoey@earth/default.nix @@ -2,16 +2,15 @@ config, inputs, pkgs, - system, lib, ... }: { wms.hyprland.enable = false; wms.niri.enable = true; + apps = { web.librewolf.enable = true; - web.zen.setDefault = true; - web.zen.enable = true; + web.librewolf.setDefault = true; tools.git.enable = true; tools.tmux.enable = true; @@ -31,14 +30,13 @@ term.alacritty.enable = true; term.ghostty.enable = true; - music.spotify.enable = true; video.mpv.enable = true; mail.aerc.enable = true; helpers = { - waybar.enable = true; - swaync.enable = true; + waybar.enable = false; + swaync.enable = false; }; }; @@ -64,13 +62,37 @@ }; }; - programs.distrobox = { - enable = true; - containers = { - proton-tkg = { - image = "archlinux"; - additional_packages = "build-essential git"; - }; + catppuccin.vivid.enable = false; + + programs = { + dankMaterialShell = { + enable = true; + + niri.enableKeybinds = true; + systemd.enable = true; + + enableCalendarEvents = true; + enableDynamicTheming = true; + enableSystemMonitoring = true; + enableAudioWavelength = true; + }; + }; + + systemd.user.services.polkit-gnome-authentication-agent-1 = { + Unit = { + Description = "polkit-gnome-authentication-agent-1"; + Wants = ["graphical-session.target"]; + After = ["graphical-session.target"]; + }; + Install = { + WantedBy = ["graphical-session.target"]; + }; + Service = { + Type = "simple"; + ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + Restart = "on-failure"; + RestartSec = 1; + TimeoutStopSec = 10; }; }; @@ -115,7 +137,7 @@ catppuccin.enable = true; catppuccin.flavor = "mocha"; - catppuccin.accent = "red"; + catppuccin.accent = "blue"; catppuccin.aerc.enable = true; @@ -125,6 +147,13 @@ work.vpn.enable = true; + programs.obs-studio = { + enable = true; + package = pkgs.obs-studio.override { + cudaSupport = true; + }; + }; + programs.atuin = { enable = true; enableFishIntegration = config.programs.fish.enable; @@ -135,24 +164,33 @@ home.packages = with pkgs; [ gimp3 slack + zulip + + cabextract + p7zip + + himalaya drawio - littlenavmap - app2unit awscli2 monero-cli - devenv - zoom-us + tidal-hifi + pandoc + cider-2 - nexusmods-app-unfree - + feather prismlauncher - obs-studio + + qt6Packages.qt5compat + libsForQt5.qt5.qtgraphicaleffects + kdePackages.qtdeclarative + + # prismlauncher (discord.override { withOpenASAR = true; @@ -174,12 +212,6 @@ heroic cartridges - darktable - - thunderbird - - custom.nvidia-nsight - custom.enc neural-amp-modeler-lv2 @@ -226,12 +258,10 @@ zed-editor rmpc - inputs.zen-browser.packages.${pkgs.system}.beta - starfetch lib.custom.nixos-stable.kiwix - mpc-cli + mpc zathura gpgme.dev @@ -249,9 +279,17 @@ man-pages man-pages-posix - ardour + devenv ]; + programs.thunderbird = { + enable = true; + + profiles.${config.home.username} = { + isDefault = true; + }; + }; + programs.vesktop = { enable = true; }; @@ -261,8 +299,6 @@ options = ["--cmd cd"]; }; - services.quickshell.enable = false; - home.file.".mozilla/native-messaging-hosts/gpgmejson.json".text = builtins.toJSON { name = "gpgmejson"; description = "JavaScript binding for GnuPG"; @@ -313,7 +349,7 @@ services = { gpg-agent = { enable = true; - pinentryPackage = lib.mkForce pkgs.pinentry-gnome3; + pinentry.package = lib.mkForce pkgs.pinentry-gnome3; enableSshSupport = true; enableZshIntegration = true; enableFishIntegration = true; diff --git a/homes/x86_64-linux/zoey@pluto/default.nix b/homes/x86_64-linux/zoey@pluto/default.nix index 392df33..45f81b3 100644 --- a/homes/x86_64-linux/zoey@pluto/default.nix +++ b/homes/x86_64-linux/zoey@pluto/default.nix @@ -52,12 +52,10 @@ programs.cava = { enable = true; - catppuccin.enable = true; }; programs.btop = { enable = true; - catppuccin.enable = true; extraConfig = '' update_ms = 100 vim_keys = true @@ -66,11 +64,9 @@ programs.lazygit = { enable = true; - catppuccin.enable = true; }; programs.fzf = { enable = true; - catppuccin.enable = true; }; } diff --git a/homes/x86_64-linux/zoey@venus/default.nix b/homes/x86_64-linux/zoey@venus/default.nix index 2a2a6c5..5d7ee0b 100644 --- a/homes/x86_64-linux/zoey@venus/default.nix +++ b/homes/x86_64-linux/zoey@venus/default.nix @@ -50,22 +50,22 @@ options = ["--cmd cd"]; }; + catppuccin.btop.enable = true; programs.btop = { enable = true; - catppuccin.enable = true; extraConfig = '' update_ms = 100 vim_keys = true ''; }; + catppuccin.lazygit.enable = true; programs.lazygit = { enable = true; - catppuccin.enable = true; }; + catppuccin.fzf.enable = true; programs.fzf = { enable = true; - catppuccin.enable = true; }; } diff --git a/modules/home/apps/helpers/swaync/default.nix b/modules/home/apps/helpers/swaync/default.nix index fcefdf1..b692443 100644 --- a/modules/home/apps/helpers/swaync/default.nix +++ b/modules/home/apps/helpers/swaync/default.nix @@ -362,5 +362,7 @@ in { } ''; }; + + systemd.user.services.swaync.Service.Environment = ["GSK_RENDERER=gl"]; }; } diff --git a/modules/home/apps/helpers/walker/default.nix b/modules/home/apps/helpers/walker/default.nix deleted file mode 100644 index 6c46e23..0000000 --- a/modules/home/apps/helpers/walker/default.nix +++ /dev/null @@ -1,611 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; -with lib.custom; let - cfg = config.apps.helpers.walker; -in { - options.apps.helpers.walker = with types; { - enable = mkBoolOpt false "Enable Walker"; - }; - - config = mkIf cfg.enable { - programs.walker = { - enable = true; - runAsService = true; - - theme = { - layout = { - ui = { - anchors = { - bottom = true; - left = true; - right = true; - top = true; - }; - - window = { - h_align = "fill"; - v_align = "fill"; - - box = { - h_align = "center"; - width = 450; - - bar = { - orientation = "horizontal"; - position = "end"; - - entry = { - h_align = "fill"; - h_expand = true; - - icon = { - h_align = "center"; - h_expand = true; - pixel_size = 24; - theme = ""; - }; - }; - }; - - margins = { - top = 450; - }; - - ai_scroll = { - name = "aiScroll"; - h_align = "fill"; - v_align = "fill"; - max_height = 300; - min_width = 400; - height = 300; - width = 400; - - margins = { - top = 8; - }; - - list = { - name = "aiList"; - orientation = "vertical"; - width = 400; - spacing = 10; - - item = { - name = "aiItem"; - h_align = "fill"; - v_align = "fill"; - x_align = 0; - y_align = 0; - wrap = true; - }; - }; - }; - - scroll = { - list = { - marker_color = "#1BFFE1"; - max_height = 300; - max_width = 400; - min_width = 400; - width = 400; - - item = { - activation_label = { - h_align = "fill"; - v_align = "fill"; - width = 20; - x_align = 0.5; - y_align = 0.5; - }; - - icon = { - pixel_size = 26; - theme = ""; - }; - }; - - margins = { - top = 8; - }; - }; - }; - - search = { - prompt = { - name = "prompt"; - icon = "edit-find"; - theme = ""; - pixel_size = 18; - h_align = "center"; - v_align = "center"; - }; - - clear = { - name = "clear"; - icon = "edit-clear"; - theme = ""; - pixel_size = 18; - h_align = "center"; - v_align = "center"; - }; - - input = { - h_align = "fill"; - h_expand = true; - icons = true; - }; - - spinner = { - hide = true; - }; - }; - }; - }; - }; - }; - - style = '' - @define-color foreground ${colors.fg.hex}; /* text */ - @define-color background ${colors.bg.hex}; /* base */ - @define-color cursor ${colors.primary.hex}; /* rosewater */ - - @define-color color0 ${colors.surface0.hex}; /* surface0 */ - @define-color color1 ${colors.red.hex}; /* red */ - @define-color color2 ${colors.green.hex}; /* green */ - @define-color color3 ${colors.yellow.hex}; /* yellow */ - @define-color color4 ${colors.blue.hex}; /* blue */ - @define-color color5 ${colors.pink.hex}; /* pink */ - @define-color color6 ${colors.teal.hex}; /* teal */ - @define-color color7 ${colors.subtext1.hex}; /* subtext1 */ - @define-color color8 ${colors.surface1.hex}; /* surface1 */ - @define-color color9 ${colors.red.hex}; /* red */ - @define-color color10 ${colors.green.hex}; /* green */ - @define-color color11 ${colors.yellow.hex}; /* yellow */ - @define-color color12 ${colors.blue.hex}; /* blue */ - @define-color color13 ${colors.pink.hex}; /* pink */ - @define-color color14 ${colors.teal.hex}; /* teal */ - @define-color color15 ${colors.subtext0.hex}; /* subtext0 */ - - #window, - #box, - #aiScroll, - #aiList, - #search, - #password, - #input, - #prompt, - #clear, - #typeahead, - #list, - child, - scrollbar, - slider, - #item, - #text, - #label, - #bar, - #sub, - #activationlabel { - all: unset; - } - - #cfgerr { - background: rgba(255, 0, 0, 0.4); - margin-top: 20px; - padding: 8px; - font-size: 1.2em; - } - - #window { - color: @foreground; - } - - #box { - border-radius: 2px; - background: @background; - padding: 32px; - border: 1px solid lighter(@background); - box-shadow: - 0 19px 38px rgba(0, 0, 0, 0.3), - 0 15px 12px rgba(0, 0, 0, 0.22); - } - - #search { - box-shadow: - 0 1px 3px rgba(0, 0, 0, 0.1), - 0 1px 2px rgba(0, 0, 0, 0.22); - background: lighter(@background); - padding: 8px; - } - - #prompt { - margin-left: 4px; - margin-right: 12px; - color: @foreground; - opacity: 0.2; - } - - #clear { - color: @foreground; - opacity: 0.8; - } - - #password, - #input, - #typeahead { - border-radius: 2px; - } - - #input { - background: none; - } - - #password { - } - - #spinner { - padding: 8px; - } - - #typeahead { - color: @foreground; - opacity: 0.8; - } - - #input placeholder { - opacity: 0.5; - } - - #list { - } - - child { - padding: 8px; - border-radius: 2px; - } - - child:selected, - child:hover { - background: alpha(@color1, 0.4); - } - - #item { - } - - #icon { - margin-right: 8px; - } - - #text { - } - - #label { - font-weight: 500; - } - - #sub { - opacity: 0.5; - font-size: 0.8em; - } - - #activationlabel { - } - - #bar { - } - - .barentry { - } - - .activation #activationlabel { - } - - .activation #text, - .activation #icon, - .activation #search { - opacity: 0.5; - } - - .aiItem { - padding: 10px; - border-radius: 2px; - color: @foreground; - background: @background; - } - - .aiItem.user { - padding-left: 0; - padding-right: 0; - } - - .aiItem.assistant { - background: lighter(@background); - } - ''; - }; - - config = { - app_launch_prefix = ""; - terminal_title_flag = ""; - locale = ""; - close_when_open = false; - theme = "nixos"; - monitor = ""; - hotreload_theme = false; - as_window = false; - timeout = 0; - disable_click_to_close = false; - force_keyboard_focus = false; - - keys = { - accept_typeahead = ["tab"]; - trigger_labels = "lalt"; - next = ["down"]; - prev = ["up"]; - close = ["esc"]; - remove_from_history = ["shift backspace"]; - resume_query = ["ctrl r"]; - toggle_exact_search = ["ctrl m"]; - - activation_modifiers = { - keep_open = "shift"; - alternate = "alt"; - }; - - ai = { - clear_session = ["ctrl x"]; - copy_last_response = ["ctrl c"]; - resume_session = ["ctrl r"]; - run_last_response = ["ctrl e"]; - }; - }; - - events = { - on_activate = ""; - on_selection = ""; - on_exit = ""; - on_launch = ""; - on_query_change = ""; - }; - - list = { - dynamic_sub = true; - keyboard_scroll_style = "emacs"; - max_entries = 50; - show_initial_entries = true; - single_click = true; - visibility_threshold = 20; - placeholder = "No Results"; - }; - - search = { - argument_delimiter = "#"; - placeholder = "Search..."; - delay = 0; - resume_last_query = false; - }; - - activation_mode = { - labels = "jkl;asdf"; - }; - - builtins = { - applications = { - weight = 5; - name = "applications"; - placeholder = "Applications"; - prioritize_new = true; - hide_actions_with_empty_query = true; - context_aware = true; - refresh = true; - show_sub_when_single = true; - show_icon_when_single = true; - show_generic = true; - history = true; - - actions = { - enabled = true; - hide_category = false; - hide_without_query = true; - }; - }; - - bookmarks = { - weight = 5; - placeholder = "Bookmarks"; - name = "bookmarks"; - icon = "bookmark"; - switcher_only = true; - - entries = [ - { - label = "Walker"; - url = "https://github.com/abenz1267/walker"; - keywords = ["walker" "github"]; - } - ]; - }; - - xdph_picker = { - hidden = true; - weight = 5; - placeholder = "Screen/Window Picker"; - show_sub_when_single = true; - name = "xdphpicker"; - switcher_only = true; - }; - - ai = { - weight = 5; - placeholder = "AI"; - name = "ai"; - icon = "help-browser"; - switcher_only = true; - show_sub_when_single = true; - - anthropic = { - prompts = [ - { - model = "claude-3-7-sonnet-20250219"; - temperature = 1; - max_tokens = 1000; - label = "General Assistant"; - prompt = "You are a helpful general assistant. Keep your answers short and precise."; - } - ]; - }; - }; - - calc = { - require_number = true; - weight = 5; - name = "calc"; - icon = "accessories-calculator"; - placeholder = "Calculator"; - min_chars = 4; - }; - - windows = { - weight = 5; - icon = "view-restore"; - name = "windows"; - placeholder = "Windows"; - show_icon_when_single = true; - }; - - clipboard = { - always_put_new_on_top = true; - exec = "wl-copy"; - weight = 5; - name = "clipboard"; - avoid_line_breaks = true; - placeholder = "Clipboard"; - image_height = 300; - max_entries = 10; - switcher_only = true; - }; - - commands = { - weight = 5; - icon = "utilities-terminal"; - switcher_only = true; - name = "commands"; - placeholder = "Commands"; - }; - - custom_commands = { - weight = 5; - icon = "utilities-terminal"; - name = "custom_commands"; - placeholder = "Custom Commands"; - }; - - emojis = { - exec = "wl-copy"; - weight = 5; - name = "emojis"; - placeholder = "Emojis"; - switcher_only = true; - history = true; - typeahead = true; - show_unqualified = false; - }; - - symbols = { - after_copy = ""; - weight = 5; - name = "symbols"; - placeholder = "Symbols"; - switcher_only = true; - history = true; - typeahead = true; - }; - - finder = { - use_fd = false; - fd_flags = "--ignore-vcs --type file"; - weight = 5; - icon = "file"; - name = "finder"; - placeholder = "Finder"; - switcher_only = true; - ignore_gitignore = true; - refresh = true; - concurrency = 8; - show_icon_when_single = true; - preview_images = false; - }; - - runner = { - eager_loading = true; - weight = 5; - icon = "utilities-terminal"; - name = "runner"; - placeholder = "Runner"; - typeahead = true; - history = true; - generic_entry = false; - refresh = true; - use_fd = false; - }; - - ssh = { - weight = 5; - icon = "preferences-system-network"; - name = "ssh"; - placeholder = "SSH"; - switcher_only = true; - history = true; - refresh = true; - }; - - switcher = { - weight = 5; - name = "switcher"; - placeholder = "Switcher"; - prefix = "/"; - }; - - websearch = { - keep_selection = true; - weight = 5; - icon = "applications-internet"; - name = "websearch"; - placeholder = "Websearch"; - - entries = [ - { - name = "searx"; - url = "https://search.zoeys.cloud/searx/search?q=%TERM%"; - } - ]; - }; - - dmenu = { - hidden = true; - weight = 5; - name = "dmenu"; - placeholder = "Dmenu"; - switcher_only = true; - show_icon_when_single = true; - }; - - translation = { - delay = 1000; - weight = 5; - name = "translation"; - icon = "accessories-dictionary"; - placeholder = "Translation"; - switcher_only = true; - provider = "googlefree"; - }; - }; - }; - }; - }; -} diff --git a/modules/home/apps/helpers/waybar/default.nix b/modules/home/apps/helpers/waybar/default.nix index 4855d97..7033023 100644 --- a/modules/home/apps/helpers/waybar/default.nix +++ b/modules/home/apps/helpers/waybar/default.nix @@ -99,15 +99,6 @@ in { "custom/power" ]; - "custom/spotify" = { - format = "{}"; - "return-type" = "json"; - "on-click" = "playerctl -p spotify play-pause"; - "on-click-right" = "spotifatius toggle-liked"; - "on-click-middle" = "playerctl -p spotify next"; - exec = "spotifatius monitor"; - }; - "custom/mullvad" = { format = "{}"; return-type = "json"; @@ -145,7 +136,7 @@ in { }; mpris = { - player = "spotify"; + player = "chromium"; "dynamic-order" = ["artist" "title"]; format = "{player_icon} {dynamic}"; "format-paused" = "{status_icon} {dynamic}"; diff --git a/modules/home/apps/helpers/waybar/style.css b/modules/home/apps/helpers/waybar/style.css index 8c755d7..342423c 100644 --- a/modules/home/apps/helpers/waybar/style.css +++ b/modules/home/apps/helpers/waybar/style.css @@ -105,6 +105,11 @@ menu, border-radius: 6px; } +#custom-spotify.paused { + font-style: italic; + opacity: 0.75; +} + #custom-mullvad, #custom-notification { padding-left: 12px; diff --git a/modules/home/apps/term/alacritty/default.nix b/modules/home/apps/term/alacritty/default.nix index 51b4255..b3addd7 100644 --- a/modules/home/apps/term/alacritty/default.nix +++ b/modules/home/apps/term/alacritty/default.nix @@ -66,9 +66,10 @@ in { }; config = mkIf cfg.enable { + catppuccin.alacritty.enable = true; + programs.alacritty = { enable = true; - catppuccin.enable = true; settings = { colors = { diff --git a/modules/home/apps/term/ghostty/default.nix b/modules/home/apps/term/ghostty/default.nix index dd22fc2..3ce39f1 100644 --- a/modules/home/apps/term/ghostty/default.nix +++ b/modules/home/apps/term/ghostty/default.nix @@ -17,12 +17,18 @@ in { enable = true; settings = { - font-family = fonts.mono; + font-family = "Berkeley Mono"; + + font-size = 24; + + font-style = "SemiBold ExtraCondensed"; + font-style-bold = "Bold ExtraCondensed"; + font-style-italic = "SemiBold ExtraCondensed Oblique"; + font-style-bold-italic = "Bold ExtraCondensed Oblique"; + gtk-single-instance = true; gtk-titlebar = false; - background = colors.crust.hex; - alpha-blending = "linear-corrected"; window-padding-x = 20; diff --git a/modules/home/apps/term/kitty/default.nix b/modules/home/apps/term/kitty/default.nix index 3111843..8bfacf3 100644 --- a/modules/home/apps/term/kitty/default.nix +++ b/modules/home/apps/term/kitty/default.nix @@ -14,50 +14,26 @@ in { }; config = mkIf cfg.enable { + catppuccin.kitty.enable = true; + programs.kitty = { enable = true; - font = { - name = "${fonts.mono} SemiLight"; - size = 16; - }; - extraConfig = '' - bold_font ${fonts.mono} SemiBold - italic_font ${fonts.mono} SemiLight - bold_italic_font ${fonts.mono} SemiBold + font_family family='Berkeley Mono' style='Retina ExtraCondensed' + bold_font family='Berkeley Mono' style='SemiBold ExtraCondensed' + italic_font family='Berkeley Mono' style='Retina ExtraCondensed' + bold_italic_font family='Berkeley Mono' style='SemiBold ExtraCondensed' ''; - catppuccin.enable = true; - settings = { window_padding_width = 20; # background_opacity = "0.9"; - background = colors.crust.hex; - foreground = colors.text.hex; font_hinting = "slight"; + cursor_trail = 3; + text_composition_strategy = "1.2 10"; - - # Normal colors - color0 = colors.surface1.hex; # black - color1 = colors.red.hex; # red - color2 = colors.green.hex; # green - color3 = colors.yellow.hex; # yellow - color4 = colors.blue.hex; # blue - color5 = colors.mauve.hex; # magenta - color6 = colors.teal.hex; # cyan - color7 = colors.text.hex; # white - - # Bright colors - color8 = colors.surface2.hex; # bright black - color9 = colors.red.hex; # bright red - color10 = colors.green.hex; # bright green - color11 = colors.yellow.hex; # bright yellow - color12 = colors.blue.hex; # bright blue - color13 = colors.mauve.hex; # bright magenta - color14 = colors.teal.hex; # bright cyan - color15 = colors.text.hex; # bright white }; }; }; diff --git a/modules/home/apps/tools/bat/default.nix b/modules/home/apps/tools/bat/default.nix index af2aafd..f5b85b0 100644 --- a/modules/home/apps/tools/bat/default.nix +++ b/modules/home/apps/tools/bat/default.nix @@ -14,11 +14,11 @@ in { }; config = mkIf cfg.enable { + catppuccin.bat.enable = true; + programs.bat = { enable = true; - catppuccin.enable = true; - config = { pager = "less -FR"; }; diff --git a/modules/home/apps/tools/git/default.nix b/modules/home/apps/tools/git/default.nix index 840b077..b8d0bbd 100644 --- a/modules/home/apps/tools/git/default.nix +++ b/modules/home/apps/tools/git/default.nix @@ -17,11 +17,18 @@ in { }; config = mkIf cfg.enable { - home.packages = with pkgs; [zsh-forgit gitflow]; + home.packages = with pkgs; [ + zsh-forgit + gitflow + ]; + + programs.delta = { + enable = true; + enableGitIntegration = true; + }; + programs.git = { enable = true; - userName = "zack"; - userEmail = "hi@zoeys.computer"; ignores = [ ".cache/" ".DS_Store" @@ -38,8 +45,15 @@ in { key = cfg.signingKey; signByDefault = cfg.signByDefault; }; - extraConfig = { - init = {defaultBranch = "main";}; + lfs.enable = true; + settings = { + user = { + name = "zack"; + email = "hi@zoeys.computer"; + }; + init = { + defaultBranch = "main"; + }; delta = { options.map-styles = "bold purple => syntax #ca9ee6, bold cyan => syntax #8caaee"; line-numbers = true; @@ -64,34 +78,30 @@ in { smtpencryption = "ssl"; smtpserverport = 465; }; - }; - lfs.enable = true; - delta.enable = true; - aliases = { - essa = "push --force"; - co = "checkout"; - fuck = "commit --amend -m"; - c = "commit -m"; - ca = "commit -am"; - forgor = "commit --amend --no-edit"; - graph = "log --all --decorate --graph --oneline"; - oops = "checkout --"; - l = "log"; - r = "rebase"; - s = "status --short"; - ss = "status"; - d = "diff"; - ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)"; - pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)"; - af = "!git add $(git ls-files -m -o --exclude-standard | sk -m)"; - st = "status"; - br = "branch"; - df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}"; - hist = '' - log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all''; - llog = '' - log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative''; - edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`"; + alias = { + essa = "push --force"; + co = "checkout"; + fuck = "commit --amend -m"; + c = "commit -m"; + ca = "commit -am"; + forgor = "commit --amend --no-edit"; + graph = "log --all --decorate --graph --oneline"; + oops = "checkout --"; + l = "log"; + r = "rebase"; + s = "status --short"; + ss = "status"; + d = "diff"; + ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)"; + pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)"; + af = "!git add $(git ls-files -m -o --exclude-standard | sk -m)"; + st = "status"; + br = "branch"; + df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}"; + hist = ''log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all''; + llog = ''log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative''; + edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`"; + }; }; }; }; diff --git a/modules/home/apps/tools/neovim/config/lazyvim.json b/modules/home/apps/tools/neovim/config/lazyvim.json index f2fecfc..fc41eb3 100644 --- a/modules/home/apps/tools/neovim/config/lazyvim.json +++ b/modules/home/apps/tools/neovim/config/lazyvim.json @@ -1,16 +1,9 @@ { "extras": [ - "lazyvim.plugins.extras.coding.mini-comment", - "lazyvim.plugins.extras.coding.yanky", "lazyvim.plugins.extras.dap.core", "lazyvim.plugins.extras.editor.dial", "lazyvim.plugins.extras.editor.inc-rename", - "lazyvim.plugins.extras.lang.angular", - "lazyvim.plugins.extras.lang.astro", - "lazyvim.plugins.extras.lang.cmake", "lazyvim.plugins.extras.lang.docker", - "lazyvim.plugins.extras.lang.haskell", - "lazyvim.plugins.extras.lang.java", "lazyvim.plugins.extras.lang.toml", "lazyvim.plugins.extras.lang.json", "lazyvim.plugins.extras.lang.clangd", @@ -20,18 +13,15 @@ "lazyvim.plugins.extras.lang.sql", "lazyvim.plugins.extras.lang.svelte", "lazyvim.plugins.extras.lang.tailwind", - "lazyvim.plugins.extras.lang.elixir", - "lazyvim.plugins.extras.lang.tex", "lazyvim.plugins.extras.lang.go", - "lazyvim.plugins.extras.lang.python", - "lazyvim.plugins.extras.lang.zig", + "lazyvim.plugins.extras.lang.php", "lazyvim.plugins.extras.lang.typescript", "lazyvim.plugins.extras.test.core", "lazyvim.plugins.extras.util.rest", "lazyvim.plugins.extras.util.dot", "lazyvim.plugins.extras.util.mini-hipatterns", - "lazyvim.plugins.extras.coding.luasnip", - "lazyvim.plugins.extras.coding.blink" + "lazyvim.plugins.extras.formatting.biome", + "lazyvim.plugins.extras.coding.luasnip" ], "install_version": 8, "news": { diff --git a/modules/home/apps/tools/neovim/config/lua/config/options.lua b/modules/home/apps/tools/neovim/config/lua/config/options.lua index a93bd4c..65f576b 100644 --- a/modules/home/apps/tools/neovim/config/lua/config/options.lua +++ b/modules/home/apps/tools/neovim/config/lua/config/options.lua @@ -3,13 +3,21 @@ -- Add any additional options here if vim.g.neovide then - -- Put anything you want to happen only in Neovide here vim.o.guifont = "Iosevka,Noto_Color_Emoji:h14:b" end --- in this case. -vim.g.lazyvim_blink_main = true vim.g.snacks_animate = false vim.o.termguicolors = true -vim.g.lazyvim_python_lsp = "pyright" +-- Minimal UI borders for floats +vim.diagnostic.config({ + virtual_text = false, + float = { border = "none" }, +}) + +local border = "none" +local handlers = vim.lsp.handlers +handlers["textDocument/hover"] = vim.lsp.with(handlers.hover, { border = border }) +handlers["textDocument/signatureHelp"] = vim.lsp.with(handlers.signature_help, { border = border }) + +vim.g.lazyvim_prettier_needs_config = true diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/core.lua b/modules/home/apps/tools/neovim/config/lua/plugins/core.lua index 052f9b5..cc616aa 100644 --- a/modules/home/apps/tools/neovim/config/lua/plugins/core.lua +++ b/modules/home/apps/tools/neovim/config/lua/plugins/core.lua @@ -2,15 +2,92 @@ return { { "LazyVim/LazyVim", opts = { - colorscheme = "catppuccin-mocha", + colorscheme = "catppuccin", news = { lazyvim = false }, }, }, { "catppuccin", - opts = { - transparent_background = true, - }, + opts = function(_, opts) + opts.transparent_background = true + opts.flavour = "mocha" + opts.no_bold = true + opts.no_italic = true + opts.dim_inactive = { + enabled = true, + percentage = 0.75, + } + opts.integrations = vim.tbl_deep_extend("force", opts.integrations or {}, { + noice = true, + blink_cmp = true, + notify = true, + treesitter = true, + lsp_trouble = true, + telescope = true, + which_key = true, + native_lsp = { + enabled = true, + inlay_hints = { + background = false, + }, + }, + indent_blankline = { + enabled = true, + scope_color = "overlay0", + colored_indent_levels = false, + }, + }) + opts.custom_highlights = function(colors) + return { + Normal = { bg = "NONE" }, + NormalNC = { bg = "NONE" }, + NormalFloat = { bg = "NONE" }, + FloatBorder = { fg = "NONE", bg = "NONE" }, + FloatTitle = { fg = colors.subtext0, bg = "NONE" }, + -- WinSeparator = { fg = colors.surface1 }, + -- CursorLine = { bg = colors.mantle }, + -- Visual = { bg = colors.surface0 }, + -- Pmenu = { bg = colors.bg, fg = colors.text }, + -- PmenuSel = { bg = colors.surface0, fg = colors.text }, + -- PmenuSbar = { bg = colors.bg }, + -- PmenuThumb = { bg = colors.surface1 }, + -- StatusLine = { bg = colors.bg, fg = colors.subtext0 }, + -- StatusLineNC = { bg = colors.bg, fg = colors.overlay0 }, + -- TabLine = { bg = colors.bg, fg = colors.overlay1 }, + -- TabLineSel = { bg = colors.bg, fg = colors.text }, + -- TabLineFill = { bg = colors.bg }, + -- SignColumn = { bg = colors.bg }, + -- LineNr = { fg = colors.overlay1 }, + DiagnosticUnderlineError = { sp = colors.red, undercurl = true }, + DiagnosticUnderlineWarn = { sp = colors.yellow, undercurl = true }, + DiagnosticUnderlineInfo = { sp = colors.teal, undercurl = true }, + DiagnosticUnderlineHint = { sp = colors.sky, undercurl = true }, + -- Noice popup and cmdline transparent, borderless + NoiceCmdlinePopup = { bg = "NONE", fg = colors.text }, + NoiceCmdlinePopupBorder = { fg = "NONE", bg = "NONE" }, + NoiceCmdlinePopupTitle = { bg = "NONE", fg = colors.subtext0 }, + NoicePopup = { bg = "NONE", fg = colors.text }, + NoicePopupBorder = { fg = "NONE", bg = "NONE" }, + -- Blink.cmp: flat boxes with padding and pop colors + BlinkCmpMenu = { bg = "NONE", fg = colors.text }, + BlinkCmpMenuBorder = { fg = "NONE", bg = "NONE" }, + BlinkCmpMenuSelection = { bg = colors.surface0, fg = colors.text }, + BlinkCmpMenuMatch = { fg = colors.mauve }, + BlinkCmpDoc = { bg = "NONE" }, + BlinkCmpDocBorder = { fg = "NONE", bg = "NONE" }, + BlinkCmpDocSelection = { bg = colors.surface0 }, + BlinkCmpKind = { fg = colors.sky }, + BlinkCmpSource = { fg = colors.subtext0 }, + -- Reduce scope highlighting prominence + IlluminatedWordText = { bg = colors.mantle }, + IlluminatedWordRead = { bg = colors.mantle }, + IlluminatedWordWrite = { bg = colors.mantle }, + TreesitterContext = { bg = colors.mantle }, + TreesitterContextLineNumber = { fg = colors.subtext0, bg = colors.mantle }, + } + end + return opts + end, -- config = function() -- require("catppuccin").setup({ -- transparent_background = true, @@ -45,7 +122,7 @@ return { -- end, -- color_overrides = { -- mocha = { - -- base = "#11111b", + -- bg = "#11111b", -- mantle = "#11111b", -- crust = "#11111b", -- }, @@ -59,11 +136,11 @@ return { opts = { formatters_by_ft = { nix = { "alejandra" }, - typescript = { "prettierd" }, - typescriptreact = { "prettierd" }, - javascriptreact = { "prettierd" }, - javascript = { "prettierd" }, - htmlangular = { "prettierd" }, + typescript = { "biome" }, + typescriptreact = { "biome" }, + javascriptreact = { "biome" }, + javascript = { "biome" }, + htmlangular = { "biome" }, python = { "black" }, }, }, @@ -133,8 +210,90 @@ return { }, }, }, + --- minimal crisp single-line borders for LSP windows + inlay_hints = { enabled = true }, + diagnostics = { virtual_text = false }, }, }, + -- Minimal Noice styling + { + "folke/noice.nvim", + opts = function(_, opts) + opts = opts or {} + opts.presets = vim.tbl_deep_extend("force", opts.presets or {}, { + bottom_search = false, + command_palette = false, + long_message_to_split = true, + inc_rename = false, + lsp_doc_border = false, + }) + opts.cmdline = vim.tbl_deep_extend("force", opts.cmdline or {}, { + view = "cmdline_popup", + }) + opts.views = vim.tbl_deep_extend("force", opts.views or {}, { + cmdline_popup = { + border = { style = "none", padding = { 1, 2 } }, + win_options = { + -- winhighlight = { "Normal:NoiceCmdlinePopup,FloatBorder:NoiceCmdlinePopupBorder,FloatTitle:NoiceCmdlinePopupTitle" }, + winhighlight = { + Normal = "NoiceCmdlinePopup", + FloatBorder = "NoiceCmdlinePopupBorder", + FloatTitle = "NoiceCmdlinePopupTitle", + }, + winblend = 0, + }, + position = { row = "40%", col = "50%" }, + size = { width = 60 }, + }, + popupmenu = { + border = { style = "none", padding = { 1, 2 } }, + win_options = { winblend = 0, winhighlight = "Normal:NoicePopup,FloatBorder:NoicePopupBorder" }, + }, + mini = { + border = { style = "none", padding = { 1, 2 } }, + win_options = { winblend = 0, winhighlight = "Normal:NoicePopup,FloatBorder:NoicePopupBorder" }, + }, + }) + return opts + end, + }, + -- Minimal bufferline (if present in LazyVim) + { + "akinsho/bufferline.nvim", + opts = function(_, opts) + opts = opts or {} + opts.options = vim.tbl_deep_extend("force", opts.options or {}, { + separator_style = "none", + show_buffer_close_icons = false, + show_close_icon = false, + always_show_bufferline = false, + indicator = { style = "underline" }, + }) + return opts + end, + }, + -- Minimal indent guides + { + "lukas-reineke/indent-blankline.nvim", + main = "ibl", + opts = function(_, opts) + opts = opts or {} + opts.indent = { char = "│" } + opts.scope = { enabled = false } + opts.whitespace = { remove_blankline_trail = true } + return opts + end, + }, + "pimalaya/himalaya-vim", + { + "rachartier/tiny-inline-diagnostic.nvim", + event = "VeryLazy", -- Or `LspAttach` + priority = 1000, -- needs to be loaded in first + config = function() + require("tiny-inline-diagnostic").setup() + vim.diagnostic.config({ virtual_text = false }) -- Only if needed in your configuration, if you already have native LSP diagnostics + end, + }, -- lua with lazy.nvim { "max397574/better-escape.nvim", diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/extras/typescript.lua b/modules/home/apps/tools/neovim/config/lua/plugins/extras/typescript.lua new file mode 100644 index 0000000..6e5cd3b --- /dev/null +++ b/modules/home/apps/tools/neovim/config/lua/plugins/extras/typescript.lua @@ -0,0 +1,284 @@ +return { + recommended = function() + return LazyVim.extras.wants({ + ft = { + "javascript", + "javascriptreact", + "javascript.jsx", + "typescript", + "typescriptreact", + "typescript.tsx", + }, + root = { "tsconfig.json", "package.json", "jsconfig.json" }, + }) + end, + + -- correctly setup lspconfig + { + "neovim/nvim-lspconfig", + opts = { + -- make sure mason installs the server + servers = { + --- @deprecated -- tsserver renamed to ts_ls but not yet released, so keep this for now + --- the proper approach is to check the nvim-lspconfig release version when it's released to determine the server name dynamically + tsserver = { + enabled = false, + }, + ts_ls = { + enabled = false, + }, + vtsls = { + -- explicitly add default filetypes, so that we can extend + -- them in related extras + filetypes = { + "javascript", + "javascriptreact", + "javascript.jsx", + "typescript", + "typescriptreact", + "typescript.tsx", + }, + settings = { + complete_function_calls = true, + vtsls = { + enableMoveToFileCodeAction = true, + autoUseWorkspaceTsdk = true, + experimental = { + maxInlayHintLength = 30, + completion = { + enableServerSideFuzzyMatch = true, + }, + }, + }, + typescript = { + format = { + enable = false, + }, + updateImportsOnFileMove = { enabled = "always" }, + suggest = { + completeFunctionCalls = true, + }, + inlayHints = { + enumMemberValues = { enabled = true }, + functionLikeReturnTypes = { enabled = true }, + parameterNames = { enabled = "literals" }, + parameterTypes = { enabled = true }, + propertyDeclarationTypes = { enabled = true }, + variableTypes = { enabled = false }, + }, + }, + }, + keys = { + { + "gD", + function() + local params = vim.lsp.util.make_position_params() + LazyVim.lsp.execute({ + command = "typescript.goToSourceDefinition", + arguments = { params.textDocument.uri, params.position }, + open = true, + }) + end, + desc = "Goto Source Definition", + }, + { + "gR", + function() + LazyVim.lsp.execute({ + command = "typescript.findAllFileReferences", + arguments = { vim.uri_from_bufnr(0) }, + open = true, + }) + end, + desc = "File References", + }, + { + "co", + LazyVim.lsp.action["source.organizeImports"], + desc = "Organize Imports", + }, + { + "cM", + LazyVim.lsp.action["source.addMissingImports.ts"], + desc = "Add missing imports", + }, + { + "cu", + LazyVim.lsp.action["source.removeUnused.ts"], + desc = "Remove unused imports", + }, + { + "cD", + LazyVim.lsp.action["source.fixAll.ts"], + desc = "Fix all diagnostics", + }, + { + "cV", + function() + LazyVim.lsp.execute({ command = "typescript.selectTypeScriptVersion" }) + end, + desc = "Select TS workspace version", + }, + }, + }, + }, + setup = { + --- @deprecated -- tsserver renamed to ts_ls but not yet released, so keep this for now + --- the proper approach is to check the nvim-lspconfig release version when it's released to determine the server name dynamically + tsserver = function() + -- disable tsserver + return true + end, + ts_ls = function() + -- disable tsserver + return true + end, + vtsls = function(_, opts) + LazyVim.lsp.on_attach(function(client, buffer) + client.commands["_typescript.moveToFileRefactoring"] = function(command, ctx) + ---@type string, string, lsp.Range + local action, uri, range = unpack(command.arguments) + + local function move(newf) + client.request("workspace/executeCommand", { + command = command.command, + arguments = { action, uri, range, newf }, + }) + end + + local fname = vim.uri_to_fname(uri) + client.request("workspace/executeCommand", { + command = "typescript.tsserverRequest", + arguments = { + "getMoveToRefactoringFileSuggestions", + { + file = fname, + startLine = range.start.line + 1, + startOffset = range.start.character + 1, + endLine = range["end"].line + 1, + endOffset = range["end"].character + 1, + }, + }, + }, function(_, result) + ---@type string[] + local files = result.body.files + table.insert(files, 1, "Enter new path...") + vim.ui.select(files, { + prompt = "Select move destination:", + format_item = function(f) + return vim.fn.fnamemodify(f, ":~:.") + end, + }, function(f) + if f and f:find("^Enter new path") then + vim.ui.input({ + prompt = "Enter move destination:", + default = vim.fn.fnamemodify(fname, ":h") .. "/", + completion = "file", + }, function(newf) + return newf and move(newf) + end) + elseif f then + move(f) + end + end) + end) + end + end, "vtsls") + -- copy typescript settings to javascript + opts.settings.javascript = + vim.tbl_deep_extend("force", {}, opts.settings.typescript, opts.settings.javascript or {}) + end, + }, + }, + }, + + { + "mfussenegger/nvim-dap", + optional = true, + dependencies = { + { + "mason-org/mason.nvim", + opts = function(_, opts) + opts.ensure_installed = opts.ensure_installed or {} + table.insert(opts.ensure_installed, "js-debug-adapter") + end, + }, + }, + opts = function() + local dap = require("dap") + if not dap.adapters["pwa-node"] then + require("dap").adapters["pwa-node"] = { + type = "server", + host = "localhost", + port = "${port}", + executable = { + command = "node", + -- 💀 Make sure to update this path to point to your installation + args = { + LazyVim.get_pkg_path("js-debug-adapter", "/js-debug/src/dapDebugServer.js"), + "${port}", + }, + }, + } + end + if not dap.adapters["node"] then + dap.adapters["node"] = function(cb, config) + if config.type == "node" then + config.type = "pwa-node" + end + local nativeAdapter = dap.adapters["pwa-node"] + if type(nativeAdapter) == "function" then + nativeAdapter(cb, config) + else + cb(nativeAdapter) + end + end + end + + local js_filetypes = { "typescript", "javascript", "typescriptreact", "javascriptreact" } + + local vscode = require("dap.ext.vscode") + vscode.type_to_filetypes["node"] = js_filetypes + vscode.type_to_filetypes["pwa-node"] = js_filetypes + + for _, language in ipairs(js_filetypes) do + if not dap.configurations[language] then + dap.configurations[language] = { + { + type = "pwa-node", + request = "launch", + name = "Launch file", + program = "${file}", + cwd = "${workspaceFolder}", + }, + { + type = "pwa-node", + request = "attach", + name = "Attach", + processId = require("dap.utils").pick_process, + cwd = "${workspaceFolder}", + }, + } + end + end + end, + }, + + -- Filetype icons + { + "echasnovski/mini.icons", + opts = { + file = { + [".eslintrc.js"] = { glyph = "󰱺", hl = "MiniIconsYellow" }, + [".node-version"] = { glyph = "", hl = "MiniIconsGreen" }, + [".prettierrc"] = { glyph = "", hl = "MiniIconsPurple" }, + [".yarnrc.yml"] = { glyph = "", hl = "MiniIconsBlue" }, + ["eslint.config.js"] = { glyph = "󰱺", hl = "MiniIconsYellow" }, + ["package.json"] = { glyph = "", hl = "MiniIconsGreen" }, + ["tsconfig.json"] = { glyph = "", hl = "MiniIconsAzure" }, + ["tsconfig.build.json"] = { glyph = "", hl = "MiniIconsAzure" }, + ["yarn.lock"] = { glyph = "", hl = "MiniIconsBlue" }, + }, + }, + }, +} diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua b/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua index e3cd4ba..d248658 100644 --- a/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua +++ b/modules/home/apps/tools/neovim/config/lua/plugins/lualine.lua @@ -5,7 +5,24 @@ return { -- Author: shadmansaleh -- Credit: glepnir local lualine = require("lualine") - local ctp = require("catppuccin.palettes").get_palette("mocha") + local ctp = require("catppuccin.palettes").get_palette("macchiato") + + -- Utility to blend two hex colors: result = (1 - alpha) * a + alpha * b + local function blend_hex(hex_a, hex_b, alpha) + local function hex_to_rgb(h) + h = h:gsub("#", "") + return tonumber(h:sub(1, 2), 16), tonumber(h:sub(3, 4), 16), tonumber(h:sub(5, 6), 16) + end + local function rgb_to_hex(r, g, b) + return string.format("#%02x%02x%02x", math.floor(r + 0.5), math.floor(g + 0.5), math.floor(b + 0.5)) + end + local ar, ag, ab = hex_to_rgb(hex_a) + local br, bg, bb = hex_to_rgb(hex_b) + local r = ar * (1 - alpha) + br * alpha + local g = ag * (1 - alpha) + bg * alpha + local b = ab * (1 - alpha) + bb * alpha + return rgb_to_hex(r, g, b) + end local conditions = { buffer_not_empty = function() @@ -24,15 +41,11 @@ return { -- Config local config = { options = { - -- Disable sections and component separators component_separators = "", section_separators = "", theme = { - -- We are going to use lualine_c an lualine_x as left and - -- right section. Both are highlighted by c theme . So we - -- are just setting default looks o statusline - normal = { c = { fg = ctp.text, bg = ctp.base } }, - inactive = { c = { fg = ctp.overlay0, bg = ctp.base } }, + normal = { c = { fg = ctp.text, bg = "NONE" } }, + inactive = { c = { fg = ctp.overlay0, bg = "NONE" } }, }, }, sections = { @@ -164,6 +177,41 @@ return { return mode_colors[current_mode] or ctp.subtext0 -- Default to a neutral color if mode not found end + -- Human-readable mode labels + local function get_mode_label() + local m = vim.api.nvim_get_mode().mode + local normal = { + n = true, + no = true, + nov = true, + ["noV"] = true, + ["no\22"] = true, + niI = true, + niR = true, + niV = true, + nt = true, + } + if normal[m] then + return "NORM" + end + if m == "i" or m == "ic" or m == "ix" then + return "INS" + end + if m == "v" or m == "V" or m == "\22" or m == "vs" or m == "Vs" or m == "\22s" then + return "VIS" + end + if m == "R" or m == "Rc" or m == "Rx" or m == "Rv" or m == "Rvc" or m == "Rvx" then + return "REPL" + end + if m == "c" or m == "cv" or m == "ce" then + return "CMD" + end + if m == "t" or m == "!" then + return "TERM" + end + return "?" + end + -- Inserts a component in lualine_c at left section local function ins_left(component) table.insert(config.sections.lualine_c, component) @@ -176,13 +224,14 @@ return { ins_left({ function() - return get_mode_abbr() + return get_mode_label() end, color = function() - local color = get_mode_color() - return { fg = ctp.base, bg = color, gui = "bold" } - end, -- Sets highlighting of component - padding = { left = 1, right = 1 }, -- We don't need space before this + local mode_color = get_mode_color() + local mode_bg = blend_hex(ctp.base, mode_color, 0.254) + return { fg = mode_color, bg = mode_bg, gui = "bold" } + end, + padding = { left = 1, right = 1 }, }) ins_left({ @@ -191,19 +240,13 @@ return { color = { fg = ctp.subtext0 }, }) - ins_left({ - -- filesize component - "filesize", - cond = conditions.buffer_not_empty, - color = { fg = ctp.subtext1 }, - }) - - ins_left({ "location", color = { fg = ctp.subtext1 } }) + -- visual separation using color only, no ASCII separators + ins_left({ "location", color = { fg = ctp.overlay1 } }) ins_left({ "diagnostics", sources = { "nvim_diagnostic" }, - symbols = { error = " ", warn = " ", info = " " }, + symbols = { error = "", warn = "", info = "" }, diagnostics_color = { error = { fg = ctp.red }, warn = { fg = ctp.yellow }, @@ -219,14 +262,13 @@ return { end, }) + -- LSP client indicator (badge) ins_right({ - -- Lsp server name . function() - local msg = "none" local buf_ft = vim.api.nvim_get_option_value("filetype", { buf = 0 }) local clients = vim.lsp.get_clients() if next(clients) == nil then - return msg + return "" end for _, client in ipairs(clients) do local filetypes = client.config.filetypes @@ -234,42 +276,41 @@ return { return client.name end end - return msg - end, - icon = "", - color = { fg = ctp.overlay1, gui = "bold" }, - }) - - -- Add components to right sections - ins_right({ - "branch", - icon = "", - color = { fg = ctp.mauve, gui = "bold" }, - }) - - ins_right({ - "diff", - -- Is it me or the symbol for modified us really weird - symbols = { added = " ", modified = "󰝤 ", removed = " " }, - diff_color = { - added = { fg = ctp.green }, - modified = { fg = ctp.peach }, - removed = { fg = ctp.red }, - }, - cond = conditions.hide_in_width, - }) - - ins_right({ - function() - return "▊" + return "" end, color = function() - local color = get_mode_color() - return { fg = color } - end, -- Sets highlighting of component - padding = { left = 1 }, + return { fg = ctp.sapphire, bg = blend_hex(ctp.base, ctp.sapphire, 0.254), gui = "bold" } + end, + padding = { left = 1, right = 1 }, }) + -- CMP badge (visible in insert mode) + ins_right({ + function() + return "CMP" + end, + cond = function() + local mode = vim.api.nvim_get_mode().mode + return mode == "i" or mode == "ic" or mode == "ix" + end, + color = { fg = ctp.base, bg = ctp.teal }, + padding = { left = 1, right = 1 }, + }) + + -- Language/filetype badge + ins_right({ + "filetype", + colored = false, + icon_only = false, + color = function() + return { fg = ctp.text, ctp.surface0, gui = "bold" } + end, + padding = { left = 1, right = 1 }, + }) + + -- Minimal right side + ins_right({ "progress", color = { fg = ctp.overlay1 } }) + -- Now don't forget to initialize lualine lualine.setup(config) end, diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/mini.ai.lua b/modules/home/apps/tools/neovim/config/lua/plugins/mini.ai.lua index f2f079f..0013854 100644 --- a/modules/home/apps/tools/neovim/config/lua/plugins/mini.ai.lua +++ b/modules/home/apps/tools/neovim/config/lua/plugins/mini.ai.lua @@ -1,4 +1,4 @@ return { - "echasnovski/mini.ai", + "nvim-mini/mini.ai", version = false, } diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/typst.lua b/modules/home/apps/tools/neovim/config/lua/plugins/typst.lua new file mode 100644 index 0000000..1cd4697 --- /dev/null +++ b/modules/home/apps/tools/neovim/config/lua/plugins/typst.lua @@ -0,0 +1,6 @@ +return { + "chomosuke/typst-preview.nvim", + lazy = false, -- or ft = 'typst' + version = "1.*", + opts = {}, -- lazy.nvim will implicitly calls `setup {}` +} diff --git a/modules/home/apps/tools/neovim/default.nix b/modules/home/apps/tools/neovim/default.nix index 941b8f9..e19040d 100644 --- a/modules/home/apps/tools/neovim/default.nix +++ b/modules/home/apps/tools/neovim/default.nix @@ -27,18 +27,23 @@ with lib.custom; let in result; - pluginList = plugins: strings.concatMapStrings (plugin: " [\"${sanitizePluginName plugin.name}\"] = \"${plugin.outPath}\",\n") plugins; + pluginList = plugins: + strings.concatMapStrings ( + plugin: " [\"${sanitizePluginName plugin.name}\"] = \"${plugin.outPath}\",\n" + ) + plugins; in { options.apps.tools.neovim = with types; { enable = mkBoolOpt false "Enable Neovim"; }; config = mkIf cfg.enable { + catppuccin.nvim.enable = false; + programs.neovim = { - catppuccin.enable = false; enable = true; defaultEditor = true; - # package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default; + package = inputs.neovim-nightly-overlay.packages.${pkgs.system}.default; extraLuaPackages = ps: [ps.magick]; extraPackages = with pkgs; [ # Formatters @@ -55,22 +60,21 @@ in { # LSP lua-language-server nixd - (pkgs.rust-bin.selectLatestNightlyWith - (toolchain: toolchain.default)) rust-analyzer nodePackages.typescript-language-server #nodePackages.astro-language-server nodePackages.bash-language-server nodePackages.svelte-language-server tailwindcss-language-server + vtsls taplo docker-compose-language-service - dockerfile-language-server-nodejs + dockerfile-language-server haskellPackages.hadolint shellcheck markdownlint-cli2 shfmt - sqlfluff + # sqlfluff go tailwindcss-language-server @@ -88,7 +92,6 @@ in { fswatch # File watcher utility, replacing libuv.fs_event for neovim 10.0 sqlite postgresql - mongosh # vscode-extensions.vadimcn.vscode-lldb.adapter ]; plugins = with pkgs.vimPlugins; [ diff --git a/modules/home/apps/tools/starship/default.nix b/modules/home/apps/tools/starship/default.nix index bf801db..144b400 100644 --- a/modules/home/apps/tools/starship/default.nix +++ b/modules/home/apps/tools/starship/default.nix @@ -20,7 +20,7 @@ in { enableNushellIntegration = config.programs.nushell.enable; settings = { add_newline = false; - format = "$username$directory$git_branch$git_status$python$rust$nodejs$nix_shell$cmd_duration$line_break$character"; + format = "$directory$git_branch$git_status$python$rust$nodejs$nix_shell$cmd_duration$line_break$character"; # Username display username = { diff --git a/modules/home/apps/tools/tmux/default.nix b/modules/home/apps/tools/tmux/default.nix index 1325924..4ba5bcb 100644 --- a/modules/home/apps/tools/tmux/default.nix +++ b/modules/home/apps/tools/tmux/default.nix @@ -18,7 +18,6 @@ in { enable = true; extraConfig = '' set -g @catppuccin_window_status_style "basic" - set -g @catppuccin_status_background "#11111b" ''; }; diff --git a/modules/home/apps/web/floorp/default.nix b/modules/home/apps/web/floorp/default.nix new file mode 100644 index 0000000..d91aa48 --- /dev/null +++ b/modules/home/apps/web/floorp/default.nix @@ -0,0 +1,261 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.apps.web.floorp; + + natsumi = pkgs.fetchFromGitHub { + owner = "greeeen-dev"; + repo = "natsumi-browser"; + rev = "v5.7.1"; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; + }; +in { + options.apps.web.floorp = with types; { + enable = mkBoolOpt false "Enable Floorp Browser"; + + setDefault = mkBoolOpt false "Enable Floorp as Default browser"; + }; + config = mkIf cfg.enable { + xdg.mimeApps.defaultApplications = mkIf cfg.setDefault { + "text/html" = "floorp.desktop"; + "x-scheme-handler/http" = "floorp.desktop"; + "x-scheme-handler/https" = "floorp.desktop"; + }; + + home.file.".floorp/default/chrome" = { + source = "${natsumi}"; + recursive = true; + }; + + catppuccin.firefox.profiles.default.enable = false; + + programs.floorp = { + enable = true; + + profiles.default = { + extensions.force = true; + search = { + default = "SearXNG"; + + engines = { + "NixOS Options" = { + urls = [ + { + template = "https://search.nixos.org/options?query={searchTerms}"; + } + ]; + + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["@nixos"]; + }; + + "Nix Packages" = { + urls = [ + { + template = "https://search.nixos.org/packages?query={searchTerms}"; + } + ]; + + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["@nixpkgs"]; + }; + + "OpenStreetMap" = { + urls = [ + { + template = "https://www.openstreetmap.org/search?query={searchTerms}"; + } + ]; + + icon = "https://www.openstreetmap.org/favicon.ico"; + definedAliases = ["@openstreetmap" "@osm"]; + }; + + "SearXNG" = { + urls = [ + { + template = "https://search.zoeys.computer/searx/search?q={searchTerms}"; + } + ]; + + icon = "https://search.zoeys.computer/searx/static/themes/simple/img/favicon.svg"; + definedAliases = ["@searx"]; + }; + + "docs.rs" = { + urls = [ + { + template = "https://docs.rs/releases/search?query={searchTerms}"; + } + ]; + + icon = "https://docs.rs/-/static/favicon.ico"; + definedAliases = ["@docs"]; + }; + + "crates.io" = { + urls = [ + { + template = "https://crates.io/search?q={searchTerms}"; + } + ]; + + icon = "https://crates.io/assets/cargo.png"; + definedAliases = ["@crates"]; + }; + }; + + force = true; # Required to prevent search engine symlink being overwritten. See https://github.com/nix-community/home-manager/issues/3698 + }; + }; + + policies = { + DisableTelemetry = true; + + Preferences = { + "app.normandy.api_url" = ""; + "app.normandy.enabled" = false; + "app.shield.optoutstudies.enabled" = false; + "app.update.auto" = false; + "beacon.enabled" = false; + "breakpad.reportURL" = ""; + "browser.aboutConfig.showWarning" = false; + "browser.cache.offline.enable" = false; + "browser.crashReports.unsubmittedCheck.autoSubmit" = false; + "browser.crashReports.unsubmittedCheck.autoSubmit2" = false; + "browser.crashReports.unsubmittedCheck.enabled" = false; + "browser.disableResetPrompt" = true; + "browser.newtab.preload" = false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; + "browser.newtabpage.enhanced" = false; + "browser.newtabpage.introShown" = true; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.system.showSponsored" = false; + "browser.safebrowsing.appRepURL" = ""; + "browser.safebrowsing.blockedURIs.enabled" = false; + "browser.safebrowsing.downloads.enabled" = false; + "browser.safebrowsing.downloads.remote.enabled" = false; + "browser.safebrowsing.downloads.remote.url" = ""; + "browser.safebrowsing.enabled" = false; + "browser.safebrowsing.malware.enabled" = false; + "browser.safebrowsing.phishing.enabled" = false; + "browser.selfsupport.url" = ""; + "browser.send_pings" = false; + "browser.sessionstore.privacy_level" = 0; + "browser.shell.checkDefaultBrowser" = false; + "browser.startup.homepage_override.mstone" = ""; + "browser.tabs.crashReporting.sendReport" = false; + "browser.urlbar.groupLabels.enabled" = false; + "browser.urlbar.quicksuggest.enabled" = false; + "browser.urlbar.speculativeConnect.enabled" = false; + "browser.urlbar.trimURLs" = false; + "browser.urlbar.suggest.quicksuggest.sponsored" = false; + "datareporting.healthreport.service.enabled" = false; + "datareporting.healthreport.uploadEnabled" = false; + "datareporting.policy.dataSubmissionEnabled" = false; + "device.sensors.ambientLight.enabled" = false; + "device.sensors.enabled" = false; + "device.sensors.motion.enabled" = false; + "device.sensors.orientation.enabled" = false; + "device.sensors.proximity.enabled" = false; + "dom.battery.enabled" = false; + "dom.event.clipboardevents.enabled" = false; + "dom.webaudio.enabled" = false; + "experiments.activeExperiment" = false; + "experiments.enabled" = false; + "experiments.manifest.uri" = ""; + "experiments.supported" = false; + "extensions.ClearURLs@kevinr.whiteList" = ""; + "extensions.Decentraleyes@ThomasRientjes.whiteList" = ""; + "extensions.FirefoxMulti-AccountContainers@mozilla.whiteList" = ""; + "extensions.TemporaryContainers@stoically.whiteList" = ""; + "extensions.autoDisableScopes" = 14; + "extensions.getAddons.cache.enabled" = false; + "extensions.getAddons.showPane" = false; + "extensions.greasemonkey.stats.optedin" = false; + "extensions.greasemonkey.stats.url" = ""; + "extensions.pocket.enabled" = false; + "extensions.shield-recipe-client.api_url" = ""; + "extensions.shield-recipe-client.enabled" = false; + "extensions.webservice.discoverURL" = ""; + "media.autoplay.default" = 0; + "media.autoplay.enabled" = true; + "media.eme.enabled" = false; + "media.gmp-widevinecdm.enabled" = false; + "media.navigator.enabled" = false; + "media.peerconnection.enabled" = false; + "media.video_stats.enabled" = false; + "network.IDN_show_punycode" = true; + "network.allow-experiments" = false; + "network.captive-portal-service.enabled" = false; + "network.cookie.cookieBehavior" = 1; + "network.dns.disablePrefetch" = true; + "network.dns.disablePrefetchFromHTTPS" = true; + "network.http.referer.spoofSource" = true; + "network.http.speculative-parallel-limit" = ""; + "network.predictor.enable-prefetch" = false; + "network.predictor.enabled" = false; + "network.prefetch-next" = false; + "network.trr.mode" = ""; + "privacy.donottrackheader.enabled" = true; + "privacy.donottrackheader.value" = ""; + "privacy.firstparty.isolate" = true; + "privacy.query_stripping" = true; + "privacy.trackingprotection.cryptomining.enabled" = true; + "privacy.trackingprotection.enabled" = true; + "privacy.trackingprotection.fingerprinting.enabled" = true; + "privacy.trackingprotection.pbmode.enabled" = true; + "privacy.usercontext.about_newtab_segregation.enabled" = true; + "security.ssl.disable_session_identifiers" = true; + "services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSite" = false; + "signon.autofillForms" = false; + "toolkit.telemetry.archive.enabled" = false; + "toolkit.telemetry.bhrPing.enabled" = false; + "toolkit.telemetry.cachedClientID" = ""; + "toolkit.telemetry.enabled" = false; + "toolkit.telemetry.firstShutdownPing.enabled" = false; + "toolkit.telemetry.hybridContent.enabled" = false; + "toolkit.telemetry.newProfilePing.enabled" = false; + "toolkit.telemetry.prompted" = ""; + "toolkit.telemetry.rejected" = true; + "toolkit.telemetry.reportingpolicy.firstRun" = false; + "toolkit.telemetry.server" = ""; + "toolkit.telemetry.shutdownPingSender.enabled" = false; + "toolkit.telemetry.unified" = false; + "toolkit.telemetry.unifiedIsOptIn" = false; + "toolkit.telemetry.updatePing.enabled" = false; + "webgl.renderer-string-override" = " "; + "webgl.vendor-string-override" = " "; + }; + + ExtensionSettings = with builtins; let + extension = shortId: uuid: { + name = uuid; + value = { + install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; + installation_mode = "normal_installed"; + }; + }; + in + listToAttrs [ + (extension "ublock-origin" "uBlock0@raymondhill.net") + (extension "privacy-badger17" "jid1-MnnxcxisBPnSXQ@jetpack") + (extension "1password-x-password-manager" "{d634138d-c276-4fc8-924b-40a0ea21d284}") + (extension "multi-account-containers" "@testpilot-containers") + (extension "temporary-containers" "{c607c8df-14a7-4f28-894f-29e8722976af}") + (extension "styl-us" "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}") + (extension "betterttv" "firefox@betterttv.net") + (extension "decentraleyes" "jid1-BoFifL9Vbdl2zQ@jetpack") + (extension "canvasblocker" "CanvasBlocker@kkapsner.de") + (extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}") + ]; + }; + }; + }; +} diff --git a/modules/home/apps/web/librewolf/default.nix b/modules/home/apps/web/librewolf/default.nix index b6864c5..ae234aa 100644 --- a/modules/home/apps/web/librewolf/default.nix +++ b/modules/home/apps/web/librewolf/default.nix @@ -2,11 +2,19 @@ lib, config, pkgs, + inputs, ... }: with lib; with lib.custom; let cfg = config.apps.web.librewolf; + + natsumi = pkgs.fetchFromGitHub { + owner = "greeeen-dev"; + repo = "natsumi-browser"; + rev = "v5.7.1"; + hash = "sha256-t5xVpFRV2qq5uJRGk7V50EiPnsxbd2cyeKPJYqg/LF0="; + }; in { options.apps.web.librewolf = with types; { enable = mkBoolOpt false "Enable or disable librewolf"; @@ -21,13 +29,43 @@ in { "x-scheme-handler/https" = "librewolf.desktop"; }; + home.file.".librewolf/${config.home.username}/chrome" = { + source = "${natsumi}"; + recursive = true; + }; + programs.librewolf = { enable = true; + profiles.default = lib.mkForce { + id = 1; + isDefault = false; + extensions = { + force = true; + }; + }; + profiles.${config.home.username} = { id = 0; isDefault = true; + extensions = { + force = true; + }; + + settings = { + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "sidebar.verticalTabs" = true; + + "webgl.disabled" = false; + "privacy.resistFingerprinting" = false; + "privacy.clearOnShutdown.history" = false; + "privacy.clearOnShutdown.cookies" = false; + "network.cookie.lifetimePolicy" = 0; + + "natsumi.theme.type" = "default"; + }; + search = { default = "SearXNG"; @@ -62,7 +100,10 @@ in { ]; icon = "https://www.openstreetmap.org/favicon.ico"; - definedAliases = ["@openstreetmap" "@osm"]; + definedAliases = [ + "@openstreetmap" + "@osm" + ]; }; "SearXNG" = { @@ -104,125 +145,6 @@ in { }; policies = { - DisableTelemetry = true; - - Preferences = { - "app.normandy.api_url" = ""; - "app.normandy.enabled" = false; - "app.shield.optoutstudies.enabled" = false; - "app.update.auto" = false; - "beacon.enabled" = false; - "breakpad.reportURL" = ""; - "browser.aboutConfig.showWarning" = false; - "browser.cache.offline.enable" = false; - "browser.crashReports.unsubmittedCheck.autoSubmit" = false; - "browser.crashReports.unsubmittedCheck.autoSubmit2" = false; - "browser.crashReports.unsubmittedCheck.enabled" = false; - "browser.disableResetPrompt" = true; - "browser.newtab.preload" = false; - "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; - "browser.newtabpage.enhanced" = false; - "browser.newtabpage.introShown" = true; - "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; - "browser.newtabpage.activity-stream.showSponsored" = false; - "browser.newtabpage.activity-stream.system.showSponsored" = false; - "browser.safebrowsing.appRepURL" = ""; - "browser.safebrowsing.blockedURIs.enabled" = false; - "browser.safebrowsing.downloads.enabled" = false; - "browser.safebrowsing.downloads.remote.enabled" = false; - "browser.safebrowsing.downloads.remote.url" = ""; - "browser.safebrowsing.enabled" = false; - "browser.safebrowsing.malware.enabled" = false; - "browser.safebrowsing.phishing.enabled" = false; - "browser.selfsupport.url" = ""; - "browser.send_pings" = false; - "browser.sessionstore.privacy_level" = 0; - "browser.shell.checkDefaultBrowser" = false; - "browser.startup.homepage_override.mstone" = ""; - "browser.tabs.crashReporting.sendReport" = false; - "browser.urlbar.groupLabels.enabled" = false; - "browser.urlbar.quicksuggest.enabled" = false; - "browser.urlbar.speculativeConnect.enabled" = false; - "browser.urlbar.trimURLs" = false; - "browser.urlbar.suggest.quicksuggest.sponsored" = false; - "datareporting.healthreport.service.enabled" = false; - "datareporting.healthreport.uploadEnabled" = false; - "datareporting.policy.dataSubmissionEnabled" = false; - "device.sensors.ambientLight.enabled" = false; - "device.sensors.enabled" = false; - "device.sensors.motion.enabled" = false; - "device.sensors.orientation.enabled" = false; - "device.sensors.proximity.enabled" = false; - "dom.battery.enabled" = false; - "dom.event.clipboardevents.enabled" = false; - "dom.webaudio.enabled" = false; - "experiments.activeExperiment" = false; - "experiments.enabled" = false; - "experiments.manifest.uri" = ""; - "experiments.supported" = false; - "extensions.ClearURLs@kevinr.whiteList" = ""; - "extensions.Decentraleyes@ThomasRientjes.whiteList" = ""; - "extensions.FirefoxMulti-AccountContainers@mozilla.whiteList" = ""; - "extensions.TemporaryContainers@stoically.whiteList" = ""; - "extensions.autoDisableScopes" = 14; - "extensions.getAddons.cache.enabled" = false; - "extensions.getAddons.showPane" = false; - "extensions.greasemonkey.stats.optedin" = false; - "extensions.greasemonkey.stats.url" = ""; - "extensions.pocket.enabled" = false; - "extensions.shield-recipe-client.api_url" = ""; - "extensions.shield-recipe-client.enabled" = false; - "extensions.webservice.discoverURL" = ""; - "media.autoplay.default" = 0; - "media.autoplay.enabled" = true; - "media.eme.enabled" = false; - "media.gmp-widevinecdm.enabled" = false; - "media.navigator.enabled" = false; - "media.peerconnection.enabled" = false; - "media.video_stats.enabled" = false; - "network.IDN_show_punycode" = true; - "network.allow-experiments" = false; - "network.captive-portal-service.enabled" = false; - "network.cookie.cookieBehavior" = 1; - "network.dns.disablePrefetch" = true; - "network.dns.disablePrefetchFromHTTPS" = true; - "network.http.referer.spoofSource" = true; - "network.http.speculative-parallel-limit" = ""; - "network.predictor.enable-prefetch" = false; - "network.predictor.enabled" = false; - "network.prefetch-next" = false; - "network.trr.mode" = ""; - "privacy.donottrackheader.enabled" = true; - "privacy.donottrackheader.value" = ""; - "privacy.firstparty.isolate" = true; - "privacy.query_stripping" = true; - "privacy.trackingprotection.cryptomining.enabled" = true; - "privacy.trackingprotection.enabled" = true; - "privacy.trackingprotection.fingerprinting.enabled" = true; - "privacy.trackingprotection.pbmode.enabled" = true; - "privacy.usercontext.about_newtab_segregation.enabled" = true; - "security.ssl.disable_session_identifiers" = true; - "services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSite" = false; - "signon.autofillForms" = false; - "toolkit.telemetry.archive.enabled" = false; - "toolkit.telemetry.bhrPing.enabled" = false; - "toolkit.telemetry.cachedClientID" = ""; - "toolkit.telemetry.enabled" = false; - "toolkit.telemetry.firstShutdownPing.enabled" = false; - "toolkit.telemetry.hybridContent.enabled" = false; - "toolkit.telemetry.newProfilePing.enabled" = false; - "toolkit.telemetry.prompted" = ""; - "toolkit.telemetry.rejected" = true; - "toolkit.telemetry.reportingpolicy.firstRun" = false; - "toolkit.telemetry.server" = ""; - "toolkit.telemetry.shutdownPingSender.enabled" = false; - "toolkit.telemetry.unified" = false; - "toolkit.telemetry.unifiedIsOptIn" = false; - "toolkit.telemetry.updatePing.enabled" = false; - "webgl.renderer-string-override" = " "; - "webgl.vendor-string-override" = " "; - }; - ExtensionSettings = with builtins; let extension = shortId: uuid: { name = uuid; @@ -236,15 +158,11 @@ in { (extension "ublock-origin" "uBlock0@raymondhill.net") (extension "privacy-badger17" "jid1-MnnxcxisBPnSXQ@jetpack") (extension "1password-x-password-manager" "{d634138d-c276-4fc8-924b-40a0ea21d284}") - (extension "firefox-color" "FirefoxColor@mozilla.com") - (extension "multi-account-containers" "@testpilot-containers") - (extension "temporary-containers" "{c607c8df-14a7-4f28-894f-29e8722976af}") (extension "styl-us" "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}") (extension "betterttv" "firefox@betterttv.net") (extension "decentraleyes" "jid1-BoFifL9Vbdl2zQ@jetpack") (extension "canvasblocker" "CanvasBlocker@kkapsner.de") (extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}") - (extension "mtab" "contact@maxhu.dev") ]; }; }; diff --git a/modules/home/apps/web/zen/default.nix b/modules/home/apps/web/zen/default.nix index 2f919d8..85d16e9 100644 --- a/modules/home/apps/web/zen/default.nix +++ b/modules/home/apps/web/zen/default.nix @@ -16,9 +16,9 @@ in { config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) { xdg.mimeApps.defaultApplications = mkIf cfg.setDefault { - "text/html" = "zen-beta.desktop"; - "x-scheme-handler/http" = "zen-beta.desktop"; - "x-scheme-handler/https" = "zen-beta.desktop"; + "text/html" = "zen-twilight.desktop"; + "x-scheme-handler/http" = "zen-twilight.desktop"; + "x-scheme-handler/https" = "zen-twilight.desktop"; }; }; } diff --git a/modules/home/rice/gtk/default.nix b/modules/home/rice/gtk/default.nix index 872ba98..00fc341 100644 --- a/modules/home/rice/gtk/default.nix +++ b/modules/home/rice/gtk/default.nix @@ -15,7 +15,7 @@ in { }; config = mkIf cfg.enable { - catppuccin.pointerCursor.enable = true; + catppuccin.cursors.enable = true; home.pointerCursor = { gtk.enable = true; @@ -37,10 +37,6 @@ in { iconTheme = { name = "Papirus-Dark"; - package = pkgs.catppuccin-papirus-folders.override { - accent = ctp.accent; - flavor = ctp.flavor; - }; }; gtk3.extraConfig = { diff --git a/modules/home/services/hypridle/default.nix b/modules/home/services/hypridle/default.nix index 27082f0..68cef77 100644 --- a/modules/home/services/hypridle/default.nix +++ b/modules/home/services/hypridle/default.nix @@ -15,9 +15,10 @@ in { }; config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) { + catppuccin.swaylock.enable = false; + programs.swaylock = { enable = true; - catppuccin.enable = false; package = pkgs.swaylock-effects; settings = with colors; { clock = true; diff --git a/modules/home/services/quickshell/default.nix b/modules/home/services/quickshell/default.nix deleted file mode 100644 index 8dec8eb..0000000 --- a/modules/home/services/quickshell/default.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - lib, - config, - pkgs, - system, - inputs, - ... -}: -with lib; -with lib.custom; let - cfg = config.services.quickshell; - - mkService = recursiveUpdate { - Unit.PartOf = ["graphical-session.target"]; - Unit.After = ["graphical-session.target"]; - Install.WantedBy = ["graphical-session.target"]; - }; -in { - options.services.quickshell = with types; { - enable = mkBoolOpt false "Enable or Disable QuickShell"; - }; - config = mkIf cfg.enable { - systemd.user.services = { - quickshell = mkService { - Unit.Description = "QuickShell Service"; - Service = { - Environment = [ - "QSG_RENDER_LOOP=threaded" - # "QT_QUICK_BACKEND=software" - "QT_QPA_PLATFORM=wayland" - "QSG_RENDERER_TIMING=true" - "QML_DISABLE_DISTANCEFIELD=1" - "QT_WAYLAND_DISABLE_WINDOWDECORATION=1" - "QT_QPA_PLATFORMTHEME=qt5ct" - "QT_QPA_REFRESH_RATE=240" - "__GL_SYNC_TO_VBLANK=0" - "LIBGL_ALWAYS_SOFTWARE=0" - "__GL_SYNC_DISPLAY_DEVICE=DP-1" # Adjust this to match your display connection - "QML_ANIMATION_DRIVER=cadence" - "QML_CADENCE_DURATION=4" - "QML_CADENCE_MAX_RENDER_TIME=3.5" - "QSG_RENDERER_USE_THREADED_GL=1" - "QSG_RHI_PREFER_SOFTWARE_RENDERER=0" - "QSG_RHI_FORCE_SYNC=0" - "QSG_INFO=1" - ]; - ExecStart = '' - ${inputs.quickshell.packages.${system}.default}/bin/qs --log-rules 'quickshell.dbus.properties.warning = false;quickshell.dbus.dbusmenu.warning = false;quickshell.service.notifications.warning = false;quickshell.service.sni.host.warning = false' - ''; - Restart = "always"; - }; - }; - }; - }; -} diff --git a/modules/home/shells/aliases.nix b/modules/home/shells/aliases.nix index 4a8ca73..c18d4b5 100644 --- a/modules/home/shells/aliases.nix +++ b/modules/home/shells/aliases.nix @@ -16,7 +16,7 @@ with pkgs; { untar = "tar -xvf"; untargz = "tar -xzf"; MANPAGER = "sh -c 'col -bx | bat -l man -p'"; - du = getExe du-dust; + du = getExe dust; ps = getExe procs; lb = "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\""; deploy = "nixos-rebuild switch --flake ~/nixos#pluto --target-host zoeys.computer --use-remote-sudo"; @@ -28,6 +28,8 @@ with pkgs; { la = "${getExe eza} -lah --tree"; ls = "${getExe eza} -h --git --icons --color=auto --group-directories-first -s extension"; tree = "${getExe eza} --tree --icons --tree"; + ns = "nh os switch -- --cores 8 --max-jobs 1"; + nsu = "nh os switch --update -- --cores 8 --max-jobs 1"; kys = "shutdown now"; # w = ''| nvim -c "setlocal buftype=nofile bufhidden=wipe" -c "nnoremap q :q!" -''; lv = "nvim -c \"normal '\''0\""; diff --git a/modules/home/shells/fish/default.nix b/modules/home/shells/fish/default.nix index 4c49268..c3e81b6 100644 --- a/modules/home/shells/fish/default.nix +++ b/modules/home/shells/fish/default.nix @@ -24,8 +24,6 @@ in { set -g FZF_PREVIEW_FILE_CMD "head -n 10" set -g FZF_PREVIEW_DIR_CMD "ls" - set -gx AWS_DEFAULT_PROFILE (cat ~/.aws_profile | string collect) - set -Ux MANROFFOPT '-c' set -Ux MANPAGER "sh -c 'col -bx | bat -l man -p'" @@ -93,7 +91,7 @@ in { fzf # dns client - dogdns + doggo # neofetch but for git repos onefetch @@ -116,9 +114,6 @@ in { imagemagick ffmpeg-full - # preview images in terminal - catimg - # networking stuff nmap wget diff --git a/modules/home/shells/nu/aliases.nix b/modules/home/shells/nu/aliases.nix index f96d667..cf67129 100644 --- a/modules/home/shells/nu/aliases.nix +++ b/modules/home/shells/nu/aliases.nix @@ -16,7 +16,7 @@ with pkgs; { untar = "tar -xvf"; untargz = "tar -xzf"; MANPAGER = "sh -c 'col -bx | bat -l man -p'"; - du = getExe du-dust; + du = getExe dust; lb = "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\""; deploy = "nixos-rebuild switch --flake ~/nixos#pluto --target-host zoeys.computer --use-remote-sudo"; m = "mkdir"; diff --git a/modules/home/shells/nu/default.nix b/modules/home/shells/nu/default.nix index 6eca880..01bc890 100644 --- a/modules/home/shells/nu/default.nix +++ b/modules/home/shells/nu/default.nix @@ -53,7 +53,7 @@ in { ripgrep gping fzf - dogdns + doggo onefetch cpufetch yt-dlp @@ -62,7 +62,6 @@ in { hyperfine imagemagick ffmpeg-full - catimg nmap wget fd diff --git a/modules/home/shells/zsh/default.nix b/modules/home/shells/zsh/default.nix index 387635e..dcde6b7 100644 --- a/modules/home/shells/zsh/default.nix +++ b/modules/home/shells/zsh/default.nix @@ -92,7 +92,7 @@ in { gping # dns client - dogdns + doggo # neofetch but for git repos onefetch @@ -115,9 +115,6 @@ in { imagemagick ffmpeg-full - # preview images in terminal - catimg - # networking stuff nmap wget diff --git a/modules/home/wms/hyprland/default.nix b/modules/home/wms/hyprland/default.nix index a5efb04..87a008f 100644 --- a/modules/home/wms/hyprland/default.nix +++ b/modules/home/wms/hyprland/default.nix @@ -76,17 +76,6 @@ in { "${mod},Q,killactive" "${mod},M,exit" "${mod},P,pseudo" - "${mod},Z,exec,${pkgs.writeShellScriptBin "zen-launcher" '' - ZEN_RESULT=$(${inputs.hyprland.packages.${pkgs.system}.default}/bin/hyprctl clients -j | ${lib.getExe pkgs.jq} '.[] | select(.class | contains("zen"))') - - if [ -z "$ZEN_RESULT" ]; then - ${lib.getExe inputs.zen-browser.packages.${pkgs.system}.beta} & - disown - else - ZEN_WORKSPACE=$(echo "$ZEN_RESULT" | ${lib.getExe pkgs.jq} '.workspace.id') - ${pkgs.hyprland}/bin/hyprctl dispatch workspace "$ZEN_WORKSPACE" - fi - ''}/bin/zen-launcher" "${mod},J,togglesplit," @@ -257,7 +246,6 @@ in { # }; # }; - services.quickshell.enable = true; services.wallpaper.enable = true; }; } diff --git a/modules/home/wms/niri/default.nix b/modules/home/wms/niri/default.nix index 3d818a5..f55bf32 100644 --- a/modules/home/wms/niri/default.nix +++ b/modules/home/wms/niri/default.nix @@ -24,7 +24,15 @@ with lib.custom; { relative-to ? "window", in' ? null, }: { - gradient = {inherit from to angle relative-to in';}; + gradient = { + inherit + from + to + angle + relative-to + in' + ; + }; }; spawnSlackOnWeekday = pkgs.writeShellScriptBin "spawn-slack-on-weekday" '' @@ -41,7 +49,7 @@ with lib.custom; { exit 0 ''; in { - package = pkgs.niri; + package = inputs.niri-src.packages.${pkgs.system}.niri; settings = { # Input device configuration @@ -55,6 +63,8 @@ with lib.custom; { variant = ""; options = null; # Or "" if you prefer explicit empty }; + + repeat-rate = 40; }; touchpad = { @@ -87,7 +97,7 @@ with lib.custom; { middle-emulation = false; # Commented out }; - warp-mouse-to-focus = true; + warp-mouse-to-focus.enable = true; focus-follows-mouse = { enable = false; # Commented out in KDL @@ -110,6 +120,27 @@ with lib.custom; { rotation = 0; flipped = false; }; + position = { + x = 2560; + y = 0; + }; + }; + + outputs."DP-3" = { + enable = true; # Not explicitly 'off' + mode = { + width = 3840; + height = 2160; + refresh = 240.0; + }; + variable-refresh-rate = "on-demand"; + focus-at-startup = true; + scale = 1.5; + transform = { + # "normal" + rotation = 0; + flipped = false; + }; position = { x = 0; y = 0; @@ -139,9 +170,18 @@ with lib.custom; { # preset-window-heights = []; # Empty in KDL - default-column-width = {proportion = 0.5;}; + default-column-width = { + proportion = 0.5; + }; # default-column-width = {}; # Alternative from KDL comments + # blur = { + # enable = true; + # passes = 4; + # radius = 4.0; + # noise = 0.1; + # }; + focus-ring = { enable = true; # Not explicitly 'off' width = 4; @@ -164,20 +204,24 @@ with lib.custom; { }; struts = { - # left = 64; # Commented out - # right = 64; # Commented out - # top = 64; # Commented out - # bottom = 64; # Commented out + # left = 64; # Commented out + # right = 64; # Commented out + # top = 64; # Commented out + # bottom = 64; # Commented out }; }; # Spawn processes at startup spawn-at-startup = [ {command = ["xwayland-satellite"];} - {command = ["${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed"];} + { + command = [ + "${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed" + ]; + } {command = ["${pkgs.writeShellScriptBin "zen-delayed" ''sleep 5; zen''}/bin/zen-delayed"];} {command = ["vesktop"];} - {command = ["spotify"];} + {command = ["tidal-hifi"];} {command = ["${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday"];} ]; @@ -196,10 +240,6 @@ with lib.custom; { # Individual animation settings can be added here if needed }; - debug = { - wait-for-frame-completion-in-pipewire = []; - }; - layer-rules = [ { matches = [ @@ -341,11 +381,16 @@ with lib.custom; { # Keybindings binds = { - "Mod+Shift+Slash" = {action = actions.show-hotkey-overlay;}; + "Mod+Shift+Slash" = { + action = actions.show-hotkey-overlay; + }; - "Mod+Return" = {action = actions.spawn "kitty";}; - "Mod+D" = {action = actions.spawn "fuzzel";}; - "Super+Alt+L" = {action = actions.spawn "swaylock";}; + "Mod+Return" = { + action = actions.spawn "kitty"; + }; + "Mod+D" = { + action = actions.spawn "fuzzel"; + }; # "Mod+T" = { action = actions.spawn "bash" "-c" "notify-send hello && exec alacritty"; }; # "Mod+S" = {action = actions.set-dynamic-cast-window;}; @@ -354,43 +399,59 @@ with lib.custom; { # # "Mod+Z" = {action = actions.clear-dynamic-cast-target;}; - "XF86AudioRaiseVolume" = { - allow-when-locked = true; - action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; - }; - "XF86AudioLowerVolume" = { - allow-when-locked = true; - action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; - }; - "XF86AudioMute" = { - allow-when-locked = true; - action = actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; - }; - "XF86AudioMicMute" = { - allow-when-locked = true; - action = - actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; + "Mod+Q" = { + action = actions.close-window; }; - "Mod+Q" = {action = actions.close-window;}; + "Mod+Left" = { + action = actions.focus-column-left; + }; + "Mod+Down" = { + action = actions.focus-window-down; + }; + "Mod+Up" = { + action = actions.focus-window-up; + }; + "Mod+Right" = { + action = actions.focus-column-right; + }; + "Mod+H" = { + action = actions.focus-column-left; + }; + "Mod+J" = { + action = actions.focus-window-down; + }; + "Mod+K" = { + action = actions.focus-window-up; + }; + "Mod+L" = { + action = actions.focus-column-right; + }; - "Mod+Left" = {action = actions.focus-column-left;}; - "Mod+Down" = {action = actions.focus-window-down;}; - "Mod+Up" = {action = actions.focus-window-up;}; - "Mod+Right" = {action = actions.focus-column-right;}; - "Mod+H" = {action = actions.focus-column-left;}; - "Mod+J" = {action = actions.focus-window-down;}; - "Mod+K" = {action = actions.focus-window-up;}; - "Mod+L" = {action = actions.focus-column-right;}; - - "Mod+Ctrl+Left" = {action = actions.move-column-left;}; - "Mod+Ctrl+Down" = {action = actions.move-window-down;}; - "Mod+Ctrl+Up" = {action = actions.move-window-up;}; - "Mod+Ctrl+Right" = {action = actions.move-column-right;}; - "Mod+Ctrl+H" = {action = actions.move-column-left;}; - "Mod+Ctrl+J" = {action = actions.move-window-down;}; - "Mod+Ctrl+K" = {action = actions.move-window-up;}; - "Mod+Ctrl+L" = {action = actions.move-column-right;}; + "Mod+Ctrl+Left" = { + action = actions.move-column-left; + }; + "Mod+Ctrl+Down" = { + action = actions.move-window-down; + }; + "Mod+Ctrl+Up" = { + action = actions.move-window-up; + }; + "Mod+Ctrl+Right" = { + action = actions.move-column-right; + }; + "Mod+Ctrl+H" = { + action = actions.move-column-left; + }; + "Mod+Ctrl+J" = { + action = actions.move-window-down; + }; + "Mod+Ctrl+K" = { + action = actions.move-window-up; + }; + "Mod+Ctrl+L" = { + action = actions.move-column-right; + }; # Alternative commands (commented out in KDL) # "Mod+J" = { action = actions.focus-window-or-workspace-down; }; @@ -398,44 +459,110 @@ with lib.custom; { # "Mod+Ctrl+J" = { action = actions.move-window-down-or-to-workspace-down; }; # "Mod+Ctrl+K" = { action = actions.move-window-up-or-to-workspace-up; }; - "Mod+Home" = {action = actions.focus-column-first;}; - "Mod+End" = {action = actions.focus-column-last;}; - "Mod+Ctrl+Home" = {action = actions.move-column-to-first;}; - "Mod+Ctrl+End" = {action = actions.move-column-to-last;}; + "Mod+Home" = { + action = actions.focus-column-first; + }; + "Mod+End" = { + action = actions.focus-column-last; + }; + "Mod+Ctrl+Home" = { + action = actions.move-column-to-first; + }; + "Mod+Ctrl+End" = { + action = actions.move-column-to-last; + }; - "Mod+Shift+Left" = {action = actions.focus-monitor-left;}; - "Mod+Shift+Down" = {action = actions.focus-monitor-down;}; - "Mod+Shift+Up" = {action = actions.focus-monitor-up;}; - "Mod+Shift+Right" = {action = actions.focus-monitor-right;}; - "Mod+Shift+H" = {action = actions.focus-monitor-left;}; - "Mod+Shift+J" = {action = actions.focus-workspace-down;}; - "Mod+Shift+K" = {action = actions.focus-workspace-up;}; - "Mod+Shift+L" = {action = actions.focus-monitor-right;}; + "Mod+Shift+Left" = { + action = actions.focus-monitor-left; + }; + "Mod+Shift+Down" = { + action = actions.focus-monitor-down; + }; + "Mod+Shift+Up" = { + action = actions.focus-monitor-up; + }; + "Mod+Shift+Right" = { + action = actions.focus-monitor-right; + }; + "Mod+Shift+H" = { + action = actions.focus-monitor-left; + }; + "Mod+Shift+J" = { + action = actions.focus-workspace-down; + }; + "Mod+Shift+K" = { + action = actions.focus-workspace-up; + }; + "Mod+Shift+L" = { + action = actions.focus-monitor-right; + }; - "Mod+Ctrl+Shift+F" = {action = actions.toggle-windowed-fullscreen;}; + "Mod+Ctrl+Shift+F" = { + action = actions.toggle-windowed-fullscreen; + }; - "Mod+Shift+Ctrl+Left" = {action = actions.move-column-to-monitor-left;}; - "Mod+Shift+Ctrl+Down" = {action = actions.move-column-to-monitor-down;}; - "Mod+Shift+Ctrl+Up" = {action = actions.move-column-to-monitor-up;}; - "Mod+Shift+Ctrl+Right" = {action = actions.move-column-to-monitor-right;}; - "Mod+Shift+Ctrl+H" = {action = actions.move-column-to-monitor-left;}; - "Mod+Shift+Ctrl+J" = {action = actions.move-column-to-monitor-down;}; - "Mod+Shift+Ctrl+K" = {action = actions.move-column-to-monitor-up;}; - "Mod+Shift+Ctrl+L" = {action = actions.move-column-to-monitor-right;}; + "Mod+Shift+Ctrl+Left" = { + action = actions.move-column-to-monitor-left; + }; + "Mod+Shift+Ctrl+Down" = { + action = actions.move-column-to-monitor-down; + }; + "Mod+Shift+Ctrl+Up" = { + action = actions.move-column-to-monitor-up; + }; + "Mod+Shift+Ctrl+Right" = { + action = actions.move-column-to-monitor-right; + }; + "Mod+Shift+Ctrl+H" = { + action = actions.move-column-to-monitor-left; + }; + "Mod+Shift+Ctrl+J" = { + action = actions.move-column-to-monitor-down; + }; + "Mod+Shift+Ctrl+K" = { + action = actions.move-column-to-monitor-up; + }; + "Mod+Shift+Ctrl+L" = { + action = actions.move-column-to-monitor-right; + }; - "Mod+Page_Down" = {action = actions.focus-workspace-down;}; - "Mod+Page_Up" = {action = actions.focus-workspace-up;}; - "Mod+U" = {action = actions.focus-workspace-down;}; - "Mod+I" = {action = actions.focus-workspace-up;}; - "Mod+Ctrl+Page_Down" = {action = actions.move-column-to-workspace-down;}; - "Mod+Ctrl+Page_Up" = {action = actions.move-column-to-workspace-up;}; - "Mod+Ctrl+U" = {action = actions.move-column-to-workspace-down;}; - "Mod+Ctrl+I" = {action = actions.move-column-to-workspace-up;}; + "Mod+Page_Down" = { + action = actions.focus-workspace-down; + }; + "Mod+Page_Up" = { + action = actions.focus-workspace-up; + }; + "Mod+U" = { + action = actions.focus-workspace-down; + }; + "Mod+I" = { + action = actions.focus-workspace-up; + }; + "Mod+Ctrl+Page_Down" = { + action = actions.move-column-to-workspace-down; + }; + "Mod+Ctrl+Page_Up" = { + action = actions.move-column-to-workspace-up; + }; + "Mod+Ctrl+U" = { + action = actions.move-column-to-workspace-down; + }; + "Mod+Ctrl+I" = { + action = actions.move-column-to-workspace-up; + }; - "Mod+Shift+Page_Down" = {action = actions.move-workspace-down;}; - "Mod+Shift+Page_Up" = {action = actions.move-workspace-up;}; - "Mod+Shift+U" = {action = actions.move-workspace-down;}; - "Mod+Shift+I" = {action = actions.move-workspace-up;}; + "Mod+Shift+Page_Down" = { + action = actions.move-workspace-down; + }; + "Mod+Shift+Page_Up" = { + action = actions.move-workspace-up; + }; + "Mod+Shift+U" = { + action = actions.move-workspace-down; + }; + "Mod+Shift+I" = { + action = actions.move-workspace-up; + }; "Mod+WheelScrollDown" = { cooldown-ms = 150; @@ -454,60 +581,116 @@ with lib.custom; { action = actions.move-column-to-workspace-up; }; - "Mod+WheelScrollRight" = {action = actions.focus-column-right;}; - "Mod+WheelScrollLeft" = {action = actions.focus-column-left;}; - "Mod+Ctrl+WheelScrollRight" = {action = actions.move-column-right;}; - "Mod+Ctrl+WheelScrollLeft" = {action = actions.move-column-left;}; + "Mod+WheelScrollRight" = { + action = actions.focus-column-right; + }; + "Mod+WheelScrollLeft" = { + action = actions.focus-column-left; + }; + "Mod+Ctrl+WheelScrollRight" = { + action = actions.move-column-right; + }; + "Mod+Ctrl+WheelScrollLeft" = { + action = actions.move-column-left; + }; - "Mod+Shift+WheelScrollDown" = {action = actions.focus-column-right;}; - "Mod+Shift+WheelScrollUp" = {action = actions.focus-column-left;}; - "Mod+Ctrl+Shift+WheelScrollDown" = {action = actions.move-column-right;}; - "Mod+Ctrl+Shift+WheelScrollUp" = {action = actions.move-column-left;}; + "Mod+Shift+WheelScrollDown" = { + action = actions.focus-column-right; + }; + "Mod+Shift+WheelScrollUp" = { + action = actions.focus-column-left; + }; + "Mod+Ctrl+Shift+WheelScrollDown" = { + action = actions.move-column-right; + }; + "Mod+Ctrl+Shift+WheelScrollUp" = { + action = actions.move-column-left; + }; - "Mod+Comma" = {action = actions.consume-window-into-column;}; - "Mod+Period" = {action = actions.expel-window-from-column;}; + "Mod+Shift+Comma" = { + action = actions.consume-window-into-column; + }; + "Mod+Period" = { + action = actions.expel-window-from-column; + }; - "Mod+BracketLeft" = {action = actions.consume-or-expel-window-left;}; - "Mod+BracketRight" = {action = actions.consume-or-expel-window-right;}; + "Mod+BracketLeft" = { + action = actions.consume-or-expel-window-left; + }; + "Mod+BracketRight" = { + action = actions.consume-or-expel-window-right; + }; - "Mod+R" = {action = actions.switch-preset-column-width;}; - "Mod+Shift+R" = {action = actions.switch-preset-window-height;}; - "Mod+Ctrl+R" = {action = actions.reset-window-height;}; - "Mod+F" = {action = actions.maximize-column;}; - "Mod+Shift+F" = {action = actions.fullscreen-window;}; - "Mod+C" = {action = actions.center-column;}; - "Mod+Ctrl+F" = {action = actions.expand-column-to-available-width;}; + "Mod+R" = { + action = actions.switch-preset-column-width; + }; + "Mod+Shift+R" = { + action = actions.switch-preset-window-height; + }; + "Mod+Ctrl+R" = { + action = actions.reset-window-height; + }; + "Mod+F" = { + action = actions.maximize-column; + }; + "Mod+Shift+F" = { + action = actions.fullscreen-window; + }; + "Mod+C" = { + action = actions.center-column; + }; + "Mod+Ctrl+F" = { + action = actions.expand-column-to-available-width; + }; - "Mod+V" = {action = actions.toggle-window-floating;}; + "Mod+Shift+V" = { + action = actions.toggle-window-floating; + }; - "Mod+Minus" = {action = actions.set-column-width "-10%";}; - "Mod+Equal" = {action = actions.set-column-width "+10%";}; + "Mod+Minus" = { + action = actions.set-column-width "-10%"; + }; + "Mod+Equal" = { + action = actions.set-column-width "+10%"; + }; - "Mod+Shift+Minus" = {action = actions.set-window-height "-10%";}; - "Mod+Shift+Equal" = {action = actions.set-window-height "+10%";}; + "Mod+Shift+Minus" = { + action = actions.set-window-height "-10%"; + }; + "Mod+Shift+Equal" = { + action = actions.set-window-height "+10%"; + }; - "Print" = {action = actions.screenshot {};}; # Empty attrset for default args - "Mod+Shift+E" = {action = actions.quit {};}; # Default: no skip-confirmation - "Ctrl+Alt+Delete" = {action = actions.quit {};}; + "Print" = { + action.screenshot = []; + }; # Empty attrset for default args + "Mod+Shift+E" = { + action = actions.quit {}; + }; # Default: no skip-confirmation + "Ctrl+Alt+Delete" = { + action = actions.quit {}; + }; - "Mod+Shift+P" = {action = actions.power-off-monitors;}; + "Mod+Shift+P" = { + action = actions.power-off-monitors; + }; } - // lib.attrsets.listToAttrs (builtins.concatMap (i: - with actions; [ + // lib.attrsets.listToAttrs ( + builtins.concatMap (i: [ { name = "Mod+${toString i}"; - value.action = focus-workspace i; + value.action = actions.focus-workspace i; } # FIXME: use this action directly untril sodiboo/niri-flake#1018 is fixed. { name = "Mod+Shift+${toString i}"; - value.action = spawn [niri "msg" "action" "move-column-to-workspace" (toString i)]; + value.action.move-window-to-workspace = i; } - ]) (lib.range 1 9)); + ]) (lib.range 1 9) + ); }; }; - services.quickshell.enable = false; - services.wallpaper.enable = true; + # services.wallpaper.enable = true; }; } diff --git a/modules/nixos/hardware/audio/default.nix b/modules/nixos/hardware/audio/default.nix index dae04eb..7d21446 100644 --- a/modules/nixos/hardware/audio/default.nix +++ b/modules/nixos/hardware/audio/default.nix @@ -24,39 +24,9 @@ in { jack.enable = true; }; - systemd.user.services.cava-combine-inputs = { - description = "Combine MOTU M4 Line Inputs L/R for Cava"; - - # Ensure this runs after pipewire-pulse is started - after = ["pipewire-pulse.service"]; - wants = ["pipewire-pulse.service"]; # Start pipewire-pulse if not already running - - # Make it part of the default user session target - wantedBy = ["default.target"]; - - # Service configuration details - serviceConfig = { - Type = "oneshot"; # Run the command once and exit - # Use RemainAfterExit if you want the service to show as 'active' after running - # RemainAfterExit = true; - - # Command to execute. Use full paths for robustness. - # We use sh -c to run multiple commands sequentially. - # pactl is provided by the pulseaudio package. - ExecStart = "${pkgs.writeShellScriptBin "cava-start" '' - echo "Attempting to load Cava combine modules..." - # Load null sink (returns non-zero if it fails AND module doesn't exist) - ${pkgs.pulseaudio}/bin/pactl load-module module-null-sink sink_name=cava-line-in sink_properties=device.description="Cava_Combined_LineIn" - # Load loopbacks (returns non-zero on failure) - ${pkgs.pulseaudio}/bin/pactl load-module module-loopback source="alsa_input.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line3__source" sink=cava-line-in latency_msec=10 - ${pkgs.pulseaudio}/bin/pactl load-module module-loopback source="alsa_input.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line4__source" sink=cava-line-in latency_msec=10 - echo "Finished loading Cava combine modules (ignore errors if already loaded)." - # Exit successfully even if modules were already loaded (pactl might return 0) - exit 0 - ''}/bin/cava-start"; - - # Prevent service from restarting automatically - Restart = "no"; + services.pipewire.extraConfig.pipewire."92-low-latency" = { + "context.properties" = { + "default.clock.rate" = 192000; }; }; }; diff --git a/modules/nixos/hardware/gpu-passthru/default.nix b/modules/nixos/hardware/gpu-passthru/default.nix index 9ba0531..b28ad46 100644 --- a/modules/nixos/hardware/gpu-passthru/default.nix +++ b/modules/nixos/hardware/gpu-passthru/default.nix @@ -24,9 +24,9 @@ with lib.custom; let echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor # Isolate host to core 0 - systemctl set-property --runtime -- user.slice AllowedCPUs=0-8 - systemctl set-property --runtime -- system.slice AllowedCPUs=0-8 - systemctl set-property --runtime -- init.scope AllowedCPUs=0-8 + systemctl set-property --runtime -- user.slice AllowedCPUs=0-15 + systemctl set-property --runtime -- system.slice AllowedCPUs=0-15 + systemctl set-property --runtime -- init.scope AllowedCPUs=0-15 # disable vpn mullvad disconnect -w @@ -110,14 +110,6 @@ with lib.custom; let libvirtd-cfg = config.virtualisation.libvirtd; qemuConfigFile = pkgs.writeText "qemu.conf" '' - ${optionalString libvirtd-cfg.qemu.ovmf.enable '' - nvram = [ - "/run/libvirt/nix-ovmf/AAVMF_CODE.fd:/run/libvirt/nix-ovmf/AAVMF_VARS.fd", - "/run/libvirt/nix-ovmf/AAVMF_CODE.ms.fd:/run/libvirt/nix-ovmf/AAVMF_VARS.ms.fd", - "/run/libvirt/nix-ovmf/OVMF_CODE.fd:/run/libvirt/nix-ovmf/OVMF_VARS.fd", - "/run/libvirt/nix-ovmf/OVMF_CODE.ms.fd:/run/libvirt/nix-ovmf/OVMF_VARS.ms.fd" - ] - ''} ${optionalString (!libvirtd-cfg.qemu.runAsRoot) '' user = "qemu-libvirtd" group = "qemu-libvirtd" @@ -162,16 +154,6 @@ in { package = pkgs.qemu_kvm; runAsRoot = true; swtpm.enable = true; - ovmf = { - enable = true; - packages = [ - (pkgs.OVMF.override { - secureBoot = true; - tpmSupport = true; - }) - .fd - ]; - }; }; }; @@ -217,29 +199,17 @@ in { done ln -s --force ${libvirtd-cfg.qemu.package}/bin/qemu-pr-helper /run/${dirName}/nix-helpers/ - - ${optionalString libvirtd-cfg.qemu.ovmf.enable ( - let - ovmfpackage = pkgs.buildEnv { - name = "qemu-ovmf"; - paths = libvirtd-cfg.qemu.ovmf.packages; - }; - in '' - ln -s --force ${ovmfpackage}/FV/AAVMF_CODE{,.ms}.fd /run/${dirName}/nix-ovmf/ - ln -s --force ${ovmfpackage}/FV/OVMF_CODE{,.ms}.fd /run/${dirName}/nix-ovmf/ - ln -s --force ${ovmfpackage}/FV/AAVMF_VARS{,.ms}.fd /run/${dirName}/nix-ovmf/ - ln -s --force ${ovmfpackage}/FV/OVMF_VARS{,.ms}.fd /run/${dirName}/nix-ovmf/ - '' - )} ''; system.activationScripts.libvirt-hooks.text = '' ln -Tfs /etc/libvirt/hooks /var/lib/libvirt/hooks ''; - environment.systemPackages = with pkgs; [ - libguestfs-with-appliance - ]; + # environment.systemPackages = with pkgs; [ + # libguestfs + # ]; + + networking.firewall.trustedInterfaces = ["virbr0"]; environment.etc = { "/libvirt/hooks/qemu" = { diff --git a/modules/nixos/hardware/nvidia/default.nix b/modules/nixos/hardware/nvidia/default.nix index 90a75ce..36abc90 100644 --- a/modules/nixos/hardware/nvidia/default.nix +++ b/modules/nixos/hardware/nvidia/default.nix @@ -36,7 +36,6 @@ in { # supported GPUs is at: # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus # Only available from driver 515.43.04+ - # Currently alpha-quality/buggy, so false is currently the recommended setting. open = true; # Enable the Nvidia settings menu, @@ -44,45 +43,19 @@ in { nvidiaSettings = false; # Optionally, you may need to select the appropriate driver version for your specific GPU. - package = config.boot.kernelPackages.nvidiaPackages.stable; - # package = config.boot.kernelPackages.nvidiaPackages.beta.overrideAttrs { - # patchesOpen = with pkgs; [ - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0001-Enable-atomic-kernel-modesetting-by-default.patch"; - # hash = "sha256-tvdm8nxxXslPUun33zj1kkYZOiWKK3F4nwcCkdzPW9s="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0002-Add-IBT-support.patch"; - # hash = "sha256-JUT8FwBhyRhOWxwET7Zw/xkIl8g6UCLMXSTofr0OuSg="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0003-Kbuild-Convert-EXTRA_CFLAGS-to-ccflags-y.patch"; - # hash = "sha256-W+yyiK6TpEs9IACMr/0V7EIP++u7MPOfa9ko3w8Gqtc="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0004-kernel-open-nvidia-Use-new-timer-functions-for-6.15.patch"; - # hash = "sha256-T3SY2O6Pmc8BA0oana5xGGDhBxCizwmRqMyPvgF3j8A="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0005-nvidia-uvm-Use-__iowrite64_hi_lo.patch"; - # hash = "sha256-T8BNr1H1vgEQoKB0S5cqcbq6fSQxiDK9bb/MCvMtzTI"; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0006-nvidia-uvm-Use-page_pgmap.patch"; - # hash = "sha256-YucFZ2Z7YSgUiah82uLOmd4Z/c5YLOXxzEZNO6ZvQQg="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0007-nvidia-uvm-Convert-make_device_exclusive_range-to-ma.patch"; - # hash = "sha256-AehV7D+yYBmE8FWsUiagnjB8V7S8RJSTNcVMwZIgw/I="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0008-kbuild-Add-workaround-for-GCC-15-Compilation.patch"; - # hash = "sha256-HrYBiAFy62Jll+ceVnGuJKGKDoaRObjAGIYa+yrAogA="; - # }) - # ]; - # }; + package = config.boot.kernelPackages.nvidiaPackages.mkDriver { + version = "580.82.09"; + sha256_64bit = "sha256-Puz4MtouFeDgmsNMKdLHoDgDGC+QRXh6NVysvltWlbc="; + sha256_aarch64 = "sha256-6tHiAci9iDTKqKrDIjObeFdtrlEwjxOHJpHfX4GMEGQ="; + openSha256 = "sha256-YB+mQD+oEDIIDa+e8KX1/qOlQvZMNKFrI5z3CoVKUjs="; + settingsSha256 = "sha256-um53cr2Xo90VhZM1bM2CH4q9b/1W2YOqUcvXPV6uw2s="; + persistencedSha256 = "sha256-lbYSa97aZ+k0CISoSxOMLyyMX//Zg2Raym6BC4COipU="; + }; }; + boot.initrd.kernelModules = ["nvidia"]; + boot.extraModulePackages = [config.boot.kernelPackages.nvidia_x11]; + environment.variables = { GBM_BACKEND = "nvidia-drm"; WLR_NO_HARDWARE_CURSORS = "1"; diff --git a/modules/nixos/protocols/wayland/default.nix b/modules/nixos/protocols/wayland/default.nix index f98739c..d1e51ac 100644 --- a/modules/nixos/protocols/wayland/default.nix +++ b/modules/nixos/protocols/wayland/default.nix @@ -27,8 +27,8 @@ in { }; }; - services.xserver.displayManager.gdm.enable = false; - services.xserver.displayManager.gdm.wayland = true; + services.displayManager.gdm.enable = false; + services.displayManager.gdm.wayland = true; # services.displayManager.sddm.enable = true; # services.displayManager.sddm.package = lib.mkForce pkgs.kdePackages.sddm; diff --git a/modules/nixos/services/crypto/default.nix b/modules/nixos/services/crypto/default.nix new file mode 100644 index 0000000..8f0ca3b --- /dev/null +++ b/modules/nixos/services/crypto/default.nix @@ -0,0 +1,31 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.services.crypto; +in { + options.services.crypto = with types; { + enable = mkBoolOpt false "Enable Monero"; + }; + config = mkIf cfg.enable { + services.wg-container.enable = true; + + # systemd.services.monero.vpnConfinement = { + # enable = true; + # vpnNamespace = "wg"; + # }; + # + # services.monero = { + # enable = true; + # mining.enable = false; + # rpc = {address = "192.168.15.1";}; + # extraConfig = '' + # confirm-external-bind=1 + # ''; + # }; + }; +} diff --git a/modules/nixos/services/mail/default.nix b/modules/nixos/services/mail/default.nix index 658d954..56881a2 100644 --- a/modules/nixos/services/mail/default.nix +++ b/modules/nixos/services/mail/default.nix @@ -33,7 +33,7 @@ in { gitlab-email-pw-hashed.file = ./sec/gitlab-email-pw-hashed.age; }; - mailserver = { + mailserver = rec { enable = true; fqdn = "mail.zoeys.email"; domains = ["zoeys.email" "zoeys.cloud" "zoeys.computer" "zackmyers.io" "zacharymyers.com" "pictureofcat.com"]; @@ -64,27 +64,23 @@ in { }; }; - certificateScheme = "acme-nginx"; + enableManageSieve = true; + + dmarcReporting.enable = true; + + x509.useACMEHost = fqdn; virusScanning = true; - stateVersion = 1; + stateVersion = 3; }; - # services.nginx = { - # virtualHosts = { - # "cal.zoeys.cloud" = { - # forceSSL = true; - # enableACME = true; - # locations."/" = { - # proxyPass = "http://localhost:5232/"; - # extraConfig = '' - # proxy_set_header X-Script-Name /; - # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - # proxy_pass_header Authorization; - # ''; - # }; - # }; - # }; - # }; + services.nginx = { + virtualHosts = { + "${config.mailserver.fqdn}" = { + forceSSL = true; + enableACME = true; + }; + }; + }; services.roundcube = { enable = true; diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix new file mode 100644 index 0000000..688a731 --- /dev/null +++ b/modules/nixos/services/matrix/default.nix @@ -0,0 +1,146 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.services.matrix; +in { + options.services.matrix = with types; { + enable = mkBoolOpt false "Matrix Web Server"; + }; + config = mkIf cfg.enable { + sops = { + defaultSopsFile = ../../../.sops.yaml; + gnupg.home = "/var/lib/sops"; + gnupg.sshKeyPaths = []; + + secrets = { + "password" = { + sopsFile = ../../../../secrets/matrix-db.yaml; + owner = "root"; + group = "root"; + mode = "0444"; + neededForUsers = true; + }; + }; + }; + + services.matrix-synapse-next = { + enable = true; + + workers.federationSenders = 2; + workers.federationReceivers = 2; + workers.initialSyncers = 2; + workers.normalSyncers = 2; + workers.eventPersisters = 2; + workers.useUserDirectoryWorker = true; + + enableNginx = true; + + settings = { + server_name = "zoeys.cloud"; + + recaptcha_public_key = "6LdcENQrAAAAAKFi-gTzPnf6Q2xq7yTmIYv6Xw5o"; + recaptcha_private_key = "6LdcENQrAAAAABfnE6TVkMWtRrw0OZqZEfYaGm7m"; + + enable_registration = true; + enable_registration_captcha = true; + + database = { + name = "psycopg2"; + args = { + host = "localhost"; + user = "synapse"; + password = "synapse"; + dbname = "synapse"; + }; + }; + }; + }; + + services.redis.servers."".enable = true; + + services.coturn = rec { + enable = true; + no-cli = true; + no-tcp-relay = true; + min-port = 49000; + max-port = 50000; + use-auth-secret = true; + static-auth-secret = "will be world readable for local users :("; + realm = "turn.zoeys.cloud"; + cert = "${config.security.acme.certs.${realm}.directory}/full.pem"; + pkey = "${config.security.acme.certs.${realm}.directory}/key.pem"; + extraConfig = '' + verbose + + no-multicast-peers + denied-peer-ip=0.0.0.0-0.255.255.255 + denied-peer-ip=10.0.0.0-10.255.255.255 + denied-peer-ip=100.64.0.0-100.127.255.255 + denied-peer-ip=127.0.0.0-127.255.255.255 + denied-peer-ip=169.254.0.0-169.254.255.255 + denied-peer-ip=172.16.0.0-172.31.255.255 + denied-peer-ip=192.0.0.0-192.0.0.255 + denied-peer-ip=192.0.2.0-192.0.2.255 + denied-peer-ip=192.88.99.0-192.88.99.255 + denied-peer-ip=192.168.0.0-192.168.255.255 + denied-peer-ip=198.18.0.0-198.19.255.255 + denied-peer-ip=198.51.100.0-198.51.100.255 + denied-peer-ip=203.0.113.0-203.0.113.255 + denied-peer-ip=240.0.0.0-255.255.255.255 + denied-peer-ip=::1 + denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff + denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255 + denied-peer-ip=100::-100::ffff:ffff:ffff:ffff + denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff + denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff + denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff + denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff + ''; + }; + + networking.firewall = { + interfaces.ens3 = let + range = with config.services.coturn; [ + { + from = min-port; + to = max-port; + } + ]; + in { + allowedUDPPortRanges = range; + allowedUDPPorts = [3478 5349]; + allowedTCPPortRanges = []; + allowedTCPPorts = [3478 5349]; + }; + }; + + services.nginx.virtualHosts.${config.services.coturn.realm} = { + forceSSL = true; + enableACME = true; + locations."/" = { + return = "200 'Hai :3'"; + }; + }; + + users.groups.turnserver.members = ["nginx"]; + + security.acme.certs.${config.services.coturn.realm} = { + /* + insert here the right configuration to obtain a certificate + */ + postRun = "systemctl restart coturn.service"; + group = "turnserver"; + }; + # configure synapse to point users to coturn + services.matrix-synapse.settings = with config.services.coturn; { + turn_uris = ["turn:${realm}:3478?transport=udp" "turn:${realm}:3478?transport=tcp"]; + turn_shared_secret = static-auth-secret; + turn_user_lifetime = "1h"; + }; + }; +} diff --git a/modules/nixos/services/transmission/default.nix b/modules/nixos/services/transmission/default.nix new file mode 100644 index 0000000..5426640 --- /dev/null +++ b/modules/nixos/services/transmission/default.nix @@ -0,0 +1,38 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.services.torrent; +in { + options.services.torrent = with types; { + enable = mkBoolOpt false "Enable Transmission Service (for Linux ISOs)"; + }; + config = mkIf cfg.enable { + services.wg-container.enable = true; + + systemd.services.transmission.vpnConfinement = { + enable = true; + vpnNamespace = "wg"; + }; + + services.transmission = { + enable = true; + package = pkgs.transmission_4; + settings = { + incomplete-dir-enabled = true; + rpc-bind-address = "192.168.15.1"; # Bind RPC/WebUI to VPN network namespace address + rpc-whitelist-enabled = false; + rpc-whitelist = [ + "192.168.15.1" + "192.168.15.5" # Access from default network namespace + "192.168.1.*" # Access from other machines on specific subnet + "127.0.0.1" # Access through loopback within VPN network namespace + ]; + }; + }; + }; +} diff --git a/modules/nixos/services/vpn/default.nix b/modules/nixos/services/vpn/default.nix index f2c4be0..a264fc9 100644 --- a/modules/nixos/services/vpn/default.nix +++ b/modules/nixos/services/vpn/default.nix @@ -10,25 +10,12 @@ with lib.custom; let in { options.services.vpn = with types; { enable = mkBoolOpt false "Enable VPN service(s)"; - - mullvad = mkBoolOpt false "Enable Mullvad VPN Daemon"; }; config = mkIf cfg.enable { services.mullvad-vpn = { - enable = cfg.mullvad; + enable = true; package = nixos-stable.mullvad; }; - - services.openvpn = { - servers = { - work = { - config = ''config /home/zoey/Downloads/zachary_myers.ovpn''; - updateResolvConf = true; - }; - }; - }; - - systemd.services.openvpn-work.wantedBy = lib.mkForce []; }; } diff --git a/modules/nixos/services/web/nginx/default.nix b/modules/nixos/services/web/nginx/default.nix index e141150..4677f58 100644 --- a/modules/nixos/services/web/nginx/default.nix +++ b/modules/nixos/services/web/nginx/default.nix @@ -20,7 +20,7 @@ in { services.nginx = { enable = true; - package = pkgs.nginxStable.override {openssl = pkgs.libressl;}; + # package = pkgs.nginxStable.override {openssl = pkgs.libressl;}; recommendedProxySettings = true; recommendedGzipSettings = true; recommendedOptimisation = true; diff --git a/modules/nixos/services/wg-container/default.nix b/modules/nixos/services/wg-container/default.nix new file mode 100644 index 0000000..a82ab3b --- /dev/null +++ b/modules/nixos/services/wg-container/default.nix @@ -0,0 +1,50 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.services.wg-container; +in { + options.services.wg-container = with types; { + enable = mkBoolOpt false "Enable Wireguard Container"; + }; + config = mkIf cfg.enable { + sops = { + defaultSopsFile = ../../../.sops.yaml; + gnupg.home = "/var/lib/sops"; + gnupg.sshKeyPaths = []; + + secrets = { + "vpn_config_file" = { + sopsFile = ../../../../secrets/vpn-config.yaml; + owner = "root"; + group = "root"; + mode = "0400"; + neededForUsers = true; + }; + }; + }; + + vpnNamespaces.wg = { + enable = true; + wireguardConfigFile = config.sops.secrets.vpn_config_file.path; + accessibleFrom = [ + "192.168.0.0/24" + ]; + portMappings = [ + { + from = 18081; + to = 18081; + protocol = "both"; + } + { + from = 9091; + to = 9091; + } + ]; + }; + }; +} diff --git a/modules/nixos/sites/code/default.nix b/modules/nixos/sites/code/default.nix index 4af0c2f..ccb3085 100644 --- a/modules/nixos/sites/code/default.nix +++ b/modules/nixos/sites/code/default.nix @@ -36,7 +36,7 @@ in { catppuccin.forgejo.enable = false; services.gitea-actions-runner = { - package = pkgs.forgejo-actions-runner; + package = pkgs.forgejo-runner; instances.default = { enable = true; name = "monolith"; diff --git a/modules/nixos/sites/jellyfin/default.nix b/modules/nixos/sites/jellyfin/default.nix index 5d01113..aede3fa 100644 --- a/modules/nixos/sites/jellyfin/default.nix +++ b/modules/nixos/sites/jellyfin/default.nix @@ -19,19 +19,5 @@ in { user = "zoey"; group = "users"; }; - - # virtualisation.oci-containers = { - # containers.jellyfin-vue = { - # image = "ghcr.io/jellyfin/jellyfin-vue:unstable"; - # environment = { - # "PUBLIC_JELLYFIN_API" = "http://localhost:8096"; - # }; - # ports = [ - # "8065:80" - # ]; - # }; - # }; - - networking.firewall.allowedTCPPorts = [8065]; }; } diff --git a/modules/nixos/sites/mirror/default.nix b/modules/nixos/sites/mirror/default.nix index bfc3e8b..56a575c 100644 --- a/modules/nixos/sites/mirror/default.nix +++ b/modules/nixos/sites/mirror/default.nix @@ -24,7 +24,7 @@ in { systemd.services."mirror-update" = { script = '' - ${pkgs.rsync}/bin/rsync -vPa rsync://mirrors.lug.mtu.edu/archlinux/ /var/www/mirror.zackmyers.io/archlinux/ + ${pkgs.rsync}/bin/rsync -vPa --delete-after rsync://mirrors.lug.mtu.edu/archlinux/ /var/www/mirror.zackmyers.io/archlinux/ ''; serviceConfig = { Type = "oneshot"; diff --git a/modules/nixos/sites/pterodactyl/default.nix b/modules/nixos/sites/pterodactyl/default.nix index 6de1a77..82e3581 100644 --- a/modules/nixos/sites/pterodactyl/default.nix +++ b/modules/nixos/sites/pterodactyl/default.nix @@ -148,6 +148,8 @@ in { ''; }; + security.acme.certs."node.nyc.zackmyers.io".keyType = "rsa4096"; + services.phpfpm = { phpOptions = '' extension=${pkgs.php83Extensions.openssl}/lib/php/extensions/openssl.so diff --git a/modules/nixos/ui/fonts/default.nix b/modules/nixos/ui/fonts/default.nix index 014a552..59cf721 100644 --- a/modules/nixos/ui/fonts/default.nix +++ b/modules/nixos/ui/fonts/default.nix @@ -57,7 +57,7 @@ in { # }) noto-fonts noto-fonts-cjk-sans - noto-fonts-emoji + noto-fonts-color-emoji jetbrains-mono nerd-fonts.iosevka nerd-fonts.zed-mono diff --git a/overlays/monado/default.nix b/overlays/monado/default.nix new file mode 100644 index 0000000..e559a40 --- /dev/null +++ b/overlays/monado/default.nix @@ -0,0 +1,10 @@ +{...}: final: prev: { + monado = prev.monado.overrideAttrs (old: { + buildInputs = builtins.filter (x: x != prev.opencv) old.buildInputs; + cmakeFlags = + (old.cmakeFlags or []) + ++ [ + "-DBUILD_WITH_OPENCV=OFF" + ]; + }); +} diff --git a/packages/atproto-pds/default.nix b/packages/atproto-pds/default.nix index f6d59be..5bc4e99 100644 --- a/packages/atproto-pds/default.nix +++ b/packages/atproto-pds/default.nix @@ -7,7 +7,7 @@ owner = "bluesky-social"; repo = "pds"; rev = "main"; - hash = "sha256-dEB5u++Zx+F4TH5q44AF/tuwAhLEyYT+U5/18viT4sw="; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; }; in inputs.pnpm2nix.packages.${pkgs.system}.mkPnpmPackage { diff --git a/packages/discord-music-presence/default.nix b/packages/discord-music-presence/default.nix new file mode 100644 index 0000000..3091a86 --- /dev/null +++ b/packages/discord-music-presence/default.nix @@ -0,0 +1,47 @@ +{ + fetchurl, + stdenv, + autoPatchelfHook, + xorg, + libGL, + libgcc, + systemdLibs, + libz, + glibc, + fontconfig, + e2fsprogs, +}: +stdenv.mkDerivation { + src = fetchurl { + url = "https://cdn.discordapp.com/attachments/1306271439493533776/1414196667304902707/music-presence-2.3.3-preview.6-linux-x86_64.tar.gz?ex=68beb0c7&is=68bd5f47&hm=09a61b4eeadb1f0b61ed70a6d1a14fe267f320027e0aae8dca1923d0813b063a&"; + hash = "sha256-KqGnG4xdZcOQJQXrNU3leLXDNjNFAVjvuDUKAR38IBs="; + }; + + nativeBuildInputs = [autoPatchelfHook]; + + preBuild = '' + addAutoPatchelfSearchPath ./usr/plugins/ + addAutoPatchelfSearchPath ./usr/bin/ + addAutoPatchelfSearchPath ./usr/lib/ + ''; + + buildInputs = [ + xorg.libX11 + xorg.libxcb + libGL + libgcc + systemdLibs + libz + glibc + fontconfig + e2fsprogs + ]; + + installPhase = '' + runHook preInstall + cp -r . $out + runHook postInstall + ''; + + name = "discord-music-presence"; +} diff --git a/secrets/matrix-db.yaml b/secrets/matrix-db.yaml new file mode 100644 index 0000000..579c3c8 --- /dev/null +++ b/secrets/matrix-db.yaml @@ -0,0 +1,26 @@ +password: ENC[AES256_GCM,data:0fl9Py+dOU7yBG5+S9oikr/uVXM=,iv:ivZPbvIqCNH974p24ZXgobDQjZh4EaRqr9Mav0Ofv7Q=,tag:rPY6loyq5wCe/SXKsz39LA==,type:str] +sops: + shamir_threshold: 1 + age: + - recipient: age1l6v7c5cp6sh6typgskwfufzkn3qw4av7r42z7lqyns6mtupytqhs2fg49u + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOZElOWnpHWC9mdGhOaVRQ + U2d1Z3U0Uk9sZGhZWFp5ejRLV1FEbUpFcVNNCm1WN0xrV1FkLzB5TXBWa3dnMDFD + eEI5L0hPbk1CM0dESWsxRXRKemp0RG8KLS0tIFNWR0M4a0tHSjR3ODV6aGpHQzZy + Y3hyR2p4Qk52S2FRVnFQK2pTb21sK2cKfTp78UNAFB4umRGvwDq782dhBYPeO6ms + wx9+gVmeRbHWC2SoVvjEpsK7FpSQDV5T6qDZP+L3DwWRKM2OfAdjRA== + -----END AGE ENCRYPTED FILE----- + - recipient: age16p54d6tx3mg0htkzj43q2mzpvlqj4gz63mz5qzx8mpsp5zx4xexsszdhuk + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXTXUwaHhQdHBBVWVSMmNH + dUNJUys2VnhPbjdYd3NCUDM1dXV5am9FNkhzCnVmMnBOcmtrNVE5d012NzlsRm54 + SDlQekQxR3JkbENJbXkxbGdSa3BGMVkKLS0tIEV1b3pJbHdFbXMzSGRrOXpPUW1U + OFpZeVVYYzJyMVMxOVBoNzFDVFdDc0UKu0T/bsKe7qaBbqWyalMEZ+MzuhZN2Jxk + mAQsc9ZAZeRda/0IjpnWjwfxCbt99wMKms1cPyDwGxRdDu5xSNKmUg== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-09-20T18:43:33Z" + mac: ENC[AES256_GCM,data:n0J6Go+8GfyG9CO/o2DAcaUCzEWjANRy9ZFHkoogqKX1N6oCFWnojqx3qeUw1QlzNHKYsCVRawsYp/oezox9wyjH/EvKS1Ocxm4b6segIFL38y2zllR+AKDu7FsfEz+nkgp8VrzruaoobTBp4HLxNvlVKg9sWLboIDw38jt58EA=,iv:Lz3ph/lelLNyIVlWRowW3QZQoZw2VhCGUhA0kJHM3wc=,tag:ucu/ee0YhDO53xCBtkOHfg==,type:str] + unencrypted_suffix: _unencrypted + version: 3.10.2 diff --git a/secrets/vpn-config.yaml b/secrets/vpn-config.yaml new file mode 100644 index 0000000..0d2907f --- /dev/null +++ b/secrets/vpn-config.yaml @@ -0,0 +1,33 @@ +vpn_config_file: ENC[AES256_GCM,data:ZkHMWmbWTp3h1miVkMuO+9psw7FPyfM7wg9B2Ef9HMlcO2ZL5D7FFW8wWGOCksvhabYIvuN0v9Vfi3gFRQOrmlHS8VXNw5+tMNJ24Yhgx5W3/SD/BUdZfvfFRFNMkYwy/M3ztiOIlZlQhE+0rxhzFgaq6bbbwDRLK5GmG5BM6saoP4qXn17kdyY7BnEzFghHQBmfXSp24vuEZt9KyP/hSo+UzAr2VO6ougtIAvR2BLvgiN9YH5qUF3vQYARNadbw+m5EgEoBvNzST5d/FOH2Ify4d/yYzUmF2XS4oBkrGbYlwi9Khd6Kn/MkwWS2d8In6gT3LaJIhBwGCtEQCwAlRErC1nwghEkTIBYDmvp4mQNWBIwcP60zgswyjFWt1oy7u1E5,iv:JJDupaXEVxfpcWaoE/G5RvjMkpETYgiS4kSiQEgvZCc=,tag:E+4FgnsFwhNiEPr+b6b6Og==,type:str] +sops: + lastmodified: "2025-06-24T21:56:48Z" + mac: ENC[AES256_GCM,data:gzKh3iFiNhHnI0b/ayOqVEZiMGR6aL6JGfr0q9f42dFlOW37bycIuSMNKdjeOslp7lvHdLSvrWW/aIGchBVHOMDSYFhiuxxmlhNbgAWAjDpDy2vbgIlKTEqt4ytQ+IKxN3mrCpEWiYVPi/FqzOKqZknWNEMQxxhIpbPx4FdaWPM=,iv:YE1eWK90EOL+zW/v0lL6DnStOYlF5mmdsRUaSHbbgJ4=,tag:v3S5GPstjZbbFcTj+dWWAg==,type:str] + pgp: + - created_at: "2025-06-24T21:10:42Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + hF4DSgOXOlpD5vQSAQdA6VlJq7Q66Ggk4hq4Z7n1Rt0CfMA+QX+H7nyx7WG4vRUw + G0ir2eYcyUETT35WWMu9weyNgRuwsuCT7GxpfWf82crp1RENKh/s0p4iFanhjIHo + 0l4BFFP+xxvPEbXOepRVf+ewEdVMQXUEe1O3Qmm2v5Y08FKwQY6N9ExBRxgbkCQm + KTrTwHIfPGuZPLfgH2IAqmI7qbKiSTorLaBJOqDhtkFGcl6ALsNk40c42o6Yol4Q + =Wnnp + -----END PGP MESSAGE----- + fp: "0x141576B17B4AE789" + - created_at: "2025-06-24T21:10:42Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + hQEMA3n+O3FJNc2rAQgAjpT5Nds28cgp1OyyFXUJ6ei8He6VX5q9SsFqN81h1QM8 + b0/EXG9+cVwIkN6nydjdygWChiVT3JutP3ucVOSGllA5B+NCGBZtt0i5bYfiMr5+ + wblTFY2sYBnfeYjtm0s/IjnwzsKdHxzP6pZjuXcA28icKkSgPPKVRamUt+ytStAg + TDdP76Y1rN6Pp/jRYpPYGHML725LcEicSX++FCBdjMRvm+zxFXHigF4posoOwHST + idizJwfIwkuzVvc23eHLlWADqh28SqSMZd2qojS5pXuXmEKua1JqmY4poNMkP+BU + 1j5EvcsmlNOGVY5+FFBkuGQ9rjOX61EjKUnGTO7d8tJeAYIsBS8EbFUv13YF/1UG + kE4AVTuRDqPizxcKh0j/nhZOIUpbzDYR73ZgofB5jzYfUVN6ucphBLw6WafCk+8/ + F4DyFhGlHOX0QIMbYJRhOG2rFDk3oPpbiULRyKSpsA== + =887e + -----END PGP MESSAGE----- + fp: 0DCB1C584AECEB2674BB76C179FE3B714935CDAB + unencrypted_suffix: _unencrypted + version: 3.10.2 diff --git a/systems/x86_64-linux/earth/default.nix b/systems/x86_64-linux/earth/default.nix index 0875f4f..44c60a7 100644 --- a/systems/x86_64-linux/earth/default.nix +++ b/systems/x86_64-linux/earth/default.nix @@ -6,7 +6,10 @@ config, ... }: { - imports = [./disk-config.nix ./hardware-configuration.nix]; + imports = [ + ./disk-config.nix + ./hardware-configuration.nix + ]; nix.settings = { trusted-users = ["zoey"]; @@ -17,7 +20,7 @@ dates = ["03:45"]; }; - nix.package = inputs.lix-module.packages.${pkgs.system}.default; + # nix.package = inputs.lix-module.packages.${pkgs.system}.default; nix.gc = { automatic = true; @@ -25,36 +28,13 @@ options = "--delete-older-than 1d"; }; - boot.initrd.postResumeCommands = lib.mkAfter '' - mkdir /btrfs_tmp - mount /dev/root_vg/root /btrfs_tmp - if [[ -e /btrfs_tmp/root ]]; then - mkdir -p /btrfs_tmp/old_roots - timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S") - mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp" - fi - - delete_subvolume_recursively() { - IFS=$'\n' - for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do - delete_subvolume_recursively "/btrfs_tmp/$i" - done - btrfs subvolume delete "$1" - } - - for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do - delete_subvolume_recursively "$i" - done - - btrfs subvolume create /btrfs_tmp/root - umount /btrfs_tmp - ''; - hardware.audio.enable = true; hardware.nvidia.enable = true; hardware.keyboard.qmk.enable = true; programs.nix-ld.enable = true; + services.flatpak.enable = true; + hardware.march = { arch = "znver3"; enableNativeOptimizations = true; @@ -82,13 +62,24 @@ configuration = { services.desktopManager.plasma6.enable = true; services.displayManager.sddm.enable = true; - services.xserver.displayManager.gdm.enable = lib.mkForce false; + services.displayManager.gdm.enable = lib.mkForce false; programs.seahorse.enable = lib.mkForce false; }; }; }; + # services.monado = { + # enable = true; + # defaultRuntime = true; + # }; + # + # systemd.user.services.monado.environment = { + # STEAMVR_LH_ENABLE = "1"; + # XRT_COMPOSITOR_COMPUTE = "1"; + # XRT_COMPOSITOR_FORCE_WAYLAND_DIRECT = "1"; + # }; + programs.steam = { enable = true; extraPackages = with pkgs; [ @@ -129,28 +120,16 @@ protocols.wayland.enable = true; - programs.openvpn3.enable = true; - services.udev.extraRules = '' KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev" ''; services.fstrim.enable = true; services.vpn.enable = true; services.xserver.enable = true; - services.vpn.mullvad = true; services.lorri.enable = true; services.udisks2.enable = true; - services.transmission = { - enable = false; - package = pkgs.transmission_4; - settings = { - download-dir = "/home/zoey/Downloads"; - incomplete-dir = "/home/zoey/Downloads/.incomplete"; - incomplete-dir-enabled = true; - }; - user = "zoey"; - group = "users"; - }; + services.crypto.enable = false; + services.torrent.enable = false; services.gnome.gnome-keyring.enable = true; # services.solaar = { # enable = true; @@ -160,11 +139,13 @@ polkitPolicyOwnerUsername = "zoey"; }; + security.polkit.enable = true; + # Bootloader. - boot.loader.systemd-boot.enable = true; + boot.loader.systemd-boot.enable = lib.mkForce false; boot.lanzaboote = { - enable = false; - pkiBundle = "/etc/secureboot"; + enable = true; + pkiBundle = "/var/lib/sbctl"; }; boot.loader.efi.canTouchEfiVariables = true; boot.blacklistedKernelModules = ["joydev"]; @@ -172,18 +153,23 @@ networking.hostName = "earth"; # Define your hostname. networking.hostId = "a2a8bfcc"; + networking.extraHosts = '' + 127.0.0.1 blahaj.local + 127.0.0.1 test.blahaj.local + 127.0.0.2 earth + ''; + networking.networkmanager = { enable = true; unmanaged = ["enp6s0"]; # insertNameservers = ["1.1.1.1" "1.0.0.1"]; }; - services.scx.enable = true; - services.scx.scheduler = "scx_rusty"; - services.scx.package = pkgs.scx_git.full; + # services.scx.enable = true; + # services.scx.scheduler = "scx_rusty"; + # services.scx.package = pkgs.scx_git.full; - boot.kernelPackages = pkgs.linuxPackages_cachyos-lto; - # CachyOS-inspired kernel parameters for better desktop responsiveness and gaming + boot.kernelPackages = pkgs.linuxPackages_zen; boot.kernelParams = [ "nowatchdog" "preempt=full" @@ -191,11 +177,6 @@ "tsc=reliable" "clocksource=tsc" "preempt=voluntary" - "futex.futex2_interface=1" # Better Wine/Proton compatibility - "NVreg_UsePageAttributeTable=1" # Improved GPU memory management - "io_uring.sqpoll=2" # Modern I/O scheduler polling - "transparent_hugepage=madvise" # Better memory management - "elevator=bfq" # Better I/O scheduling for gaming ]; boot.supportedFilesystems = ["ntfs"]; @@ -218,43 +199,30 @@ pkgs.sbctl pkgs.kdiskmark pkgs.mangohud - inputs.quickshell.packages.${system}.default - (pkgs.shadps4.overrideAttrs { - version = "0.9.0"; - src = pkgs.fetchFromGitHub { - owner = "AzaharPlus"; - repo = "shadPS4Plus"; - tag = "SHADPS4PLUS_0_9_0_A"; - hash = "sha256-ZwP+bOE4roWt51Ii53blDZzdq/SxK4Q69I4rLCNARLA="; - fetchSubmodules = true; - }; - }) + pkgs.sops (pkgs.lutris.override { extraPkgs = pkgs: [ pkgs.winetricks ]; }) - pkgs.vulkan-hdr-layer-kwin6 pkgs.bottles pkgs.file-roller - pkgs.podman-tui pkgs.dive pkgs.docker-compose - pkgs.podman-compose pkgs.transmission_4 pkgs.protonup-qt pkgs.restic pkgs.qt5.qtwayland - pkgs.vkBasalt # Vulkan post-processing layer for better visuals + pkgs.vkbasalt # Vulkan post-processing layer for better visuals pkgs.goverlay # MangoHud and vkBasalt GUI configurator pkgs.cpupower-gui # CPU frequency control GUI pkgs.ananicy-cpp # Process priority daemon - (inputs.umu.packages.${system}.umu-launcher.override { - withTruststore = true; - withDeltaUpdates = true; - }) + pkgs.umu-launcher + # (inputs.umu.packages.${system}.umu-launcher.override { + # withTruststore = true; + # withDeltaUpdates = true; + # }) inputs.agenix.packages.${system}.agenix - inputs.awsvpnclient.packages.${system}.awsvpnclient ]; programs.fish.enable = true; @@ -263,12 +231,18 @@ users.users.zoey = { isNormalUser = true; description = "zoey"; - extraGroups = ["networkmanager" "wheel" "docker" "libvirtd" "plugdev"]; + extraGroups = [ + "networkmanager" + "wheel" + "docker" + "libvirtd" + "plugdev" + ]; shell = pkgs.fish; initialHashedPassword = "$6$rounds=2000000$rFBJH7LwdEHvv.0i$HdHorWqp8REPdWPk5fEgZXX1TujRJkMxumGK0f0elFN0KRPlBjJMW2.35A.ID/o3eC/hGTwbSJAcJcwVN2zyV/"; }; - services.gnome.core-utilities.enable = true; # Enable core GNOME utilities + services.gnome.core-apps.enable = true; # Enable core GNOME utilities users.groups.plugdev = {}; @@ -288,12 +262,7 @@ ports = [22]; }; - networking.firewall.allowedTCPPorts = [22]; - - services.monero = { - enable = false; - mining.enable = false; - }; + networking.firewall.allowedTCPPorts = [22 1069]; services.samba = { enable = true; @@ -332,10 +301,13 @@ sites.mealie.enable = false; virtualisation.containers.enable = true; - virtualisation.podman = { + # virtualisation.podman = { + # enable = true; + # dockerCompat = true; + # defaultNetwork.settings.dns_enabled = true; + # }; + virtualisation.docker = { enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; }; hardware.gpu-passthru.enable = true; diff --git a/systems/x86_64-linux/pluto/default.nix b/systems/x86_64-linux/pluto/default.nix index 5f65ffe..3372d60 100644 --- a/systems/x86_64-linux/pluto/default.nix +++ b/systems/x86_64-linux/pluto/default.nix @@ -97,7 +97,7 @@ pterodactyl.enable = true; search.enable = true; map.enable = true; - hydra.enable = true; + hydra.enable = false; cache.enable = true; minio.enable = true; immich.enable = true; @@ -105,7 +105,7 @@ sourcehut.enable = false; forgejo.enable = true; zoeycomputer = { - enable = true; + enable = false; domain = "zoeys.computer"; phx = { database = { @@ -181,6 +181,7 @@ hashedPassword = "$6$rounds=2000000$673Iz4rM8Dr9yz7C$Xq5JXxE7ioUrpZmMf3uTrPN2ODrEu3Sph6EhWyPoM5Ty./FhgB9hU0mz1yYo8sUj7wdUMWfR98haVJ24Wv3BK/"; openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFuw7D+qDzzxBKsfKEmMd7odc98m3ZEnqWYFtuKwvC9k zoey@earth" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOTCj3aEDA8Bbg7ka1nnA6d92IyXYTSWKz/e1bl5Fdf+ root@earth" ]; }; diff --git a/systems/x86_64-linux/venus/default.nix b/systems/x86_64-linux/venus/default.nix index 790b834..825fecc 100644 --- a/systems/x86_64-linux/venus/default.nix +++ b/systems/x86_64-linux/venus/default.nix @@ -45,6 +45,7 @@ services.web.nginx.enable = true; services.mail.enable = true; + services.matrix.enable = false; environment.systemPackages = map lib.lowPrio [ pkgs.curl