summaryrefslogtreecommitdiff
path: root/hosts
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-10-25 21:07:06 +0700
committerpolwex <polwex@sortug.com>2025-10-25 21:07:06 +0700
commitdcf6ad1c5755e5acc40b3aa88315f7c335c7eb55 (patch)
treeb991cb97dfb6992d020b6d6a8f4442f329b18c56 /hosts
parent021a797c8116032a114ba78476d1769c55479b48 (diff)
p16p16
Diffstat (limited to 'hosts')
-rw-r--r--hosts/base.nix2
-rw-r--r--hosts/local/gui.nix5
-rw-r--r--hosts/local/keyboards/thinkpad-numpad.kbd102
-rw-r--r--hosts/local/niri.nix49
-rw-r--r--hosts/local/p16/configuration.nix68
-rw-r--r--hosts/local/p16/default.nix7
-rw-r--r--hosts/local/p16/home.nix61
-rw-r--r--hosts/local/p16/keyboard.nix42
-rw-r--r--hosts/local/sway.nix4
-rw-r--r--hosts/local/syncthing.nix54
-rw-r--r--hosts/pkgs.nix17
-rw-r--r--hosts/unfree.nix4
12 files changed, 333 insertions, 82 deletions
diff --git a/hosts/base.nix b/hosts/base.nix
index 054a967..0f574ea 100644
--- a/hosts/base.nix
+++ b/hosts/base.nix
@@ -28,12 +28,14 @@
"https://polwex.cachix.org"
"https://nix-community.cachix.org"
"https://nix-gaming.cachix.org"
+ "https://nixpkgs-wayland.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"polwex.cachix.org-1:6Qk8lW0wZ9omwmURpPQUEDUHAb6Nsb+f+pdH2hppBZY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="
+ "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
];
keep-outputs = true;
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";
+ # }
+ # ];
+ # };
+ };
+ };
+ };
+}
diff --git a/hosts/pkgs.nix b/hosts/pkgs.nix
index 436851a..0100e4f 100644
--- a/hosts/pkgs.nix
+++ b/hosts/pkgs.nix
@@ -55,9 +55,10 @@
#nixfmt
direnv
nix-direnv
- # devenv
+ cachix
+ devenv
devbox
- inputs.devenv.packages.${pkgs.system}.default
+ # inputs.devenv.packages.${pkgs.system}.default
bun
# scraping
python312Packages.yt-dlp
@@ -68,28 +69,22 @@
# electrum
# yacreader
- # ai stuff!
- # aider-chat
# inputs.yek.packages.x86_64-linux.default
- # python312Packages.google-generativeai
bun
- claude-code
- codex
nushell
ast-grep
diffsitter
- # inputs.gemini-cli.packages.x86_64-linux.default
#
- # ai
- lmstudio
]
++ lib.optionals pkgs.stdenv.isLinux [
# linuxKernel.packages.linux_latest_libre.cpupower
- gparted
+ parted
moreutils
busybox
usbutils
xdg-utils
+ exfat
+ exfatprogs
#hardware problems
lm_sensors
linuxKernel.packages.linux_hardened.cpupower
diff --git a/hosts/unfree.nix b/hosts/unfree.nix
index 30c4a62..9614aa8 100644
--- a/hosts/unfree.nix
+++ b/hosts/unfree.nix
@@ -13,8 +13,9 @@
# https://stackoverflow.com/questions/77585228/how-to-allow-unfree-packages-in-nix-for-each-situation-nixos-nix-nix-wit
environment.systemPackages = with pkgs; [
# opera
+ obsidian
spotify
- vscode
+ # vscode
# fonts
corefonts
# symbola
@@ -32,6 +33,7 @@
# fucking vscode requires this for github copilot
services.gnome.gnome-keyring.enable = true;
+
programs.steam = {
enable = true;
# package = pkgs.steam.override {