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": {
|
||||
"lastModified": 1759853171,
|
||||
"narHash": "sha256-uqbhyXtqMbYIiMqVqUhNdSuh9AEEkiasoK3mIPIVRhk=",
|
||||
"lastModified": 1760103600,
|
||||
"narHash": "sha256-R4cltQFceN3POiPhBu7aTKsrwqTiwo6zjzmitrHD80E=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "1a09eb84fa9e33748432a5253102d01251f72d6d",
|
||||
"rev": "bcccb01d0a353c028cc8cb3254cac7ebae32929e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -295,11 +295,11 @@
|
|||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1759582739,
|
||||
"narHash": "sha256-spZegilADH0q5OngM86u6NmXxduCNv5eX9vCiUPhOYc=",
|
||||
"lastModified": 1760106635,
|
||||
"narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "3441b5242af7577230a78ffb03542add264179ab",
|
||||
"rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -311,11 +311,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1759733170,
|
||||
"narHash": "sha256-TXnlsVb5Z8HXZ6mZoeOAIwxmvGHp1g4Dw89eLvIwKVI=",
|
||||
"lastModified": 1760038930,
|
||||
"narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "8913c168d1c56dc49a7718685968f38752171c3b",
|
||||
"rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -462,11 +462,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758728421,
|
||||
"narHash": "sha256-ySNJ008muQAds2JemiyrWYbwbG+V7S5wg3ZVKGHSFu8=",
|
||||
"lastModified": 1760120816,
|
||||
"narHash": "sha256-gq9rdocpmRZCwLS5vsHozwB6b5nrOBDNc2kkEaTXHfg=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "5eda4ee8121f97b218f7cc73f5172098d458f1d1",
|
||||
"rev": "761ae7aff00907b607125b2f57338b74177697ed",
|
||||
"type": "github"
|
||||
},
|
||||
"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,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
useFeatures = [
|
||||
"alacritty"
|
||||
#"emacs"
|
||||
"direnv"
|
||||
"git"
|
||||
"gpg"
|
||||
#"gtk"
|
||||
#"keyring"
|
||||
"tmux"
|
||||
"xdg"
|
||||
"zsh"
|
||||
"helix"
|
||||
];
|
||||
colors = {
|
||||
background = "fdf6e3";
|
||||
foreground = "657b83";
|
||||
|
|
@ -40,28 +26,38 @@ let
|
|||
in
|
||||
{
|
||||
imports = [
|
||||
./dconf.nix
|
||||
./git.nix
|
||||
./helix
|
||||
./tmux.nix
|
||||
./xdg.nix
|
||||
./zsh.nix
|
||||
];
|
||||
|
||||
home.stateVersion = "20.09";
|
||||
|
||||
programs.gpg.settings.default-key = "99658A3EB5CD7C13";
|
||||
|
||||
dadada.home =
|
||||
lib.attrsets.genAttrs useFeatures (useFeatures: {
|
||||
enable = true;
|
||||
})
|
||||
// {
|
||||
session = {
|
||||
enable = true;
|
||||
sessionVars = {
|
||||
home.sessionVariables = {
|
||||
EDITOR = "hx";
|
||||
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
|
||||
|
|
@ -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" = {
|
||||
Unit.Description = "Backup password DB";
|
||||
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;
|
||||
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
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
|
||||
{
|
||||
options.dadada.home.helix = {
|
||||
enable = lib.mkEnableOption "Enable helix editor";
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
description = "Helix editor package to use";
|
||||
|
|
@ -17,7 +16,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
config = {
|
||||
home.file.".config/helix".source = ./config;
|
||||
home.packages = [
|
||||
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 }:
|
||||
with pkgs;
|
||||
[
|
||||
# anki
|
||||
aqbanking
|
||||
aria2
|
||||
aspell
|
||||
aspellDicts.de
|
||||
aspellDicts.en
|
||||
aspellDicts.en-computers
|
||||
aspellDicts.en-science
|
||||
bash
|
||||
bat # cat with syntax highlighting and git integration
|
||||
binutils
|
||||
bluez-tools
|
||||
btop # htop
|
||||
choose # alternative to cut and awk with more readable syntax
|
||||
chromium
|
||||
colordiff
|
||||
darcs
|
||||
delta # feature-rich diff viewer
|
||||
dig
|
||||
direnv
|
||||
duf # disk usage
|
||||
dune3d
|
||||
dyff # diff tool for YAML
|
||||
element-desktop
|
||||
evince
|
||||
evolution
|
||||
ffmpeg
|
||||
file
|
||||
fuzzel
|
||||
fx # themable json viewer
|
||||
fzf
|
||||
fzf
|
||||
gdb
|
||||
gh
|
||||
ghidra-bin
|
||||
gimp
|
||||
glow
|
||||
glow # render markdown
|
||||
gnumake
|
||||
gnupg
|
||||
gping # ping with graphs
|
||||
graphviz
|
||||
grim
|
||||
gron # make json grepable
|
||||
halloy
|
||||
hexyl # hex viewer
|
||||
htop
|
||||
httpie
|
||||
hub
|
||||
hyperfine # A command-line benchmarking tool.
|
||||
icdiff
|
||||
imagemagick
|
||||
inkscape
|
||||
inotify-tools
|
||||
ioping # ping but for block devices
|
||||
iproute2
|
||||
iputils # tracepath
|
||||
irssi
|
||||
jameica
|
||||
jc # convert output to json
|
||||
josm
|
||||
jq
|
||||
kanshi
|
||||
keepassxc
|
||||
kubetail
|
||||
krita
|
||||
ldns
|
||||
liboping # oping, ping multiple hosts at once
|
||||
# FIXME: broken in nixpkgs
|
||||
#libreoffice
|
||||
libreoffice
|
||||
libvirt
|
||||
lsof
|
||||
lynis
|
||||
man-pages
|
||||
mblaze
|
||||
mkpasswd
|
||||
mpv
|
||||
mtr
|
||||
mumble
|
||||
nix-output-monitor
|
||||
ncurses
|
||||
newsflash
|
||||
nixd
|
||||
nixfmt-rfc-style
|
||||
nfs-utils
|
||||
niv
|
||||
nix-index
|
||||
nmap
|
||||
nmon
|
||||
nodePackages.prettier
|
||||
map-cmd
|
||||
obs-studio
|
||||
obsidian
|
||||
offlineimap
|
||||
openscad
|
||||
openssl
|
||||
p7zip
|
||||
pandoc # document converter and templater
|
||||
pass
|
||||
pavucontrol
|
||||
picocom
|
||||
playerctl
|
||||
procs # ps in rust
|
||||
prusa-slicer
|
||||
pv
|
||||
pwgen
|
||||
(python3.withPackages (pkgs: [
|
||||
pkgs.pandas
|
||||
pkgs.requests
|
||||
]))
|
||||
ranger
|
||||
reptyr
|
||||
ripgrep
|
||||
ripgrep
|
||||
saleae-logic-2
|
||||
sd # search and displace like sed but with better syntax
|
||||
sieveshell
|
||||
signal-desktop
|
||||
silver-searcher
|
||||
skim # fzf in Rust
|
||||
slurp
|
||||
socat
|
||||
# FIXME: broken in nixpkgs
|
||||
#solvespace
|
||||
spotify
|
||||
sqlite
|
||||
sshfs-fuse
|
||||
taplo
|
||||
tcpdump
|
||||
tdesktop
|
||||
thunderbird
|
||||
tmux
|
||||
ttyd
|
||||
unzip
|
||||
usbutils
|
||||
vegur
|
||||
virt-manager
|
||||
viu # view images from the terminal
|
||||
vscodium
|
||||
whois
|
||||
wireshark
|
||||
xdg-utils
|
||||
xmlstarlet
|
||||
unixtools.xxd
|
||||
xxh # portable shells
|
||||
yt-dlp
|
||||
zk
|
||||
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, ... }:
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.sharedModules = pkgs.lib.attrValues inputs.self.hmModules;
|
||||
home-manager.users.dadada = inputs.self.hmConfigurations.dadada;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,8 +49,7 @@
|
|||
# For debugging and troubleshooting Secure Boot.
|
||||
pkgs.sbctl
|
||||
# Framework embedded controller interface
|
||||
# FIXME: build broken in nixpkgs
|
||||
#pkgs.fw-ectool
|
||||
pkgs.fw-ectool
|
||||
];
|
||||
|
||||
hardware = {
|
||||
|
|
@ -63,8 +62,7 @@
|
|||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
vaapiVdpau
|
||||
# FIXME: broken in nixpkgs
|
||||
# libvdpau-va-gl
|
||||
libvdpau-va-gl
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@
|
|||
}
|
||||
))
|
||||
// {
|
||||
hmModules = import ./home/modules.nix { lib = nixpkgs.lib; };
|
||||
hmConfigurations = {
|
||||
dadada = import ./home;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue