diff --git a/hosts/hermit/configuration.nix b/hosts/hermit/configuration.nix index c179d5e..42a14c8 100644 --- a/hosts/hermit/configuration.nix +++ b/hosts/hermit/configuration.nix @@ -24,6 +24,7 @@ modules = { wms.wayland.enable = true; + desktops.hyprland.enable = false; # desktops.niri.enable = true; theming = { @@ -33,7 +34,6 @@ system = { systemType = "laptop"; - isGraphical = true; boot = { systemd-boot.enable = true; @@ -55,6 +55,11 @@ editors = { helix.enable = true; }; + # nushell.enable = true; + # starship.enable = true; + terminals = { + foot.enable = true; + }; }; sound.enable = true; }; @@ -77,6 +82,7 @@ btop.enable = true; nh.enable = true; thunar.enable = true; + schizofox.enable = false; }; }; system.stateVersion = "23.11"; diff --git a/hosts/hermit/programs.nix b/hosts/hermit/programs.nix index b0d0029..a370437 100644 --- a/hosts/hermit/programs.nix +++ b/hosts/hermit/programs.nix @@ -1,7 +1,7 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ environment.systemPackages = builtins.attrValues { - inherit - (pkgs) + inherit (pkgs) abook aerc aichat @@ -72,8 +72,10 @@ vlc wiki-tui wireguard-tools + wordgrinder xournalpp zathura ; + inherit new-nil; }; } diff --git a/modules/home/programs/ghostty.hjem.nix b/modules/home/programs/ghostty.hjem.nix index c9f1531..8f95e1c 100644 --- a/modules/home/programs/ghostty.hjem.nix +++ b/modules/home/programs/ghostty.hjem.nix @@ -31,7 +31,7 @@ let font-family = "JetBrainsMonoNerdFont"; app-notifications = "no-clipboard-copy"; - background-opacity = 1.0; + background-opacity = 0.7; bold-is-bright = "true"; confirm-close-surface = "false"; cursor-style-blink = "false"; diff --git a/modules/other/users.mod.nix b/modules/other/users.mod.nix index 091e76c..1189e55 100644 --- a/modules/other/users.mod.nix +++ b/modules/other/users.mod.nix @@ -57,8 +57,6 @@ in }; }; config = { - # environment.shells = [ pkgs.nushell ]; - programs.zsh.enable = true; users = { mutableUsers = true; users = { @@ -73,7 +71,7 @@ in "nix" "docker" ]; - shell = pkgs.zsh; + shell = pkgs.nushell; }; }; }; diff --git a/modules/packages/packages.mod.nix b/modules/packages/packages.mod.nix index c54378d..4cbf8f4 100644 --- a/modules/packages/packages.mod.nix +++ b/modules/packages/packages.mod.nix @@ -10,11 +10,9 @@ in environment.systemPackages = with pkgs; [ - universal-android-debloater emacs-pgtk # better cd zoxide - ouch # pipe viewer pv # hex editor diff --git a/modules/programs/gui/brave.mod.nix b/modules/programs/gui/brave.mod.nix index ebf9db9..b55a250 100644 --- a/modules/programs/gui/brave.mod.nix +++ b/modules/programs/gui/brave.mod.nix @@ -10,19 +10,18 @@ let # https://peter.sh/experiments/chromium-command-line-switches/ flags = concatStringsSep " " [ "--no-first-run" + "--enable-features=UseOzonePlatform" "--enable-gpu-rasterization" "--force-dark-mode" "--enable-smooth-scrolling" "--enable-features=UseOzonePlatform" "--ozone-platform=wayland" "--user-agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.3'" - # https://source.chromium.org/chromium/chromium/src/+/main:headless/app/headless_shell_switches.cc;drc=3556fbff47c18193f4a39d2496596e89b8307a15;l=47-55 - "--password-store=gnome-keyring" ]; brave-wrapped = pkgs.symlinkJoin { name = "brave"; paths = [ - pkgs.brave + (pkgs.brave.override { vulkanSupport = true; }) ]; nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' diff --git a/modules/programs/gui/steam.mod.nix b/modules/programs/gui/steam.mod.nix index c9a8c72..7d22abe 100644 --- a/modules/programs/gui/steam.mod.nix +++ b/modules/programs/gui/steam.mod.nix @@ -31,10 +31,7 @@ in gamescopeSession.enable = true; extraCompatPackages = [ pkgs.proton-ge-bin.steamcompattool ]; }; - - services.udev.extraRules = '' - SUBSYSTEM=="input", ATTRS{idVendor}=="2dc8", ATTRS{idProduct}=="3106", MODE="0660", GROUP="input" - ''; # See + # See # https://wiki.nixos.org/wiki/GameMode programs.gamemode.enable = true; }; diff --git a/modules/services/greetd.mod.nix b/modules/services/greetd.mod.nix index b55b815..468c302 100644 --- a/modules/services/greetd.mod.nix +++ b/modules/services/greetd.mod.nix @@ -12,6 +12,7 @@ let inherit (config.meta.mainUser) username; cfg = config.modules.services.greetd; + uwsmEnabled = config.modules.services.uwsm.enable; in { options.modules.services.greetd = { @@ -27,7 +28,8 @@ in session = mkOption { description = "Which login session to start"; type = str; - default = "niri"; + default = + if uwsmEnabled then "${getExe config.programs.uwsm.package} start Hyprland" else "Hyprland"; }; }; @@ -35,17 +37,20 @@ in services.greetd = let session = { - command = '' - ${getExe pkgs.greetd.tuigreet} \ - -c \"${cfg.session}\" \ - -r - -t --time-format "DD.MM.YYYY" - --asteriks''; - user = "greeter"; + # command = '' + # ${pkgs.greetd.tuigreet}/bin/tuigreet \ + # -c \"${cfg.session}\" \ + # -r + # -t --time-format "DD.MM.YYYY" + # --asteriks''; + + command = "${getExe config.programs.uwsm.package} start hyprland-uwsm.desktop"; + user = username; }; in { enable = true; + package = pkgs.greetd; vt = 7; settings = { default_session = session; diff --git a/modules/system/boot/lanzaboote.mod.nix b/modules/system/boot/lanzaboote.mod.nix index 77fbf5f..574d89f 100644 --- a/modules/system/boot/lanzaboote.mod.nix +++ b/modules/system/boot/lanzaboote.mod.nix @@ -4,19 +4,17 @@ pkgs, sources, ... -}: let +}: +let inherit (lib.modules) mkIf; inherit (lib.options) mkEnableOption; cfg = config.modules.system.boot.lanzaboote; -in { +in +{ options.modules.system.boot.lanzaboote.enable = mkEnableOption "Lanzaboote"; imports = [ - (import sources.flake-compat { - src = sources.lanzaboote; - copySourceTreeToStore = false; - useBuiltinsFetchTree = true; - }).outputs.nixosModules.lanzaboote + (sources.lanzaboote + "/nix/modules/lanzaboote.nix") ]; config = mkIf cfg.enable { @@ -33,6 +31,6 @@ in { loader.systemd-boot.enable = lib.mkForce false; }; - environment.systemPackages = [pkgs.sbctl]; + environment.systemPackages = [ pkgs.sbctl ]; }; } diff --git a/modules/system/os/security/security.mod.nix b/modules/system/os/security/security.mod.nix index 4c3175a..0525506 100644 --- a/modules/system/os/security/security.mod.nix +++ b/modules/system/os/security/security.mod.nix @@ -1,7 +1,4 @@ -{ lib, pkgs, ... }: -let - inherit (lib.modules) mkForce; -in +{ pkgs, ... }: { security = { # Enable Soteria, a GTK-based Polkit authentication agent. @@ -12,25 +9,23 @@ in packages = [ pkgs.apparmor-profiles ]; }; - pam.services.login.enableGnomeKeyring = true; - - wrappers.gnome-keyring-daemon = { - owner = "root"; - group = "root"; - capabilities = "cap_ipc_lock=ep"; - source = "${pkgs.gnome-keyring}/bin/gnome-keyring-daemon"; + pam.services = { + login.kwallet = { + enable = true; + # package = pkgs.kdePackages.kwallet-pam; + }; + niri = { + allowNullPassword = true; + kwallet = { + enable = true; + package = pkgs.kdePackages.kwallet-pam; + }; + }; }; }; - services = { - dbus.packages = [ - pkgs.gnome-keyring - ]; - gnome.gcr-ssh-agent.enable = mkForce false; - }; - xdg.portal.extraPortals = [ - pkgs.gnome-keyring - ]; - environment.systemPackages = [ - pkgs.gnome-keyring + environment.systemPackages = with pkgs.kdePackages; [ + kwallet # provides helper service + kwallet-pam # provides helper service + kwalletmanager # provides KCMs and stuff ]; } diff --git a/modules/wms/niri/config.kdl b/modules/wms/niri/config.kdl index 679818b..962ee83 100644 --- a/modules/wms/niri/config.kdl +++ b/modules/wms/niri/config.kdl @@ -66,7 +66,9 @@ layout { } background-color "transparent" } -spawn-at-startup "waybar" +// xwayland stuff +// spawn-at-startup "xwayland-satellite" +spawn-at-startup "kwalletd6" spawn-at-startup "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell" environment { DISPLAY ":0" @@ -83,15 +85,37 @@ switch-events { } } overview { - zoom 0.6 + zoom 0.60 backdrop-color "#777777" } animations { window-close { - duration-ms 250 - curve "linear" - custom-shader "\n vec4 fall_and_rotate(vec3 coords_geo, vec3 size_geo) {\n\n float progress = niri_clamped_progress * niri_clamped_progress;\n vec2 coords = (coords_geo.xy - vec2(0.5, 1.0)) * size_geo.xy;\n coords.y -= progress * 1440.0;\n float random = (niri_random_seed - 0.5) / 2.0;\n random = sign(random) - random;\n float max_angle = 0.5 * random;\n float angle = progress * max_angle;\n mat2 rotate = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n coords = rotate * coords;\n coords_geo = vec3(coords / size_geo.xy + vec2(0.5, 1.0), 1.0);\n vec3 coords_tex = niri_geo_to_tex * coords_geo;\n vec4 color = texture2D(niri_tex, coords_tex.st);\n\n return color;\n }\n\n vec4 close_color(vec3 coords_geo, vec3 size_geo) {\n return fall_and_rotate(coords_geo, size_geo);\n }\n " + duration-ms 250 + curve "linear" + custom-shader r" + vec4 fall_and_rotate(vec3 coords_geo, vec3 size_geo) { + + float progress = niri_clamped_progress * niri_clamped_progress; + vec2 coords = (coords_geo.xy - vec2(0.5, 1.0)) * size_geo.xy; + coords.y -= progress * 1440.0; + float random = (niri_random_seed - 0.5) / 2.0; + random = sign(random) - random; + float max_angle = 0.5 * random; + float angle = progress * max_angle; + mat2 rotate = mat2(cos(angle), -sin(angle), sin(angle), cos(angle)); + coords = rotate * coords; + coords_geo = vec3(coords / size_geo.xy + vec2(0.5, 1.0), 1.0); + vec3 coords_tex = niri_geo_to_tex * coords_geo; + vec4 color = texture2D(niri_tex, coords_tex.st); + + return color; } + + vec4 close_color(vec3 coords_geo, vec3 size_geo) { + return fall_and_rotate(coords_geo, size_geo); + } + " + } } window-rule { match app-id="unset" @@ -108,6 +132,7 @@ window-rule { window-rule { draw-border-with-background false } + // Fix discord screencasting debug { wait-for-frame-completion-in-pipewire @@ -130,11 +155,8 @@ binds { Mod+B { spawn "brave" } - // Mod+D { - // spawn "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell msg launcher open" - // } Mod+D { - spawn "fuzzel" + spawn "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell msg launcher open" } Mod+Alt+L { spawn "swaylock" @@ -414,9 +436,9 @@ binds { // spawn "sh" "-c" "" // } Mod+T { - screenshot + screenshot } - // "$mainMod, T, exec, ${getExe pkgs.grimblast} save area - | ${getExe pkgs.tesseract} - - | ${getExe' pkgs.wl-clipboard "wl-copy"}" + // "$mainMod, T, exec, ${getExe pkgs.grimblast} save area - | ${getExe pkgs.tesseract} - - | ${getExe' pkgs.wl-clipboard "wl-copy"}" Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit } diff --git a/modules/wms/niri/niri.mod.nix b/modules/wms/niri/niri.mod.nix index df64a42..57e461b 100644 --- a/modules/wms/niri/niri.mod.nix +++ b/modules/wms/niri/niri.mod.nix @@ -11,100 +11,91 @@ let inherit (config.modules.system) isGraphical; inherit (config.meta.mainUser) username; + cfg = config.modules.desktops.niri; - niri = pkgs.callPackage ( - _: - pkgs.rustPlatform.buildRustPackage { - pname = "niri"; - version = "unstable"; + niri = pkgs.callPackage (_: pkgs.rustPlatform.buildRustPackage { + pname = "niri"; + version = "unstable"; - src = sources.niri; - postPatch = '' - patchShebangs resources/niri-session - substituteInPlace resources/niri.service \ - --replace-fail '/usr/bin' "$out/bin" - ''; + src = sources.niri; + postPatch = '' + patchShebangs resources/niri-session + substituteInPlace resources/niri.service \ + --replace-fail '/usr/bin' "$out/bin" + ''; - cargoLock = { - allowBuiltinFetchGit = true; - lockFile = "${sources.niri}/Cargo.lock"; - }; + cargoLock = { + allowBuiltinFetchGit = true; + lockFile = "${sources.niri}/Cargo.lock"; + }; - strictDeps = true; - doInstallCheck = false; - doCheck = false; + strictDeps = true; + doInstallCheck = false; - nativeBuildInputs = with pkgs; [ - rustPlatform.bindgenHook - pkg-config - installShellFiles - ]; + nativeBuildInputs = with pkgs; [ + rustPlatform.bindgenHook + pkg-config + installShellFiles + ]; - buildInputs = with pkgs; [ - cairo - dbus - libGL - libdisplay-info - libinput - seatd - libxkbcommon - libgbm - pango - wayland - dbus - pipewire - # Also includes libudev - systemd - ]; + buildInputs = with pkgs; [ + cairo + dbus + libGL + libdisplay-info + libinput + seatd + libxkbcommon + libgbm + pango + wayland + dbus + pipewire + # Also includes libudev + systemd + ]; - buildFeatures = [ - "dbus" - "dinit" - "xdp-gnome-screencast" - "systemd" - ]; - buildNoDefaultFeatures = true; + buildFeatures = [ + "dbus" + "dinit" + "xdp-gnome-screencast" + "systemd" + ]; + buildNoDefaultFeatures = true; - postInstall = '' - installShellCompletion --cmd niri \ - --bash <($out/bin/niri completions bash) \ - --fish <($out/bin/niri completions fish) \ - --zsh <($out/bin/niri completions zsh) + postInstall = '' + installShellCompletion --cmd niri \ + --bash <($out/bin/niri completions bash) \ + --fish <($out/bin/niri completions fish) \ + --zsh <($out/bin/niri completions zsh) - install -Dm644 resources/niri.desktop -t $out/share/wayland-sessions - install -Dm644 resources/niri-portals.conf -t $out/share/xdg-desktop-portal - install -Dm755 resources/niri-session $out/bin/niri-session - install -Dm644 resources/niri{.service,-shutdown.target} -t $out/share/systemd/user - ''; + install -Dm644 resources/niri.desktop -t $out/share/wayland-sessions + install -Dm644 resources/niri-portals.conf -t $out/share/xdg-desktop-portal + install -Dm755 resources/niri-session $out/bin/niri-session + install -Dm644 resources/niri{.service,-shutdown.target} -t $out/share/systemd/user + ''; - env = { - # Force linking with libEGL and libwayland-client - # so they can be discovered by `dlopen()` - RUSTFLAGS = toString ( - map (arg: "-C link-arg=" + arg) [ - "-Wl,--push-state,--no-as-needed" - "-lEGL" - "-lwayland-client" - "-Wl,--pop-state" - ] - ++ [ - "-Ctarget-cpu=native" - "-Cpanic=abort" - "-Clto=thin" - "-Cembed-bitcode=yes" - ] - ); - }; + env = { + # Force linking with libEGL and libwayland-client + # so they can be discovered by `dlopen()` + RUSTFLAGS = toString ( + map (arg: "-C link-arg=" + arg) [ + "-Wl,--push-state,--no-as-needed" + "-lEGL" + "-lwayland-client" + "-Wl,--pop-state" + ] + ); + }; - passthru = { - providedSessions = [ "niri" ]; - }; + passthru = { + providedSessions = [ "niri" ]; + }; - meta.mainProgram = "niri"; + meta.mainProgram = "niri"; - } - ) { }; + }) { }; in { options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor"; @@ -126,7 +117,6 @@ in avizo playerctl wl-clipboard - fuzzel ; }; }; diff --git a/npins/sources.json b/npins/sources.json index 25e0429..7e9393a 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -63,9 +63,9 @@ }, "branch": "main", "submodules": false, - "revision": "43d6a79863d5e28b6a2cd98ecb22fe4ff491057e", - "url": "https://git.lix.systems/lix-project/lix/archive/43d6a79863d5e28b6a2cd98ecb22fe4ff491057e.tar.gz", - "hash": "sha256-/C+d8ET7B935H+xY9NTlw2kFiCeDq380yhv9Ez4379k=" + "revision": "9d8ab804355d95d38a61ad5053d415ca1882d554", + "url": "https://git.lix.systems/lix-project/lix/archive/9d8ab804355d95d38a61ad5053d415ca1882d554.tar.gz", + "hash": "sha256-CFoDQz2mnfKWtAb6Y01xu+bfM+Q/6dHGkxKq6W+dzN8=" }, "lix-module": { "type": "Git", @@ -142,8 +142,8 @@ "nixpkgs": { "type": "Channel", "name": "nixpkgs-unstable", - "url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre833298.83e677f31c84/nixexprs.tar.xz", - "hash": "sha256-GCDhyo1oW8YXwYNKSsJzwy4ilTMnRrPh+6OTWatUYn4=" + "url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre832020.6b4955211758/nixexprs.tar.xz", + "hash": "sha256-X3H1JILbG//yt1OHrx7GHwyIUoqmR9jXARlwbZyPF4k=" }, "npins": { "type": "Git", @@ -166,9 +166,9 @@ }, "branch": "master", "submodules": false, - "revision": "db77c71c216530159c2dcf5b269ebb4706b2e2dd", + "revision": "759bd721dfd38e2ce02048f378ee025bcb175f93", "url": null, - "hash": "sha256-QG14m53ZGp2Gk7xD2Q+Tf7RYCKfk/BYRaBtX3X4IKbc=" + "hash": "sha256-GjN9BXxWMlmIAAcKYrsrEPVT/cJkWieG3YOJG7sJuGk=" }, "spicetify-nix": { "type": "Git", @@ -179,9 +179,9 @@ }, "branch": "master", "submodules": false, - "revision": "51ac0aee7e7ee21ca0874b913f07f9004bc9311f", - "url": "https://github.com/Gerg-L/spicetify-nix/archive/51ac0aee7e7ee21ca0874b913f07f9004bc9311f.tar.gz", - "hash": "sha256-1AK8+W7d5eNyGRkcWHa+9oIChLJbY6jt7ujSJo+ft4M=" + "revision": "8f9fd947c52aa6adb6bafe72516eccf186708954", + "url": "https://github.com/Gerg-L/spicetify-nix/archive/8f9fd947c52aa6adb6bafe72516eccf186708954.tar.gz", + "hash": "sha256-R2iDZb94RosuCeuIukacZVVXxzWYr4jn/QI/ax15nW8=" }, "systems": { "type": "Git",