nix(t14): reconfigure home environment

This commit is contained in:
surtur 2023-12-12 20:57:03 +01:00
parent fdb22c1152
commit 8c27375415
Signed by: wanderer
SSH Key Fingerprint: SHA256:MdCZyJ2sHLltrLBp0xQO0O1qTW9BT/xl5nXkDvhlMCI
3 changed files with 283 additions and 9 deletions

@ -79,7 +79,7 @@
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {inherit usr;};
home-manager.extraSpecialArgs = {inherit usr; hostName = "t14";};
home-manager.users.${usr} = {
home.stateVersion = "23.11";
imports = [

@ -3,14 +3,42 @@
lib,
pkgs,
usr,
hostName,
...
}: {
}: let
dotfiles = builtins.fetchGit {
url = "https://git.dotya.ml/wanderer/dotfiles";
rev = "a08927ef24a1fa7b408f6e3bec5754cb733a9c49";
};
swayTgt = "sway-session.target";
start-waybar = pkgs.writeShellScriptBin "start-waybar" ''
export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -f 'sway$').sock
${pkgs.waybar}/bin/waybar
'';
in {
imports = [
# ./modules/desktop/waybar.nix
# ./modules/desktop/wayland.nix
./modules/desktop/sway.nix
];
sops = {
secrets = {
gitUsername.owner = "mko";
};
templates = {
"gitConfig-${hostName}" = {
owner = "mko";
content = ''
[user]
name = ${hostName}
email = ${config.sops.placeholder.gitUsername}
signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDAqwhsHHLKG7k7kDa7Tauy2V+rXqQFxiuMCdVltz0n1
'';
};
};
};
# home.enableNixpkgsReleaseCheck = false;
home = {
username = lib.mkForce "${usr}";
@ -56,12 +84,12 @@
goreleaser
gotools
graph-easy
graphviz
hadolint
hugo
ipcalc
jq
killall
libnotify
libtelnet
lolcat
lsof
@ -108,6 +136,13 @@
services = {
blueman-applet.enable = true;
network-manager-applet.enable = true;
avizo.enable = true;
batsignal = {
enable = true;
extraArgs = ["-w 25" "-c 15" "-d 10"];
};
};
programs = {
@ -122,4 +157,241 @@
plugins = with pkgs.obs-studio-plugins; [wlrobs];
};
};
home.file = {
".config/kitty/kitty.conf" = {
source = "${dotfiles}/.config/kitty/kitty.conf";
};
".vimrc" = {
source = "${dotfiles}/.vim/vimrc";
};
".vim/deoplete.vimrc.vim" = {
source = "${dotfiles}/.vim/deoplete.vimrc.vim";
};
".vim/gotags.vimrc.vim" = {
source = "${dotfiles}/.vim/gotags.vimrc.vim";
};
".vim/python.vimrc.vim" = {
source = "${dotfiles}/.vim/python.vimrc.vim";
};
".config/nvim/init.vim" = {
source = "${dotfiles}/.config/nvim/init.vim";
};
".config/systemd/user.conf" = {
text = ''
[Manager]
DefaultTimeoutStarSec=15s
DefaultTimeoutStopSec=15s
'';
};
".config/sway/config.d/dracula.sway" = {
source = "${dotfiles}/.config/sway/config.d/dracula.sway";
};
".config/waybar/config" = {
source = "${dotfiles}/.config/waybar/config";
};
".config/waybar/style.css" = {
source = "${dotfiles}/.config/waybar/style.css";
};
".config/waybar/modules/storage.sh" = {
source = "${dotfiles}/.config/waybar/modules/storage.sh";
};
".config/kanshi/config" = {
source = "${dotfiles}/.config/kanshi/config";
};
".config/mako/config" = {
source = "${dotfiles}/.config/mako/config";
};
".config/swaylock/config" = {
source = "${dotfiles}/.config/swaylock/config";
};
".config/albert.conf" = {
source = "${dotfiles}/.config/albert/albert.conf";
};
".config/direnv/direnv.toml" = {
source = "${dotfiles}/.config/direnv/direnv.toml";
};
".config/git/config-common" = {
source = "${dotfiles}/.config/git/config";
};
# host-specific gitconfig.
".config/git/config.${hostName}" = {
source = config.sops.templates."gitConfig-${hostName}".path;
};
".config/git/config" = {
text = ''
[include]
path = ~/.config/git/config-common
[include]
path = ~/.config/git/config.${hostName}
'';
};
".config/git/allowed_signers" = {
source = "${dotfiles}/.config/git/allowed_signers";
};
".cargo/config.toml" = {
source = "${dotfiles}/.cargo/config.toml";
};
".npmrc" = {
text = ''
prefix=''${HOME}/.npm-packages
audit=false
fund=false
'';
};
".config/tridactyl/tridactylrc" = {
source = "${dotfiles}/.config/tridactyl/tridactylrc";
};
".config/bat/config" = {
source = "${dotfiles}/.config/bat/config";
};
".ncpamixer.conf" = {
source = "${dotfiles}/.config/ncpamixer.conf";
};
".gdbinit" = {
text = ''
set auto-load safe-path /nix/store
set history save on
set history size 10000
set history remove-duplicates 100
set history filename ~/.gdb_history
'';
};
".local/bin/winprint.sh" = {
source = "${dotfiles}/bin/winprint.sh";
executable = true;
};
};
systemd.user.services = {
waybar = {
Unit = {
Description = "Highly customizable Wayland bar for Sway and Wlroots based compositors.";
Documentation = "https://github.com/Alexays/Waybar/wiki/";
PartOf = swayTgt;
After = swayTgt;
};
Service = {
ExecStart = "${start-waybar}/bin/start-waybar";
ExecReload = "kill -SIGUSR2 $MAINPID";
Restart = "on-failure";
RestartSec = "3s";
LockPersonality = true;
PrivateTmp = "yes";
DevicePolicy = "closed";
};
Install = {WantedBy = [swayTgt];};
};
autotiling = {
Unit = {
Description = "Script for sway and i3 to automatically switch the horizontal / vertical window split orientation";
Documentation = "https://github.com/nwg-piotr/autotiling";
BindsTo = swayTgt;
};
Service = {
Type = "simple";
ExecStart = "${pkgs.autotiling}/bin/autotiling";
Restart = "always";
RestartSec = "5s";
LockPersonality = true;
PrivateTmp = "yes";
DevicePolicy = "closed";
};
Install = {WantedBy = [swayTgt];};
};
albert = {
Unit = {
Description = "A C++/Qt based desktop agnostic keyboard launcher that helps you to accomplish your workflows in a breeze";
Documentation = "https://albertlauncher.github.io/";
BindsTo = swayTgt;
};
Service = {
Type = "simple";
# after hm stateVersion bump to 23.05, albert doesn't seem to support explicit wayland.
# Environment = "QT_QPA_PLATFORM=xcb";
ExecStart = "${pkgs.albert}/bin/albert";
Restart = "always";
RestartSec = "3s";
LockPersonality = true;
PrivateTmp = "yes";
DevicePolicy = "closed";
};
Install = {WantedBy = [swayTgt];};
};
mako = {
Unit = {
Description = "Mako notification daemon";
BindsTo = [swayTgt];
};
Install = {
WantedBy = [swayTgt];
};
Service = {
Type = "dbus";
BusName = "org.freedesktop.Notifications";
ExecStart = "${pkgs.mako}/bin/mako";
RestartSec = 5;
Restart = "always";
};
};
gopls = {
Unit = {
Description = "Go language server";
};
Service = {
Type = "simple";
ExecStartPre = "bash -c 'rm -v -f /tmp/.gopls-daemon.sock || true'";
ExecStart = "%h/go/bin/gopls -listen='unix;/tmp/.gopls-daemon.sock'";
ExecStopPost = "bash -c 'rm -v -f /tmp/.gopls-daemon.sock || true'";
Restart = "on-failure";
RestartSec = "1m";
TimeoutStopFailureMode = "abort";
SystemCallFilter = "~@reboot @obsolete";
ProtectProc = "invisible";
ProcSubset = "pid";
ProtectHome = "tmpfs";
BindPaths = ["%h/.cache"];
RestrictNamespaces = true;
NoNewPrivileges = "yes";
ProtectSystem = "strict";
DevicePolicy = "closed";
LockPersonality = true;
MemoryDenyWriteExecute = true;
#RestrictAddressFamilies="AF_UNIX AF_INET AF_INET6";
RestrictAddressFamilies = "AF_UNIX";
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
};
Install = {WantedBy = ["default.target"];};
};
};
xdg = (import "${dotfiles}/nix/xdg.nix") {inherit pkgs config hostName;};
}

