diff --git a/homes/x86_64-linux/harald@halo/default.nix b/homes/x86_64-linux/harald@halo/default.nix new file mode 100644 index 0000000..b007f30 --- /dev/null +++ b/homes/x86_64-linux/harald@halo/default.nix @@ -0,0 +1,88 @@ +{ config, ... }: +{ + home.sessionPath = [ + "$HOME/bin" + "$HOME/.local/share/JetBrains/Toolbox/scripts" + ]; + + metacfg = { + user = { + enable = true; + name = config.snowfallorg.user.name; + }; + cli-apps = { + bash.enable = true; + fish.enable = true; + neovim.enable = false; + bat.enable = true; + starship.enable = true; + home-manager.enable = true; + }; + tools = { + git.enable = true; + }; + gui.kbd.ellipsis = true; + }; + + fonts.fontconfig.enable = true; + + services.syncthing = { + enable = true; + tray.enable = true; + }; + + dconf.settings = { + # ... + "org/gnome/shell" = { + disable-user-extensions = false; + + # `gnome-extensions list` for a list + enabled-extensions = [ + "Vitals@CoreCoding.com" + "appindicatorsupport@rgcjonas.gmail.com" + "dash-to-panel@jderose9.github.com" + "hibernate-status@dromi" + "autohide-battery@sitnik.ru" + "clipboard-history@alexsaveau.dev" + ]; + + # dconf watch / + favorite-apps = [ + "org.wezfurlong.wezterm.desktop" + "jetbrains-toolbox.desktop" + "org.mozilla.firefox.desktop" + "firefox.desktop" + "thunderbird.desktop" + "org.mozilla.Thunderbird.desktop" + "slack.desktop" + "keybase.desktop" + "cider-2.desktop" + "org.gnome.Nautilus.desktop" + "virt-manager.desktop" + ]; + }; + "org/virt-manager/virt-manager/connections" = { + autoconnect = [ "qemu:///system" ]; + uris = [ "qemu:///system" ]; + }; + }; + + dconf.settings."org/gnome/desktop/input-sources".xkb-options = [ "mod:ellipsis" ]; + + xdg.enable = true; + xdg.mime.enable = true; + + xdg.configFile."wezterm/wezterm.lua".text = '' + local wezterm = require("wezterm") + local config = wezterm.config_builder() + local act = wezterm.action + + config.enable_kitty_keyboard = true + config.enable_scroll_bar = true + config.window_background_image = '${./terminal-background.png}' + + config.term = 'wezterm' + + return config + ''; +} diff --git a/homes/x86_64-linux/harald@halo/terminal-background.png b/homes/x86_64-linux/harald@halo/terminal-background.png new file mode 100644 index 0000000..81b7d53 Binary files /dev/null and b/homes/x86_64-linux/harald@halo/terminal-background.png differ diff --git a/systems/x86_64-linux/halo/default.nix b/systems/x86_64-linux/halo/default.nix new file mode 100644 index 0000000..798e99c --- /dev/null +++ b/systems/x86_64-linux/halo/default.nix @@ -0,0 +1,123 @@ +{ + pkgs, + lib, + ... +}: +with lib; +with lib.metacfg; +{ + imports = [ + ./hardware-configuration.nix + ./xremap.nix + ]; + + powerManagement.cpuFreqGovernor = "performance"; + + services.openssh = { + enable = true; + }; + + services.tailscale.enable = true; + services.resolved.enable = true; + + metacfg = { + hardware.wooting.enable = true; + base.enable = true; + gui.enable = true; + nix-ld.enable = true; + nix.enable = true; + podman.enable = true; + secureboot.enable = true; + homeprinter.enable = true; + build.enable = true; + + system = { + limits = { + enable = true; + nofileLimit = 32768; + memlockLimit = 32768; + }; + }; + + # User configuration + tools = { + direnv.enable = true; + }; + user.extraGroups = [ + "docker" + "dialout" + "tss" + ]; + system.kernelTweaks.enable = true; + }; + + system.autoUpgrade = { + enable = true; + operation = "boot"; + allowReboot = false; + }; + + nixpkgs.config.permittedInsecurePackages = [ + "electron-27.3.11" + ]; + + # Additional kernel tuning beyond the module defaults + boot.kernel.sysctl = { + # Reduce swap usage (you have zram) + "vm.swappiness" = 10; + # Prefer keeping directory/inode caches + "vm.vfs_cache_pressure" = 50; + # Faster dirty page writeback + "vm.dirty_ratio" = 10; + "vm.dirty_background_ratio" = 5; + }; + + # SSD TRIM support + services.fstrim = { + enable = true; + interval = "weekly"; + }; + + programs.steam = { + enable = true; + }; + + environment.systemPackages = with pkgs; [ + attic-client + azure-cli + claude-code + claude-desktop-with-fhs + desktop-file-utils + gnome-terminal + gnome-remote-desktop + gtypist + k9s + klavaro + kubectl + kubectx + logseq + nvtopPackages.amd + obsidian + piper-tts + tipp10 + uv + vscode + cider-2 + ]; + + # zram swap with zstd compression for better performance + zramSwap = { + algorithm = "zstd"; + memoryPercent = 50; + }; + + services.ratbagd.enable = true; + + virtualisation = { + libvirtd.enable = true; + docker.enable = true; + podman.dockerCompat = false; + }; + + system.stateVersion = "25.11"; +} diff --git a/systems/x86_64-linux/halo/hardware-configuration.nix b/systems/x86_64-linux/halo/hardware-configuration.nix new file mode 100644 index 0000000..1558c0c --- /dev/null +++ b/systems/x86_64-linux/halo/hardware-configuration.nix @@ -0,0 +1,54 @@ +# 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, + modulesPath, + ... +}: + +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ + "nvme" + "xhci_pci" + "thunderbolt" + "usbhid" + "uas" + "sd_mod" + "sdhci_pci" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/d22a1052-f142-44c0-993c-76b15c27b2b3"; + fsType = "ext4"; + options = [ "noatime" ]; + + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/EDA8-FB8B"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + /* + swapDevices = [ + { device = "/dev/disk/by-uuid/708a53d6-4e68-4587-96e4-aa5e2c1df51a"; } + ]; + */ + swapDevices = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/systems/x86_64-linux/halo/sound.nix b/systems/x86_64-linux/halo/sound.nix new file mode 100644 index 0000000..cbd1bc3 --- /dev/null +++ b/systems/x86_64-linux/halo/sound.nix @@ -0,0 +1,40 @@ +{ ... }: +{ + services.pipewire.wireplumber.extraConfig."51-audio-priorities" = { + "monitor.alsa.rules" = [ + { + matches = [ + { "node.name" = "alsa_output.pci-0000_73_00.1.hdmi-stereo"; } + ]; + actions = { + update-props = { + "priority.session" = 2000; + "priority.driver" = 2000; + }; + }; + } + { + matches = [ + { "node.name" = "alsa_output.usb-R__DE_Microphones_R__DE_NT-USB_Mini_6893EA23-00.analog-stereo"; } + ]; + actions = { + update-props = { + "priority.session" = 1500; + "priority.driver" = 1500; + }; + }; + } + { + matches = [ + { "node.name" = "alsa_output.usb-Generic_USB_Audio-00.HiFi__SPDIF__sink"; } + ]; + actions = { + update-props = { + "priority.session" = 1000; + "priority.driver" = 1000; + }; + }; + } + ]; + }; +} diff --git a/systems/x86_64-linux/halo/xremap.nix b/systems/x86_64-linux/halo/xremap.nix new file mode 100644 index 0000000..c28dd0a --- /dev/null +++ b/systems/x86_64-linux/halo/xremap.nix @@ -0,0 +1,21 @@ +{ ... }: +{ + metacfg.services.xremap = { + enable = true; + deviceNames = [ + "Hangsheng MonsGeek Keyboard" + "HS Galaxy100 Keyboard" + ]; + config = { + keymap = [ + { + remap = { + LeftAlt-C = "COPY"; + LeftAlt-V = "PASTE"; + LeftAlt-X = "CUT"; + }; + } + ]; + }; + }; +}