chore: drop redundant packages and options
- packages.nix is the baseline: drop neovim (nixvim), nvd, sof-firmware (enableAllFirmware), qtmultimedia (v4 leftover); vial moves to vial.nix, wl-clipboard to noctalia.nix, claude-code becomes a plain package here - drop packages and options already provided elsewhere: noctalia (home-manager), gnupg/pinentry-qt (agent), gtk/qt themes, sddm Theme.Current, zsh plugins (home-manager), group = users, empty firewall lists - single-package lists without `with pkgs;`, steam package inside its block Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,10 +4,7 @@
|
|||||||
programs.nixvim = {
|
programs.nixvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
# We keep `inputs.nixvim.inputs.nixpkgs.follows = "nixpkgs"` in flake.nix so
|
# same nixpkgs as the flake's `follows`, silences nixvim's pin warning
|
||||||
# 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.
|
|
||||||
nixpkgs.source = inputs.nixpkgs;
|
nixpkgs.source = inputs.nixpkgs;
|
||||||
|
|
||||||
# set aliases
|
# set aliases
|
||||||
@@ -104,8 +101,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# install dependencies
|
# telescope live_grep
|
||||||
home.packages = with pkgs; [
|
home.packages = [ pkgs.ripgrep ];
|
||||||
ripgrep
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# set gtk theme
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = {
|
theme = {
|
||||||
@@ -13,7 +12,6 @@
|
|||||||
gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
|
gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
# set qt theme
|
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
platformTheme.name = "qt6";
|
platformTheme.name = "qt6";
|
||||||
@@ -22,10 +20,4 @@
|
|||||||
package = pkgs.adwaita-qt;
|
package = pkgs.adwaita-qt;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# ensure packages are installed
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
gnome-themes-extra
|
|
||||||
adwaita-qt
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-12
@@ -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, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# enable gnupg agent
|
|
||||||
programs.gnupg.agent = {
|
programs.gnupg.agent = {
|
||||||
enable = true;
|
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;
|
pinentryPackage = pkgs.pinentry-qt;
|
||||||
settings = {
|
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;
|
default-cache-ttl = 86400;
|
||||||
max-cache-ttl = 86400;
|
max-cache-ttl = 86400;
|
||||||
# fail an unattended signature instead of blocking on a prompt forever
|
|
||||||
pinentry-timeout = 120;
|
pinentry-timeout = 120;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = [
|
||||||
gnupg
|
pkgs.pinentry-curses # fallback for sessions without a display
|
||||||
pinentry-qt
|
|
||||||
# fallback for sessions without a display, switch pinentryPackage to use it
|
|
||||||
pinentry-curses
|
|
||||||
# prime the passphrase cache on demand, e.g. before an agent session
|
# 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 | ${config.programs.gnupg.package}/bin/gpg --clearsign --output /dev/null
|
||||||
echo "gpg key unlocked"
|
echo "gpg key unlocked"
|
||||||
'')
|
'')
|
||||||
|
|||||||
@@ -1,20 +1,12 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# user networkmanager
|
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
# firewall default configs
|
# wifi firmware and bluetooth
|
||||||
networking.firewall.allowedTCPPorts = [ ];
|
|
||||||
networking.firewall.allowedUDPPorts = [ ];
|
|
||||||
|
|
||||||
# enable wifi firmware
|
|
||||||
hardware.enableAllFirmware = true;
|
hardware.enableAllFirmware = true;
|
||||||
|
|
||||||
# enable bluetooth
|
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
|
|
||||||
# Add network-related packages
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
wireguard-tools
|
wireguard-tools
|
||||||
update-systemd-resolved
|
update-systemd-resolved
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# just enable and install niri
|
# compositor and session; the config itself lives in home-manager
|
||||||
programs.niri.enable = true;
|
programs.niri.enable = true;
|
||||||
|
environment.systemPackages = [ pkgs.xwayland-satellite ];
|
||||||
# Add compositor-related packages
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
xwayland-satellite
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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; [
|
environment.systemPackages = with pkgs; [
|
||||||
inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default
|
|
||||||
adw-gtk3
|
adw-gtk3
|
||||||
adwaita-qt
|
|
||||||
adwaita-qt6
|
adwaita-qt6
|
||||||
brightnessctl
|
brightnessctl
|
||||||
ddcutil
|
ddcutil
|
||||||
playerctl
|
playerctl
|
||||||
|
wl-clipboard
|
||||||
wl-mirror
|
wl-mirror
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# system packages
|
# baseline tools for every host
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
btop
|
btop
|
||||||
cifs-utils
|
cifs-utils
|
||||||
|
claude-code
|
||||||
cowsay
|
cowsay
|
||||||
dnsutils
|
dnsutils
|
||||||
ethtool
|
ethtool
|
||||||
@@ -14,31 +15,25 @@
|
|||||||
imv
|
imv
|
||||||
iperf3
|
iperf3
|
||||||
jq
|
jq
|
||||||
kdePackages.qtmultimedia
|
|
||||||
ldns
|
ldns
|
||||||
lm_sensors
|
lm_sensors
|
||||||
lsof
|
lsof
|
||||||
mtr
|
mtr
|
||||||
neovim
|
|
||||||
nfs-utils
|
nfs-utils
|
||||||
nh
|
nh
|
||||||
nix-output-monitor
|
nix-output-monitor
|
||||||
nmap
|
nmap
|
||||||
nvd
|
|
||||||
p7zip
|
p7zip
|
||||||
pciutils
|
pciutils
|
||||||
socat
|
socat
|
||||||
sof-firmware
|
|
||||||
strace
|
strace
|
||||||
sysstat
|
sysstat
|
||||||
tree
|
tree
|
||||||
unzip
|
unzip
|
||||||
usbutils
|
usbutils
|
||||||
vial
|
|
||||||
vim
|
vim
|
||||||
wget
|
wget
|
||||||
which
|
which
|
||||||
wl-clipboard
|
|
||||||
xz
|
xz
|
||||||
zip
|
zip
|
||||||
zstd
|
zstd
|
||||||
|
|||||||
+3
-13
@@ -1,25 +1,15 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# enable sddm and use astronaut theme
|
|
||||||
services.displayManager.sddm = {
|
services.displayManager.sddm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wayland.enable = true;
|
wayland.enable = true;
|
||||||
autoNumlock = true;
|
autoNumlock = true;
|
||||||
enableHidpi = true;
|
enableHidpi = true;
|
||||||
theme = "sddm-astronaut-theme";
|
theme = "sddm-astronaut-theme";
|
||||||
settings = {
|
extraPackages = [ pkgs.sddm-astronaut ]; # theme's qml dependencies
|
||||||
Theme = {
|
|
||||||
Current = "sddm-astronaut-theme";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
sddm-astronaut
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Make the theme available in the system path so sddm can find it
|
# sddm looks for themes in the system path
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = [ pkgs.sddm-astronaut ];
|
||||||
sddm-astronaut
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-10
@@ -1,20 +1,13 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# enable steam and open firewall
|
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# fix black screen when running under xwayland-satellite
|
||||||
|
package = pkgs.steam.override { extraArgs = "-system-composer"; };
|
||||||
remotePlay.openFirewall = true;
|
remotePlay.openFirewall = true;
|
||||||
dedicatedServer.openFirewall = true;
|
dedicatedServer.openFirewall = true;
|
||||||
localNetworkGameTransfers.openFirewall = true;
|
localNetworkGameTransfers.openFirewall = true;
|
||||||
# add proton-glorious-eggroll
|
extraCompatPackages = [ pkgs.proton-ge-bin ];
|
||||||
extraCompatPackages = with pkgs; [
|
|
||||||
proton-ge-bin
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# fix black screen in steam when using xwayland-satellite
|
|
||||||
programs.steam.package = pkgs.steam.override {
|
|
||||||
extraArgs = "-system-composer";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,9 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# Enable Thunar
|
|
||||||
programs.thunar.enable = true;
|
programs.thunar.enable = true;
|
||||||
|
|
||||||
# Install Tumbler thumbnailer service
|
# thumbnails: tumbler service plus the path it loads extensions from
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = [ pkgs.tumbler ];
|
||||||
tumbler
|
|
||||||
];
|
|
||||||
|
|
||||||
# Ensure Thunar can locate the thumbnailer extensions
|
|
||||||
environment.pathsToLink = [ "share/thumbnailers" ];
|
environment.pathsToLink = [ "share/thumbnailers" ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# create users
|
|
||||||
users.users.aaron = {
|
users.users.aaron = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
group = "users";
|
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"wheel"
|
"wheel"
|
||||||
"networkmanager"
|
"networkmanager"
|
||||||
@@ -13,10 +11,6 @@
|
|||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
};
|
};
|
||||||
|
|
||||||
# add default zsh config
|
# login shell; plugins and prompt are configured in home-manager
|
||||||
programs.zsh = {
|
programs.zsh.enable = true;
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
autosuggestions.enable = true;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-13
@@ -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, ... }:
|
{ 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 = [
|
services.udev.packages = [
|
||||||
(pkgs.writeTextFile {
|
(pkgs.writeTextFile {
|
||||||
name = "vial-udev-rules";
|
name = "vial-udev-rules";
|
||||||
destination = "/lib/udev/rules.d/60-vial.rules";
|
destination = "/lib/udev/rules.d/60-vial.rules";
|
||||||
# Vial firmware advertises itself through a magic USB serial, so this
|
# the magic serial matches any vial board; uaccess grants the seat owner
|
||||||
# matches any vial board rather than just the lily58. uaccess hands the
|
|
||||||
# device to whoever owns the active seat, no group membership needed.
|
|
||||||
text = ''
|
text = ''
|
||||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{serial}=="*vial:f64c2b3c*", TAG+="uaccess"
|
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{serial}=="*vial:f64c2b3c*", TAG+="uaccess"
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.vial ];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user