Compare commits
4 commits
c420675aba
...
532612a5a6
| Author | SHA1 | Date | |
|---|---|---|---|
| 532612a5a6 | |||
| 5ec7575655 | |||
| 14289eee5c | |||
| 737a5cb268 |
30 changed files with 287 additions and 1323 deletions
24
flake.lock
generated
24
flake.lock
generated
|
|
@ -204,11 +204,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759853171,
|
"lastModified": 1760103600,
|
||||||
"narHash": "sha256-uqbhyXtqMbYIiMqVqUhNdSuh9AEEkiasoK3mIPIVRhk=",
|
"narHash": "sha256-R4cltQFceN3POiPhBu7aTKsrwqTiwo6zjzmitrHD80E=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "1a09eb84fa9e33748432a5253102d01251f72d6d",
|
"rev": "bcccb01d0a353c028cc8cb3254cac7ebae32929e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -295,11 +295,11 @@
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759582739,
|
"lastModified": 1760106635,
|
||||||
"narHash": "sha256-spZegilADH0q5OngM86u6NmXxduCNv5eX9vCiUPhOYc=",
|
"narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "3441b5242af7577230a78ffb03542add264179ab",
|
"rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -311,11 +311,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759733170,
|
"lastModified": 1760038930,
|
||||||
"narHash": "sha256-TXnlsVb5Z8HXZ6mZoeOAIwxmvGHp1g4Dw89eLvIwKVI=",
|
"narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "8913c168d1c56dc49a7718685968f38752171c3b",
|
"rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -462,11 +462,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758728421,
|
"lastModified": 1760120816,
|
||||||
"narHash": "sha256-ySNJ008muQAds2JemiyrWYbwbG+V7S5wg3ZVKGHSFu8=",
|
"narHash": "sha256-gq9rdocpmRZCwLS5vsHozwB6b5nrOBDNc2kkEaTXHfg=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "5eda4ee8121f97b218f7cc73f5172098d458f1d1",
|
"rev": "761ae7aff00907b607125b2f57338b74177697ed",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
209
home/dconf.nix
209
home/dconf.nix
|
|
@ -1,209 +0,0 @@
|
||||||
{ lib, pkgs, ... }:
|
|
||||||
with lib.hm.gvariant;
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
pkgs.adwaita-icon-theme
|
|
||||||
pkgs.adwaita-qt
|
|
||||||
];
|
|
||||||
|
|
||||||
dconf.settings = with lib.hm.gvariant; {
|
|
||||||
"org/gnome/shell" = {
|
|
||||||
favorite-apps = [
|
|
||||||
"alacritty.desktop"
|
|
||||||
"element.desktop"
|
|
||||||
"evolution.desktop"
|
|
||||||
"firefox.desktop"
|
|
||||||
"spotify.desktop"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/shell" = {
|
|
||||||
disable-user-extensions = false;
|
|
||||||
enabled-extensions = [
|
|
||||||
"system-monitor@gnome-shell-extensions.gcampax.github.com"
|
|
||||||
"switcher@landau.fi"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/desktop/calendar" = {
|
|
||||||
show-weekdate = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/desktop/input-sources" = {
|
|
||||||
current = mkUint32 0;
|
|
||||||
per-window = false;
|
|
||||||
show-all-sources = true;
|
|
||||||
sources = [
|
|
||||||
(mkTuple [
|
|
||||||
"xkb"
|
|
||||||
"eu"
|
|
||||||
])
|
|
||||||
(mkTuple [
|
|
||||||
"xkb"
|
|
||||||
"de"
|
|
||||||
])
|
|
||||||
];
|
|
||||||
xkb-options = [
|
|
||||||
"lv3:ralt_switch"
|
|
||||||
"caps:escape"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
clock-show-date = true;
|
|
||||||
clock-show-seconds = false;
|
|
||||||
clock-show-weekday = true;
|
|
||||||
cursor-theme = "Adwaita";
|
|
||||||
enable-animations = true;
|
|
||||||
enable-hot-corners = false;
|
|
||||||
font-antialiasing = "grayscale";
|
|
||||||
font-hinting = "slight";
|
|
||||||
font-name = "Cantarell 10";
|
|
||||||
gtk-enable-primary-paste = false;
|
|
||||||
gtk-key-theme = "Emacs";
|
|
||||||
gtk-theme = "Adwaita";
|
|
||||||
color-scheme = "prefer-light";
|
|
||||||
icon-theme = "Adwaita";
|
|
||||||
locate-pointer = false;
|
|
||||||
monospace-font-name = "JetBrains Mono 10";
|
|
||||||
show-battery-percentage = false;
|
|
||||||
#text-scaling-factor = 1.0;
|
|
||||||
toolkit-accessibility = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/desktop/peripherals/keyboard" = {
|
|
||||||
numlock-state = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/desktop/peripherals/mouse" = {
|
|
||||||
accel-profile = "default";
|
|
||||||
natural-scroll = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/desktop/peripherals/touchpad" = {
|
|
||||||
send-events = "enabled";
|
|
||||||
tap-to-click = true;
|
|
||||||
two-finger-scrolling-enabled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/desktop/privacy" = {
|
|
||||||
disable-microphone = false;
|
|
||||||
old-files-age = mkUint32 30;
|
|
||||||
recent-files-max-age = -1;
|
|
||||||
report-technical-problems = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/desktop/screensaver" = {
|
|
||||||
color-shading-type = "solid";
|
|
||||||
lock-delay = mkUint32 30;
|
|
||||||
lock-enabled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/desktop/session" = {
|
|
||||||
idle-delay = mkUint32 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/desktop/sound" = {
|
|
||||||
event-sounds = false;
|
|
||||||
theme-name = "__custom";
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/evince/default" = {
|
|
||||||
continuous = true;
|
|
||||||
dual-page = false;
|
|
||||||
dual-page-odd-left = false;
|
|
||||||
enable-spellchecking = true;
|
|
||||||
fullscreen = false;
|
|
||||||
inverted-colors = false;
|
|
||||||
show-sidebar = false;
|
|
||||||
sidebar-page = "links";
|
|
||||||
sidebar-size = 132;
|
|
||||||
sizing-mode = "free";
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/evolution/calendar" = {
|
|
||||||
editor-show-timezone = true;
|
|
||||||
use-24hour-format = true;
|
|
||||||
week-start-day-name = "monday";
|
|
||||||
work-day-friday = true;
|
|
||||||
work-day-monday = true;
|
|
||||||
work-day-saturday = false;
|
|
||||||
work-day-sunday = false;
|
|
||||||
work-day-thursday = true;
|
|
||||||
work-day-tuesday = true;
|
|
||||||
work-day-wednesday = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/evolution/mail" = {
|
|
||||||
browser-close-on-reply-policy = "always";
|
|
||||||
composer-attribution-language = "de_DE";
|
|
||||||
composer-reply-start-bottom = false;
|
|
||||||
composer-signature-in-new-only = true;
|
|
||||||
composer-spell-languages = [
|
|
||||||
"de"
|
|
||||||
"en_US"
|
|
||||||
];
|
|
||||||
composer-top-signature = false;
|
|
||||||
composer-unicode-smileys = false;
|
|
||||||
composer-visually-wrap-long-lines = true;
|
|
||||||
composer-wrap-quoted-text-in-replies = false;
|
|
||||||
forward-style = 0;
|
|
||||||
forward-style-name = "attached";
|
|
||||||
headers-collapsed = false;
|
|
||||||
image-loading-policy = "never";
|
|
||||||
junk-check-custom-header = true;
|
|
||||||
junk-check-incoming = true;
|
|
||||||
junk-empty-on-exit-days = 0;
|
|
||||||
junk-lookup-addressbook = false;
|
|
||||||
notify-remote-content = true;
|
|
||||||
prompt-check-if-default-mailer = false;
|
|
||||||
prompt-on-composer-mode-switch = true;
|
|
||||||
prompt-on-empty-subject = true;
|
|
||||||
prompt-on-expunge = true;
|
|
||||||
prompt-on-mark-all-read = false;
|
|
||||||
prompt-on-mark-as-junk = true;
|
|
||||||
prompt-on-reply-close-browser = "always";
|
|
||||||
prompt-on-unwanted-html = true;
|
|
||||||
reply-style = 0;
|
|
||||||
reply-style-name = "quoted";
|
|
||||||
search-gravatar-for-photo = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/evolution/plugin/prefer-plain" = {
|
|
||||||
mode = "only_plain";
|
|
||||||
show-suppressed = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/gnome-screenshot" = {
|
|
||||||
border-effect = "none";
|
|
||||||
delay = 0;
|
|
||||||
include-border = true;
|
|
||||||
include-pointer = false;
|
|
||||||
last-save-directory = "file:///home/dadada/lib/pictures/Screenshots";
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/mutter" = {
|
|
||||||
attach-modal-dialogs = true;
|
|
||||||
center-new-windows = true;
|
|
||||||
dynamic-workspaces = true;
|
|
||||||
edge-tiling = true;
|
|
||||||
experimental-features = [ ];
|
|
||||||
focus-change-on-pointer-rest = true;
|
|
||||||
overlay-key = "Super_L";
|
|
||||||
workspaces-only-on-primary = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/settings-daemon/plugins/power" = {
|
|
||||||
idle-dim = true;
|
|
||||||
power-button-action = "interactive";
|
|
||||||
power-saver-profile-on-low-battery = true;
|
|
||||||
sleep-inactive-ac-type = "blank";
|
|
||||||
sleep-inactive-battery-timeout = 600;
|
|
||||||
sleep-inactive-battery-type = "suspend";
|
|
||||||
};
|
|
||||||
|
|
||||||
"org/gnome/system/location" = {
|
|
||||||
enabled = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
355
home/default.nix
355
home/default.nix
|
|
@ -1,22 +1,8 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
useFeatures = [
|
|
||||||
"alacritty"
|
|
||||||
#"emacs"
|
|
||||||
"direnv"
|
|
||||||
"git"
|
|
||||||
"gpg"
|
|
||||||
#"gtk"
|
|
||||||
#"keyring"
|
|
||||||
"tmux"
|
|
||||||
"xdg"
|
|
||||||
"zsh"
|
|
||||||
"helix"
|
|
||||||
];
|
|
||||||
colors = {
|
colors = {
|
||||||
background = "fdf6e3";
|
background = "fdf6e3";
|
||||||
foreground = "657b83";
|
foreground = "657b83";
|
||||||
|
|
@ -40,28 +26,38 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./dconf.nix
|
./git.nix
|
||||||
|
./helix
|
||||||
|
./tmux.nix
|
||||||
|
./xdg.nix
|
||||||
|
./zsh.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home.stateVersion = "20.09";
|
home.stateVersion = "20.09";
|
||||||
|
|
||||||
programs.gpg.settings.default-key = "99658A3EB5CD7C13";
|
home.sessionVariables = {
|
||||||
|
|
||||||
dadada.home =
|
|
||||||
lib.attrsets.genAttrs useFeatures (useFeatures: {
|
|
||||||
enable = true;
|
|
||||||
})
|
|
||||||
// {
|
|
||||||
session = {
|
|
||||||
enable = true;
|
|
||||||
sessionVars = {
|
|
||||||
EDITOR = "hx";
|
EDITOR = "hx";
|
||||||
PAGER = "less";
|
PAGER = "less";
|
||||||
MAILDIR = "\$HOME/.var/mail";
|
};
|
||||||
MBLAZE = "\$HOME/.config/mblaze";
|
|
||||||
NOTMUCH_CONFIG = "\$HOME/.config/notmuch/config";
|
programs.gpg = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default-key = "99658A3EB5CD7C13";
|
||||||
|
fixed-list-mode = true;
|
||||||
|
keyid-format = "0xlong";
|
||||||
|
verify-options = "show-uid-validity";
|
||||||
|
list-options = "show-uid-validity";
|
||||||
|
cert-digest-algo = "SHA256";
|
||||||
|
use-agent = true;
|
||||||
|
keyserver = "hkps://keys.openpgp.org";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
defaultCacheTtl = 1800;
|
||||||
|
enableSshSupport = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Languagetool server for web extension
|
# Languagetool server for web extension
|
||||||
|
|
@ -83,43 +79,6 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.offlineimap.enable = false;
|
|
||||||
xdg.configFile."offlineimap/config".text = ''
|
|
||||||
[general]
|
|
||||||
accounts = tu-bs,mailbox
|
|
||||||
|
|
||||||
[Account tu-bs]
|
|
||||||
localrepository = tu-bs-local
|
|
||||||
remoterepository = tu-bs-remote
|
|
||||||
|
|
||||||
[Repository tu-bs-local]
|
|
||||||
type = Maildir
|
|
||||||
localfolders = ~/lib/backup/y0067212@tu-bs.de
|
|
||||||
|
|
||||||
[Repository tu-bs-remote]
|
|
||||||
type = IMAP
|
|
||||||
remotehost = mail.tu-braunschweig.de
|
|
||||||
remoteuser = y0067212
|
|
||||||
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
|
|
||||||
|
|
||||||
[Account mailbox]
|
|
||||||
localrepository = mailbox-local
|
|
||||||
remoterepository = mailbox-remote
|
|
||||||
|
|
||||||
[Repository mailbox-local]
|
|
||||||
type = Maildir
|
|
||||||
localfolders = ~/lib/backup/mailbox.org
|
|
||||||
|
|
||||||
[Repository mailbox-remote]
|
|
||||||
type = IMAP
|
|
||||||
remotehost = imap.mailbox.org
|
|
||||||
remoteuser = dadada@dadada.li
|
|
||||||
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
|
|
||||||
'';
|
|
||||||
|
|
||||||
home.file.".jjconfig.toml".source = ./jjconfig.toml;
|
|
||||||
#home.file.".config/halloy/config.toml".source = ./halloy.toml;
|
|
||||||
|
|
||||||
systemd.user.timers."backup-keepassxc" = {
|
systemd.user.timers."backup-keepassxc" = {
|
||||||
Unit.Description = "Backup password DB";
|
Unit.Description = "Backup password DB";
|
||||||
Timer = {
|
Timer = {
|
||||||
|
|
@ -172,268 +131,14 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file.".config/sway/config".text = with colors; ''
|
|
||||||
# Read `man 5 sway` for a complete reference.
|
|
||||||
|
|
||||||
### Variables
|
|
||||||
#
|
|
||||||
# Logo key. Use Mod1 for Alt.
|
|
||||||
set $mod Mod4
|
|
||||||
# Home row direction keys, like vim
|
|
||||||
set $left h
|
|
||||||
set $down j
|
|
||||||
set $up k
|
|
||||||
set $right l
|
|
||||||
# Your preferred terminal emulator
|
|
||||||
set $term foot
|
|
||||||
# Your preferred application launcher
|
|
||||||
# Note: pass the final command to swaymsg so that the resulting window can be opened
|
|
||||||
# on the original workspace that the command was run on.
|
|
||||||
set $menu fuzzel
|
|
||||||
set $wallpaper "~/lib/pictures/wallpaper.jpg"
|
|
||||||
|
|
||||||
### Idle configuration
|
|
||||||
#
|
|
||||||
# Example configuration:
|
|
||||||
#
|
|
||||||
exec swayidle -w \
|
|
||||||
timeout 300 'swaylock -f -i $wallpaper -s fill' \
|
|
||||||
timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
|
|
||||||
before-sleep 'swaylock -f -i $wallpaper -s fill'
|
|
||||||
#
|
|
||||||
# This will lock your screen after 300 seconds of inactivity, then turn off
|
|
||||||
# your displays after another 300 seconds, and turn your screens back on when
|
|
||||||
# resumed. It will also lock your screen before your computer goes to sleep.
|
|
||||||
|
|
||||||
input * {
|
|
||||||
xkb_layout eu
|
|
||||||
xkb_model pc105+inet
|
|
||||||
xkb_options caps:escape
|
|
||||||
drag_lock enabled
|
|
||||||
drag enabled
|
|
||||||
dwt enabled
|
|
||||||
tap enabled
|
|
||||||
tap_button_map lrm
|
|
||||||
natural_scroll enabled
|
|
||||||
}
|
|
||||||
|
|
||||||
### Key bindings
|
|
||||||
#
|
|
||||||
# Basics:
|
|
||||||
#
|
|
||||||
# Start a terminal
|
|
||||||
bindsym $mod+Return exec $term
|
|
||||||
|
|
||||||
# Kill focused window
|
|
||||||
bindsym $mod+Shift+q kill
|
|
||||||
|
|
||||||
# Start your launcher
|
|
||||||
bindsym $mod+d exec $menu
|
|
||||||
|
|
||||||
# Drag floating windows by holding down $mod and left mouse button.
|
|
||||||
# Resize them with right mouse button + $mod.
|
|
||||||
# Despite the name, also works for non-floating windows.
|
|
||||||
# Change normal to inverse to use left mouse button for resizing and right
|
|
||||||
# mouse button for dragging.
|
|
||||||
floating_modifier $mod normal
|
|
||||||
|
|
||||||
# Lock the screen
|
|
||||||
bindsym XF86Sleep exec 'swaylock -f -c ${background}'
|
|
||||||
bindsym $mod+End exec 'swaylock -f -c ${background}'
|
|
||||||
|
|
||||||
# Reload the configuration file
|
|
||||||
bindsym $mod+Shift+c reload
|
|
||||||
|
|
||||||
# Exit sway (logs you out of your Wayland session)
|
|
||||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
|
|
||||||
|
|
||||||
# Brightness
|
|
||||||
bindsym --locked XF86MonBrightnessDown exec light -U 10
|
|
||||||
bindsym --locked XF86MonBrightnessUp exec light -A 10
|
|
||||||
|
|
||||||
# Volume
|
|
||||||
bindsym --locked XF86AudioRaiseVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ +1%'
|
|
||||||
bindsym --locked XF86AudioLowerVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ -1%'
|
|
||||||
bindsym --locked XF86AudioMute exec 'pactl set-sink-mute @DEFAULT_SINK@ toggle'
|
|
||||||
|
|
||||||
#
|
|
||||||
# Moving around:
|
|
||||||
#
|
|
||||||
# Move your focus around
|
|
||||||
bindsym $mod+$left focus left
|
|
||||||
bindsym $mod+$down focus down
|
|
||||||
bindsym $mod+$up focus up
|
|
||||||
bindsym $mod+$right focus right
|
|
||||||
# Or use $mod+[up|down|left|right]
|
|
||||||
bindsym $mod+Left focus left
|
|
||||||
bindsym $mod+Down focus down
|
|
||||||
bindsym $mod+Up focus up
|
|
||||||
bindsym $mod+Right focus right
|
|
||||||
|
|
||||||
# Move the focused window with the same, but add Shift
|
|
||||||
bindsym $mod+Shift+$left move left
|
|
||||||
bindsym $mod+Shift+$down move down
|
|
||||||
bindsym $mod+Shift+$up move up
|
|
||||||
bindsym $mod+Shift+$right move right
|
|
||||||
# Ditto, with arrow keys
|
|
||||||
bindsym $mod+Shift+Left move left
|
|
||||||
bindsym $mod+Shift+Down move down
|
|
||||||
bindsym $mod+Shift+Up move up
|
|
||||||
bindsym $mod+Shift+Right move right
|
|
||||||
|
|
||||||
#
|
|
||||||
# Workspaces:
|
|
||||||
#
|
|
||||||
# Switch to workspace
|
|
||||||
bindsym $mod+1 workspace number 1
|
|
||||||
bindsym $mod+2 workspace number 2
|
|
||||||
bindsym $mod+3 workspace number 3
|
|
||||||
bindsym $mod+4 workspace number 4
|
|
||||||
bindsym $mod+5 workspace number 5
|
|
||||||
bindsym $mod+6 workspace number 6
|
|
||||||
bindsym $mod+7 workspace number 7
|
|
||||||
bindsym $mod+8 workspace number 8
|
|
||||||
bindsym $mod+9 workspace number 9
|
|
||||||
bindsym $mod+0 workspace number 10
|
|
||||||
# Move focused container to workspace
|
|
||||||
bindsym $mod+Shift+1 move container to workspace number 1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace number 2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace number 3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace number 4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace number 5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace number 6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace number 7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace number 8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace number 9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace number 10
|
|
||||||
# Note: workspaces can have any name you want, not just numbers.
|
|
||||||
# We just use 1-10 as the default.
|
|
||||||
|
|
||||||
#
|
|
||||||
# Layout stuff:
|
|
||||||
#
|
|
||||||
# You can "split" the current object of your focus with
|
|
||||||
# $mod+b or $mod+v, for horizontal and vertical splits
|
|
||||||
# respectively.
|
|
||||||
bindsym $mod+b splith
|
|
||||||
bindsym $mod+v splitv
|
|
||||||
|
|
||||||
# Switch the current container between different layout styles
|
|
||||||
bindsym $mod+s layout stacking
|
|
||||||
bindsym $mod+w layout tabbed
|
|
||||||
bindsym $mod+e layout toggle split
|
|
||||||
|
|
||||||
# Make the current focus fullscreen
|
|
||||||
bindsym $mod+f fullscreen
|
|
||||||
|
|
||||||
# Toggle the current focus between tiling and floating mode
|
|
||||||
bindsym $mod+Shift+space floating toggle
|
|
||||||
|
|
||||||
# Swap focus between the tiling area and the floating area
|
|
||||||
bindsym $mod+space focus mode_toggle
|
|
||||||
|
|
||||||
# Move focus to the parent container
|
|
||||||
bindsym $mod+a focus parent
|
|
||||||
|
|
||||||
#
|
|
||||||
# Font
|
|
||||||
#
|
|
||||||
font "pango:Jetbrains Mono 8"
|
|
||||||
|
|
||||||
#
|
|
||||||
# Scratchpad:
|
|
||||||
#
|
|
||||||
# Sway has a "scratchpad", which is a bag of holding for windows.
|
|
||||||
# You can send windows there and get them back later.
|
|
||||||
|
|
||||||
# Move the currently focused window to the scratchpad
|
|
||||||
bindsym $mod+Shift+minus move scratchpad
|
|
||||||
|
|
||||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
|
||||||
# If there are multiple scratchpad windows, this command cycles through them.
|
|
||||||
bindsym $mod+minus scratchpad show
|
|
||||||
|
|
||||||
#
|
|
||||||
# Resizing containers:
|
|
||||||
#
|
|
||||||
mode "resize" {
|
|
||||||
# left will shrink the containers width
|
|
||||||
# right will grow the containers width
|
|
||||||
# up will shrink the containers height
|
|
||||||
# down will grow the containers height
|
|
||||||
bindsym $left resize shrink width 10px
|
|
||||||
bindsym $down resize grow height 10px
|
|
||||||
bindsym $up resize shrink height 10px
|
|
||||||
bindsym $right resize grow width 10px
|
|
||||||
|
|
||||||
# Ditto, with arrow keys
|
|
||||||
bindsym Left resize shrink width 10px
|
|
||||||
bindsym Down resize grow height 10px
|
|
||||||
bindsym Up resize shrink height 10px
|
|
||||||
bindsym Right resize grow width 10px
|
|
||||||
|
|
||||||
# Return to default mode
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
}
|
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
#
|
|
||||||
# Status Bar:
|
|
||||||
#
|
|
||||||
# Read `man 5 sway-bar` for more information about this section.
|
|
||||||
bar {
|
|
||||||
position bottom
|
|
||||||
|
|
||||||
# When the status_command prints a new line to stdout, swaybar updates.
|
|
||||||
# The default just shows the current date and time.
|
|
||||||
status_command ~/.config/sway/status
|
|
||||||
|
|
||||||
colors {
|
|
||||||
statusline ${foreground}
|
|
||||||
background ${background}
|
|
||||||
inactive_workspace ${background}ee ${background}ee ${foreground}ee
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Gaps between multiple tiling windows
|
|
||||||
gaps inner 10
|
|
||||||
smart_gaps on
|
|
||||||
|
|
||||||
bindsym $mod+grave exec busctl --user call org.keepassxc.KeePassXC.MainWindow /keepassxc org.keepassxc.KeePassXC.MainWindow lockAllDatabases && swaylock -c #fdf6e3
|
|
||||||
|
|
||||||
# class border backgr. text indicator child_border
|
|
||||||
client.focused #${bright6} #${foreground} #${background} #${bright5} #${regular4}
|
|
||||||
client.focused_inactive #${regular0} #${regular0} #${foreground} #${bright5} #${regular0}
|
|
||||||
client.unfocused #${regular0} #${background} #${bright2} #${bright5} #${regular0}
|
|
||||||
client.urgent #${bright1} #${bright0} #${regular4} #${background} #${bright0}
|
|
||||||
client.placeholder #${background} #${bright2} #${foreground} #${background} #${bright2}
|
|
||||||
|
|
||||||
client.background #${foreground}
|
|
||||||
|
|
||||||
include /etc/sway/config.d/*
|
|
||||||
|
|
||||||
exec sleep 5; systemctl --user restart kanshi.service
|
|
||||||
exec sleep 5; swaymsg output '*' bg $wallpaper fill
|
|
||||||
'';
|
|
||||||
home.file.".config/sway/status".source = ./status;
|
|
||||||
home.file.".config/kanshi/config".text = ''
|
|
||||||
profile Laptop {
|
|
||||||
output eDP-1 enable
|
|
||||||
}
|
|
||||||
|
|
||||||
profile Docked {
|
|
||||||
output eDP-1 disable
|
|
||||||
output "LG Electronics LG HDR 4K 0x000354D1" {
|
|
||||||
enable
|
|
||||||
scale 1.4
|
|
||||||
position 0,0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
services.syncthing.enable = true;
|
services.syncthing.enable = true;
|
||||||
|
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Let Home Manager install and manage itself.
|
# Let Home Manager install and manage itself.
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
|
|
||||||
99
home/git.nix
Normal file
99
home/git.nix
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
allowedSigners = pkgs.writeTextFile {
|
||||||
|
name = "allowed-signers";
|
||||||
|
text = ''
|
||||||
|
dadada@dadada.li sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIKu+pA5Vy0QPHJMjn2S5DCsqKg2UvDhOsBwvvJLf4HbyAAAABHNzaDo= dadada <dadada@dadada.li>
|
||||||
|
dadada@dadada.li ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKRuecjbtDh4jyDZH3ccU9t0QFcAgZDBFO8ZWZBA9iT dadada@gorgon
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = {
|
||||||
|
commit = {
|
||||||
|
gpgSign = true;
|
||||||
|
verbose = true;
|
||||||
|
};
|
||||||
|
gpg = {
|
||||||
|
format = "ssh";
|
||||||
|
ssh.allowedSignersFile = "${allowedSigners}";
|
||||||
|
ssh.program = "ssh-keygen";
|
||||||
|
};
|
||||||
|
tag.gpgSign = true;
|
||||||
|
user = {
|
||||||
|
email = "dadada@dadada.li";
|
||||||
|
name = "Tim Schubert";
|
||||||
|
signingKey = "key::ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKRuecjbtDh4jyDZH3ccU9t0QFcAgZDBFO8ZWZBA9iT dadada@gorgon";
|
||||||
|
};
|
||||||
|
core = {
|
||||||
|
whitespace = {
|
||||||
|
tab-in-indent = true;
|
||||||
|
tabwidth = 4;
|
||||||
|
};
|
||||||
|
alias = { };
|
||||||
|
pager = "delta";
|
||||||
|
};
|
||||||
|
column.ui = "never";
|
||||||
|
checkout.defaultRemote = "origin";
|
||||||
|
delta = {
|
||||||
|
navigate = true; # use n and N to move between diff sections
|
||||||
|
side-by-side = false;
|
||||||
|
line-numbers = true;
|
||||||
|
light = true;
|
||||||
|
};
|
||||||
|
diff = {
|
||||||
|
renames = "copies";
|
||||||
|
algorithm = "histogram";
|
||||||
|
colorMoved = "default";
|
||||||
|
};
|
||||||
|
interactive.diffFilter = "delta --color-only";
|
||||||
|
merge = {
|
||||||
|
conflictstyle = "zdiff3";
|
||||||
|
keepbackup = false;
|
||||||
|
tool = "meld";
|
||||||
|
};
|
||||||
|
status = {
|
||||||
|
short = true;
|
||||||
|
branch = true;
|
||||||
|
showUntrackedFiled = "all";
|
||||||
|
};
|
||||||
|
log.date = "iso8601-local";
|
||||||
|
fetch.prune = true;
|
||||||
|
pull = {
|
||||||
|
prune = true;
|
||||||
|
ff = "only";
|
||||||
|
rebase = "interactive";
|
||||||
|
};
|
||||||
|
push = {
|
||||||
|
default = "current";
|
||||||
|
autoSetupRemote = true;
|
||||||
|
};
|
||||||
|
rebase = {
|
||||||
|
abbreviateCommands = true;
|
||||||
|
# Automatically force-update any branches that point to commits that are being rebased.
|
||||||
|
updateRefs = true;
|
||||||
|
};
|
||||||
|
rerere.enabled = true;
|
||||||
|
transfer.fsckobjects = true;
|
||||||
|
fetch.fsckobjects = true;
|
||||||
|
receive.fsckObjects = true;
|
||||||
|
branch.sort = "-committerdate";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
delta
|
||||||
|
git-lfs
|
||||||
|
gitAndTools.hub
|
||||||
|
gitAndTools.lab
|
||||||
|
gitAndTools.git-absorb
|
||||||
|
meld
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -9,7 +9,6 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.dadada.home.helix = {
|
options.dadada.home.helix = {
|
||||||
enable = lib.mkEnableOption "Enable helix editor";
|
|
||||||
package = lib.mkOption {
|
package = lib.mkOption {
|
||||||
type = lib.types.package;
|
type = lib.types.package;
|
||||||
description = "Helix editor package to use";
|
description = "Helix editor package to use";
|
||||||
|
|
@ -17,7 +16,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = {
|
||||||
home.file.".config/helix".source = ./config;
|
home.file.".config/helix".source = ./config;
|
||||||
home.packages = [
|
home.packages = [
|
||||||
cfg.package
|
cfg.package
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
[user]
|
|
||||||
name = "Tim Schubert"
|
|
||||||
email = "dadada@dadada.li"
|
|
||||||
|
|
||||||
[ui]
|
|
||||||
diff-editor = ["scm-diff-editor", "--dir-diff", "$left", "$right"]
|
|
||||||
diff-instructions = false
|
|
||||||
merge-editor = ["meld"]
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
modules' =
|
|
||||||
dir:
|
|
||||||
filterAttrs (name: type: (hasSuffix ".nix" name) || (type == "directory")) (builtins.readDir dir);
|
|
||||||
modules =
|
|
||||||
dir:
|
|
||||||
mapAttrs' (name: _: nameValuePair (removeSuffix ".nix" name) (import (dir + "/${name}"))) (
|
|
||||||
modules' dir
|
|
||||||
);
|
|
||||||
in
|
|
||||||
(modules ./modules)
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
# Colors (Solarized Light)
|
|
||||||
|
|
||||||
# Default colors
|
|
||||||
[colors.primary]
|
|
||||||
background = '#fdf6e3'
|
|
||||||
foreground = '#586e75'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
[colors.normal]
|
|
||||||
black = '#073642'
|
|
||||||
red = '#dc322f'
|
|
||||||
green = '#859900'
|
|
||||||
yellow = '#b58900'
|
|
||||||
blue = '#268bd2'
|
|
||||||
magenta = '#d33682'
|
|
||||||
cyan = '#2aa198'
|
|
||||||
white = '#eee8d5'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
[colors.bright]
|
|
||||||
black = '#002b36'
|
|
||||||
red = '#cb4b16'
|
|
||||||
green = '#586e75'
|
|
||||||
yellow = '#657b83'
|
|
||||||
blue = '#839496'
|
|
||||||
magenta = '#6c71c4'
|
|
||||||
cyan = '#93a1a1'
|
|
||||||
white = '#fdf6e3'
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.dadada.home.alacritty;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.alacritty = {
|
|
||||||
enable = mkEnableOption "Enable alacritty config";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = [
|
|
||||||
pkgs.jetbrains-mono
|
|
||||||
];
|
|
||||||
programs.alacritty = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
env.TERM = "xterm-256color";
|
|
||||||
scrolling.history = 0;
|
|
||||||
font = {
|
|
||||||
size = 9;
|
|
||||||
normal = {
|
|
||||||
family = "Jetbrains Mono";
|
|
||||||
style = "Regular";
|
|
||||||
};
|
|
||||||
bold = {
|
|
||||||
family = "Jetbrains Mono";
|
|
||||||
style = "Bold";
|
|
||||||
};
|
|
||||||
italic = {
|
|
||||||
family = "Jetbrains Mono";
|
|
||||||
style = "Italic";
|
|
||||||
};
|
|
||||||
bold_italic = {
|
|
||||||
family = "Jetbrains Mono";
|
|
||||||
style = "Bold Italic";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
shell.program = "tmux";
|
|
||||||
window.decorations = "none";
|
|
||||||
colors = (lib.trivial.importTOML ./colors.toml).colors;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.dadada.home.colors = mkOption {
|
|
||||||
type = types.attrs;
|
|
||||||
description = "Color scheme";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
|
||||||
dadada.home.colors = {
|
|
||||||
foreground = "#a3a3a3";
|
|
||||||
foregroundBold = "#e8e8e8";
|
|
||||||
cursor = "#e8e8e8";
|
|
||||||
cursorForeground = "#1f2022";
|
|
||||||
background = "#292b2e";
|
|
||||||
color0 = "#1f2022";
|
|
||||||
color8 = "#585858";
|
|
||||||
color7 = "#a3a3a3";
|
|
||||||
color15 = "#f8f8f8";
|
|
||||||
color1 = "#f2241f";
|
|
||||||
color9 = "#f2241f";
|
|
||||||
color2 = "#67b11d";
|
|
||||||
color10 = "#67b11d";
|
|
||||||
color3 = "#b1951d";
|
|
||||||
color11 = "#b1951d";
|
|
||||||
color4 = "#4f97d7";
|
|
||||||
color12 = "#4f97d7";
|
|
||||||
color5 = "#a31db1";
|
|
||||||
color13 = "#a31db1";
|
|
||||||
color6 = "#2d9574";
|
|
||||||
color14 = "#2d9574";
|
|
||||||
color16 = "#ffa500";
|
|
||||||
color17 = "#b03060";
|
|
||||||
color18 = "#282828";
|
|
||||||
color19 = "#444155";
|
|
||||||
color20 = "#b8b8b8";
|
|
||||||
color21 = "#e8e8e8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.dadada.home.direnv;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.direnv = {
|
|
||||||
enable = mkEnableOption "Enable direnv config";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,106 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.dadada.home.git;
|
|
||||||
allowedSigners = pkgs.writeTextFile {
|
|
||||||
name = "allowed-signers";
|
|
||||||
text = ''
|
|
||||||
dadada@dadada.li sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIKu+pA5Vy0QPHJMjn2S5DCsqKg2UvDhOsBwvvJLf4HbyAAAABHNzaDo= dadada <dadada@dadada.li>
|
|
||||||
dadada@dadada.li ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKRuecjbtDh4jyDZH3ccU9t0QFcAgZDBFO8ZWZBA9iT dadada@gorgon
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.git = {
|
|
||||||
enable = mkEnableOption "Enable git config";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = {
|
|
||||||
commit = {
|
|
||||||
gpgSign = true;
|
|
||||||
verbose = true;
|
|
||||||
};
|
|
||||||
gpg = {
|
|
||||||
format = "ssh";
|
|
||||||
ssh.allowedSignersFile = "${allowedSigners}";
|
|
||||||
ssh.program = "ssh-keygen";
|
|
||||||
};
|
|
||||||
tag.gpgSign = true;
|
|
||||||
user = {
|
|
||||||
email = "dadada@dadada.li";
|
|
||||||
name = "Tim Schubert";
|
|
||||||
signingKey = "key::ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKRuecjbtDh4jyDZH3ccU9t0QFcAgZDBFO8ZWZBA9iT dadada@gorgon";
|
|
||||||
};
|
|
||||||
core = {
|
|
||||||
whitespace = {
|
|
||||||
tab-in-indent = true;
|
|
||||||
tabwidth = 4;
|
|
||||||
};
|
|
||||||
alias = { };
|
|
||||||
pager = "delta";
|
|
||||||
};
|
|
||||||
column.ui = "never";
|
|
||||||
checkout.defaultRemote = "origin";
|
|
||||||
delta = {
|
|
||||||
navigate = true; # use n and N to move between diff sections
|
|
||||||
side-by-side = false;
|
|
||||||
line-numbers = true;
|
|
||||||
light = true;
|
|
||||||
};
|
|
||||||
diff = {
|
|
||||||
renames = "copies";
|
|
||||||
algorithm = "histogram";
|
|
||||||
colorMoved = "default";
|
|
||||||
};
|
|
||||||
interactive.diffFilter = "delta --color-only";
|
|
||||||
merge = {
|
|
||||||
conflictstyle = "zdiff3";
|
|
||||||
keepbackup = false;
|
|
||||||
tool = "meld";
|
|
||||||
};
|
|
||||||
status = {
|
|
||||||
short = true;
|
|
||||||
branch = true;
|
|
||||||
showUntrackedFiled = "all";
|
|
||||||
};
|
|
||||||
log.date = "iso8601-local";
|
|
||||||
fetch.prune = true;
|
|
||||||
pull = {
|
|
||||||
prune = true;
|
|
||||||
ff = "only";
|
|
||||||
rebase = "interactive";
|
|
||||||
};
|
|
||||||
push = {
|
|
||||||
default = "current";
|
|
||||||
autoSetupRemote = true;
|
|
||||||
};
|
|
||||||
rebase = {
|
|
||||||
abbreviateCommands = true;
|
|
||||||
# Automatically force-update any branches that point to commits that are being rebased.
|
|
||||||
updateRefs = true;
|
|
||||||
};
|
|
||||||
rerere.enabled = true;
|
|
||||||
transfer.fsckobjects = true;
|
|
||||||
fetch.fsckobjects = true;
|
|
||||||
receive.fsckObjects = true;
|
|
||||||
branch.sort = "-committerdate";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
delta
|
|
||||||
git-lfs
|
|
||||||
gitAndTools.hub
|
|
||||||
gitAndTools.lab
|
|
||||||
gitAndTools.git-absorb
|
|
||||||
meld
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.dadada.home.gpg;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.gpg = {
|
|
||||||
enable = mkEnableOption "Enable GnuPG config";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.gpg = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
fixed-list-mode = true;
|
|
||||||
keyid-format = "0xlong";
|
|
||||||
verify-options = "show-uid-validity";
|
|
||||||
list-options = "show-uid-validity";
|
|
||||||
cert-digest-algo = "SHA256";
|
|
||||||
use-agent = true;
|
|
||||||
keyserver = "hkps://keys.openpgp.org";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.gpg-agent = {
|
|
||||||
enable = true;
|
|
||||||
defaultCacheTtl = 1800;
|
|
||||||
enableSshSupport = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.dadada.home.gtk;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.gtk = {
|
|
||||||
enable = mkEnableOption "Enable GTK config";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.dadada.home.keyring;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.keyring = {
|
|
||||||
enable = mkEnableOption "Enable keyring config";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
services.gnome-keyring = {
|
|
||||||
enable = false;
|
|
||||||
components = [ "secrets" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.dadada.home.session;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.session = {
|
|
||||||
enable = mkEnableOption "Enable session variable management";
|
|
||||||
sessionVars = mkOption {
|
|
||||||
description = "Session variables";
|
|
||||||
type = types.attrs;
|
|
||||||
default = { };
|
|
||||||
example = ''
|
|
||||||
EDITOR = "hx";
|
|
||||||
PAGER = "less";
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.sessionVariables = cfg.sessionVars;
|
|
||||||
systemd.user.sessionVariables = cfg.sessionVars;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.dadada.home.ssh;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.ssh = {
|
|
||||||
enable = mkEnableOption "Enable SSH config";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.ssh = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.dadada.home.tmux;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.tmux = {
|
|
||||||
enable = mkEnableOption "Enable tmux config";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.tmux = {
|
|
||||||
enable = true;
|
|
||||||
terminal = "tmux-256color";
|
|
||||||
extraConfig = ''
|
|
||||||
setw -g mode-keys vi
|
|
||||||
set -g mouse on
|
|
||||||
set -g set-clipboard external
|
|
||||||
set -g set-titles on
|
|
||||||
set -g status on
|
|
||||||
set -ga terminal-overrides ',*256col*:Tc'
|
|
||||||
set-option -g status-interval 5
|
|
||||||
set-option -g automatic-rename on
|
|
||||||
set-option -g automatic-rename-format '#{b:pane_current_path}'
|
|
||||||
bind '"' split-window -c "#{pane_current_path}"
|
|
||||||
bind % split-window -h -c "#{pane_current_path}"
|
|
||||||
bind c new-window -c "#{pane_current_path}"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
apps = {
|
|
||||||
"x-scheme-handler/mailto" = "evolution.desktop";
|
|
||||||
"message/rfc822" = "evolution.desktop";
|
|
||||||
"x-scheme-handler/http" = "firefox.desktop";
|
|
||||||
"x-scheme-handler/https" = "firefox.desktop";
|
|
||||||
"x-scheme-handler/ftp" = "firefox.desktop";
|
|
||||||
"x-scheme-handler/chrome" = "firefox.desktop";
|
|
||||||
"text/html" = "firefox.desktop";
|
|
||||||
"application/x-extension-htm" = "firefox.desktop";
|
|
||||||
"application/x-extension-html" = "firefox.desktop";
|
|
||||||
"application/x-extension-shtml" = "firefox.desktop";
|
|
||||||
"application/xhtml+xml" = "firefox.desktop";
|
|
||||||
"application/x-extension-xhtml" = "firefox.desktop";
|
|
||||||
"application/x-extension-xht" = "firefox.desktop";
|
|
||||||
"application/pdf" = "evince.desktop";
|
|
||||||
};
|
|
||||||
cfg = config.dadada.home.xdg;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.xdg = {
|
|
||||||
enable = mkEnableOption "Enable XDG config";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
xdg = {
|
|
||||||
enable = true;
|
|
||||||
configHome = "${config.home.homeDirectory}/.config";
|
|
||||||
mimeApps = {
|
|
||||||
enable = false;
|
|
||||||
associations.added = apps;
|
|
||||||
defaultApplications = apps;
|
|
||||||
};
|
|
||||||
userDirs = {
|
|
||||||
desktop = "\$HOME/.desktop";
|
|
||||||
download = "\$HOME/tmp";
|
|
||||||
music = "\$HOME/lib/music";
|
|
||||||
videos = "\$HOME/lib/videos";
|
|
||||||
pictures = "\$HOME/lib/pictures";
|
|
||||||
documents = "\$HOME/lib";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
evince
|
|
||||||
firefox
|
|
||||||
xdg-utils
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,80 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
let
|
|
||||||
cfg = config.dadada.home.zsh;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.dadada.home.zsh = {
|
|
||||||
enable = mkEnableOption "Enable ZSH config";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.fzf.enableZshIntegration = true;
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
enableVteIntegration = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
autocd = true;
|
|
||||||
sessionVariables = {
|
|
||||||
EDITOR = "hx";
|
|
||||||
};
|
|
||||||
history = {
|
|
||||||
extended = true;
|
|
||||||
ignoreDups = true;
|
|
||||||
ignoreSpace = true;
|
|
||||||
save = 100000;
|
|
||||||
# FIXME https://github.com/junegunn/fzf/issues/4061
|
|
||||||
#share = true;
|
|
||||||
share = false;
|
|
||||||
};
|
|
||||||
plugins = [
|
|
||||||
];
|
|
||||||
initContent = ''
|
|
||||||
source ${pkgs.fzf}/share/fzf/key-bindings.zsh
|
|
||||||
source ${pkgs.fzf}/share/fzf/completion.zsh
|
|
||||||
eval "$(repo setup --root ~/src)"
|
|
||||||
|
|
||||||
bindkey -e '^n' autosuggest-accept
|
|
||||||
|
|
||||||
preexec() { echo -n -e "\033]0;$1\007" }
|
|
||||||
|
|
||||||
PROMPT="%F{red}%?%f %F{green}%m%f:%F{blue}%~%f"$'\n'"╰─> "
|
|
||||||
'';
|
|
||||||
profileExtra = '''';
|
|
||||||
shellAliases = {
|
|
||||||
ga = "git add";
|
|
||||||
gc = "git commit";
|
|
||||||
gd = "git diff";
|
|
||||||
gdw = "git diff --color-words";
|
|
||||||
gf = "git fetch";
|
|
||||||
gl = "git log";
|
|
||||||
gpu = "git push";
|
|
||||||
gpul = "git pull";
|
|
||||||
grb = "git rebase";
|
|
||||||
gre = "git reflog";
|
|
||||||
gs = "git status";
|
|
||||||
gsh = "git show";
|
|
||||||
gst = "git status";
|
|
||||||
gsta = "git stash";
|
|
||||||
gstap = "git stash apply";
|
|
||||||
exa = "eza";
|
|
||||||
ls = "exa";
|
|
||||||
la = "exa -a";
|
|
||||||
ll = "exa -la --no-filesize --changed --time-style=long-iso --git --octal-permissions --no-permissions --no-user --ignore-glob=\".git\"";
|
|
||||||
mv = "mv -i";
|
|
||||||
cp = "cp -i";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
fzf
|
|
||||||
eza
|
|
||||||
tmux
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,152 +1,84 @@
|
||||||
{ pkgs }:
|
{ pkgs }:
|
||||||
with pkgs;
|
with pkgs;
|
||||||
[
|
[
|
||||||
# anki
|
|
||||||
aqbanking
|
|
||||||
aria2
|
|
||||||
aspell
|
|
||||||
aspellDicts.de
|
|
||||||
aspellDicts.en
|
|
||||||
aspellDicts.en-computers
|
|
||||||
aspellDicts.en-science
|
|
||||||
bash
|
bash
|
||||||
bat # cat with syntax highlighting and git integration
|
bat # cat with syntax highlighting and git integration
|
||||||
binutils
|
binutils
|
||||||
bluez-tools
|
bluez-tools
|
||||||
btop # htop
|
|
||||||
choose # alternative to cut and awk with more readable syntax
|
|
||||||
chromium
|
chromium
|
||||||
colordiff
|
|
||||||
darcs
|
|
||||||
delta # feature-rich diff viewer
|
delta # feature-rich diff viewer
|
||||||
dig
|
dig
|
||||||
direnv
|
direnv
|
||||||
duf # disk usage
|
|
||||||
dune3d
|
|
||||||
dyff # diff tool for YAML
|
|
||||||
element-desktop
|
element-desktop
|
||||||
evince
|
|
||||||
evolution
|
|
||||||
ffmpeg
|
ffmpeg
|
||||||
file
|
file
|
||||||
fuzzel
|
|
||||||
fx # themable json viewer
|
|
||||||
fzf
|
|
||||||
fzf
|
fzf
|
||||||
gdb
|
gdb
|
||||||
gh
|
gh
|
||||||
ghidra-bin
|
|
||||||
gimp
|
gimp
|
||||||
glow
|
|
||||||
glow # render markdown
|
glow # render markdown
|
||||||
gnumake
|
gnumake
|
||||||
gnupg
|
gnupg
|
||||||
gping # ping with graphs
|
|
||||||
graphviz
|
|
||||||
grim
|
|
||||||
gron # make json grepable
|
|
||||||
halloy
|
halloy
|
||||||
hexyl # hex viewer
|
hexyl # hex viewer
|
||||||
htop
|
|
||||||
httpie
|
httpie
|
||||||
hub
|
|
||||||
hyperfine # A command-line benchmarking tool.
|
hyperfine # A command-line benchmarking tool.
|
||||||
icdiff
|
|
||||||
imagemagick
|
|
||||||
inkscape
|
inkscape
|
||||||
inotify-tools
|
inotify-tools
|
||||||
ioping # ping but for block devices
|
ioping # ping but for block devices
|
||||||
iproute2
|
iproute2
|
||||||
iputils # tracepath
|
iputils # tracepath
|
||||||
irssi
|
irssi
|
||||||
jameica
|
|
||||||
jc # convert output to json
|
|
||||||
josm
|
|
||||||
jq
|
jq
|
||||||
kanshi
|
|
||||||
keepassxc
|
keepassxc
|
||||||
kubetail
|
|
||||||
krita
|
krita
|
||||||
ldns
|
ldns
|
||||||
liboping # oping, ping multiple hosts at once
|
libreoffice
|
||||||
# FIXME: broken in nixpkgs
|
|
||||||
#libreoffice
|
|
||||||
libvirt
|
libvirt
|
||||||
lsof
|
lsof
|
||||||
lynis
|
|
||||||
man-pages
|
man-pages
|
||||||
mblaze
|
|
||||||
mkpasswd
|
|
||||||
mpv
|
mpv
|
||||||
mtr
|
mtr
|
||||||
mumble
|
mumble
|
||||||
nix-output-monitor
|
nix-output-monitor
|
||||||
ncurses
|
|
||||||
newsflash
|
|
||||||
nixd
|
nixd
|
||||||
nixfmt-rfc-style
|
nixfmt-rfc-style
|
||||||
nfs-utils
|
nfs-utils
|
||||||
niv
|
|
||||||
nix-index
|
|
||||||
nmap
|
nmap
|
||||||
nmon
|
|
||||||
nodePackages.prettier
|
|
||||||
map-cmd
|
map-cmd
|
||||||
obs-studio
|
obs-studio
|
||||||
obsidian
|
obsidian
|
||||||
offlineimap
|
|
||||||
openscad
|
openscad
|
||||||
openssl
|
openssl
|
||||||
p7zip
|
|
||||||
pandoc # document converter and templater
|
pandoc # document converter and templater
|
||||||
pass
|
pass
|
||||||
pavucontrol
|
pavucontrol
|
||||||
picocom
|
picocom
|
||||||
playerctl
|
|
||||||
procs # ps in rust
|
|
||||||
prusa-slicer
|
prusa-slicer
|
||||||
pv
|
pv
|
||||||
pwgen
|
|
||||||
(python3.withPackages (pkgs: [
|
(python3.withPackages (pkgs: [
|
||||||
pkgs.pandas
|
pkgs.pandas
|
||||||
pkgs.requests
|
pkgs.requests
|
||||||
]))
|
]))
|
||||||
ranger
|
ranger
|
||||||
reptyr
|
|
||||||
ripgrep
|
|
||||||
ripgrep
|
ripgrep
|
||||||
saleae-logic-2
|
saleae-logic-2
|
||||||
sd # search and displace like sed but with better syntax
|
|
||||||
sieveshell
|
sieveshell
|
||||||
signal-desktop
|
signal-desktop
|
||||||
silver-searcher
|
|
||||||
skim # fzf in Rust
|
|
||||||
slurp
|
|
||||||
socat
|
socat
|
||||||
# FIXME: broken in nixpkgs
|
|
||||||
#solvespace
|
|
||||||
spotify
|
|
||||||
sqlite
|
sqlite
|
||||||
sshfs-fuse
|
|
||||||
taplo
|
taplo
|
||||||
tcpdump
|
tcpdump
|
||||||
tdesktop
|
|
||||||
thunderbird
|
thunderbird
|
||||||
tmux
|
tmux
|
||||||
ttyd
|
|
||||||
unzip
|
unzip
|
||||||
usbutils
|
usbutils
|
||||||
vegur
|
|
||||||
virt-manager
|
virt-manager
|
||||||
viu # view images from the terminal
|
|
||||||
vscodium
|
|
||||||
whois
|
whois
|
||||||
wireshark
|
wireshark
|
||||||
xdg-utils
|
xdg-utils
|
||||||
xmlstarlet
|
xmlstarlet
|
||||||
unixtools.xxd
|
unixtools.xxd
|
||||||
xxh # portable shells
|
|
||||||
yt-dlp
|
yt-dlp
|
||||||
zk
|
|
||||||
zsh
|
zsh
|
||||||
]
|
]
|
||||||
|
|
|
||||||
138
home/status
138
home/status
|
|
@ -1,138 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import json
|
|
||||||
import sys
|
|
||||||
import time
|
|
||||||
import requests
|
|
||||||
import logging
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class Status:
|
|
||||||
def status(self):
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
class Cat(Status):
|
|
||||||
index = 0
|
|
||||||
|
|
||||||
def status(self):
|
|
||||||
cat_width = 200
|
|
||||||
index = self.index
|
|
||||||
catwalk = "🐈🏳️🌈" + " " * index
|
|
||||||
self.index = (index + 1) % cat_width
|
|
||||||
|
|
||||||
return {"full_text": catwalk}
|
|
||||||
|
|
||||||
|
|
||||||
class Space(Status):
|
|
||||||
backoff = 0
|
|
||||||
c_status = None
|
|
||||||
|
|
||||||
def status(self):
|
|
||||||
backoff = self.backoff
|
|
||||||
if self.backoff == 0:
|
|
||||||
self.update()
|
|
||||||
|
|
||||||
return {"full_text": self.c_status}
|
|
||||||
|
|
||||||
def update(self):
|
|
||||||
spacestatus_url = "https://status.stratum0.org/status.json"
|
|
||||||
resp = requests.get(url=spacestatus_url)
|
|
||||||
self.backoff = (self.backoff + 1) % 120
|
|
||||||
data = resp.json()
|
|
||||||
if data["isOpen"]:
|
|
||||||
since = datetime.strptime(data["since"], "%Y-%m-%dT%H:%M:%S.%f").strftime("%A at %H:%M")
|
|
||||||
spacestatus = f"Space is open since {since}"
|
|
||||||
else:
|
|
||||||
spacestatus = "Space is closed"
|
|
||||||
self.c_status = spacestatus
|
|
||||||
|
|
||||||
|
|
||||||
class Battery(Status):
|
|
||||||
capacity_file = open('/sys/class/power_supply/BAT0/capacity', 'r')
|
|
||||||
status_file = open('/sys/class/power_supply/BAT0/status', 'r')
|
|
||||||
|
|
||||||
def status(self):
|
|
||||||
self.status_file.seek(0)
|
|
||||||
status = self.status_file.read().rstrip()
|
|
||||||
|
|
||||||
self.capacity_file.seek(0)
|
|
||||||
capacity = self.capacity_file.read().rstrip()
|
|
||||||
|
|
||||||
battery = f"{status} {capacity}%"
|
|
||||||
|
|
||||||
return {"full_text": battery}
|
|
||||||
|
|
||||||
|
|
||||||
class Time(Status):
|
|
||||||
def status(self):
|
|
||||||
now = datetime.now()
|
|
||||||
match now.isocalendar().week % 10:
|
|
||||||
case 1:
|
|
||||||
th = "st"
|
|
||||||
case 2:
|
|
||||||
th = "nd"
|
|
||||||
case 3:
|
|
||||||
th = "rd"
|
|
||||||
case _:
|
|
||||||
th = "th"
|
|
||||||
return {"full_text": now.strftime(f"%V{th} %A %H:%M") }
|
|
||||||
|
|
||||||
|
|
||||||
class FailedUnits(Status):
|
|
||||||
def status(self):
|
|
||||||
proc = subprocess.run(["systemctl", "list-units", "--failed"], capture_output = True)
|
|
||||||
stdout = proc.stdout.decode('utf-8')
|
|
||||||
failed = 0
|
|
||||||
for line in stdout:
|
|
||||||
if 'failed' in line:
|
|
||||||
failed += 1
|
|
||||||
if failed == 0:
|
|
||||||
return {"full_text": f"No failed units"}
|
|
||||||
else:
|
|
||||||
return {"full_text": f"There are {failed} failed units", "color": "#ff0000"}
|
|
||||||
|
|
||||||
|
|
||||||
def print_header():
|
|
||||||
header = {
|
|
||||||
"version": 1,
|
|
||||||
"click_events": False,
|
|
||||||
}
|
|
||||||
print(json.dumps(header))
|
|
||||||
print("[")
|
|
||||||
|
|
||||||
|
|
||||||
def run(interval, widgets):
|
|
||||||
print_header()
|
|
||||||
|
|
||||||
while True:
|
|
||||||
body = []
|
|
||||||
|
|
||||||
for widget in widgets:
|
|
||||||
try:
|
|
||||||
status = widget.status()
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(e)
|
|
||||||
if status:
|
|
||||||
body += status,
|
|
||||||
|
|
||||||
print(json.dumps(body), ",", flush=True)
|
|
||||||
|
|
||||||
ts = interval - (time.time() % interval)
|
|
||||||
time.sleep(ts)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
|
||||||
|
|
||||||
# Interval in seconds
|
|
||||||
interval = 1.0
|
|
||||||
|
|
||||||
widgets = [Cat(), FailedUnits(), Space(), Battery(), Time()]
|
|
||||||
|
|
||||||
run(interval, widgets)
|
|
||||||
23
home/tmux.nix
Normal file
23
home/tmux.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.tmux = {
|
||||||
|
enable = true;
|
||||||
|
terminal = "tmux-256color";
|
||||||
|
extraConfig = ''
|
||||||
|
setw -g mode-keys vi
|
||||||
|
set -g mouse on
|
||||||
|
set -g set-clipboard external
|
||||||
|
set -g set-titles on
|
||||||
|
set -g status on
|
||||||
|
set -ga terminal-overrides ',*256col*:Tc'
|
||||||
|
set-option -g status-interval 5
|
||||||
|
set-option -g automatic-rename on
|
||||||
|
set-option -g automatic-rename-format '#{b:pane_current_path}'
|
||||||
|
bind '"' split-window -c "#{pane_current_path}"
|
||||||
|
bind % split-window -h -c "#{pane_current_path}"
|
||||||
|
bind c new-window -c "#{pane_current_path}"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
47
home/xdg.nix
Normal file
47
home/xdg.nix
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
apps = {
|
||||||
|
"x-scheme-handler/mailto" = "thunderbird.desktop";
|
||||||
|
"message/rfc822" = "thunderbird.desktop";
|
||||||
|
"x-scheme-handler/http" = "firefox.desktop";
|
||||||
|
"x-scheme-handler/https" = "firefox.desktop";
|
||||||
|
"x-scheme-handler/ftp" = "firefox.desktop";
|
||||||
|
"x-scheme-handler/chrome" = "firefox.desktop";
|
||||||
|
"text/html" = "firefox.desktop";
|
||||||
|
"application/x-extension-htm" = "firefox.desktop";
|
||||||
|
"application/x-extension-html" = "firefox.desktop";
|
||||||
|
"application/x-extension-shtml" = "firefox.desktop";
|
||||||
|
"application/xhtml+xml" = "firefox.desktop";
|
||||||
|
"application/x-extension-xhtml" = "firefox.desktop";
|
||||||
|
"application/x-extension-xht" = "firefox.desktop";
|
||||||
|
"application/pdf" = "okular.desktop";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
xdg = {
|
||||||
|
enable = true;
|
||||||
|
configHome = "${config.home.homeDirectory}/.config";
|
||||||
|
mimeApps = {
|
||||||
|
enable = false;
|
||||||
|
associations.added = apps;
|
||||||
|
defaultApplications = apps;
|
||||||
|
};
|
||||||
|
userDirs = {
|
||||||
|
desktop = "\$HOME/.desktop";
|
||||||
|
download = "\$HOME/tmp";
|
||||||
|
music = "\$HOME/lib/music";
|
||||||
|
videos = "\$HOME/lib/videos";
|
||||||
|
pictures = "\$HOME/lib/pictures";
|
||||||
|
documents = "\$HOME/lib";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
evince
|
||||||
|
firefox
|
||||||
|
xdg-utils
|
||||||
|
];
|
||||||
|
}
|
||||||
69
home/zsh.nix
Normal file
69
home/zsh.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
programs.fzf.enableZshIntegration = true;
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
enableVteIntegration = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
autocd = true;
|
||||||
|
sessionVariables = {
|
||||||
|
EDITOR = "hx";
|
||||||
|
};
|
||||||
|
history = {
|
||||||
|
extended = true;
|
||||||
|
ignoreDups = true;
|
||||||
|
ignoreSpace = true;
|
||||||
|
save = 100000;
|
||||||
|
# FIXME https://github.com/junegunn/fzf/issues/4061
|
||||||
|
#share = true;
|
||||||
|
share = false;
|
||||||
|
};
|
||||||
|
plugins = [
|
||||||
|
];
|
||||||
|
initContent = ''
|
||||||
|
source ${pkgs.fzf}/share/fzf/key-bindings.zsh
|
||||||
|
source ${pkgs.fzf}/share/fzf/completion.zsh
|
||||||
|
eval "$(repo setup --root ~/src)"
|
||||||
|
|
||||||
|
bindkey -e '^n' autosuggest-accept
|
||||||
|
|
||||||
|
preexec() { echo -n -e "\033]0;$1\007" }
|
||||||
|
|
||||||
|
PROMPT="%F{red}%?%f %F{green}%m%f:%F{blue}%~%f"$'\n'"╰─> "
|
||||||
|
'';
|
||||||
|
profileExtra = '''';
|
||||||
|
shellAliases = {
|
||||||
|
ga = "git add";
|
||||||
|
gc = "git commit";
|
||||||
|
gd = "git diff";
|
||||||
|
gdw = "git diff --color-words";
|
||||||
|
gf = "git fetch";
|
||||||
|
gl = "git log";
|
||||||
|
gpu = "git push";
|
||||||
|
gpul = "git pull";
|
||||||
|
grb = "git rebase";
|
||||||
|
gre = "git reflog";
|
||||||
|
gs = "git status";
|
||||||
|
gsh = "git show";
|
||||||
|
gst = "git status";
|
||||||
|
gsta = "git stash";
|
||||||
|
gstap = "git stash apply";
|
||||||
|
exa = "eza";
|
||||||
|
ls = "exa";
|
||||||
|
la = "exa -a";
|
||||||
|
ll = "exa -la --no-filesize --changed --time-style=long-iso --git --octal-permissions --no-permissions --no-user --ignore-glob=\".git\"";
|
||||||
|
mv = "mv -i";
|
||||||
|
cp = "cp -i";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
fzf
|
||||||
|
eza
|
||||||
|
tmux
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
{ pkgs, inputs, ... }:
|
{ pkgs, inputs, ... }:
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.sharedModules = pkgs.lib.attrValues inputs.self.hmModules;
|
|
||||||
home-manager.users.dadada = inputs.self.hmConfigurations.dadada;
|
home-manager.users.dadada = inputs.self.hmConfigurations.dadada;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,7 @@
|
||||||
# For debugging and troubleshooting Secure Boot.
|
# For debugging and troubleshooting Secure Boot.
|
||||||
pkgs.sbctl
|
pkgs.sbctl
|
||||||
# Framework embedded controller interface
|
# Framework embedded controller interface
|
||||||
# FIXME: build broken in nixpkgs
|
pkgs.fw-ectool
|
||||||
#pkgs.fw-ectool
|
|
||||||
];
|
];
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
|
|
@ -63,8 +62,7 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
vaapiVdpau
|
vaapiVdpau
|
||||||
# FIXME: broken in nixpkgs
|
libvdpau-va-gl
|
||||||
# libvdpau-va-gl
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,6 @@
|
||||||
}
|
}
|
||||||
))
|
))
|
||||||
// {
|
// {
|
||||||
hmModules = import ./home/modules.nix { lib = nixpkgs.lib; };
|
|
||||||
hmConfigurations = {
|
hmConfigurations = {
|
||||||
dadada = import ./home;
|
dadada = import ./home;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue