diff --git a/flake.nix b/flake.nix index 08b0504..2fe3958 100644 --- a/flake.nix +++ b/flake.nix @@ -37,6 +37,7 @@ specialArgs = { inherit inputs outputs; }; }; # ace = import ./hosts/ace/colmena.nix; + book = import ./hosts/book/colmena.nix; eve = import ./hosts/eve/colmena.nix; fred = import ./hosts/fred/colmena.nix; loki = import ./hosts/loki/colmena.nix; diff --git a/home/gui/files/sway/book b/home/gui/files/sway/book new file mode 100644 index 0000000..24667c9 --- /dev/null +++ b/home/gui/files/sway/book @@ -0,0 +1,357 @@ +# For Eve +set $mod Mod1 +set $terminal_path /home/don/bin/mynewterm +set $snd_sink alsa_output.usb-Corsair_CORSAIR_VOID_ELITE_Wireless_Gaming_Dongle-00.iec958-stereo + +set $lock /home/don/bin/lock.sh +exec_always sway-audio-idle-inhibit +exec swayidle -w \ + timeout 300 $lock \ + timeout 360 'swaymsg "output * dpms off"' \ + resume 'swaymsg "output * dpms on"' \ + before-sleep $lock + +floating_modifier $mod + +hide_edge_borders both +titlebar_border_thickness 0 +titlebar_padding 5 0 +font pango:JetBrains Mono 8 + +workspace_auto_back_and_forth yes + +set $laptop eDP-1 +output $laptop scale 1.7 +output * bg /home/don/nixos/hosts/fan-table-device-box-wallpaper.jpg fill +bindswitch --reload --locked lid:on output $laptop disable +bindswitch --reload --locked lid:off output $laptop enable + +title_align center +# Music control +bindsym XF86AudioPlay exec --no-startup-id control-music --pause +bindsym Control+Shift+F7 exec --no-startup-id control-music --pause +bindsym XF86AudioNext exec --no-startup-id control-music --next +bindsym XF86AudioPrev exec --no-startup-id control-music --prev +bindsym XF86AudioStop exec --no-startup-id control-music --stop + +# change volume or toggle mute +#bindsym XF86AudioRaiseVolume exec amixer -q -D pulse sset Master 5%+ && pkill -RTMIN+1 i3blocks +#bindsym XF86AudioLowerVolume exec amixer -q -D pulse sset Master 5%- && pkill -RTMIN+1 i3blocks +#bindsym XF86AudioMute exec amixer -q -D pulse sset Master toggle && pkill -RTMIN+1 i3blocks + +#bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set 10%+ +#bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 10%- +# Brightness +bindsym XF86MonBrightnessDown exec light -U 10 +bindsym XF86MonBrightnessUp exec light -A 10 + +# Volume +bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% +bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% +bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle +bindsym Control+Shift+F10 exec pactl set-sink-volume @DEFAULT_SINK@ +5% +bindsym Control+Shift+F9 exec pactl set-sink-volume @DEFAULT_SINK@ -5% +bindsym Control+Shift+F8 exec pactl set-sink-mute @DEFAULT_SINK@ toggle + +# start a terminal +bindsym $mod+Return exec --no-startup-id $HOME/bin/mynewterm + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +set $menu_command fuzzel +set $bemenu_options -i --nb "#3f3f3f" --nf "#dcdccc" -fn "pango:JetBrains Mono 8" +set $menu dmenu-wl_path | bemenu $bemenu_options| xargs swaymsg exec -- +bindsym $mod+Shift+d exec $menu + +# rofi app and window launchers +bindsym $mod+p exec --no-startup-id $menu +bindsym menu exec $menu_command +bindsym $mod+Shift+w exec dwifi +bindsym $mod+d exec --no-startup-id $menu +bindsym $mod+t exec --no-startup-id $HOME/bin/mynewterm -e ttmenu + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor 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 + +# split in horizontal orientation +bindsym $mod+Shift+h split h +# split in vertical orientation +bindsym $mod+Shift+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change gaps interactively +bindsym $mod+minus gaps inner current minus 2 +bindsym $mod+plus gaps inner current plus 2 + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +#bindsym $mod+Shift+f focus mode_toggle +bindsym $mod+Shift+F floating enable; resize set 590 px 333 px; sticky enable; move window to position 1330 px 745 px + +# switch to workspace +bindsym $mod+F1 workspace 1 +bindsym $mod+F2 workspace 2 +bindsym $mod+F3 workspace 3 +bindsym $mod+F4 workspace 4 +bindsym $mod+F5 workspace 5 +bindsym $mod+F6 workspace 6 +bindsym $mod+F7 workspace 7 +bindsym $mod+F8 workspace 8 +bindsym $mod+F9 workspace 9 +bindsym $mod+F10 workspace 10 + +# move focused container to workspace +bindsym $mod+Shift+F1 move container to workspace 1 +bindsym $mod+Shift+F2 move container to workspace 2 +bindsym $mod+Shift+F3 move container to workspace 3 +bindsym $mod+Shift+F4 move container to workspace 4 +bindsym $mod+Shift+F5 move container to workspace 5 +bindsym $mod+Shift+F6 move container to workspace 6 +bindsym $mod+Shift+F7 move container to workspace 7 +bindsym $mod+Shift+F8 move container to workspace 8 +bindsym $mod+Shift+F9 move container to workspace 9 +bindsym $mod+Shift+F10 move container to workspace 10 + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart sway inplace (preserves your layout/session, can be used to upgrade sway) +bindsym $mod+Shift+r reload +# exit sway (logs you out of your sway 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' + +# shortcuts for common system configuration tasks +bindsym $mod+Shift+s exec mate-control-center + +# Fancy logout +set $mode_system System (l) lock, (e) logout, (a) goaway, (s) suspend, (h) hibernate, (r) reboot, (CTRL+s) shutdown + +mode "$mode_system" { + bindsym l exec --no-startup-id $lock, mode "default" + bindsym e exec --no-startup-id swaymsg exit, mode "default" + bindsym a exec --no-startup-id $HOME/bin/goaway, mode "default" + bindsym s exec --no-startup-id systemctl suspend, mode "default" + bindsym h exec --no-startup-id systemctl hibernate, mode "default" + bindsym r exec --no-startup-id systemctl reboot, mode "default" + bindsym Ctrl+s exec --no-startup-id systemctl poweroff -i, mode "default" + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+BackSpace mode "$mode_system" +# resize window (you can also use the mouse for that) +mode "Resize Mode" { + # These bindings trigger as soon as you enter the resize mode + bindsym Left resize shrink width 6 px or 6 ppt + bindsym Down resize grow height 6 px or 6 ppt + bindsym Up resize shrink height 6 px or 6 ppt + bindsym Right resize grow width 6 px or 6 ppt + + bindsym Shift+Left resize shrink width 12 px or 12 ppt + bindsym Shift+Down resize grow height 12 px or 12 ppt + bindsym Shift+Up resize shrink height 12 px or 12 ppt + bindsym Shift+Right resize grow width 12 px or 12 ppt + + bindsym h resize shrink width 6 px or 6 ppt + bindsym k resize grow height 6 px or 6 ppt + bindsym j resize shrink height 6 px or 6 ppt + bindsym l resize grow width 6 px or 6 ppt + + bindsym Shift+h resize shrink width 12 px or 12 ppt + bindsym Shift+k resize grow height 12 px or 12 ppt + bindsym Shift+j resize shrink height 12 px or 12 ppt + bindsym Shift+l resize grow width 12 px or 12 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} +bindsym $mod+r mode "Resize Mode" + +# Disable titlebar +default_border none +default_floating_border pixel 1 + +# Only enable gaps on a workspace when there is at least one container +smart_gaps on + +# Enable popup during fullscreen +popup_during_fullscreen smart + +# window focus follows your mouse movements as the mouse crosses window borders +focus_follows_mouse yes + +# Configure the bar +bar { + swaybar_command waybar + position bottom + hidden_state hide + mode dock + modifier Mod4 +} + +# To get the app_id of the focused window use: +# $ sleep 2 ; swaymsg -t get_tree | jq -r '..|try select(.focused == true)' +assign [class="^Wfica$"] 3 +assign [class="zoom"] 5 +assign [title="^Zoom"] 5 +assign [class="^mpv$"] 9 +assign [app_id="^mpv$"] 9 +assign [app_id="sublime-music"] 9 +assign [app_id="Supersonic"] 9 +assign [class="Supersonic"] 9 +assign [class="Sonixd"] 9 +assign [app_id="firefox"] 2 +assign [app_id="org.qutebrowser.qutebrowser"] 2 +assign [class="^darktable$"] 4 +assign [class="^Darktable$"] 4 +assign [app_id="^org.telegram.desktop"] 6 +assign [title="^Signal"] 6 +assign [title="^Tootle"] 6 +assign [title="^Element"] 6 +assign [app_id="thunderbird" instance="eminder"] floating enable +assign [class="^Slack$"] 6 +assign [class="^gotktrik$"] 6 +assign [app_id="org.jellyfin."] 8 +assign [title="Jellyfin Media Player"] 8 + +for_window { + #[class="^Authy Desktop$"] floating enable + [title="ttmenu"] move scratchpad + #[class="^Slack$"] floating enable + #[class="^Slack$"] move scratchpad + [class="evolution-alarm-notify"] sticky enable + [class="KTimer"] floating enable sticky enable + [class="feh"] floating enable sticky enable + #[class="obsidian"] floating enable + #[class="obsidian"] move scratchpad + [title="Reminders"] floating enable + [title="Reminders"] sticky enable + [title="^Print$"] floating disable +} + +input type:touchpad { + tap enabled + click_method clickfinger + middle_emulation enabled + dwt enabled + tap_button_map lrm +} +# Custom keys +bindsym $mod+Shift+n exec swaync-client -t -sw +bindsym $mod+m move scratchpad +bindsym $mod+Shift+m exec --no-startup-id "mua" +bindsym $mod+o scratchpad show +bindsym Mod4+l exec --no-startup-id "~/bin/lock.sh -m" +bindsym Mod4+Shift+l exec --no-startup-id "~/bin/lock.sh -m -t" +bindsym Mod4+w exec --no-startup-id "randbg-1" +bindsym $mod+Control+d exec --no-startup-id "dovideo.sh" +bindsym Mod4+Tab focus right +bindsym Mod4+Shift+Tab focus left + +bindsym $mod+Control+h move workspace to output left +bindsym $mod+Control+j move workspace to output down +bindsym $mod+Control+k move workspace to output up +bindsym $mod+Control+l move workspace to output right +bindsym $mod+Shift+Control+h move container to output left +bindsym $mod+Shift+Control+j move container to output down +bindsym $mod+Shift+Control+k move container to output up +bindsym $mod+Shift+Control+l move container to output right + +bindsym $mod+Shift+x floating enable, sticky enable, resize set 50 ppt 50 ppt, move position 0 px 0 px + +bindsym $mod+Shift+Return exec --no-startup-id $HOME/bin/myterm +bindsym $mod+x [urgent=latest] focus + +##-## # class border bground text indicator child_border +##-## client.focused #6272A4 #6272A4 #F8F8F2 #6272A4 #6272A4 +##-## client.focused_inactive #44475A #44475A #F8F8F2 #44475A #44475A +##-## client.unfocused #282A36 #282A36 #BFBFBF #282A36 #282A36 +##-## client.urgent #44475A #FF5555 #F8F8F2 #FF5555 #FF5555 +##-## client.placeholder #282A36 #282A36 #F8F8F2 #282A36 #282A36 + +# Set inner/outer gaps +gaps inner 0 +gaps outer 0 + +# Hide titlebar on windows: +default_border pixel 1 + +# Default Font +font pango:Noto Sans Regular 10 + +# Thin borders: +smart_borders on + +# Title format for windows +for_window [shell="xdg_shell"] title_format "%title (%app_id)" +for_window [shell="x_wayland"] title_format "%class - %title" + +# class border bground text indicator child_border +client.focused #6272A4 #6272A4 #F8F8F2 #6272A4 #6272A4 +client.focused_inactive #44475A #44475A #F8F8F2 #44475A #44475A +client.unfocused #282A36 #282A36 #BFBFBF #282A36 #282A36 +client.urgent #44475A #FF5555 #F8F8F2 #FF5555 #FF5555 +client.placeholder #282A36 #282A36 #F8F8F2 #282A36 #282A36 +client.background #F8F8F2 + +exec pasystray +exec_always keyctl link @u @s +exec shikane +exec wayland-pipewire-idle-inhibit +exec_always shikanectl reload +exec kitty --title ttmenu -e ttmenu-loop +seat * hide_cursor 8000 +exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK + +exec hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK +exec --no-startup-id udiskie --tray +exec wl-paste -t text --watch clipman store +exec configure-gtk +exec sonixd +exec dovideo.sh +exec auto-start +exec swaync +exec nm-applet +exec randbg +exec kdeconnect-indicator +exec myweb +exec myterm +exec headset-charge-indicator.py +exec blueberry-tray +exec ktimer +exec wlsunset -l 29.74 -L -95.77 diff --git a/hosts/book/colmena.nix b/hosts/book/colmena.nix new file mode 100644 index 0000000..d7a4e35 --- /dev/null +++ b/hosts/book/colmena.nix @@ -0,0 +1,7 @@ +{ inputs, outputs, lib, config, pkgs, ... }: { + imports = [ ./default.nix ]; + deployment = { + tags = [ "workstation" "intel" ]; + targetHost = "192.168.1.156"; + }; +} diff --git a/hosts/book/default.nix b/hosts/book/default.nix new file mode 100644 index 0000000..5623657 --- /dev/null +++ b/hosts/book/default.nix @@ -0,0 +1,26 @@ +{ inputs, outputs, lib, config, pkgs, ... }: { + imports = [ + inputs.nixos-hardware.nixosModules.google-pixelbook + ./hardware-configuration.nix + # ../disko/mmcblk.nix + ../workstation + ../workstation/kvm.nix + ../workstation/games + ../wm + ../../home/work + ]; + networking.hostName = "book"; + + roles = { + citrix.enable = false; + zoom.enable = true; + gui.enable = true; + kvm.enable = false; + games.enable = false; + }; + wm = { + sway.enable = true; + kde.enable = false; + # cosmic.enable = false; + }; +} diff --git a/hosts/book/hardware-configuration.nix b/hosts/book/hardware-configuration.nix new file mode 100644 index 0000000..8f7b379 --- /dev/null +++ b/hosts/book/hardware-configuration.nix @@ -0,0 +1,38 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: { + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot.initrd.availableKernelModules = + [ "xhci_pci" "usb_storage" "usbhid" "sd_mod" "sdhci_pci" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/mmcblk0p2"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/mmcblk0p1"; + fsType = "vfat"; + }; + + # swapDevices = + # [ { device = "/dev/disk/by-uuid/a7ae7629-f44f-4298-bf31-59c51cd95658"; } + # ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true; + + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = + lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/book/kernel.nix b/hosts/book/kernel.nix new file mode 100644 index 0000000..2b0b9a6 --- /dev/null +++ b/hosts/book/kernel.nix @@ -0,0 +1,11 @@ +{ config, pkgs, lib, ... }: { + boot.kernelPatches = lib.singleton { + name = "book-config"; + patch = null; + extraStructuredConfig = with lib.kernel; { + CROS_EC_I2C = module; + CROS_KBD_LED_BACKLIGHT = module; + I2C_HID_ACPI = yes; + }; + }; +}