diff --git a/flake.lock b/flake.lock index 1ca9e2d..448b667 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1702814335, - "narHash": "sha256-Qck7BAMi3eydzT1WFOzp/SgECetyPpOn1dLgmxH2ebQ=", + "lastModified": 1704498488, + "narHash": "sha256-yINKdShHrtjdiJhov+q0s3Y3B830ujRoSbHduUNyKag=", "owner": "nix-community", "repo": "home-manager", - "rev": "e4dba0bd01956170667458be7b45f68170a63651", + "rev": "51e44a13acea71b36245e8bd8c7db53e0a3e61ee", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1702780907, - "narHash": "sha256-blbrBBXjjZt6OKTcYX1jpe9SRof2P9ZYWPzq22tzXAA=", + "lastModified": 1704420045, + "narHash": "sha256-C36QmoJd5tdQ5R9MC1jM7fBkZW9zBUqbUCsgwS6j4QU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1e2e384c5b7c50dbf8e9c441a9e58d85f408b01f", + "rev": "c1be43e8e837b8dbee2b3665a007e761680f0c3d", "type": "github" }, "original": { @@ -38,11 +38,11 @@ }, "nur": { "locked": { - "lastModified": 1702902799, - "narHash": "sha256-KNTIeQ6gDVoX3QSW0tWgCVjvmJ3JO+FT8XwRxL9dZN0=", + "lastModified": 1704710672, + "narHash": "sha256-4lkd1XPxxr00kz+DXY0il6TG0pvK5Go3xkgISX1Gnks=", "owner": "nix-community", "repo": "nur", - "rev": "4561fa27240f2b30aeb1bfdc27162a32b77b0b8d", + "rev": "6b35830e8b50fd1c6cf096f74a76cb9c5e0793cc", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 08932c8..9994e9d 100644 --- a/flake.nix +++ b/flake.nix @@ -18,9 +18,10 @@ networking.hostName = "nova"; } ./system + ./system/hardware-nova.nix ./system/gnome.nix ./system/btrbk.nix - ./system/hardware-nova.nix + ./system/yubikey.nix ./system/alt.nix ]; }; diff --git a/home/alt.nix b/home/alt.nix index 0adb90f..5de2351 100644 --- a/home/alt.nix +++ b/home/alt.nix @@ -45,6 +45,7 @@ ./desktop ./firefox.nix ./foot.nix + ./tmux ]; programs.nix-index = { diff --git a/home/default.nix b/home/default.nix index 1e9ce3d..759b7d3 100644 --- a/home/default.nix +++ b/home/default.nix @@ -110,6 +110,7 @@ nodejs android-studio netlify-cli + appimage-run # secrets libsecret @@ -118,17 +119,18 @@ ]; imports = [ - ./desktop ./alias.nix - ./nvim - ./foot.nix - ./fish.nix - ./firefox.nix ./calendars.nix + ./desktop + ./firefox.nix + ./fish.nix + ./foot.nix ./mail - ./tex.nix + ./nvim ./openconnect.nix - ./R.nix + ./r.nix + ./tex.nix + ./tmux ]; programs.nix-index = { diff --git a/home/firefox.nix b/home/firefox.nix index c90f1f2..edc88d1 100644 --- a/home/firefox.nix +++ b/home/firefox.nix @@ -48,6 +48,7 @@ ublock-origin linkhints keepassxc-browser + libredirect ]; search = { force = true; diff --git a/home/foot.nix b/home/foot.nix index e6f7c68..f7147ec 100644 --- a/home/foot.nix +++ b/home/foot.nix @@ -5,7 +5,7 @@ enable = true; settings = { main = { - shell = "${pkgs.fish}/bin/fish -c 'tmux attach || tmux'"; + shell = "${pkgs.fish}/bin/fish -c 'tmux attach'"; pad = "22x22"; font = "JetBrains Mono:size=14"; initial-window-mode = "maximized"; diff --git a/home/R.nix b/home/r.nix similarity index 100% rename from home/R.nix rename to home/r.nix diff --git a/home/tmux/default.nix b/home/tmux/default.nix new file mode 100644 index 0000000..a8d6164 --- /dev/null +++ b/home/tmux/default.nix @@ -0,0 +1,55 @@ +{ config, pkgs, ... }: + +{ + programs.tmux = { + enable = true; + escapeTime = 0; + mouse = true; + newSession = true; + shell = "${pkgs.fish}/bin/fish"; + extraConfig = '' + # Key bindings + bind C-l next-window + bind C-h previous-window + bind C-b last-window + bind n new-window + bind C-n new-window -c '#{pane_current_path}' + bind v split-window -h + bind C-v split-window -hc '#{pane_current_path}' + bind s split-window -v + bind C-s split-window -vc '#{pane_current_path}' + bind h select-pane -L + bind j select-pane -D + bind k select-pane -U + bind l select-pane -R + bind c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" + bind C-c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" + + # Layouts + bind f source-file ~/.config/tmux/nnn.conf + bind R source-file ~/.config/tmux/rloft.conf + bind J source-file ~/.config/tmux/jekyll.conf + + # Unbind + unbind p + unbind '"' + unbind % + + # Eye candy + # set-option -g status-position top + set-option -g status-right "" + set-option -g status-left "" + set-option -g status-justify "centre" + set-option -g status-style fg=brightmagenta + set-option -g pane-border-style fg=brightwhite + set-option -g pane-active-border-style fg=magenta + set-option -g window-status-current-style fg=magenta + + # Some more specifics + set-option -g focus-events on + ''; + }; + xdg.configFile."tmux/nnn.conf".source = ./nnn.conf; + xdg.configFile."tmux/rloft.conf".source = ./rloft.conf; + xdg.configFile."tmux/jekyll.conf".source = ./jekyll.conf; +} diff --git a/home/tmux/jekyll.conf b/home/tmux/jekyll.conf new file mode 100644 index 0000000..8ecb9ee --- /dev/null +++ b/home/tmux/jekyll.conf @@ -0,0 +1,6 @@ +split-window -c '#{pane_current_path}' -h nix-shell +send-keys "jekyll serve" Enter +resize-pane -x 40% +split-pane -c '#{pane_current_path}' "git status; fish" +select-pane -L +rename-window "jekyll" diff --git a/home/tmux/nnn.conf b/home/tmux/nnn.conf new file mode 100644 index 0000000..d51a48d --- /dev/null +++ b/home/tmux/nnn.conf @@ -0,0 +1,2 @@ +new-window -c '#{pane_current_path}' nnn +rename-window 'nnn' diff --git a/home/tmux/rloft.conf b/home/tmux/rloft.conf new file mode 100644 index 0000000..400c102 --- /dev/null +++ b/home/tmux/rloft.conf @@ -0,0 +1,2 @@ +split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore +select-pane -l diff --git a/system/alt.nix b/system/alt.nix index f498644..ede4c84 100644 --- a/system/alt.nix +++ b/system/alt.nix @@ -2,13 +2,13 @@ { users.users.alt = { - isNormalUser = true; - description = "Alt"; + home = "/home/alt"; + isSystemUser = true; + group = "users"; + description = "Backup profile"; extraGroups = [ "networkmanager" ]; shell = pkgs.fish; }; - services.xserver.displayManager.gdm.settings.greeter.IncludeAll = false; - services.xserver.displayManager.gdm.settings.greeter.Exclude = "alt"; } diff --git a/system/default.nix b/system/default.nix index 273ca3f..4c01bdb 100644 --- a/system/default.nix +++ b/system/default.nix @@ -94,8 +94,6 @@ mullvad-vpn.enable = true; }; - services.udev.packages = [ pkgs.yubikey-personalization ]; - virtualisation.libvirtd.enable = true; programs.dconf.enable = true; diff --git a/system/yubikey.nix b/system/yubikey.nix new file mode 100644 index 0000000..f9a4406 --- /dev/null +++ b/system/yubikey.nix @@ -0,0 +1,19 @@ +{ config, pkgs, ... }: + +{ + services.udev = { + packages = [ pkgs.yubikey-personalization ]; + extraRules = '' + ACTION=="remove",\ + ENV{ID_BUS}=="usb",\ + ENV{ID_MODEL_ID}=="0407",\ + ENV{ID_VENDOR_ID}=="1050",\ + ENV{ID_VENDOR}=="Yubico",\ + RUN+="${pkgs.systemd}/bin/loginctl lock-sessions" + ''; + }; + security.pam.services = { + login.u2fAuth = true; + sudo.u2fAuth = true; + }; +}