Compare commits

...

15 commits

Author SHA1 Message Date
03ecaf76d6 hermit: programs: drop wordgrinder 2025-07-25 16:59:49 +02:00
000f4aa56b niri: formatting 2025-07-25 16:59:42 +02:00
c4c770e703 niri: config: a bunch of changes 2025-07-25 16:59:03 +02:00
08a8b1f39c greetd: cleanup 2025-07-25 16:58:48 +02:00
7533a9fc02 steam: add udev rule for controller 2025-07-25 16:58:35 +02:00
e21c2c25c0 ghostty: set background opacity to 1 2025-07-25 16:58:16 +02:00
512921e8f6 users: switch to ssh as default shell
My efforts to use nushell as a default shell have been
for naught so far. It silently breaks stuff you wouln't
expect it to break, like shipping environment variables
and stuff.
2025-07-25 16:57:07 +02:00
5ea857c6cf packages: add uad and ouch 2025-07-25 16:56:38 +02:00
5b0b9d9992 npins: update sources 2025-07-25 16:56:17 +02:00
d3d08aa4af security: switch to gnome-keyring instead of kwallet.
gnome-keyring seems to be more reliable in the long term
I only have to force disable gcr, which it ships with it.
2025-07-25 16:55:23 +02:00
cc9735063b brave: set password store to gnome-keyring 2025-07-25 16:55:08 +02:00
658530b991 brave: switch to normal brave package
Vulkan in chromium does not yet work on Wayland.
I'd rather have an OpenGL browser on Wayland than
a Vulkan browser in XWayland.
2025-07-25 16:41:22 +02:00
6bba60f5d9 hermit: disable foot 2025-07-25 16:36:29 +02:00
77b014a457 hermit: fix configuration 2025-07-23 17:30:20 +02:00
f687548762 lanzaboote: fix module using flake-compat 2025-07-23 17:29:40 +02:00
13 changed files with 157 additions and 167 deletions

View file

@ -24,7 +24,6 @@
modules = { modules = {
wms.wayland.enable = true; wms.wayland.enable = true;
desktops.hyprland.enable = false;
# desktops.niri.enable = true; # desktops.niri.enable = true;
theming = { theming = {
@ -34,6 +33,7 @@
system = { system = {
systemType = "laptop"; systemType = "laptop";
isGraphical = true;
boot = { boot = {
systemd-boot.enable = true; systemd-boot.enable = true;
@ -55,11 +55,6 @@
editors = { editors = {
helix.enable = true; helix.enable = true;
}; };
# nushell.enable = true;
# starship.enable = true;
terminals = {
foot.enable = true;
};
}; };
sound.enable = true; sound.enable = true;
}; };
@ -82,7 +77,6 @@
btop.enable = true; btop.enable = true;
nh.enable = true; nh.enable = true;
thunar.enable = true; thunar.enable = true;
schizofox.enable = false;
}; };
}; };
system.stateVersion = "23.11"; system.stateVersion = "23.11";

View file

@ -1,7 +1,7 @@
{ pkgs, ... }: {pkgs, ...}: {
{
environment.systemPackages = builtins.attrValues { environment.systemPackages = builtins.attrValues {
inherit (pkgs) inherit
(pkgs)
abook abook
aerc aerc
aichat aichat
@ -72,10 +72,8 @@
vlc vlc
wiki-tui wiki-tui
wireguard-tools wireguard-tools
wordgrinder
xournalpp xournalpp
zathura zathura
; ;
inherit new-nil;
}; };
} }

View file

@ -31,7 +31,7 @@ let
font-family = "JetBrainsMonoNerdFont"; font-family = "JetBrainsMonoNerdFont";
app-notifications = "no-clipboard-copy"; app-notifications = "no-clipboard-copy";
background-opacity = 0.7; background-opacity = 1.0;
bold-is-bright = "true"; bold-is-bright = "true";
confirm-close-surface = "false"; confirm-close-surface = "false";
cursor-style-blink = "false"; cursor-style-blink = "false";

View file

