chore: repository cleanup and noctalia baseline #83

Merged
aaron merged 6 commits from chore/cleanup into main 2026-10-02 09:51:23 +02:00
12 changed files with 37 additions and 105 deletions
Showing only changes of commit 1abb1ca6a1 - Show all commits
+3 -8
View File
@@ -4,10 +4,7 @@
programs.nixvim = {
enable = true;
# We keep `inputs.nixvim.inputs.nixpkgs.follows = "nixpkgs"` in flake.nix so
# the whole config shares a single nixpkgs. Setting `source` explicitly to
# that same nixpkgs acknowledges the override and silences nixvim's warning
# about its pinned nixpkgs being bypassed.
# same nixpkgs as the flake's `follows`, silences nixvim's pin warning
nixpkgs.source = inputs.nixpkgs;
# set aliases
@@ -104,8 +101,6 @@
};
};
# install dependencies
home.packages = with pkgs; [
ripgrep
];
# telescope live_grep
home.packages = [ pkgs.ripgrep ];
}
-8
View File
@@ -1,7 +1,6 @@
{ pkgs, ... }:
{
# set gtk theme
gtk = {
enable = true;
theme = {
@@ -13,7 +12,6 @@
gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
};
# set qt theme
qt = {
enable = true;
platformTheme.name = "qt6";
@@ -22,10 +20,4 @@
package = pkgs.adwaita-qt;
};
};
# ensure packages are installed
home.packages = with pkgs; [
gnome-themes-extra
adwaita-qt
];
}
+7 -12
View File
@@ -1,29 +1,24 @@
# A graphical pinentry never grabs the tty, so a passphrase prompt can't take
# over a terminal driven by a coding agent. The cache lasts a working day, and
# an unattended signature fails after two minutes instead of blocking forever.
{ config, pkgs, ... }:
{
# enable gnupg agent
programs.gnupg.agent = {
enable = true;
# a graphical pinentry never grabs the tty, so a passphrase prompt can no
# longer take over a terminal that a coding agent is driving
pinentryPackage = pkgs.pinentry-qt;
settings = {
# keep the key unlocked for a full working day instead of 10 minutes,
# so signing commits asks at most once per session
default-cache-ttl = 86400;
max-cache-ttl = 86400;
# fail an unattended signature instead of blocking on a prompt forever
pinentry-timeout = 120;
};
};
environment.systemPackages = with pkgs; [
gnupg
pinentry-qt
# fallback for sessions without a display, switch pinentryPackage to use it
pinentry-curses
environment.systemPackages = [
pkgs.pinentry-curses # fallback for sessions without a display
# prime the passphrase cache on demand, e.g. before an agent session
(writeShellScriptBin "gpg-unlock" ''
(pkgs.writeShellScriptBin "gpg-unlock" ''
echo | ${config.programs.gnupg.package}/bin/gpg --clearsign --output /dev/null
echo "gpg key unlocked"
'')
+1 -9
View File
@@ -1,20 +1,12 @@
{ pkgs, ... }:
{
# user networkmanager
networking.networkmanager.enable = true;
# firewall default configs
networking.firewall.allowedTCPPorts = [ ];
networking.firewall.allowedUDPPorts = [ ];
# enable wifi firmware
# wifi firmware and bluetooth
hardware.enableAllFirmware = true;
# enable bluetooth
hardware.bluetooth.enable = true;
# Add network-related packages
environment.systemPackages = with pkgs; [
wireguard-tools
update-systemd-resolved
+2 -6
View File
@@ -1,11 +1,7 @@
{ pkgs, ... }:
{
# just enable and install niri
# compositor and session; the config itself lives in home-manager
programs.niri.enable = true;
# Add compositor-related packages
environment.systemPackages = with pkgs; [
xwayland-satellite
];
environment.systemPackages = [ pkgs.xwayland-satellite ];
}
+4 -4
View File
@@ -1,14 +1,14 @@
{ pkgs, inputs, ... }:
{ pkgs, ... }:
{
# install noctalia and helper packages
# helpers for the noctalia shell (the shell itself comes from home-manager)
environment.systemPackages = with pkgs; [
inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default
adw-gtk3
adwaita-qt
adwaita-qt6
brightnessctl
ddcutil
playerctl
wl-clipboard
wl-mirror
];
}
+2 -7
View File
@@ -1,10 +1,11 @@
{ pkgs, ... }:
{
# system packages
# baseline tools for every host
environment.systemPackages = with pkgs; [
btop
cifs-utils
claude-code
cowsay
dnsutils
ethtool
@@ -14,31 +15,25 @@
imv
iperf3
jq
kdePackages.qtmultimedia
ldns
lm_sensors
lsof
mtr
neovim
nfs-utils
nh
nix-output-monitor
nmap
nvd
p7zip
pciutils
socat
sof-firmware
strace
sysstat
tree
unzip
usbutils
vial
vim
wget
which
wl-clipboard
xz
zip
zstd
+3 -13
View File
@@ -1,25 +1,15 @@
{ pkgs, ... }:
{
# enable sddm and use astronaut theme
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
autoNumlock = true;
enableHidpi = true;
theme = "sddm-astronaut-theme";
settings = {
Theme = {
Current = "sddm-astronaut-theme";
};
};
extraPackages = with pkgs; [
sddm-astronaut
];
extraPackages = [ pkgs.sddm-astronaut ]; # theme's qml dependencies
};
# Make the theme available in the system path so sddm can find it
environment.systemPackages = with pkgs; [
sddm-astronaut
];
# sddm looks for themes in the system path
environment.systemPackages = [ pkgs.sddm-astronaut ];
}
+3 -10
View File
@@ -1,20 +1,13 @@
{ pkgs, ... }:
{
# enable steam and open firewall
programs.steam = {
enable = true;
# fix black screen when running under xwayland-satellite
package = pkgs.steam.override { extraArgs = "-system-composer"; };
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
# add proton-glorious-eggroll
extraCompatPackages = with pkgs; [
proton-ge-bin
];
};
# fix black screen in steam when using xwayland-satellite
programs.steam.package = pkgs.steam.override {
extraArgs = "-system-composer";
extraCompatPackages = [ pkgs.proton-ge-bin ];
};
}
+2 -7
View File
@@ -1,14 +1,9 @@
{ pkgs, ... }:
{
# Enable Thunar
programs.thunar.enable = true;
# Install Tumbler thumbnailer service
environment.systemPackages = with pkgs; [
tumbler
];
# Ensure Thunar can locate the thumbnailer extensions
# thumbnails: tumbler service plus the path it loads extensions from
environment.systemPackages = [ pkgs.tumbler ];
environment.pathsToLink = [ "share/thumbnailers" ];
}
+2 -8
View File
@@ -1,10 +1,8 @@
{ pkgs, ... }:
{
# create users
users.users.aaron = {
isNormalUser = true;
group = "users";
extraGroups = [
"wheel"
"networkmanager"
@@ -13,10 +11,6 @@
shell = pkgs.zsh;
};
# add default zsh config
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestions.enable = true;
};
# login shell; plugins and prompt are configured in home-manager
programs.zsh.enable = true;
}
+8 -13
View File
@@ -1,26 +1,21 @@
# Vial keyboards (lily58 pro r2g) expose a raw HID interface that vial.rocks
# drives over WebHID; its /dev/hidraw* node is root-only by default.
# The rule ships as 60-vial.rules because uaccess is only applied by
# 73-seat-late.rules, and services.udev.extraRules lands at 99, too late.
{ pkgs, ... }:
{
# Vial-capable keyboards (lily58 pro r2g) expose a second, non-keyboard raw
# HID interface that vial.rocks drives over WebHID. Its /dev/hidraw* node is
# root-only by default, so neither chromium nor the native app can open it.
#
# This has to ship as a numbered rules file rather than via
# services.udev.extraRules: extraRules lands in 99-local.rules, but the
# builtin that turns TAG+="uaccess" into an actual ACL is invoked from
# systemd's 73-seat-late.rules. A tag set at 99 is set too late to be seen,
# so the device ends up correctly tagged and still unreadable. 60- sorts
# safely ahead of 73.
services.udev.packages = [
(pkgs.writeTextFile {
name = "vial-udev-rules";
destination = "/lib/udev/rules.d/60-vial.rules";
# Vial firmware advertises itself through a magic USB serial, so this
# matches any vial board rather than just the lily58. uaccess hands the
# device to whoever owns the active seat, no group membership needed.
# the magic serial matches any vial board; uaccess grants the seat owner
text = ''
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{serial}=="*vial:f64c2b3c*", TAG+="uaccess"
'';
})
];
environment.systemPackages = [ pkgs.vial ];
}