diff options
Diffstat (limited to 'hosts/local')
| -rw-r--r-- | hosts/local/gui.nix | 5 | ||||
| -rw-r--r-- | hosts/local/keyboards/thinkpad-numpad.kbd | 102 | ||||
| -rw-r--r-- | hosts/local/niri.nix | 49 | ||||
| -rw-r--r-- | hosts/local/p16/configuration.nix | 68 | ||||
| -rw-r--r-- | hosts/local/p16/default.nix | 7 | ||||
| -rw-r--r-- | hosts/local/p16/home.nix | 61 | ||||
| -rw-r--r-- | hosts/local/p16/keyboard.nix | 42 | ||||
| -rw-r--r-- | hosts/local/sway.nix | 4 | ||||
| -rw-r--r-- | hosts/local/syncthing.nix | 54 |
9 files changed, 322 insertions, 70 deletions
diff --git a/hosts/local/gui.nix b/hosts/local/gui.nix index 26adeb1..a57ab1e 100644 --- a/hosts/local/gui.nix +++ b/hosts/local/gui.nix @@ -18,8 +18,6 @@ ffmpeg-full nv-codec-headers # - obsidian - # smplayer #browsers brave @@ -55,5 +53,8 @@ # xdg whatever bs glib # gio desktop-file-utils + # + xorg.xhost + gparted ]; } diff --git a/hosts/local/keyboards/thinkpad-numpad.kbd b/hosts/local/keyboards/thinkpad-numpad.kbd new file mode 100644 index 0000000..ed4bf8b --- /dev/null +++ b/hosts/local/keyboards/thinkpad-numpad.kbd @@ -0,0 +1,102 @@ +;; one liner comments ';;' +#| Multiline + comments |# + +(defcfg ;; For linux & by-id lists pluggable devices +;; If a key is not bound/left_empty(_) then it will fall back to the previous +;; layer's binding if not then default. +fallthrough true +;; To run system commands. You MIGHT face issues with tiling window managers due to command helpers. +;; allow-cmd true +;; use 'ls /dev/input/by-id/' for detachable keyboards and +;; 'ls /dev/input/by-path/' for builtin keyboards location' +input (device-file "/dev/input/by-id/usb-Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint-event-kbd") +;; Not sure what this does. Please check the docs. +output (uinput-sink "My KMonad output") +) + +;; This is the real representation of your actual keyboard. We haven't started +;; customizing layouts yet. +(defsrc + esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 home end insert del f13 f14 f15 f16 + ` 1 2 3 4 5 6 7 8 9 0 - = bspc nlck kp/ kp* kp- + tab q w e r t y u i o p [ ] \ kp7 kp8 kp9 kp+ + caps a s d f g h j k l ; ' ret kp4 kp5 kp6 + lsft z x c v b n m , . / rsft kp1 kp2 kp3 kprt + lctl lmet lalt spc ralt ssrq rctl pgup up pgdn kp0 kp. + left down rght +);; Aliases + +(defalias +;; Layer toggles +sym (layer-toggle syms) +sym2 (layer-toggle syms2) +cords (sticky-key 1000 (layer-toggle mods)) +;; +hrt (layer-switch homerowmods) +back (layer-switch qwerty) + +;; Homerow keys +a (tap-hold-next-release 280 a lctl) +s (tap-hold-next-release 280 s lalt) +d (tap-hold-next-release 280 d lmet) +f (tap-hold-next-release 280 f lsft) +;; +j (tap-hold-next-release 280 j rsft) +k (tap-hold-next-release 280 k lmet) +l (tap-hold-next-release 280 l lalt) +semi (tap-hold-next-release 280 ; rctl) + +;; button to launch brave browser +;; veeb (cmd-button "brave") +;; ssf (sticky-key 500 (layer-toggle rshift)) +;; rsf (layer-toggle rshift) +) + +;; The first custom layer is the one that gets activated when kmonad is started +(deflayer qwerty + esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 home end insert del = \( \) bspc + ` 1 2 3 4 5 6 7 8 9 0 - = bspc nlck kp/ kp* kp- + tab q w e r t y u i o p [ ] \ kp7 kp8 kp9 kp+ + esc a s d f g h j k l ; ' ret kp4 kp5 kp6 + @sym z x c v b n m , . / rsft kp1 kp2 kp3 kprt + lctl lmet lalt spc @cords ssrq @hrt pgup up pgdn kp0 kp. + left down rght +) +(deflayer homerowmods + esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 home end insert del = \( \) bspc + ` 1 2 3 4 5 6 7 8 9 0 - = bspc nlck kp/ kp* kp- + tab q w e r t y u i o p [ ] \ kp7 kp8 kp9 kp+ + esc @a @s @d @f g h @j @k @l @semi ' ret kp4 kp5 kp6 + @sym z x c v b n m , . / rsft kp1 kp2 kp3 kprt + caps lmet @sym spc lalt ssrq @back pgup up pgdn kp0 kp. + left down rght +) +(deflayer mods + esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 home end insert del = \( \) bspc + ` 1 2 3 4 5 6 7 8 9 0 - = bspc nlck kp/ kp* kp- + tab q w e r t y u i o p [ ] \ kp7 kp8 kp9 kp+ + esc lctl lalt lmet lsft g h rsft rmet ralt rctl ' ret kp4 kp5 kp6 + @sym z x c v b n m , . / rsft kp1 kp2 kp3 kprt + caps lmet @sym spc lalt ssrq @back pgup up pgdn kp0 kp. + left down rght +) +;; A layer dedicated to symbols +(deflayer syms + esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 home end insert del = \( \) bspc + ` 1 2 3 4 5 6 7 8 9 0 - = bspc nlck kp/ kp* kp- + tab q up e r t ! @ # $ % [ ] \ kp7 kp8 kp9 kp+ + esc left down right @sym2 g ' ^ & - = ' ret kp4 kp5 kp6 + @sym z x c v b \( [ { < \ rsft kp1 kp2 kp3 kprt + caps lmet @sym spc lalt ssrq @back pgup up pgdn kp0 kp. + left down rght +) +(deflayer syms2 + esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 home end insert del = \( \) bspc + ` 1 2 3 4 5 6 7 8 9 0 - = bspc nlck kp/ kp* kp- + tab q up e r t ! @ # $ % [ ] \ kp7 kp8 kp9 kp+ + esc left down right @sym2 g ` ~ * \_ + ' ret kp4 kp5 kp6 + @sym z x c v b \) ] } > | rsft kp1 kp2 kp3 kprt + caps lmet @sym spc lalt ssrq @back pgup up pgdn kp0 kp. + left down rght +) diff --git a/hosts/local/niri.nix b/hosts/local/niri.nix index 7db141e..be92df0 100644 --- a/hosts/local/niri.nix +++ b/hosts/local/niri.nix @@ -3,6 +3,9 @@ pkgs, ... }: { + # nixpkgs.overlays = [ + # inputs.nixpkgs-wayland.overlay + # ]; nixpkgs.config.packageOVerrides = pkgs: { intel-vaapi-driver = pkgs.intel-vaapi-driver.override {enableHybridCodec = true;}; vaapiIntel = pkgs.vaapiIntel.override {enableHybridCodec = true;}; @@ -64,23 +67,28 @@ }; }; environment.systemPackages = with pkgs; [ - quickshell - cosmic-panel + # niri specific + # xwayland + xwayland-satellite + # not used if using dank + # quickshell fuzzel + # hypridle + # hyprlock + # cliphist # - cliphist - hypridle - hyprlock - networkmanagerapplet - playerctl - qalculate-gtk - swaynotificationcenter - swayosd - syncthingtray - wl-clipboard - wl-clip-persist - wl-color-picker - wofi-power-menu + # networkmanagerapplet + # playerctl + # qalculate-gtk + # swaynotificationcenter + # swayosd + # syncthingtray + # wl-clipboard + # wl-clip-persist + # wl-color-picker + # wofi-power-menu + # + # cosmic-panel # xdg-utils # xdg-desktop-portal @@ -118,8 +126,8 @@ # gtk_engines # gsettings-desktop-schemas # lxappearance - # adwaita-qt - # adwaita-icon-theme + adwaita-qt + adwaita-icon-theme # libcamera # pipewire seems to want this # easyeffects # tigervnc @@ -132,9 +140,9 @@ # # speechd # # espeak-ng # # espeak-ng-data - # wineWowPackages.waylandFull - # libcamera # pipewire seems to want this - # tracy # cool system watcher + wineWowPackages.waylandFull + libcamera # pipewire seems to want this + # tracy # colinuxol system watcher ]; services.speechd.enable = true; @@ -152,6 +160,7 @@ fcitx5-configtool fcitx5-chinese-addons fcitx5-gtk + libsForQt5.fcitx5-qt ]; waylandFrontend = true; }; diff --git a/hosts/local/p16/configuration.nix b/hosts/local/p16/configuration.nix index e0b81ca..47d7aaa 100644 --- a/hosts/local/p16/configuration.nix +++ b/hosts/local/p16/configuration.nix @@ -5,49 +5,20 @@ inputs, pkgs, ... -}: -# let -# wrappers = -# inputs.wrapper-manager.lib.build -# { -# inherit pkgs; -# modules = [ -# ../../../wrappers/chromium -# ../../../wrappers/brave -# ../../../wrappers/zellij -# ../../../wrappers/alacritty -# ]; -# }; -# in -{ +}: { imports = [ # Include the results of the hardware scan. ../../base.nix ../../linux.nix # ../../syncthing.nix - # ../../unfree.nix - ../wayland.nix + ../../unfree.nix + ../niri.nix ../gui.nix - # ./keyboard.nix + ./keyboard.nix + ../syncthing.nix # ../android.nix ]; - # environment.systemPackages = [ - # wrappers - # ]; - # - - nixpkgs.config = { - allowUnfree = true; - }; - environment = { - etc = { - "sway/config".source = ./swayconfig; - "xdg/waybar/config".source = ./waybarconfig; - "xdg/waybar/styles.css".source = ./waybarstyle.css; - }; - }; - # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; @@ -57,7 +28,19 @@ networking = { hostName = "p16"; # Define your hostname. - firewall.enable = false; + # firewall = { + # allowedTCPPorts = [80 443]; + # allowedUDPPortRanges = [ + # { + # from = 4000; + # to = 4007; + # } + # { + # from = 8000; + # to = 8010; + # } + # ]; + # }; }; nix.settings.trusted-users = ["root" "y"]; @@ -65,23 +48,16 @@ time.timeZone = "Asia/Bangkok"; # time.timeZone = "Europe/Madrid"; - # List services that you want to enable: + services.fwupd.enable = true; + # environment.systemPackages = [pkgs.linuxKernel.packages.linux_6_17.tp_smapi]; + services.fprintd.enable = true; services.openssh.enable = true; services.openssh.ports = [5555]; - #flatpak - # services.flatpak.enable = true; - # xdg.portal.enable = true; - #/flatpak - # don't sleep if closed lid; - #services.logind.lidSwitchExternalPower = "ignore"; - #services.logind.lidSwitchDocked = "ignore"; - #services.logind.lidSwitch = "ignore"; - services.tailscale = { enable = true; - useRoutingFeatures = "both"; + useRoutingFeatures = "client"; }; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions diff --git a/hosts/local/p16/default.nix b/hosts/local/p16/default.nix index edd555a..2ce8fd6 100644 --- a/hosts/local/p16/default.nix +++ b/hosts/local/p16/default.nix @@ -3,4 +3,11 @@ inputs: [ inputs.nixos-hardware.nixosModules.lenovo-thinkpad-p16s-amd-gen4 ./hardware-configuration.nix ./configuration.nix + inputs.home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = {inputs = inputs;}; + home-manager.users.y = ./home.nix; + } ] diff --git a/hosts/local/p16/home.nix b/hosts/local/p16/home.nix new file mode 100644 index 0000000..99be68a --- /dev/null +++ b/hosts/local/p16/home.nix @@ -0,0 +1,61 @@ +{ + inputs, + config, + pkgs, + lib, + ... +}: { + imports = [ + inputs.niri.homeModules.niri + inputs.dankMaterialShell.homeModules.dankMaterialShell.default + inputs.dankMaterialShell.homeModules.dankMaterialShell.niri + ]; + # Home Manager needs a bit of information about you and the + # paths it should manage. + home.username = "y"; + home.homeDirectory = "/home/y"; + # xdg = { + # enable = true; + # autostart.enable = true; + # userDirs = { + # enable = true; + # createDirectories = true; + # }; + # portal = { + # enable = true; + # }; + # }; + + programs.dankMaterialShell = { + enable = true; + + enableClipboard = true; + enableSystemd = true; + enableSystemMonitoring = true; + enableVPN = true; + enableBrightnessControl = true; + # enableNightMode = true; + enableAudioWavelength = true; + enableCalendarEvents = true; + enableDynamicTheming = true; + }; + + # gtk.theme.package = pkgs.colloid-gtk-theme; + # gtk.theme.name = "Colloid"; + # gtk.iconTheme = { + # package = lib.mkForce pkgs.colloid-icon-theme; + # name = lib.mkForce "Colloid"; + # }; + # This value determines the Home Manager release that your + # configuration is compatible with. This helps avoid breakage + # when a new Home Manager release introduces backwards + # incompatible changes. + # + # You can update Home Manager without changing this value. See + # the Home Manager release notes for a list of state version + # changes in each release. + home.stateVersion = "25.05"; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; +} diff --git a/hosts/local/p16/keyboard.nix b/hosts/local/p16/keyboard.nix new file mode 100644 index 0000000..f6cfa8c --- /dev/null +++ b/hosts/local/p16/keyboard.nix @@ -0,0 +1,42 @@ +{_pkgs, ...}: { + services.logind.settings.Login = { + # don’t shutdown when power button is short-pressed + HandlePowerKey = "ignore"; + }; + + # config file keeps getting rewritten but I don't know by who + # i18n.inputMethod = { + # enable = true; + # type = "fcitx5"; + # fcitx5.addons = with pkgs; [ + # fcitx5-mozc + # # mozc-ut is better, wat do + # fcitx5-gtk + # libsForQt5.fcitx5-qt + # fcitx5-lua + # fcitx5-configtool + # fcitx5-rime + # ]; + # }; + environment.variables = { + QT_IM_MODULE = "fcitx"; + XMODIFIERS = "@im=fcitx"; + FCITX_SOCKET = "default"; + }; + + #kmonad + services.kmonad = { + enable = true; + keyboards = { + myKmonadOutput = { + device = "/dev/input/by-path/platform-i8042-serio-0-event-kbd"; + config = builtins.readFile ../keyboards/thinkpad-numpad.kbd; + }; + usbThinkpad = { + # device = "/dev/input/by-id/usb-Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint-event-kbd"; + device = "/dev/input/by-id/usb-Lenovo_TrackPoint_Keyboard_II-event-kbd"; + config = builtins.readFile ../keyboards/thinkpad-usb.kbd; + }; + }; + }; +} diff --git a/hosts/local/sway.nix b/hosts/local/sway.nix index 4a91216..0fb8020 100644 --- a/hosts/local/sway.nix +++ b/hosts/local/sway.nix @@ -43,8 +43,8 @@ playerctl blueman wdisplays - # inputs.waybar.packages.x86_64-linux.default - waybar + # inputs.waybar.packages.x86_64-linux.default + waybar glxinfo vulkan-tools glmark2 diff --git a/hosts/local/syncthing.nix b/hosts/local/syncthing.nix new file mode 100644 index 0000000..5497bc9 --- /dev/null +++ b/hosts/local/syncthing.nix @@ -0,0 +1,54 @@ +{ + inputs, + pkgs, + ... +}: { + services.syncthing = { + enable = true; + openDefaultPorts = true; + user = "y"; + dataDir = "/home/y/sync"; # default location for new folders + # configDir = "/home/myusername/.config/syncthing"; + key = "/home/y/sync/key.pem"; + cert = "/home/y/sync/cert.pem"; + settings = { + devices = { + "phone" = {id = "TOBQJTK-QWVMMCN-7SJWXTL-FUKM4FB-ZTLGEL7-KEBTTB3-PC3WZOO-FLBW5A2 ";}; + "laptop" = {id = "INHTOYO-WNCIVPD-M27N2DY-2PJWVCV-FWYOCTQ-AWHBVIJ-4PRVAWR-E7PUTQ4";}; + # "desktop" = {id = "DEVICE-ID-GOES-HERE";}; + }; + folders = { + "memes" = { + path = "/home/y/sync/memes"; + devices = ["phone" "laptop"]; + }; + "creds" = { + path = "/home/y/sync/creds"; + devices = ["phone" "laptop"]; + # By default, Syncthing doesn't sync file permissions. This line enables it for this folder. + # ignorePerms = false; + }; + "docs" = { + path = "/home/y/sync/docs"; + devices = ["phone" "laptop"]; + }; + # "Sensitive" = { + # path = "/home/myusername/Sensitive"; + # devices = [ + # # We trust this device to have access + # # to the decrypted contents of this folder. + # "device1" + # # We do not trust this device, but we want to have another + # # (encrypted) copy of the data for redundancy/backup/sync purposes. + # { + # name = "device2"; + # # encryptionPasswordFile is a path to a file containing the encryption password. + # # See below for information about managing secrets on NixOS. + # encryptionPasswordFile = "/run/secrets/st-sensitive-password"; + # } + # ]; + # }; + }; + }; + }; +} |