@ -57,6 +57,8 @@ in
}; };
}; };
config = { config = {
# environment.shells = [ pkgs.nushell ];
programs.zsh.enable = true;
users = { users = {
mutableUsers = true; mutableUsers = true;
users = { users = {
@ -71,7 +73,7 @@ in
"nix" "nix"
"docker" "docker"
]; ];
shell = pkgs.nushell; shell = pkgs.zsh;
}; };
}; };
}; };

View file

@ -10,9 +10,11 @@ in
environment.systemPackages = environment.systemPackages =
with pkgs; with pkgs;
[ [
universal-android-debloater
emacs-pgtk emacs-pgtk
# better cd # better cd
zoxide zoxide
ouch
# pipe viewer # pipe viewer
pv pv
# hex editor # hex editor

View file

@ -10,18 +10,19 @@ let
# https://peter.sh/experiments/chromium-command-line-switches/ # https://peter.sh/experiments/chromium-command-line-switches/
flags = concatStringsSep " " [ flags = concatStringsSep " " [
"--no-first-run" "--no-first-run"
"--enable-features=UseOzonePlatform"
"--enable-gpu-rasterization" "--enable-gpu-rasterization"
"--force-dark-mode" "--force-dark-mode"
"--enable-smooth-scrolling" "--enable-smooth-scrolling"
"--enable-features=UseOzonePlatform" "--enable-features=UseOzonePlatform"
"--ozone-platform=wayland" "--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'" "--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 { brave-wrapped = pkgs.symlinkJoin {
name = "brave"; name = "brave";
paths = [ paths = [
(pkgs.brave.override { vulkanSupport = true; }) pkgs.brave
]; ];
nativeBuildInputs = [ pkgs.makeWrapper ]; nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = '' postBuild = ''

View file

@ -31,7 +31,10 @@ in
gamescopeSession.enable = true; gamescopeSession.enable = true;
extraCompatPackages = [ pkgs.proton-ge-bin.steamcompattool ]; extraCompatPackages = [ pkgs.proton-ge-bin.steamcompattool ];
}; };
# See
services.udev.extraRules = ''
SUBSYSTEM=="input", ATTRS{idVendor}=="2dc8", ATTRS{idProduct}=="3106", MODE="0660", GROUP="input"
''; # See
# https://wiki.nixos.org/wiki/GameMode # https://wiki.nixos.org/wiki/GameMode
programs.gamemode.enable = true; programs.gamemode.enable = true;
}; };

View file

@ -12,7 +12,6 @@ let
inherit (config.meta.mainUser) username; inherit (config.meta.mainUser) username;
cfg = config.modules.services.greetd; cfg = config.modules.services.greetd;
uwsmEnabled = config.modules.services.uwsm.enable;
in in
{ {
options.modules.services.greetd = { options.modules.services.greetd = {
@ -28,8 +27,7 @@ in
session = mkOption { session = mkOption {
description = "Which login session to start"; description = "Which login session to start";
type = str; type = str;
default = default = "niri";
if uwsmEnabled then "${getExe config.programs.uwsm.package} start Hyprland" else "Hyprland";
}; };
}; };
@ -37,20 +35,17 @@ in
services.greetd = services.greetd =
let let
session = { session = {
# command = '' command = ''
# ${pkgs.greetd.tuigreet}/bin/tuigreet \ ${getExe pkgs.greetd.tuigreet} \
# -c \"${cfg.session}\" \ -c \"${cfg.session}\" \
# -r -r
# -t --time-format "DD.MM.YYYY" -t --time-format "DD.MM.YYYY"
# --asteriks''; --asteriks'';
user = "greeter";
command = "${getExe config.programs.uwsm.package} start hyprland-uwsm.desktop";
user = username;
}; };
in in
{ {
enable = true; enable = true;
package = pkgs.greetd;
vt = 7; vt = 7;
settings = { settings = {
default_session = session; default_session = session;

View file

@ -4,17 +4,19 @@
pkgs, pkgs,
sources, sources,
... ...
}: }: let
let
inherit (lib.modules) mkIf; inherit (lib.modules) mkIf;
inherit (lib.options) mkEnableOption; inherit (lib.options) mkEnableOption;
cfg = config.modules.system.boot.lanzaboote; cfg = config.modules.system.boot.lanzaboote;
in in {
{
options.modules.system.boot.lanzaboote.enable = mkEnableOption "Lanzaboote"; options.modules.system.boot.lanzaboote.enable = mkEnableOption "Lanzaboote";
imports = [ imports = [
(sources.lanzaboote + "/nix/modules/lanzaboote.nix") (import sources.flake-compat {
src = sources.lanzaboote;
copySourceTreeToStore = false;
useBuiltinsFetchTree = true;
}).outputs.nixosModules.lanzaboote
]; ];
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -31,6 +33,6 @@ in
loader.systemd-boot.enable = lib.mkForce false; loader.systemd-boot.enable = lib.mkForce false;
}; };
environment.systemPackages = [ pkgs.sbctl ]; environment.systemPackages = [pkgs.sbctl];
}; };
} }