@ -80,6 +80,7 @@ in {
wayland.windowManager.sway = {
enable = true;
package = pkgs.swayfx;
systemd.enable = true;
config = rec {
modifier = "Mod4"; # super key
# Use kitty as default terminal
@ -89,6 +90,7 @@ in {
# {command = "firefox";}
{command = "kitty";}
];
bars = [];
};
extraConfig = ''
set {
@ -119,10 +121,11 @@ in {
$sec $ext_screen
$term KITTY_ENABLE_WAYLAND=1 kitty -1 # qterminal alacritty
$albert QT_QPA_PLATFORM=xcb albert show
$menu wofi --show drun --allow-markup swaymsg exec --
$othermenu XDG_DATA_DIRS=/usr/share/:/usr/local/share/:/var/lib/flatpak/exports/share/:$HOME/.local/share/flatpak/exports/share/ j4-dmenu-desktop --dmenu="bemenu -n -p \"applications\" -l 30 --fn 'FiraCode Retina 17'" --term="kitty" --no-generic --display-binary
$nutermmenu kitty --class 'launcher' bash -c 'compgen -c | sort -u | fzf | xargs -r kitty'
$bemenu XDG_DATA_DIRS=/usr/share/:/usr/local/share/:/var/lib/flatpak/exports/share/:$HOME/.local/share/flatpak/exports/share/ bemenu-run --fork -l 5 -n -p "" --fn 'FiraCode Retina 17' | xargs swaymsg exec
$bemenu PATH=$/.cargo/bin:$HOME/go/bin:$PATH XDG_DATA_DIRS=/usr/share/:/usr/local/share/:/var/lib/flatpak/exports/share/:$HOME/.local/share/flatpak/exports/share/ bemenu-run --fork -l 5 -n -p "" --fn 'FiraCode Retina 17' | xargs swaymsg exec
$gtk_font_name "CascadiaCodePL ExtraLight"
$gtk_font_size "10.4"
}
@ -173,14 +176,11 @@ in {
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true
gsettings set org.gtk.Settings.FileChooser window-size '(1100,700)'
pgrep mako && pkill mako
# pgrep kanshi && pkill kanshi
pgrep swayrd && pkill swayrd
pgrep swayidle && pkill swayidle
pgrep avizo && pkill avizo
pgrep nm-applet && pkill nm-applet
mako
# kanshi
env RUST_BACKTRACE=1 swayrd > /tmp/swayrd.log 2>&1
# timeout 545 'pgrep -u $(id -u) swaylock || notify-send -t 20000 -r 344334 -u critical "Idle timeout" "Screen is locking soon"' \
@ -191,7 +191,6 @@ in {
timeout 15 'pgrep swaylock && swaymsg "output * power off"' \
resume 'swaymsg "output * power on"' \
before-sleep "pgrep swaylock || $lock"
avizo-service
# TODO(me):
# https://github.com/slgobinath/SafeEyes
@ -398,7 +397,9 @@ in {
# screenshot of a window
Control+print exec winprint.sh
# colour picker / eyedropper
$mod+Shift+Alt+f exec farge --notify
Control+Shift+print exec grim -g "$(slurp -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]' txt: | wl-copy
$mod+tab exec swayr switch-workspace-or-window
$mod+c exec gnome-calculator
# -w: Always open a new window for browsing specified URIs.
$mod+n exec nautilus -w
@ -638,7 +639,8 @@ in {
}
}
bindsym --no-warn $mod+r mode "resize"
bindsym $mod+Shift+r --no-warn reload; exec kanshictl reload
#bindsym --no-warn $mod+Shift+r reload; exec kanshictl reload
bindsym --no-warn $mod+Shift+r reload
# kudos to github.com/rbnis for the following menu-like section inspiration
# https://github.com/rbnis/dotfiles/blob/dfd6f956f6d00a1012a3a167d947773095dac7fd/.config/sway/config#L228-L235