Transition to most recent state

nix:
fix mu4e from nonworking (rebuilt database)
fix printer driver that was not working after update
add network scanning
remove nix-gaming steam addons (now part of nixpkgs)
add pass-fuzzel for otp's
update deprecated expressions
add powerprofilesdaemon to waybar
fix hardware group in waybar folding to the wrong side
fix emacs server not starting
disable swayfx for now (broken in most recent nixpkgs)
disable some broken yubikey packages (*-flutter, -manager(-qt), -oath)
do not mount eternor by default
fix pinentry now requiring an extra expression to work

emacs:
fix corfu down/up keys not performing as intended
add ispell
inhibit useless messages
unclutter modeline
tune cape
add crdt (collaborative editing)
add avy
add diff-hl
fix oversight in latex greek symbols that had tau and theta on the same key
start eglot more consistently
fix dashboard showing footer line and not showing navigation
This commit is contained in:
Swarsel 2024-05-17 04:05:26 +02:00
parent 28ef6da2fb
commit 60eb5e4b35
Signed by: swarsel
GPG key ID: 26A54C31F2A4FD84
13 changed files with 1421 additions and 1079 deletions

View file

@ -13,6 +13,17 @@
audacity
sox
# printing
cups
gnome.simple-scan
# dict
(aspellWithDicts (dicts: with dicts; [ de en en-computers en-science ]))
# utilities
util-linux
nmap
# b2 backup @backblaze
restic
@ -72,7 +83,6 @@
networkmanagerapplet
psmisc # kill etc
lm_sensors
# syncthingtray
# jq # used for searching the i3 tree in check<xxx>.sh files
# specifically needed for anki
@ -109,7 +119,7 @@
# gnome.gnome-clocks
# wlogout
# jdiskreport
# syncthingtray
syncthingtray
# monitor
#keychain
@ -229,6 +239,36 @@
'';
})
(pkgs.writeShellApplication {
name = "pass-fuzzel-otp";
runtimeInputs = [ pkgs.fuzzel (pkgs.pass.withExtensions (exts: [exts.pass-otp]))];
text = ''
shopt -s nullglob globstar
typeit=0
if [[ $# -ge 1 && $1 == "--type" ]]; then
typeit=1
shift
fi
export PASSWORD_STORE_DIR=~/.local/share/password-store
prefix=''${PASSWORD_STORE_DIR-~/.local/share/password-store}
password_files=( "$prefix"/otp/**/*.gpg )
password_files=( "''${password_files[@]#"$prefix"/}" )
password_files=( "''${password_files[@]%.gpg}" )
password=$(printf '%s\n' "''${password_files[@]}" | fuzzel --dmenu "$@")
[[ -n $password ]] || exit
if [[ $typeit -eq 0 ]]; then
pass otp -c "$password" &>/tmp/pass-fuzzel
else
pass otp "$password" | { IFS= read -r pass; printf %s "$pass"; } | wtype -
fi
notify-send -u critical -a pass -t 1000 "Copied/Typed OTPassword"
'';
})
];
@ -459,6 +499,11 @@ home.file = {
source = ../../programs/emacs/early-init.el;
target = ".emacs.d/early-init.el";
};
# on NixOS, Emacs does not find the aspell dicts easily. Write the configuration manually
".aspell.conf" = {
source = ../../programs/config/.aspell.conf;
target = ".aspell.conf";
};
};
home.sessionVariables = {
@ -493,7 +538,6 @@ programs.direnv = {
programs.zoxide.enable = true;
programs.eza = {
enable = true;
enableAliases = true;
icons = true;
git = true;
extraOptions = [
@ -674,8 +718,9 @@ programs.zsh = {
c="git --git-dir=$HOME/.dotfiles/.git --work-tree=$HOME/.dotfiles/";
passpush = "cd ~/.local/share/password-store; git add .; git commit -m 'pass file changes'; git push; cd -;";
passpull = "cd ~/.local/share/password-store; git pull; cd -;";
hotspot = "nmcli connection up local; nmcli device wifi hotspot password 12345678;";
};
enableAutosuggestions = true;
autosuggestion.enable = true;
enableCompletion = true;
syntaxHighlighting.enable = true;
autocd = false;
@ -874,11 +919,12 @@ programs.waybar = {
"group/hardware" = {
orientation = "inherit";
drawer = {
"transition-left-to-right" = true;
"transition-left-to-right" = false;
};
modules = [
"tray"
"temperature"
"power-profiles-daemon"
"custom/left-arrow-light"
"disk"
"custom/left-arrow-dark"
@ -889,6 +935,18 @@ programs.waybar = {
];
};
power-profiles-daemon = {
format= "{icon}";
tooltip-format= "Power profile: {profile}\nDriver: {driver}";
tooltip= true;
format-icons= {
"default"= "";
"performance"= "";
"balanced"= "";
"power-saver"= "";
};
};
temperature = {
critical-threshold = 80;
format-critical = " {temperatureC}°C";
@ -1124,6 +1182,7 @@ programs.waybar = {
#memory,
#cpu,
#temperature,
#power-profiles-daemon,
#mpris,
#tray {
background: @background;
@ -1165,7 +1224,8 @@ programs.waybar = {
color: #cc99c9;
}
#temperature {
#temperature,
#power-profiles-daemon {
color: #9ec1cf;
}
@ -1248,6 +1308,7 @@ programs.waybar = {
#cpu,
#tray,
#temperature,
#power-profiles-daemon,
#network,
#mpris,
#battery,
@ -1376,14 +1437,14 @@ programs.firefox = {
};
"Home Manager Options" = {
urls = [{ template = "https://mipmip.github.io/home-manager-option-search/";
urls = [{ template = "https://home-manager-options.extranix.com/";
params = [
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@hm" ];
definedAliases = [ "@hm" "@ho" "@hmo" ];
};
"Google".metaData.alias = "@g";
@ -1404,7 +1465,7 @@ services.gnome-keyring = {
};
services.mbsync = {
enable = false;
enable = true;
};
@ -1416,12 +1477,16 @@ services.kdeconnect = {
services.syncthing = {
enable = true;
tray = {
enable = false;
enable = false; # we enable this by installing the syncthingtray package instead, it works better.
};
};
# this enables the emacs server
services.emacs.enable = true;
services.emacs = {
enable = true;
# socketActivation.enable = false;
# startWithUserSession = "graphical";
};
services.mako = {
enable = true;
@ -1453,7 +1518,8 @@ group-by=category
wayland.windowManager.sway = {
enable = true;
package = pkgs.swayfx;
# package = pkgs.swayfx;
package = pkgs.sway;
systemd.enable = true;
systemd.xdgAutostart = true;
wrapperFeatures.gtk = true;
@ -1481,7 +1547,9 @@ wayland.windowManager.sway = {
"${modifier}+F12" = "scratchpad show";
"${modifier}+c" = "exec qalculate-gtk";
"${modifier}+p" = "exec pass-fuzzel";
"${modifier}+o" = "exec pass-fuzzel-otp";
"${modifier}+Shift+p" = "exec pass-fuzzel --type";
"${modifier}+Shift+o" = "exec pass-fuzzel-otp --type";
"${modifier}+Escape" = "mode $exit";
# "${modifier}+Shift+Escape" = "exec com.github.stsdc.monitor";
"${modifier}+Shift+Escape" = "exec kitty -o confirm_os_window_close=0 btm";
@ -1610,6 +1678,12 @@ wayland.windowManager.sway = {
app_id = ".*";
};
}
{
command = "opacity 1";
criteria = {
app_id = "Gimp-2.10";
};
}
{
command = "opacity 0.99";
criteria = {
@ -1689,6 +1763,17 @@ wayland.windowManager.sway = {
# ";
extraConfig =let
modifier = config.wayland.windowManager.sway.config.modifier;
swayfxSettings = "
blur enable
blur_xray disable
blur_passes 1
blur_radius 1
shadows enable
corner_radius 2
titlebar_separator disable
default_dim_inactive 0.02
";
swayfxSettingsOff = "";
in "
exec_always autotiling
set $exit \"exit: [s]leep, [p]oweroff, [r]eboot, [l]ogout\"
@ -1708,14 +1793,7 @@ wayland.windowManager.sway = {
exec systemctl --user import-environment
blur enable
blur_xray disable
blur_passes 1
blur_radius 1
shadows enable
corner_radius 2
titlebar_separator disable
default_dim_inactive 0.02
${swayfxSettingsOff}
";
};

View file

@ -7,25 +7,27 @@
# login keymap
services.xserver = {
layout = "us";
xkbVariant = "altgr-intl";
xkb.layout = "us";
xkb.variant = "altgr-intl";
};
# mount NAS drive
# works only at home, but w/e
fileSystems."/mnt/smb" = {
device = "//192.168.1.3/Eternor";
fsType = "cifs";
options = let
# this line prevents hanging on network split
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
in ["${automount_opts},credentials=/etc/nixos/smb-secrets,uid=1000,gid=100"];
};
# fileSystems."/mnt/smb" = {
# device = "//192.168.1.3/Eternor";
# fsType = "cifs";
# options = let
# # this line prevents hanging on network split
# automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
# in ["${automount_opts},credentials=/etc/nixos/smb-secrets,uid=1000,gid=100"];
# };
# enable flakes - urgent line!!
# # enable flakes - urgent line!!
nix.settings.experimental-features = ["nix-command" "flakes"];
environment.sessionVariables.NIXOS_OZONE_WL = "1";
# wordlist for look
environment.wordlist.enable = true;
# gstreamer plugins for nautilus (used for file metadata)
environment.sessionVariables.GST_PLUGIN_SYSTEM_PATH_1_0 = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" (with pkgs.gst_all_1; [
gst-plugins-good
@ -99,11 +101,11 @@ environment.systemPackages = with pkgs; [
yubikey-personalization
yubikey-personalization-gui
yubico-pam
yubioath-flutter
yubikey-manager
yubikey-manager-qt
# yubioath-flutter
# yubikey-manager
# yubikey-manager-qt
yubico-piv-tool
pinentry
# pinentry
# theme related
gnome.adwaita-icon-theme
@ -116,7 +118,6 @@ environment.systemPackages = with pkgs; [
# lsp-related -------------------------------
# nix
rnix-lsp
# latex
texlab
ghostscript_headless
@ -152,41 +153,59 @@ environment.pathsToLink = [ "/share/zsh" ];
services.blueman.enable = true;
# enable discovery and usage of network devices (esp. printers)
services.printing.enable = true;
services.avahi = {
enable = true;
nssmdns = true;
openFirewall = true;
};
# enable scanners over network
hardware.sane = {
enable = true;
extraBackends = [ pkgs.sane-airscan ];
};
# nautilus file manager
services.gvfs.enable = true;
# enable discovery and usage of network devices (esp. printers)
services.printing.enable = true;
services.printing.drivers = [
pkgs.gutenprint
pkgs.gutenprintBin
];
services.printing.browsedConf = ''
BrowseDNSSDSubTypes _cups,_print
BrowseLocalProtocols all
BrowseRemoteProtocols all
CreateIPPPrinterQueues All
# Make CAPS work as a dual function ESC/CTRL key
services.interception-tools = {
enable = true;
udevmonConfig = let
dualFunctionKeysConfig = builtins.toFile "dual-function-keys.yaml" ''
TIMING:
TAP_MILLISEC: 200
DOUBLE_TAP_MILLISEC: 0
MAPPINGS:
- KEY: KEY_CAPSLOCK
TAP: KEY_ESC
HOLD: KEY_LEFTCTRL
BrowseProtocols all
'';
in ''
- JOB: |
${pkgs.interception-tools}/bin/intercept -g $DEVNODE \
| ${pkgs.interception-tools-plugins.dual-function-keys}/bin/dual-function-keys -c ${dualFunctionKeysConfig} \
| ${pkgs.interception-tools}/bin/uinput -d $DEVNODE
DEVICE:
EVENTS:
EV_KEY: [KEY_CAPSLOCK]
'';
};
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
# nautilus file manager
services.gvfs.enable = true;
# Make CAPS work as a dual function ESC/CTRL key
services.interception-tools = {
enable = true;
udevmonConfig = let
dualFunctionKeysConfig = builtins.toFile "dual-function-keys.yaml" ''
TIMING:
TAP_MILLISEC: 200
DOUBLE_TAP_MILLISEC: 0
MAPPINGS:
- KEY: KEY_CAPSLOCK
TAP: KEY_ESC
HOLD: KEY_LEFTCTRL
'';
in ''
- JOB: |
${pkgs.interception-tools}/bin/intercept -g $DEVNODE \
| ${pkgs.interception-tools-plugins.dual-function-keys}/bin/dual-function-keys -c ${dualFunctionKeysConfig} \
| ${pkgs.interception-tools}/bin/uinput -d $DEVNODE
DEVICE:
EVENTS:
EV_KEY: [KEY_CAPSLOCK]
'';
};
programs.ssh.startAgent = false;