View file

@ -1,4 +1,7 @@
{ pkgs, ... }: { lib, pkgs, ... }:
let
inherit (lib.modules) mkForce;
in
{ {
security = { security = {
# Enable Soteria, a GTK-based Polkit authentication agent. # Enable Soteria, a GTK-based Polkit authentication agent.
@ -9,23 +12,25 @@
packages = [ pkgs.apparmor-profiles ]; packages = [ pkgs.apparmor-profiles ];
}; };
pam.services = { pam.services.login.enableGnomeKeyring = true;
login.kwallet = {
enable = true; wrappers.gnome-keyring-daemon = {
# package = pkgs.kdePackages.kwallet-pam; owner = "root";
}; group = "root";
niri = { capabilities = "cap_ipc_lock=ep";
allowNullPassword = true; source = "${pkgs.gnome-keyring}/bin/gnome-keyring-daemon";
kwallet = {
enable = true;
package = pkgs.kdePackages.kwallet-pam;
}; };
}; };
services = {
dbus.packages = [
pkgs.gnome-keyring
];
gnome.gcr-ssh-agent.enable = mkForce false;
}; };
}; xdg.portal.extraPortals = [
environment.systemPackages = with pkgs.kdePackages; [ pkgs.gnome-keyring
kwallet # provides helper service ];
kwallet-pam # provides helper service environment.systemPackages = [
kwalletmanager # provides KCMs and stuff pkgs.gnome-keyring
]; ];
} }

View file

