stylix and bugfixes

This commit is contained in:
alisceon 2026-01-08 18:05:08 +01:00
parent 1b31f9e29c
commit 86a63e1131
11 changed files with 193 additions and 155 deletions

View file

@ -3,7 +3,7 @@
- [ ] Look into why nix auto update fails
- [ ] Look into the "ignoring duplicate names" errors
- [ ] Center tuigreet
- [ ] fix xdg default apps
- [x] fix xdg default apps
- [ ] selinux
- https://github.com/NixOS/nixpkgs/pull/396177
- [ ] Secure boot

78
flake.lock generated
View file

@ -71,11 +71,11 @@
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1764724327,
"narHash": "sha256-OkFLrD3pFR952TrjQi1+Vdj604KLcMnkpa7lkW7XskI=",
"lastModified": 1764873433,
"narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "66b7c635763d8e6eb86bd766de5a1e1fbfcc1047",
"rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92",
"type": "github"
},
"original": {
@ -134,11 +134,11 @@
]
},
"locked": {
"lastModified": 1763759067,
"narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=",
"lastModified": 1767609335,
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0",
"rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"type": "github"
},
"original": {
@ -167,11 +167,11 @@
"flake": false,
"locked": {
"host": "gitlab.gnome.org",
"lastModified": 1764524476,
"narHash": "sha256-bTmNn3Q4tMQ0J/P0O5BfTQwqEnCiQIzOGef9/aqAZvk=",
"lastModified": 1767737596,
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "c0e1ad9f0f703fd0519033b8f46c3267aab51a22",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "gitlab"
},
"original": {
@ -189,11 +189,11 @@
]
},
"locked": {
"lastModified": 1767619900,
"narHash": "sha256-KpoCBPvwHz3gAQtIUkohE2InRBFK3r0/FM6z5SPWfvM=",
"lastModified": 1767850628,
"narHash": "sha256-D3QzdIT11J66I4mzwmIpAGLzPAcbCS2VaKN8fmOe6+E=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "6bd04da47cfb48dfd15eabf08364b78ad894f5b2",
"rev": "8c8a16d41353a174767c38b962359b51a56ca02e",
"type": "github"
},
"original": {
@ -205,11 +205,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1767480499,
"narHash": "sha256-8IQQUorUGiSmFaPnLSo2+T+rjHtiNWc+OAzeHck7N48=",
"lastModified": 1767799921,
"narHash": "sha256-r4GVX+FToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "30a3c519afcf3f99e2c6df3b359aec5692054d92",
"rev": "d351d0653aeb7877273920cd3e823994e7579b0b",
"type": "github"
},
"original": {
@ -221,11 +221,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1767379071,
"narHash": "sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf+Okucw=",
"lastModified": 1767767207,
"narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fb7944c166a3b630f177938e478f0378e64ce108",
"rev": "5912c1772a44e31bf1c63c0390b90501e5026886",
"type": "github"
},
"original": {
@ -243,11 +243,11 @@
]
},
"locked": {
"lastModified": 1767704150,
"narHash": "sha256-gmsKd2pR6ROVhdEvjZGd7VXtxy3i4zp4a95lw9lC2M8=",
"lastModified": 1767889854,
"narHash": "sha256-GfGSk0M0u6EOVEUaWRCbD388BKCrUie3IMj3YmQAZ3A=",
"owner": "nix-community",
"repo": "NUR",
"rev": "ec208cf77fd8acf9d67954f0919aa6bdbbb17519",
"rev": "984f8b7cd88215f470c41e4f7c5ce549758ce5d7",
"type": "github"
},
"original": {
@ -264,11 +264,11 @@
]
},
"locked": {
"lastModified": 1767704150,
"narHash": "sha256-gmsKd2pR6ROVhdEvjZGd7VXtxy3i4zp4a95lw9lC2M8=",
"lastModified": 1767889854,
"narHash": "sha256-GfGSk0M0u6EOVEUaWRCbD388BKCrUie3IMj3YmQAZ3A=",
"owner": "nix-community",
"repo": "NUR",
"rev": "ec208cf77fd8acf9d67954f0919aa6bdbbb17519",
"rev": "984f8b7cd88215f470c41e4f7c5ce549758ce5d7",
"type": "github"
},
"original": {
@ -289,11 +289,11 @@
]
},
"locked": {
"lastModified": 1764773531,
"narHash": "sha256-mCBl7MD1WZ7yCG6bR9MmpPO2VydpNkWFgnslJRIT1YU=",
"lastModified": 1767810917,
"narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=",
"owner": "nix-community",
"repo": "NUR",
"rev": "1d9616689e98beded059ad0384b9951e967a17fa",
"rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4",
"type": "github"
},
"original": {
@ -333,11 +333,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1767652667,
"narHash": "sha256-zsgfockkvK0JrSvzVAb8JeUq3SDdITu6ViUf7yeIpi4=",
"lastModified": 1767886384,
"narHash": "sha256-5/hrrHMZuwwJXqLb86MBElPKS61Efe+hgGkVvpbzJM4=",
"owner": "danth",
"repo": "stylix",
"rev": "a4406d9799d002c41296c72378a1094a8fc9aa1b",
"rev": "a525e4774f2576e0f10b8b183c2dfaf7d165c052",
"type": "github"
},
"original": {
@ -397,11 +397,11 @@
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1763914658,
"narHash": "sha256-Hju0WtMf3iForxtOwXqGp3Ynipo0EYx1AqMKLPp9BJw=",
"lastModified": 1767710407,
"narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "0f6be815d258e435c9b137befe5ef4ff24bea32c",
"rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2",
"type": "github"
},
"original": {
@ -413,11 +413,11 @@
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1764465359,
"narHash": "sha256-lbSVPqLEk2SqMrnpvWuKYGCaAlfWFMA6MVmcOFJjdjE=",
"lastModified": 1767489635,
"narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "edf89a780e239263cc691a987721f786ddc4f6aa",
"rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184",
"type": "github"
},
"original": {
@ -429,11 +429,11 @@
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1764464512,
"narHash": "sha256-rCD/pAhkMdCx6blsFwxIyvBJbPZZ1oL2sVFrH07lmqg=",
"lastModified": 1767488740,
"narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "907dbba5fb8cf69ebfd90b00813418a412d0a29a",
"rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40",
"type": "github"
},
"original": {

View file

@ -31,6 +31,7 @@
globalShellAbbrs = baseAbbrs // hostnameAbbrs;
in
{
stylix.enableReleaseChecks = false;
home.username = "alisceon";
home.homeDirectory = "/home/alisceon";
home.stateVersion = "24.05";

View file

@ -7,17 +7,19 @@
programs = {
vscode.enable = true;
firefox = {
enable = true;
nativeMessagingHosts = [
pkgs.firefoxpwa
];
profiles = {
default = {};
};
}; # end firefox
chromium = {
enable = true;
commandLineArgs = [
"--enable-features=TouchpadOverscrollHistoryNavigation,VaapiVideoDecoder"
];
extensions = [
{ id = "ddkjiahejlhfcafbddmgiahcphecmpfh"; } # ublock origin lite
{ id = "nngceckbapebfimnlniiiahkandclblb"; } # bitwarden
{ id = "mdjildafknihdffpkfmmpnpoiajfjnjd"; } # consent-o-matic
{ id = "mnjggcdmjocbbbhaepdhchncahnbgone"; } # sponsorblock
{ id = "ijcpiojgefnkmcadacmacogglhjdjphj"; } # shinigami eyes
{ id = "kbmfpngjjgdllneeigpgjifpgocmfgmb"; } # reddit enhancement suite
];
}; # end chromium
direnv = {
enable = true;
@ -27,12 +29,6 @@
enable = true;
}; # end discord
}; # end programs
stylix.targets = {
firefox = {
enable = true;
profileNames = [ "default" ];
};
};
# obsidian special case
# programs.obsidian.enable = true;
@ -49,13 +45,21 @@
autostart = {
enable = true;
entries = [
"${pkgs.firefox}/share/applications/firefox.desktop"
"${pkgs.chromium}/share/applications/chromium-browser.desktop"
"${pkgs.discord}/share/applications/discord.desktop"
"${pkgs.signal-desktop}/share/applications/signal.desktop"
"${pkgs.obsidian}/share/applications/obsidian.desktop"
"${pkgs.vscode}/share/applications/code.desktop"
];
};
desktopEntries = {
chromium-dailies = {
name = "Chromium Dailies";
genericName = "Web Browser (with dailies)";
exec = "xonsh /home/alisceon/.nixos_config/util/open_dailies.xsh";
terminal = false;
};
};
};
services.syncthing = {

View file

@ -17,6 +17,7 @@ if $XONSH_INTERACTIVE:
from datetime import datetime
import importlib.util
t0 = datetime.now()
## ENV ##
$XONSH_COLOR_STYLE = 'native'
$PROMPT = '{YELLOW}{env_name}{RESET}{BOLD_GREEN}{user}@{hostname} {cwd}{branch_color}{curr_branch: {}}{RESET} {RED}{last_return_code_if_nonzero:[{BOLD_INTENSE_RED}{}{RED}] }{RESET}{BOLD_BLUE}{prompt_end}{RESET} '
@ -51,6 +52,8 @@ if $XONSH_INTERACTIVE:
## THICC SHELL
if $SHELL_THICCNESS == "HIGH" and not $SHELL_THICKENED == "TRUE":
t0_0 = datetime.now()
# Standard Library Imports
import os
import sys
import subprocess
@ -60,15 +63,25 @@ if $XONSH_INTERACTIVE:
import pathlib
import re
import json
import scapy.all
import yaml
import requests
import threading
import multiprocessing
# Third Party Imports
if importlib.util.find_spec("scapy") is not None:
import scapy.all
if importlib.util.find_spec("yaml") is not None:
import yaml
if importlib.util.find_spec("requests") is not None:
import requests
$SHELL_THICKENED = "TRUE"
t0_1 = datetime.now()
else:
xonsh_rc_path = $XONSHRC[0]
aliases["thicken-shell"] = f"export SHELL_THICCNESS=HIGH && source {xonsh_rc_path}"
## THEO GREETING ##
hour = t0.hour
theo | kittycatsay
dt = round((datetime.now() - t0).microseconds/1000000, 2)
print("Load time:", dt, "seconds")
if $SHELL_THICKENED == "TRUE":
print_color("{BOLD_GREEN}THICC SHELL LOADED!{RESET}")
print_color("{BOLD_GREEN}SHELL THICKENED IN " + str(round((t0_1 - t0_0).microseconds/1000000, 2)) + "{RESET}")
print("Load time:", dt, "seconds")

View file

@ -1,10 +1,5 @@
{ pkgs, config, hostName, lib, ... }: {
programs = {
firefox = {
nativeMessagingHosts = [
pkgs.gnome-browser-connector
];
}; # end firefox
}; # end programs
dconf.enable = true;

View file

@ -127,6 +127,7 @@
"type:mouse" = {
natural_scroll = "disabled";
accel_profile = "flat";
pointer_accel = "0.5";
};
"*" = {
xkb_layout = hostnameInputs;
@ -226,7 +227,7 @@
];
}; # end window
assigns = {
"1" = [{app_id = "firefox";}];
"1" = [{app_id = "chromium";}];
"2" = [{class = "steam";}];
"3" = [];
"4" = [{class = "Code";}];
@ -361,6 +362,9 @@
enable_audio_bell = false;
window_padding_width = 2;
};
environment = {
SHELL_THICCNESS = "LOW"; # instructs xonsh to default to a slim environment
};
}; # end kitty
}; # end programs
gtk = {
@ -369,73 +373,58 @@
gtk3.enable = true;
gtk4.enable = true;
};
xdg = {
configFile."libinput-gestures.conf".text = ''
gesture pinch in 3 sh -c "echo key ctrl+w | ${pkgs.dotool}/bin/dotool"
gesture swipe left 3 ${swaymsg} workspace prev
gesture swipe right 3 ${swaymsg} workspace next
gesture swipe down 3 ${swaymsg} move container to scratchpad
gesture swipe up 3 ${swaymsg} fullscreen
gesture swipe down 4 ${lock}
gesture pinch out 3 ${swaymsg} floating toggle
gesture pinch in 4 ${swaymsg} kill
'';
configFile."electron-flags.conf".text = ''
--enable-features=WaylandWindowDecorations,AllowQt
--ozone-platform=wayland
--gtk-version=4
'';
mimeApps = {
enable = true;
defaultApplicationPackages = [
pkgs.gnome-text-editor
pkgs.evince
pkgs.vlc
pkgs.loupe
pkgs.nautilus
pkgs.chromium
];
defaultApplications = { # mostly redundant but the additional granularity is good for reducing friction
# Text
"text/*" = [ "${pkgs.gnome-text-editor}/share/applications/org.gnome.TextEditor.desktop" ];
"application/xml" = [ "${pkgs.gnome-text-editor}/share/applications/org.gnome.TextEditor.desktop" ];
"application/json" = [ "${pkgs.gnome-text-editor}/share/applications/org.gnome.TextEditor.desktop" ];
"application/pdf" = [ "${pkgs.evince}/share/applications/org.gnome.Evince.desktop" ];
# Media
"video/*" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
"audio/*" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
xdg.configFile."libinput-gestures.conf".text = ''
gesture swipe left 3 ${swaymsg} workspace prev
gesture swipe right 3 ${swaymsg} workspace next
gesture swipe down 3 ${swaymsg} move container to scratchpad
gesture swipe up 3 ${swaymsg} fullscreen
gesture pinch in 3 ${swaymsg} floating enable
gesture pinch out 3 ${swaymsg} floating disable
gesture pinch in 4 ${swaymsg} kill
gesture swipe up 4 ${lock}
'';
xdg.configFile."electron-flags.conf".text = ''
--enable-features=WaylandWindowDecorations,AllowQt
--ozone-platform=wayland
--gtk-version=4
'';
xdg.configFile."chromium-flags.conf".text = ''
--enable-features=WaylandWindowDecorations,AllowQt
--ozone-platform=wayland
--gtk-version=4
'';
xdg.mimeApps = {
enable = true;
defaultApplications ={
# Text
"text/plain" = [ "${pkgs.gnome-text-editor}/share/applications/org.gnome.TextEditor.desktop" ];
"text/markdown" = [ "${pkgs.gnome-text-editor}/share/applications/org.gnome.TextEditor.desktop" ];
"text/x-markdown" = [ "${pkgs.gnome-text-editor}/share/applications/org.gnome.TextEditor.desktop" ];
"text/csv" = [ "${pkgs.gnome-text-editor}/share/applications/org.gnome.TextEditor.desktop" ];
"text/xml" = [ "${pkgs.gnome-text-editor}/share/applications/org.gnome.TextEditor.desktop" ];
"application/xml" = [ "${pkgs.gnome-text-editor}/share/applications/org.gnome.TextEditor.desktop" ];
"application/json" = [ "${pkgs.gnome-text-editor}/share/applications/org.gnome.TextEditor.desktop" ];
# Browser
"text/html" = [ "${pkgs.chromium}/share/applications/chromium.desktop" ];
"application/xhtml+xml" = [ "${pkgs.chromium}/share/applications/chromium.desktop" ];
"application/x-web-app-manifest+json" = [ "${pkgs.chromium}/share/applications/chromium.desktop" ];
"application/xml-dtd" = [ "${pkgs.chromium}/share/applications/chromium.desktop" ];
# Media
"video/mp4" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
"audio/mpeg" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
"audio/ogg" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
"audio/wav" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
"audio/flac" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
"video/x-matroska" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
"video/webm" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
"video/avi" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
"video/mkv" = [ "${pkgs.vlc}/share/applications/vlc.desktop" ];
# Browser
"text/html" = [ "${pkgs.firefox}/share/applications/firefox.desktop" ];
"application/xhtml+xml" = [ "${pkgs.firefox}/share/applications/firefox.desktop" ];
"application/x-web-app-manifest+json" = [ "${pkgs.firefox}/share/applications/firefox.desktop" ];
"application/xml-dtd" = [ "${pkgs.firefox}/share/applications/firefox.desktop" ];
# Images
"image/png" = [ "${pkgs.swayimg}/share/applications/swayimg.desktop" ];
"image/jpeg" = [ "${pkgs.swayimg}/share/applications/swayimg.desktop" ];
"image/gif" = [ "${pkgs.swayimg}/share/applications/swayimg.desktop" ];
"image/bmp" = [ "${pkgs.swayimg}/share/applications/swayimg.desktop" ];
"image/webp" = [ "${pkgs.swayimg}/share/applications/swayimg.desktop" ];
"image/svg+xml" = [ "${pkgs.swayimg}/share/applications/swayimg.desktop" ];
"image/svg+xml-compressed" = [ "${pkgs.swayimg}/share/applications/swayimg.desktop" ];
"image/tiff" = [ "${pkgs.swayimg}/share/applications/swayimg.desktop" ];
"image/apng" = [ "${pkgs.swayimg}/share/applications/swayimg.desktop" ];
"image/heic" = [ "${pkgs.swayimg}/share/applications/swayimg.desktop" ];
# Images
"image/*" = [ "${pkgs.loupe}/share/applications/org.gnome.Loupe.desktop.desktop" ];
};
};
};
# this right here offends me https://source.chromium.org/chromium/chromium/src/+/main:base/nix/xdg_util.cc;l=179-180
systemd.user.sessionVariables = {
# this right here offends me https://source.chromium.org/chromium/chromium/src/+/main:base/nix/xdg_util.cc;l=179-180
# setting GNOME_DESKTOP_SESSION_ID will fool some legacy systems into thinking we're running gnome
# this is an issue for xdg-open which can be circumvented by adding glib to the system which lets xdg-open fallback to gio-open
GNOME_DESKTOP_SESSION_ID = "999";
SHELL_THICCNESS = "LOW";
};
} # end file

View file

@ -85,6 +85,7 @@
cowsay # important
psmisc
pv
file
# Shells
bash

View file

@ -1,18 +1,24 @@
{ config, pkgs, lib, hostName, ... }:
{
environment.systemPackages = with pkgs; [
mako # notification system developed by swaywm maintainer
rofi
libinput
libinput-gestures
wmctrl
seahorse
libsecret
gnome-text-editor
nautilus
playerctl
libnotify
wmctrl
playerctl
# MIME utilities
xdg-utils
shared-mime-info
# GNOME utilities
libsecret # Keyring backend
gnome-text-editor
loupe
evince
seahorse
nautilus
];
# enable Sway window manager
@ -25,20 +31,22 @@
"--unsupported-gpu"
];
extraPackages = with pkgs; [
swayidle
swaylock
swayimg
swaybg
grim
slurp
wl-clipboard
pulseaudio
sway-contrib.grimshot
kitty
swayidle # idle management
swaylock # screen locker
swaybg # wallpaper setting tool
grim # screenshot tool
slurp # selection tool for screenshots
wl-clipboard # clipboard support (mostly for grim/slurp)
pulseaudio # pulseaudio support
sway-contrib.grimshot # screenshot tool
kitty # terminal emulator
kitty-themes
dotool # tool to send keyboard/mouse input to wayland apps
mako # notification system developed by swaywm maintainer
rofi # application launcher
];
}; # end sway
uwsm = {
uwsm = { # responsible for creating xdg-portal and systemd insteraction for sway
enable = true;
waylandCompositors = {
sway = {
@ -89,7 +97,8 @@
};
}; # end logind
dbus.packages = [ pkgs.seahorse pkgs.gnome-keyring pkgs.gcr ];
gnome.gcr-ssh-agent.enable = true;
gnome.gcr-ssh-agent.enable = true; # SSH key management via gnome keyring
gvfs.enable = true; # some support for nautilus operations
}; # end services
users.users.alisceon.extraGroups = [ "video" "input" ];
users.users.alisceon.extraGroups = [ "video" "input" ]; # input group required for libinput-gestures
}

