diff --git a/disko/impermanence-tmpfs-luks.nix b/disko/impermanence-tmpfs-luks.nix new file mode 100644 index 0000000..e173639 --- /dev/null +++ b/disko/impermanence-tmpfs-luks.nix @@ -0,0 +1,82 @@ +{ + device ? throw "Set this to your disk device, e.g. /dev/sda", + ... +}: +{ + disko.devices = { + disk = { + main = { + type = "disk"; + device = device; + content = { + type = "gpt"; + partitions = { + ESP = { + label = "boot"; + name = "ESP"; + size = "512M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ + "defaults" + ]; + }; + }; + luks = { + size = "100%"; + label = "luks"; + content = { + type = "luks"; + name = "cryptroot"; + extraOpenArgs = [ + "--allow-discards" + "--perf-no_read_workqueue" + "--perf-no_write_workqueue" + ]; + # https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html + settings = {crypttabExtraOpts = ["fido2-device=auto" "token-timeout=10"];}; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/persist"; + }; + }; + }; + }; + }; + }; + }; + nodev = { + "/" = { + fsType = "tmpfs"; + mountOptions = [ "defaults" "size=8G" "mode=755" ]; + }; + }; + }; + + fileSystems."/persist" = { + depends = [ "/" ]; + neededForBoot = true; + }; + fileSystems."/nix" = { + device = "/persist/nix"; + options = [ "bind" ]; + depends = [ "/persist" ]; + neededForBoot = true; + }; + fileSystems."/tmp" = { + device = "/persist/tmp"; + options = [ "bind" ]; + depends = [ "/persist" ]; + neededForBoot = true; + }; + swapDevices = [{ + device = "/persist/swapfile"; + size = 64*1024; # 64 GB + }]; + + boot.resumeDevice = "/persist/swapfile"; +} diff --git a/flake.lock b/flake.lock index c8ab268..5f9850b 100644 --- a/flake.lock +++ b/flake.lock @@ -1119,6 +1119,22 @@ "type": "github" } }, + "nixos-hardware": { + "locked": { + "lastModified": 1752048960, + "narHash": "sha256-gATnkOe37eeVwKKYCsL+OnS2gU4MmLuZFzzWCtaKLI8=", + "owner": "NixOS", + "repo": "nixos-hardware", + "rev": "7ced9122cff2163c6a0212b8d1ec8c33a1660806", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixos-hardware", + "type": "github" + } + }, "nixos-wsl": { "inputs": { "flake-compat": "flake-compat_5", @@ -3699,6 +3715,7 @@ "nix-gaming": "nix-gaming", "nix-on-droid": "nix-on-droid", "nixos-facter-modules": "nixos-facter-modules", + "nixos-hardware": "nixos-hardware", "nixos-wsl": "nixos-wsl", "nixpkgs": "nixpkgs_12", "nixpkgs-master": "nixpkgs-master", diff --git a/flake.nix b/flake.nix index f52221f..2b0667c 100644 --- a/flake.nix +++ b/flake.nix @@ -69,6 +69,7 @@ niri-flake = { url = "github:sodiboo/niri-flake"; }; + nixos-hardware.url = "github:NixOS/nixos-hardware/master"; }; outputs = { @@ -137,6 +138,16 @@ allowUnfree = true; }; }; + kylekrein-framework12-pkgs = nixpkgs: import nixpkgs { + system = x86; + overlays = [ + inputs.beeengine.overlays.${x86} + ]; + config = { + allowBroken = true; + allowUnfree = true; + }; + }; kylekrein-mac-pkgs = nixpkgs: import nixpkgs { system = arm; overlays = [ @@ -201,6 +212,7 @@ hwconfig = { hostname = "kylekrein-homepc"; isLaptop = false; + hasTouchscreen = false; system = x86; useImpermanence = true; }; @@ -216,11 +228,34 @@ ./nixos/configuration.nix ]; }; + "kylekrein-framework12" = nixpkgs.lib.nixosSystem { + specialArgs = { + hwconfig = { + hostname = "kylekrein-framework12"; + isLaptop = true; + hasTouchscreen = true; + system = x86; + useImpermanence = true; + }; + inherit first-nixos-install; + inherit inputs; + unstable-pkgs = kylekrein-framework12-pkgs nixpkgs-unstable; + }; + + system = x86; + pkgs = kylekrein-framework12-pkgs nixpkgs; + modules = [ + (import ./disko/impermanence-tmpfs-luks.nix {device = "/dev/nvme0n1";}) + ./nixos/configuration.nix + inputs.nixos-hardware.nixosModules.framework-12-13th-gen-intel + ]; + }; "kylekrein-mac" = nixpkgs.lib.nixosSystem { specialArgs = { hwconfig = { hostname = "kylekrein-mac"; isLaptop = true; + hasTouchscreen = false; system = arm; useImpermanence = true; }; @@ -240,6 +275,7 @@ hwconfig = { hostname = "kylekrein-server"; isLaptop = false; + hasTouchscreen = false; system = x86; useImpermanence = false; }; @@ -259,6 +295,7 @@ hwconfig = { hostname = "kylekrein-wsl"; isLaptop = true; + hasTouchscreen = false; system = x86; useImpermanence = false; }; @@ -279,6 +316,7 @@ hwconfig = { hostname = "andrej-pc"; isLaptop = false; + hasTouchscreen = false; system = x86; useImpermanence = false; }; diff --git a/nixos/homes/kylekrein/lisgd-config.h b/nixos/homes/kylekrein/lisgd-config.h new file mode 100644 index 0000000..e272eda --- /dev/null +++ b/nixos/homes/kylekrein/lisgd-config.h @@ -0,0 +1,48 @@ +/* + distancethreshold: Minimum cutoff for a gestures to take effect + degreesleniency: Offset degrees within which gesture is recognized (max=45) + timeoutms: Maximum duration for a gesture to take place in miliseconds + orientation: Number of 90 degree turns to shift gestures by + verbose: 1=enabled, 0=disabled; helpful for debugging + device: Path to the /dev/ filesystem device events should be read from + gestures: Array of gestures; binds num of fingers / gesturetypes to commands + Supported gestures: SwipeLR, SwipeRL, SwipeDU, SwipeUD, + SwipeDLUR, SwipeURDL, SwipeDRUL, SwipeULDR +*/ + +unsigned int distancethreshold = 125; +unsigned int distancethreshold_pressed = 60; +unsigned int degreesleniency = 15; +unsigned int timeoutms = 800; +unsigned int orientation = 0; +unsigned int verbose = 0; +double edgesizeleft = 50.0; +double edgesizetop = 50.0; +double edgesizeright = 50.0; +double edgesizebottom = 50.0; +double edgessizecaling = 1.0; +char *device = "/dev/input/touchscreen"; + +//Gestures can also be specified interactively from the command line using -g +Gesture gestures[] = { + /* nfingers gesturetype command */ + //{1, SwipeLR, EdgeAny, DistanceAny, ActModeReleased, "niri msg action "}, + //{1, SwipeRL, EdgeAny, DistanceAny, ActModeReleased, + // "xdotool key --clearmodifiers Alt+Shift+r"}, + //{1, SwipeDLUR, EdgeAny, DistanceAny, ActModeReleased, "sxmo_vol.sh up"}, + //{1, SwipeURDL, EdgeAny, DistanceAny, ActModeReleased, "sxmo_vol.sh down"}, + //{1, SwipeDRUL, EdgeAny, DistanceAny, ActModeReleased, + // "sxmo_brightness.sh up"}, + //{1, SwipeULDR, EdgeAny, DistanceAny, ActModeReleased, + //"sxmo_brightness.sh down"}, + //{2, SwipeLR, EdgeAny, DistanceAny, ActModeReleased, + // "xdotool key --clearmodifiers Alt+e"}, + //{2, SwipeRL, EdgeAny, DistanceAny, ActModeReleased, + // "xdotool key --clearmodifiers Alt+r"}, + {2, SwipeDU, EdgeAny, DistanceAny, ActModeReleased, + "pidof wvkbd-mobintl || wvkbd-mobintl -l simple,special,emoji &"}, + {2, SwipeUD, EdgeAny, DistanceAny, ActModeReleased, + "pkill -9 -f wvkbd-mobintl"}, + {3, SwipeDU, EdgeAny, DistanceAny, ActModeReleased, + "niri msg action toggle-overview"}, +}; diff --git a/nixos/homes/kylekrein/lisgd.nix b/nixos/homes/kylekrein/lisgd.nix new file mode 100644 index 0000000..411b149 --- /dev/null +++ b/nixos/homes/kylekrein/lisgd.nix @@ -0,0 +1,2 @@ +{ pkgs }: +pkgs.lisgd.override { conf = ./lisgd-config.h; } diff --git a/nixos/homes/kylekrein/niri.nix b/nixos/homes/kylekrein/niri.nix index 926bbce..189afdd 100644 --- a/nixos/homes/kylekrein/niri.nix +++ b/nixos/homes/kylekrein/niri.nix @@ -24,7 +24,9 @@ libnotify hyprlock networkmanagerapplet - ]; + ] ++ lib.optionals (hwconfig.hasTouchscreen) (with pkgs;[ + wvkbd # https://github.com/jjsullivan5196/wvkbd + ]); programs.niri = { settings = { outputs = lib.mkIf (hwconfig.hostname == "kylekrein-homepc") { @@ -47,8 +49,14 @@ "25%" ]; }; + touchscreen-gestures = lib.mkIf (hwconfig.hasTouchscreen) { + command = [ + "${lib.getExe (import ./lisgd.nix { inherit pkgs; })}" #https://git.sr.ht/~mil/lisgd + ]; + }; in [ set-low-brightness + touchscreen-gestures { command = [ "${lib.getExe pkgs.networkmanagerapplet}" diff --git a/nixos/hosts/kylekrein-framework12/default.nix b/nixos/hosts/kylekrein-framework12/default.nix new file mode 100644 index 0000000..30fe44d --- /dev/null +++ b/nixos/hosts/kylekrein-framework12/default.nix @@ -0,0 +1,93 @@ +{ + options, + config, + pkgs, + unstable-pkgs, + lib, + hwconfig, + inputs, + ... +}: { + imports = [ + ../../hardware/nvidia + + ../../modules/niri + + ../../modules/libvirt + + ../../users/kylekrein + (import ../../modules/libvirt/user.nix {username = "kylekrein";}) + + ../../users/tania + ]; + sops.secrets."ssh_keys/${hwconfig.hostname}" = {}; + facter.reportPath = lib.mkForce null; + nixpkgs.overlays = [ + # Fixes java crash because of bind mount with impermanence when loading too many mods(ex. All The Mods 9) + (self: super: { + prismlauncher = pkgs.symlinkJoin { + name = "prismlauncher"; + paths = [ super.prismlauncher]; + buildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/prismlauncher --set HOME /persist/home/kylekrein + ''; + }; + }) + (self: super: { + bottles = pkgs.symlinkJoin { + name = "bottles"; + paths = [ super.bottles]; + buildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/bottles --set HOME /persist/home/kylekrein + ''; + }; + }) + ]; + environment.systemPackages = with pkgs; [ + blender + ladybird + prismlauncher + + #inputs.nix-gaming.packages.${pkgs.system}.star-citizen + ]; + + zramSwap = { + enable = true; # Hopefully? helps with freezing when using swap + }; + services.zerotierone = { + enable = true; + port = 9994; + joinNetworks = [ + "A84AC5C10AD269CA" + "db64858fed285e0f" + ]; + }; + #LLMs + services.ollama = { + enable = true; + loadModels = [ "qwq" "llama3.1" "qwen2.5-coder:7b" ]; + acceleration = "cuda"; + home = "/persist/ollama"; + user = "ollama"; + group = "ollama"; + }; + + boot.binfmt.emulatedSystems = [ "aarch64-linux" "riscv64-linux" ]; + + services.open-webui.enable = true; + #services.open-webui.package = unstable-pkgs.open-webui; + services.open-webui.openFirewall = false; + services.open-webui.host = "0.0.0.0"; + services.open-webui.stateDir = "/persist/open-webui"; + systemd.services.open-webui.serviceConfig.User = "ollama"; + systemd.services.open-webui.serviceConfig.Group = "ollama"; + systemd.services.open-webui.serviceConfig.DynamicUser = lib.mkForce false; + + #Chat host + networking.firewall.allowedTCPPorts = [ 80 443 22 8448 9993 8081] ++ [ config.services.zerotierone.port ]; + networking.firewall.allowedUDPPorts = [config.services.zerotierone.port]; + + systemd.network.wait-online.enable = lib.mkForce false; +} diff --git a/nixos/modules/sops/secrets/secrets.yaml b/nixos/modules/sops/secrets/secrets.yaml index 18081c8..9d4ccec 100644 --- a/nixos/modules/sops/secrets/secrets.yaml +++ b/nixos/modules/sops/secrets/secrets.yaml @@ -5,6 +5,7 @@ users: ssh_keys: kylekrein-mac: ENC[AES256_GCM,data:Gnh34OQWO6eQfNfyYZsVfvktknmZorQYF+lNMKYvV7XkKjZ3RQNHyJ3UWOX+sVwWdtF7EboXkBPdHvnyLvDVIyv7trxTU5IXQzOI+34AKfPHa828HuOLk0AclCmm6GcNq/X4dKTX5DADG4cE4/V+KtdjvSMtLX7I1cjlfsN7JzcsnjERbK8Q0pTMuA44IUdnh0odH9xFEP/f/hVZZZhc5vrMfAqSx3lQxCF62c0wJaorobsPSM7BTzorVgnMnc3zJRAlgQnCnAe306/6g4hurBteIVeGFhA8gSk1fjZh2fm0opo/lgvHRJOwfpvRWJGEedx7hEpjsDr8BRxeBc2OHaRO5UP+fYh8Qtki8ZeFUjr/psjRRz128Kr0C+NS0AByZtwg54d705uwsnf79jPdM1ewGryCcsxqYWCvT0174cIg3sLdQvPnESbV1zU+QsVskFZwYL+gLtzuAwExPW7cM12M/HS+Eb5xtWvRA46FZ/dnKFwQkUA/VgSi08eC5/EYg8dFBht9hDK+kiLPGHML8A6a3CoiMf0pd+DbdOxA21F0Tw==,iv:oEXxrvWosuiH2wSoSkP7YMwBQu3JKIhn/YeiaTL/UT4=,tag:XgBw2q/6LPWg2zuOC9Wb+w==,type:str] kylekrein-homepc: ENC[AES256_GCM,data:/7b7wHk9jX+2Gel3157KO4YHia+IyEurUic0BX9flNKdsjIyG/3N8lORAkIjwnPlFaN2VqGu6o1pFgW2dzkSAyATQIUeWpqL5rjxsG3mJ9/9TLh58Y7MIpFKx2r8AeUY0xEAhT1A4BCbnDMsneQtM9gBkgPdhhv6vVpe4XJS3n+dGPER/bQxxRbEt260EjxvL1OPf5C7Z7qNVhOzxNdgdJMQvXxyhRGlXRrrHFRdbw0nChStevgBL4+FoMuBFkqF/aJSoapwe8PNxp8z+Hk5Em+BQv/ieFcscESssCK1gSbvfz6MQyX+5ig+Gy+t28yy56/ir44PHwX47IOILzg7lABSvN+Uyt+sRKyBfx124hJjqgXf65YQ/fgknQt0NDKwZyP/gPSLC9HiLKdva/P9nuenfSnlLrGtfugejBAVQBMOP2HTp/ZKtveeKLVIzM7NLeHAw8ul1OL8OlOgyO3vhEkEVagLwtQYHqwoF7+z30TzTtGyDzuhohbhUH36D8BD/LTaPHxnnVIzWq/IBOmAU06U/EvS5x/JJtqMm8aaDFFEYA==,iv:+4umMhsr8s0IuiYuEdhDAOfLjAELEHbFVvWqaVyF2yQ=,tag:eE9gCZ3pC4wDLeMs5cQGZg==,type:str] + kylekrein-framework12: ENC[AES256_GCM,data:I9gMFXcLUd4xLUWcrvp2eYcMgkG48dmiRjobnSa2Emtq2dqK/H31KLkTuk6PQvY71YbwG41tdqYsFqKTQTxf7d7toDfnfuXxPUbI2dc2ps2LhpPJb9wTUKRgHtJNwPpMjQ5s7lumG9wltWhT1xMSZvthq1LBcgL4iYYmePLef0TBvExnkRohqn32H64RILhX2VrI8gAWoYU7PglbG3J4tyUH1+zB2t8G8MrEDTMjMIbXmP3tALFiGl/AeSRrvZaCLnm7I3bgkhWJIic2ZXsbEknR5to5jhSI99Tdm4U5R+HyX1LCWr55jxmMdafvdqQlaTeTrv8fu3e4k7rEVkT2XzLnChG3MOUskNLbTcKscHiilCkrFMwp7Qo2EgQIj4VxKqrr0Dp+xj1PPl0q7bTAejR1ijpdOIlpn+PE7A6mBoIMMUcUu2hApe/eWqEUpHs6jKU9r6w+k8+O7IcwHGS1KgAzTAGPjiDZeWVPdUdanC+p4lp6sqjf4+ZaFbinGZfWpCX8pIv3Yzszc4+8j7PTQtX9GkQDVP7HXUyZS+SOH/169A==,iv:dF5+s+26zmoy0fR72P+pvPikshPtqLYewMCrieRJWaQ=,tag:R4/9xHLmOLkDqZnXClSKIA==,type:str] services: conduwuit: ENC[AES256_GCM,data:1shEq67QJTkeqrfYSr/eYG7gYWH//5ey6XQ=,iv:hy5wQmue8qU4ALfn9BrNQLnsTk8BsVVXY/8bDj18mXk=,tag:h6+hL0HjgSzd15Kc7Zg4ng==,type:str] gitlab: @@ -18,10 +19,6 @@ services: activeRecordDeterministicKey: ENC[AES256_GCM,data:pJBZAL60XeCrW7CPx76WcWpsYOwlR4OWmIP/61vNL3k=,iv:t/YmnVFge6kLiQjXD6RKNn7r5Oy1Aeyi3ZIaP57Nhig=,tag:L4aU4h4KdbsSNDpgybaV3g==,type:str] oidcKeyBase: ENC[AES256_GCM,data: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,iv:P8C/7NUd1G/VbKz7iWjTVXxMFOxZQxX5d0V4Tj6KeCw=,tag:iq4s3ahqkmf4e7BffjlIcQ==,type:str] sops: - kms: [] - gcp_kms: [] - azure_kv: [] - hc_vault: [] age: - recipient: age1l8euy4w4nccrpdmfdfct468parcrulkqcts2jcljajs2as0k7passdv2x4 enc: | @@ -32,8 +29,7 @@ sops: M0hSNWNYbGM3a21McUVMaGNqWTdmNTQK3VRFV4EaC8K8AJi2PUt6TeBgueEmPLI8 Vdwwbh89+xD5xf4Zm0LctPRlxxM6diubv0gIZZPy/ZXZfiU32ZnM0w== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-05-22T17:54:01Z" - mac: ENC[AES256_GCM,data:Mh3pp3IQ+dqFaHY5ppptAS5Rgxhgq2V01/hbV+OPseh7kkHSoq78BEDD7O5W7XNW3EHFZO2T1snvmIfdCfMfI4fOovf54a/2H24C3DALf/CfNEPEPQ2kH6SXgfxGWq9tUnZrwPcaUgbAfbVF9TIjhByDSrMYrnBNOxZh9w0AkzE=,iv:WkUIlqW3IV5il4KYv7o/Vm/g4xrE68koxzx0MTayTbc=,tag:qwLOm137Z2xBqlxZLoE1tw==,type:str] - pgp: [] + lastmodified: "2025-07-13T17:05:12Z" + mac: ENC[AES256_GCM,data:hRjaoAb6ggQsrhMK5gDkVSqeKV2Mb2Yrmj8WuPM++UhHzCKVG3mE+uK2teTdbzpaU5+so2SJZuUvYRXVf8cK+2/NGz0ACkiWZ+DF0vbp/A0xW7NPZKhh1Uh3Q64ypKqDR4SsVpjn51FVl02/6k3yxi9bYnVzfdZkr6El3n8kzuE=,iv:I0frhCxpQW+tsPVFgOR/svmdrFpG3RXlSBN4OTO8mBw=,tag:4bY5wPuPMrgSkYW66TgAvA==,type:str] unencrypted_suffix: _unencrypted - version: 3.9.4 + version: 3.10.2 diff --git a/nixos/users/kylekrein/default.nix b/nixos/users/kylekrein/default.nix index 1f33747..619a792 100644 --- a/nixos/users/kylekrein/default.nix +++ b/nixos/users/kylekrein/default.nix @@ -22,6 +22,7 @@ in { openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGMt3PWVvmEL6a0HHTsxL4KMq1UGKFdzgX5iIkm6owGQ kylekrein@kylekrein-mac" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFDdxZ5OyGcfD1JwEa4RWw86HWZ2dKFR0syrRckl7EvG kylekrein@kylekrein-homepc" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA85Vz5ve3aDzgPbnKH6I4FaJQpcu1nRDR+/kBZiQsuZ kylekrein@kylekrein-framework12" ]; }; sops.secrets = {