@ -66,9 +66,7 @@ layout {
} }
background-color "transparent" background-color "transparent"
} }
// xwayland stuff spawn-at-startup "waybar"
// spawn-at-startup "xwayland-satellite"
spawn-at-startup "kwalletd6"
spawn-at-startup "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell" spawn-at-startup "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell"
environment { environment {
DISPLAY ":0" DISPLAY ":0"
@ -85,36 +83,14 @@ switch-events {
} }
} }
overview { overview {
zoom 0.60 zoom 0.6
backdrop-color "#777777" backdrop-color "#777777"
} }
animations { animations {
window-close { window-close {
duration-ms 250 duration-ms 250
curve "linear" curve "linear"
custom-shader r" 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 "
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 { window-rule {
@ -132,7 +108,6 @@ window-rule {
window-rule { window-rule {
draw-border-with-background false draw-border-with-background false
} }
// Fix discord screencasting // Fix discord screencasting
debug { debug {
wait-for-frame-completion-in-pipewire wait-for-frame-completion-in-pipewire
@ -155,8 +130,11 @@ binds {
Mod+B { Mod+B {
spawn "brave" spawn "brave"
} }
// Mod+D {
// spawn "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell msg launcher open"
// }
Mod+D { Mod+D {
spawn "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell msg launcher open" spawn "fuzzel"
} }
Mod+Alt+L { Mod+Alt+L {
spawn "swaylock" spawn "swaylock"

View file

@ -11,10 +11,11 @@ let
inherit (config.modules.system) isGraphical; inherit (config.modules.system) isGraphical;
inherit (config.meta.mainUser) username; inherit (config.meta.mainUser) username;
cfg = config.modules.desktops.niri; cfg = config.modules.desktops.niri;
niri = pkgs.callPackage (_: pkgs.rustPlatform.buildRustPackage { niri = pkgs.callPackage (
_:
pkgs.rustPlatform.buildRustPackage {
pname = "niri"; pname = "niri";
version = "unstable"; version = "unstable";
@ -32,6 +33,7 @@ let
strictDeps = true; strictDeps = true;
doInstallCheck = false; doInstallCheck = false;
doCheck = false;
nativeBuildInputs = with pkgs; [ nativeBuildInputs = with pkgs; [
rustPlatform.bindgenHook rustPlatform.bindgenHook
@ -86,6 +88,12 @@ let
"-lwayland-client" "-lwayland-client"
"-Wl,--pop-state" "-Wl,--pop-state"
] ]
++ [
"-Ctarget-cpu=native"
"-Cpanic=abort"
"-Clto=thin"
"-Cembed-bitcode=yes"
]
); );
}; };
@ -95,7 +103,8 @@ let
meta.mainProgram = "niri"; meta.mainProgram = "niri";
}) { }; }
) { };
in in
{ {
options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor"; options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor";
@ -117,6 +126,7 @@ in
avizo avizo
playerctl playerctl
wl-clipboard wl-clipboard
fuzzel
; ;
}; };
}; };

View file

@ -63,9 +63,9 @@
}, },
"branch": "main", "branch": "main",
"submodules": false, "submodules": false,
"revision": "9d8ab804355d95d38a61ad5053d415ca1882d554", "revision": "43d6a79863d5e28b6a2cd98ecb22fe4ff491057e",
"url": "https://git.lix.systems/lix-project/lix/archive/9d8ab804355d95d38a61ad5053d415ca1882d554.tar.gz", "url": "https://git.lix.systems/lix-project/lix/archive/43d6a79863d5e28b6a2cd98ecb22fe4ff491057e.tar.gz",
"hash": "sha256-CFoDQz2mnfKWtAb6Y01xu+bfM+Q/6dHGkxKq6W+dzN8=" "hash": "sha256-/C+d8ET7B935H+xY9NTlw2kFiCeDq380yhv9Ez4379k="
}, },
"lix-module": { "lix-module": {
"type": "Git", "type": "Git",
@ -142,8 +142,8 @@
"nixpkgs": { "nixpkgs": {
"type": "Channel", "type": "Channel",
"name": "nixpkgs-unstable", "name": "nixpkgs-unstable",
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre832020.6b4955211758/nixexprs.tar.xz", "url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre833298.83e677f31c84/nixexprs.tar.xz",
"hash": "sha256-X3H1JILbG//yt1OHrx7GHwyIUoqmR9jXARlwbZyPF4k=" "hash": "sha256-GCDhyo1oW8YXwYNKSsJzwy4ilTMnRrPh+6OTWatUYn4="
}, },
"npins": { "npins": {
"type": "Git", "type": "Git",
@ -166,9 +166,9 @@
}, },
"branch": "master", "branch": "master",
"submodules": false, "submodules": false,
"revision": "759bd721dfd38e2ce02048f378ee025bcb175f93", "revision": "db77c71c216530159c2dcf5b269ebb4706b2e2dd",
"url": null, "url": null,
"hash": "sha256-GjN9BXxWMlmIAAcKYrsrEPVT/cJkWieG3YOJG7sJuGk=" "hash": "sha256-QG14m53ZGp2Gk7xD2Q+Tf7RYCKfk/BYRaBtX3X4IKbc="
}, },
"spicetify-nix": { "spicetify-nix": {
"type": "Git", "type": "Git",
@ -179,9 +179,9 @@
}, },
"branch": "master", "branch": "master",
"submodules": false, "submodules": false,
"revision": "8f9fd947c52aa6adb6bafe72516eccf186708954", "revision": "51ac0aee7e7ee21ca0874b913f07f9004bc9311f",
"url": "https://github.com/Gerg-L/spicetify-nix/archive/8f9fd947c52aa6adb6bafe72516eccf186708954.tar.gz", "url": "https://github.com/Gerg-L/spicetify-nix/archive/51ac0aee7e7ee21ca0874b913f07f9004bc9311f.tar.gz",
"hash": "sha256-R2iDZb94RosuCeuIukacZVVXxzWYr4jn/QI/ax15nW8=" "hash": "sha256-1AK8+W7d5eNyGRkcWHa+9oIChLJbY6jt7ujSJo+ft4M="
}, },
"systems": { "systems": {
"type": "Git", "type": "Git",