View file

@ -50,9 +50,7 @@
pkgs.mumble
# Browser
pkgs.firefox
pkgs.firefoxpwa
pkgs.chromium
(pkgs.chromium.override { enableWideVine = true; })
# Development
pkgs.vscode
@ -69,5 +67,6 @@
pkgs.vlc
pkgs.via
]; # end systemPackages
sessionVariables.NIXOS_OZONE_WL = "1";
}; # end environment
} #end file

27
util/open_dailies.xsh Normal file
View file

@ -0,0 +1,27 @@
import subprocess
dailies = [
"https://www.geoguessr.com/",
"https://timeguessr.com/roundonedaily/",
"https://contexto.me/en/",
"https://travle.earth/",
"https://www.nytimes.com/games/connections/",
"https://games.oec.world/en/tradle/",
"https://oec.world/en/games/connectrade/",
"https://worldle.teuteuf.fr/",
"https://countryle.com/",
"https://capitale.countryle.com/",
"https://globle-game.com/game/",
"https://frontofficesports.com/trivia/factle/",
"https://daydle.com/",
"https://histordle.com/yeardle/",
"https://angle.wtf/",
"https://playboardle.com/",
"https://www.chess.com/daily/",
"https://quizl.io/",
"https://redactle.net/",
"https://www.codewars.com/dashboard/",
"https://leetcode.com/",
]
subprocess.run(["chromium", "--new-window"] + dailies)