From e8366cc6cc2c840099e12f86222c783f583204ff Mon Sep 17 00:00:00 2001 From: Tao Tien <29749622+taotien@users.noreply.github.com> Date: Wed, 18 Jun 2025 00:31:22 -0700 Subject: [PATCH] stufk; --- extras/dev.nix | 188 ++++++++-------- extras/gaming.nix | 34 +-- extras/uwuraid.nix | 6 + secrets/secrets.nix | 22 +- systems/BASED.nix | 1 + systems/NObangers.nix | 110 +++++----- systems/NOlaptop.nix | 198 ++++++++--------- users/tao.nix | 296 +++++++++++++------------- users/tao/HOME.nix | 484 +++++++++++++++++++++--------------------- 9 files changed, 677 insertions(+), 662 deletions(-) diff --git a/extras/dev.nix b/extras/dev.nix index c93cf53..c0889c5 100644 --- a/extras/dev.nix +++ b/extras/dev.nix @@ -1,105 +1,105 @@ {pkgs, ...}: { - environment.systemPackages = with pkgs; [ - # act - # asm-lsp - # bash-language-server - # digital - # etcher - # fontforge - # freecad - # git-cliff - # lua-language-server - # lychee # link checker - # markdown-oxide # markdown lsp - # quickemu - # radicle-node - # vulkan-loader - b3sum - delta - devenv - direnv - gh - hyperfine - jujutsu - just - lldb - mask - mprocs - nomachine-client - presenterm - qFlipper - qemu - sd - sshfs - taplo # toml lsp - tio - tokei # repo code stats - typos + environment.systemPackages = with pkgs; [ + # act + # asm-lsp + # bash-language-server + # digital + # etcher + # fontforge + # freecad + # git-cliff + # lua-language-server + # lychee # link checker + # markdown-oxide # markdown lsp + # quickemu + # radicle-node + # vulkan-loader + b3sum + delta + devenv + direnv + gh + hyperfine + jujutsu + just + lldb + mask + mprocs + nomachine-client + presenterm + qFlipper + qemu + sd + sshfs + taplo # toml lsp + tio + tokei # repo code stats + typos - # # databases - # sqlite - # sqls - # sqlx-cli - # sea-orm-cli - # rainfrog + # # databases + # sqlite + # sqls + # sqlx-cli + # sea-orm-cli + # rainfrog - # # arduino - # arduino-language-server - # arduino-cli - # pkgsCross.avr.buildPackages.gcc - # avrdude - # ravedude + # # arduino + # arduino-language-server + # arduino-cli + # pkgsCross.avr.buildPackages.gcc + # avrdude + # ravedude - # c - clang - clang-tools - gcc - gdb - gnumake + # c + clang + clang-tools + gcc + gdb + gnumake - # nix - nil - alejandra + # nix + nil + alejandra - # python - # pypy3 - python3 - uv - ruff + # python + # pypy3 + python3 + uv + ruff - # rust - cargo-binstall - bacon - cargo-expand - cargo-feature - cargo-generate - cargo-watch - elf2uf2-rs - flip-link - mdbook - mold-wrapped - probe-rs - rustup - rusty-man - sccache - trunk - wasm-bindgen-cli - ]; + # rust + cargo-binstall + bacon + cargo-expand + cargo-feature + cargo-generate + cargo-watch + elf2uf2-rs + flip-link + mdbook + mold-wrapped + probe-rs + rustup + rusty-man + sccache + trunk + wasm-bindgen-cli + ]; - hardware.flipperzero.enable = true; + hardware.flipperzero.enable = true; - services.udev.extraRules = '' - SUBSYSTEM == "tty", GROUP="dialout", ATTRS{interface}=="Black Magic GDB Server", SYMLINK+="ttyBmpGdb" - SUBSYSTEM == "tty", GROUP="dialout", ATTRS{interface}=="Black Magic UART Port", SYMLINK+="ttyBmpTarg" - ''; + services.udev.extraRules = '' + SUBSYSTEM == "tty", GROUP="dialout", ATTRS{interface}=="Black Magic GDB Server", SYMLINK+="ttyBmpGdb" + SUBSYSTEM == "tty", GROUP="dialout", ATTRS{interface}=="Black Magic UART Port", SYMLINK+="ttyBmpTarg" + ''; - virtualisation.docker = { - enable = true; - storageDriver = "btrfs"; - }; - # virtualisation.docker.rootless = { - # enable = true; - # setSocketVariable = true; - # }; - users.extraGroups.docker.members = ["tao"]; + virtualisation.docker = { + enable = true; + storageDriver = "btrfs"; + }; + # virtualisation.docker.rootless = { + # enable = true; + # setSocketVariable = true; + # }; + users.extraGroups.docker.members = ["tao"]; } diff --git a/extras/gaming.nix b/extras/gaming.nix index cdd51b4..23ebfdc 100644 --- a/extras/gaming.nix +++ b/extras/gaming.nix @@ -10,24 +10,24 @@ # else false; # in { - # programs.noisetorch.enable = true; - # aagl.url = "github:ezKEa/aagl-gtk-on-nix"; - # aagl.inputs.nixpkgs.follows = "nixpkgs"; + # programs.noisetorch.enable = true; + # aagl.url = "github:ezKEa/aagl-gtk-on-nix"; + # aagl.inputs.nixpkgs.follows = "nixpkgs"; - environment.systemPackages = with pkgs; [ - # parsec-bin - # yuzu # nintendo can suck the shit out of my asshole - gamemode - heroic - lutris - mangohud - prismlauncher - protonup-qt - r2modman - wine - temurin-jre-bin-17 - graalvm-ce - ]; + environment.systemPackages = with pkgs; [ + # parsec-bin + # yuzu # nintendo can suck the shit out of my asshole + gamemode + heroic + lutris + mangohud + prismlauncher + protonup-qt + r2modman + wine + temurin-jre-bin-17 + graalvm-ce + ]; networking.firewall.allowedTCPPorts = [25565]; diff --git a/extras/uwuraid.nix b/extras/uwuraid.nix index dab372d..784604f 100644 --- a/extras/uwuraid.nix +++ b/extras/uwuraid.nix @@ -22,6 +22,11 @@ where = "/mnt/uwuraid/everything"; }) (opts + // { + what = "//100.97.47.81/downloads"; + where = "/mnt/uwuraid/downloads"; + }) + (opts // { what = "//100.97.47.81/media"; where = "/mnt/uwuraid/media"; @@ -54,6 +59,7 @@ (opts // {where = "/mnt/uwuraid/anime";}) (opts // {where = "/mnt/uwuraid/backup";}) (opts // {where = "/mnt/uwuraid/everything";}) + (opts // {where = "/mnt/uwuraid/downloads";}) (opts // {where = "/mnt/uwuraid/media";}) # (opts // {where = "/mnt/uwuraid/isos";}) (opts // {where = "/mnt/uwuraid/photos";}) diff --git a/secrets/secrets.nix b/secrets/secrets.nix index 8f053cb..8fcf070 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -1,14 +1,14 @@ let - # get these from /etc/ssh - NOcomputer = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPv53GM1uDDOdRxIlHmpf6x2y13yT5bFDNyrgDGLAR1l"; - NOlaptop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILtdTREsBxzg/8s0lVCwL+r18qMP8glxAKaKEg+71I6m"; - NOmom = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGdPvIo0P00I27i9XQFngsklw/dSyoFs7EgRt7RvkbSq"; - NObangers = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGFLjWigGCzbpumo0WA8xXR0PAxSifyocOMNTFqfFLOq"; - systems = [NOcomputer NOlaptop NOmom NObangers]; + # get these from /etc/ssh + NOcomputer = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPv53GM1uDDOdRxIlHmpf6x2y13yT5bFDNyrgDGLAR1l"; + NOlaptop = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILtdTREsBxzg/8s0lVCwL+r18qMP8glxAKaKEg+71I6m"; + NOmom = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGdPvIo0P00I27i9XQFngsklw/dSyoFs7EgRt7RvkbSq"; + NObangers = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGFLjWigGCzbpumo0WA8xXR0PAxSifyocOMNTFqfFLOq"; + systems = [NOcomputer NOlaptop NOmom NObangers]; in { - "uwuraid.age".publicKeys = systems; - "syncthing-NOcomputer.age".publicKeys = systems; - "syncthing-NOlaptop.age".publicKeys = systems; - "syncthing-uwuraid.age".publicKeys = systems; - "password-tao.age".publicKeys = systems; + "uwuraid.age".publicKeys = systems; + "syncthing-NOcomputer.age".publicKeys = systems; + "syncthing-NOlaptop.age".publicKeys = systems; + "syncthing-uwuraid.age".publicKeys = systems; + "password-tao.age".publicKeys = systems; } diff --git a/systems/BASED.nix b/systems/BASED.nix index 79175d5..4eff892 100644 --- a/systems/BASED.nix +++ b/systems/BASED.nix @@ -88,6 +88,7 @@ users.users.root.openssh.authorizedKeys.keys = [ ]; programs.ssh.startAgent = true; + services.gnome.gcr-ssh-agent.enable = false; services.printing.enable = lib.mkDefault true; services.printing.drivers = with pkgs; lib.mkDefault [gutenprint gutenprintBin]; diff --git a/systems/NObangers.nix b/systems/NObangers.nix index d49e776..b301d6a 100644 --- a/systems/NObangers.nix +++ b/systems/NObangers.nix @@ -1,64 +1,64 @@ { - config, - pkgs, - lib, - ... + config, + pkgs, + lib, + ... }: { - environment.systemPackages = with pkgs; [ - raspberrypi-eeprom - ]; - programs.partition-manager.enable = false; + environment.systemPackages = with pkgs; [ + raspberrypi-eeprom + ]; + programs.partition-manager.enable = false; - services.printing.enable = false; - i18n.inputMethod.enable = false; + services.printing.enable = false; + i18n.inputMethod.enable = false; - services.desktopManager.plasma6.enable = false; + services.desktopManager.plasma6.enable = false; - hardware.raspberry-pi."4" = { - apply-overlays-dtmerge.enable = true; - bluetooth.enable = true; - fkms-3d.enable = true; - }; - - age.secrets.password-tao.file = ../secrets/syncthing-uwuraid.age; - users.users.tao = { - isNormalUser = true; - hashedPasswordFile = config.age.secrets.password-tao.path; - extraGroups = ["audio" "video" "wheel" "libvirtd" "dialout" "game"]; - shell = pkgs.nushell; - }; - - boot.loader.systemd-boot.enable = false; - boot.loader.efi.canTouchEfiVariables = false; - - # Configure for modesetting in the device tree - fileSystems = { - "/" = { - device = "/dev/disk/by-label/NIXOS_SD"; - fsType = "ext4"; - options = ["noatime"]; + hardware.raspberry-pi."4" = { + apply-overlays-dtmerge.enable = true; + bluetooth.enable = true; + fkms-3d.enable = true; }; - }; - nix.buildMachines = [ - { - hostName = "nolaptop"; - systems = ["x86_64-linux" "i686-linux"]; - supportedFeatures = [ - "benchmark" - "big-parallel" - "gccarch-znver4" - "kvm" - "nixos-test" - ]; - } - ]; - nix.extraOptions = '' - builders-use-substitutes = true - ''; - nix.distributedBuilds = true; + age.secrets.password-tao.file = ../secrets/syncthing-uwuraid.age; + users.users.tao = { + isNormalUser = true; + hashedPasswordFile = config.age.secrets.password-tao.path; + extraGroups = ["audio" "video" "wheel" "libvirtd" "dialout" "game"]; + shell = pkgs.nushell; + }; - networking.hostName = "NObangers"; - nixpkgs.hostPlatform = "aarch64-linux"; - system.stateVersion = "23.11"; + boot.loader.systemd-boot.enable = false; + boot.loader.efi.canTouchEfiVariables = false; + + # Configure for modesetting in the device tree + fileSystems = { + "/" = { + device = "/dev/disk/by-label/NIXOS_SD"; + fsType = "ext4"; + options = ["noatime"]; + }; + }; + + nix.buildMachines = [ + { + hostName = "nolaptop"; + systems = ["x86_64-linux" "i686-linux"]; + supportedFeatures = [ + "benchmark" + "big-parallel" + "gccarch-znver4" + "kvm" + "nixos-test" + ]; + } + ]; + nix.extraOptions = '' + builders-use-substitutes = true + ''; + nix.distributedBuilds = true; + + networking.hostName = "NObangers"; + nixpkgs.hostPlatform = "aarch64-linux"; + system.stateVersion = "23.11"; } diff --git a/systems/NOlaptop.nix b/systems/NOlaptop.nix index e6df49f..f4b7825 100644 --- a/systems/NOlaptop.nix +++ b/systems/NOlaptop.nix @@ -1,8 +1,8 @@ { - lib, - config, - pkgs, - ... + lib, + config, + pkgs, + ... }: # let # boostless = pkgs.pipewire.overrideAttrs (old: { @@ -13,110 +13,110 @@ # }); # in { - environment.etc."alsa-card-profile/analog-input-internal-mic.conf".source = ../extras/analog-input-internal-mic.conf; + environment.etc."alsa-card-profile/analog-input-internal-mic.conf".source = ../extras/analog-input-internal-mic.conf; - hardware.opengl.extraPackages = with pkgs; [ - amdvlk - ]; - hardware.opengl.extraPackages32 = with pkgs; [ - driversi686Linux.amdvlk - ]; - services.xserver.videoDrivers = [ - "amdgpu" - ]; + hardware.opengl.extraPackages = with pkgs; [ + amdvlk + ]; + hardware.opengl.extraPackages32 = with pkgs; [ + driversi686Linux.amdvlk + ]; + services.xserver.videoDrivers = [ + "amdgpu" + ]; - # services.pipewire.wireplumber.extraConfig = { - # "wireplumber.settings" = { - # "device.routes.default-source-volume" = 0.42; - # }; - # }; + # services.pipewire.wireplumber.extraConfig = { + # "wireplumber.settings" = { + # "device.routes.default-source-volume" = 0.42; + # }; + # }; - services.rsyslogd = { - enable = true; - extraConfig = '' - module(load="imudp") - input(type="imudp" port="514") + services.rsyslogd = { + enable = true; + extraConfig = '' + module(load="imudp") + input(type="imudp" port="514") - THENAS.* -/var/log/THENAS + THENAS.* -/var/log/THENAS + ''; + }; + + # nixpkgs.overlays = [ + # (final: prev: { + # libinput = prev.libinput.overrideAttrs (old: { + # patches = + # (old.patches or []) + # ++ [ + # ../extras/libinput-delay.patch + # ]; + # }); + # }) + # ]; + + environment.systemPackages = with pkgs; [ + fw-ectool + framework-tool + nvtopPackages.amd + lact + ]; + + systemd.services.lactd.wantedBy = ["multi-user.target"]; + + services.fwupd.enable = true; + services.tailscale.useRoutingFeatures = "client"; + systemd.services."backlight@backlight:amdgpu_bl2".enable = false; + + nix.buildMachines = [ + { + hostName = "nocomputer"; + systems = ["x86_64-linux" "i686-linux"]; + supportedFeatures = [ + "benchmark" + "big-parallel" + "gccarch-znver4" + "kvm" + "nixos-test" + ]; + } + ]; + nix.extraOptions = '' + builders-use-substitutes = true ''; - }; + nix.distributedBuilds = true; - # nixpkgs.overlays = [ - # (final: prev: { - # libinput = prev.libinput.overrideAttrs (old: { - # patches = - # (old.patches or []) - # ++ [ - # ../extras/libinput-delay.patch - # ]; - # }); - # }) - # ]; + services.udev.extraRules = '' + # ACTION=="add", SUBSYSTEM=="backlight", RUN+="${pkgs.coreutils}/bin/chgrp video /sys/class/backlight/%k/brightness" + # ACTION=="add", SUBSYSTEM=="backlight", RUN+="${pkgs.coreutils}/bin/chmod g+w /sys/class/backlight/%k/brightness" - environment.systemPackages = with pkgs; [ - fw-ectool - framework-tool - nvtopPackages.amd - lact - ]; + ACTION=="add|change", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0012", ATTR{power/wakeup}="disabled" + ACTION=="add|change", KERNEL=="i2c", SUBSYSTEM=="i2c", DEVPATH=="/sys/devices/platform/AMDI0010:03/i2c-1/i2c-PIXA3854:00", ATTR{power/wakeup}="disabled" - systemd.services.lactd.wantedBy = ["multi-user.target"]; + # ACTION=="add", SUBSYSTEM=="acpi", DRIVERS=="button", ATTRS{hid}=="PNP0C0D", ATTR{power/wakeup}="disabled" + # ACTION=="add", SUBSYSTEM=="serio", DRIVERS=="atkbd", ATTR{power/wakeup}="disabled" + # ACTION=="add", SUBSYSTEM=="i2c", DRIVERS=="i2c_hid_acpi", ATTRS{name}=="PIXA3854:00", ATTR{power/wakeup}="disabled" + ''; - services.fwupd.enable = true; - services.tailscale.useRoutingFeatures = "client"; - systemd.services."backlight@backlight:amdgpu_bl2".enable = false; + services.fprintd.enable = true; - nix.buildMachines = [ - { - hostName = "nocomputer"; - systems = ["x86_64-linux" "i686-linux"]; - supportedFeatures = [ - "benchmark" - "big-parallel" - "gccarch-znver4" - "kvm" - "nixos-test" - ]; - } - ]; - nix.extraOptions = '' - builders-use-substitutes = true - ''; - nix.distributedBuilds = true; + boot.kernelPackages = pkgs.linuxPackages_latest; + # boot.initrd.availableKernelModules = [ + # "nvme" + # "sd_mod" + # "thunderbolt" + # "usb_storage" + # "xhci_pci" + # "usbhid" + # "uas" + # ]; + boot.kernelParams = [ + "amdgpu.abmlevel=1" + # "amdgpu.dcdebugmask=0x400" + # "mem_sleep_default=deep" + ]; + # boot.kernelModules = ["kvm-amd"]; + boot.kernelModules = ["amdgpu"]; + powerManagement.cpuFreqGovernor = "powersave"; + systemd.sleep.extraConfig = "HibernateDelaySec=360m"; - services.udev.extraRules = '' - # ACTION=="add", SUBSYSTEM=="backlight", RUN+="${pkgs.coreutils}/bin/chgrp video /sys/class/backlight/%k/brightness" - # ACTION=="add", SUBSYSTEM=="backlight", RUN+="${pkgs.coreutils}/bin/chmod g+w /sys/class/backlight/%k/brightness" - - ACTION=="add|change", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0012", ATTR{power/wakeup}="disabled" - ACTION=="add|change", KERNEL=="i2c", SUBSYSTEM=="i2c", DEVPATH=="/sys/devices/platform/AMDI0010:03/i2c-1/i2c-PIXA3854:00", ATTR{power/wakeup}="disabled" - - # ACTION=="add", SUBSYSTEM=="acpi", DRIVERS=="button", ATTRS{hid}=="PNP0C0D", ATTR{power/wakeup}="disabled" - # ACTION=="add", SUBSYSTEM=="serio", DRIVERS=="atkbd", ATTR{power/wakeup}="disabled" - # ACTION=="add", SUBSYSTEM=="i2c", DRIVERS=="i2c_hid_acpi", ATTRS{name}=="PIXA3854:00", ATTR{power/wakeup}="disabled" - ''; - - services.fprintd.enable = true; - - boot.kernelPackages = pkgs.linuxPackages_latest; - # boot.initrd.availableKernelModules = [ - # "nvme" - # "sd_mod" - # "thunderbolt" - # "usb_storage" - # "xhci_pci" - # "usbhid" - # "uas" - # ]; - boot.kernelParams = [ - "amdgpu.abmlevel=1" - # "amdgpu.dcdebugmask=0x400" - # "mem_sleep_default=deep" - ]; - # boot.kernelModules = ["kvm-amd"]; - boot.kernelModules = ["amdgpu"]; - powerManagement.cpuFreqGovernor = "powersave"; - systemd.sleep.extraConfig = "HibernateDelaySec=360m"; - - networking.hostName = "NOlaptop"; + networking.hostName = "NOlaptop"; } diff --git a/users/tao.nix b/users/tao.nix index 4992b54..b687606 100644 --- a/users/tao.nix +++ b/users/tao.nix @@ -1,162 +1,162 @@ { - inputs, - config, - pkgs, - lib, - ... + inputs, + config, + pkgs, + lib, + ... }: { - users.users.tao.packages = with pkgs; [ - # boxxy - calibre - # carapace - # cloud-hypervisor - # davinci-resolve - # fractal - # freerdp - # inputs.plasma-manager.packages.${pkgs.system}.default - # jellyfin-mpv-shim - # libsForQt5.kcharselect - # mendeley - # piper - # slack - # tectonic - # texlab - # thunderbird - # wkhtmltopdf - appimage-run - aspell - aspellDicts.en - bottles - darktable - deluge - discord - freecad-wayland - gocryptfs - gurk-rs - jellyfin-media-player - # kdePackages.plasma-vault - keepassxc - # leetcode-cli - man-pages - man-pages-posix - miniserve - mousai - nix-output-monitor - nixos-anywhere - nufmt - nushell - nvd - obs-studio - oculante - onlyoffice-bin - pandoc - pipe-rename - prusa-slicer - qmk - qmk-udev-rules - qmk_hid - ripgrep-all - signal-desktop - slack - snapper - starship - syncthingtray - taskwarrior3 - tinymist - toastify - typst - usbutils - vial - wezterm - wl-clipboard-rs - yt-dlp - zathura - zellij - zoom-us - zoxide - ]; - programs.adb.enable = true; - programs.kdeconnect.enable = true; - environment.shells = with pkgs; [nushell]; + users.users.tao.packages = with pkgs; [ + # boxxy + calibre + # carapace + # cloud-hypervisor + # davinci-resolve + # fractal + # freerdp + # inputs.plasma-manager.packages.${pkgs.system}.default + # jellyfin-mpv-shim + # libsForQt5.kcharselect + # mendeley + # piper + # slack + # tectonic + # texlab + # thunderbird + # wkhtmltopdf + appimage-run + aspell + aspellDicts.en + bottles + darktable + deluge + discord + freecad-wayland + gocryptfs + gurk-rs + jellyfin-media-player + # kdePackages.plasma-vault + keepassxc + # leetcode-cli + man-pages + man-pages-posix + miniserve + mousai + nix-output-monitor + nixos-anywhere + nufmt + nushell + nvd + obs-studio + oculante + onlyoffice-bin + pandoc + pipe-rename + prusa-slicer + qmk + qmk-udev-rules + qmk_hid + ripgrep-all + signal-desktop + slack + snapper + starship + syncthingtray + taskwarrior3 + tinymist + toastify + typst + usbutils + vial + wezterm + wl-clipboard-rs + yt-dlp + zathura + zellij + zoom-us + zoxide + ]; + programs.adb.enable = true; + programs.kdeconnect.enable = true; + environment.shells = with pkgs; [nushell]; - # virtualisation.libvirtd.enable = true; - # virtualisation.libvirtd.qemu.swtpm.enable = true; - # virtualisation.spiceUSBRedirection.enable = true; - # programs.virt-manager.enable = true; + # virtualisation.libvirtd.enable = true; + # virtualisation.libvirtd.qemu.swtpm.enable = true; + # virtualisation.spiceUSBRedirection.enable = true; + # programs.virt-manager.enable = true; - # virtualisation.virtualbox.host = { - # enable = true; - # enableExtensionPack = true; - # }; + # virtualisation.virtualbox.host = { + # enable = true; + # enableExtensionPack = true; + # }; - # nixpkgs.overlays = [ - # (final: prev: { - # options.services.snapper.configs = prev.options.services.snapper.configs.overrideAttrs (old: { - # configOptions.FSTYPE = lib.mkOption { - # type = lib.types.enum ["btrfs" "bcachefs"]; - # }; - # }); - # }) - # ]; + # nixpkgs.overlays = [ + # (final: prev: { + # options.services.snapper.configs = prev.options.services.snapper.configs.overrideAttrs (old: { + # configOptions.FSTYPE = lib.mkOption { + # type = lib.types.enum ["btrfs" "bcachefs"]; + # }; + # }); + # }) + # ]; - disabledModules = ["services/misc/snapper.nix"]; - imports = [../extras/snapper.nix]; - services.snapper.configs = { - home = { - SUBVOLUME = "/home"; - # FSTYPE = "bcachefs"; - FSTYPE = - if lib.strings.hasPrefix "NOlaptop" (builtins.readFile /etc/hostname) - then "bcachefs" - else "btrfs"; - ALLOW_USERS = ["tao"]; - TIMELINE_CREATE = true; - TIMELINE_CLEANUP = true; - TIMELINE_LIMIT_HOURLY = 5; - TIMELINE_LIMIT_DAILY = 7; + disabledModules = ["services/misc/snapper.nix"]; + imports = [../extras/snapper.nix]; + services.snapper.configs = { + home = { + SUBVOLUME = "/home"; + # FSTYPE = "bcachefs"; + FSTYPE = + if lib.strings.hasPrefix "NOlaptop" (builtins.readFile /etc/hostname) + then "bcachefs" + else "btrfs"; + ALLOW_USERS = ["tao"]; + TIMELINE_CREATE = true; + TIMELINE_CLEANUP = true; + TIMELINE_LIMIT_HOURLY = 5; + TIMELINE_LIMIT_DAILY = 7; + }; }; - }; - services.snapper.snapshotInterval = "*:0/5"; + services.snapper.snapshotInterval = "*:0/5"; - hardware.keyboard.qmk.enable = true; - services.udev.extraRules = '' - KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl" - ''; - # services.ratbagd.enable = true; + hardware.keyboard.qmk.enable = true; + services.udev.extraRules = '' + KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl" + ''; + # services.ratbagd.enable = true; - boot.extraModulePackages = with config.boot.kernelPackages; [ - v4l2loopback - ]; - boot.extraModprobeConfig = '' - options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1 - ''; + boot.extraModulePackages = with config.boot.kernelPackages; [ + v4l2loopback + ]; + boot.extraModprobeConfig = '' + options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1 + ''; - fonts.packages = with pkgs; [ - # (nerdfonts.override {fonts = ["FiraCode"];}) - nerd-fonts.fira-code - noto-fonts-cjk-sans - noto-fonts-cjk-serif - noto-fonts-color-emoji - ibm-plex - cooper-hewitt - ]; + fonts.packages = with pkgs; [ + # (nerdfonts.override {fonts = ["FiraCode"];}) + nerd-fonts.fira-code + noto-fonts-cjk-sans + noto-fonts-cjk-serif + noto-fonts-color-emoji + ibm-plex + cooper-hewitt + ]; - documentation.enable = true; + documentation.enable = true; - # age.secrets.password-tao.file = ../secrets/syncthing-uwuraid.age; - users.users.tao = { - isNormalUser = true; - # hashedPasswordFile = config.age.secrets.password-tao.path; - extraGroups = ["audio" "video" "wheel" "libvirtd" "dialout" "game"]; - shell = pkgs.nushell; - }; + # age.secrets.password-tao.file = ../secrets/syncthing-uwuraid.age; + users.users.tao = { + isNormalUser = true; + # hashedPasswordFile = config.age.secrets.password-tao.path; + extraGroups = ["audio" "video" "wheel" "libvirtd" "dialout" "game"]; + shell = pkgs.nushell; + }; - age.secrets.syncthing-NOcomputer.file = ../secrets/syncthing-NOcomputer.age; - age.secrets.syncthing-NOlaptop.file = ../secrets/syncthing-NOlaptop.age; - age.secrets.syncthing-uwuraid.file = ../secrets/syncthing-uwuraid.age; - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.verbose = true; - home-manager.backupFileExtension = ".hm-bak"; - home-manager.users.tao = import ./tao/HOME.nix {inherit inputs pkgs lib config;}; + age.secrets.syncthing-NOcomputer.file = ../secrets/syncthing-NOcomputer.age; + age.secrets.syncthing-NOlaptop.file = ../secrets/syncthing-NOlaptop.age; + age.secrets.syncthing-uwuraid.file = ../secrets/syncthing-uwuraid.age; + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.verbose = true; + home-manager.backupFileExtension = ".hm-bak"; + home-manager.users.tao = import ./tao/HOME.nix {inherit inputs pkgs lib config;}; } diff --git a/users/tao/HOME.nix b/users/tao/HOME.nix index c236f50..6203b90 100644 --- a/users/tao/HOME.nix +++ b/users/tao/HOME.nix @@ -1,261 +1,269 @@ { - config, - pkgs, - inputs, - lib, - ... + config, + pkgs, + inputs, + lib, + ... }: let - cargoFile = builtins.readFile ./cargo.toml; - cargoConfig = builtins.replaceStrings ["/path/to/sccache" "/path/to/mold"] ["${pkgs.sccache}/bin/sccache" "${pkgs.mold}/bin/mold}"] cargoFile; - age.secrets.syncthing-NOcomputer.file = ../secrets/syncthing-NOcomputer.age; - age.secrets.syncthing-NOlaptop.file = ../secrets/syncthing-NOlaptop.age; - age.secrets.syncthing-uwuraid.file = ../secrets/syncthing-uwuraid.age; + cargoFile = builtins.readFile ./cargo.toml; + cargoConfig = builtins.replaceStrings ["/path/to/sccache" "/path/to/mold"] ["${pkgs.sccache}/bin/sccache" "${pkgs.mold}/bin/mold}"] cargoFile; + age.secrets.syncthing-NOcomputer.file = ../secrets/syncthing-NOcomputer.age; + age.secrets.syncthing-NOlaptop.file = ../secrets/syncthing-NOlaptop.age; + age.secrets.syncthing-uwuraid.file = ../secrets/syncthing-uwuraid.age; in { - imports = [ - ./boxxy.nix - (import ./helix.nix {inherit pkgs inputs;}) - # ./plasma.nix - # ./firefox.nix - ]; + imports = [ + ./boxxy.nix + (import ./helix.nix {inherit pkgs inputs;}) + # ./plasma.nix + # ./firefox.nix + ]; - # home.sessionPath = [ - # "/home/tao/.cargo/bin" - # ]; - home.file.".cargo/config.toml".text = cargoConfig; - home.file.".config/autostart" = { - source = ./autostart; - recursive = true; + # home.sessionPath = [ + # "/home/tao/.cargo/bin" + # ]; + home.file.".cargo/config.toml".text = cargoConfig; + home.file.".config/autostart" = { + source = ./autostart; + recursive = true; + }; + home.file.".config/direnv/lib/".source = ./direnv; + home.file.".config/direnv/lib/".recursive = true; + + programs = { + bacon = { + enable = true; + settings.jobs.default = { + command = [ + "cargo" + "clippy" + "--" + "-A" + "clippy::bool_to_int_with_if" + "-A" + "clippy::collapsible_else_if" + "-A" + "clippy::collapsible_if" + "-A" + "clippy::derive_partial_eq_without_eq" + "-A" + "clippy::get_first" + "-A" + "clippy::if_same_then_else" + "-A" + "clippy::len_without_is_empty" + "-A" + "clippy::map_entry" + "-A" + "clippy::while_let_on_iterator" + ]; + need_stdout = false; + }; }; - home.file.".config/direnv/lib/".source = ./direnv; - home.file.".config/direnv/lib/".recursive = true; - programs = { - bacon = { - enable = true; - settings.jobs.default = { - command = [ - "cargo" - "clippy" - "--" - "-A" - "clippy::bool_to_int_with_if" - "-A" - "clippy::collapsible_else_if" - "-A" - "clippy::collapsible_if" - "-A" - "clippy::derive_partial_eq_without_eq" - "-A" - "clippy::get_first" - "-A" - "clippy::if_same_then_else" - "-A" - "clippy::len_without_is_empty" - "-A" - "clippy::map_entry" - "-A" - "clippy::while_let_on_iterator" - ]; - need_stdout = false; - }; + bat = { + enable = true; + config = { + theme = "gruvbox-dark"; + }; + }; + + bottom = { + enable = true; + settings = { + color = "gruvbox"; + flags = { + battery = + # if lib.strings.hasPrefix "NOlaptop" (builtins.readFile /etc/hostname) + # then true + # else false; + true; + hide_time = true; + enable_gpu = true; }; + }; + }; - bat = { - enable = true; - config = { - theme = "gruvbox-dark"; - }; + direnv = { + enable = true; + enableNushellIntegration = true; + nix-direnv.enable = true; + }; + + jujutsu = { + enable = true; + settings = { + user = { + name = "Tao Tien"; + email = "29749622+taotien@users.noreply.github.com"; }; - - bottom = { - enable = true; - settings = { - color = "gruvbox"; - flags = { - battery = - # if lib.strings.hasPrefix "NOlaptop" (builtins.readFile /etc/hostname) - # then true - # else false; - true; - hide_time = true; - enable_gpu = true; - }; - }; + ui = { + default-command = "log"; }; + }; + # package = inputs.jujutsu.packages.${pkgs.system}.default; + }; - direnv = { - enable = true; - enableNushellIntegration = true; - nix-direnv.enable = true; + git = { + enable = true; + userName = "Tao Tien"; + userEmail = "29749622+taotien@users.noreply.github.com"; + # extraConfig = { + # }; + ignores = [ + "/target" + ".direnv" + ]; + }; + + nushell = { + enable = true; + configFile.source = ./nushell/config.nu; + envFile.source = ./nushell/env.nu; + # extraConfig = builtins.readFile ./nushell/stuff.nu; + extraConfig = lib.concatStrings (map builtins.readFile (map (x: ./nushell/extras/. + x) (map (x: "/" + x) (builtins.attrNames (builtins.readDir ./nushell/extras))))); + }; + + ssh = { + enable = true; + addKeysToAgent = "yes"; + compression = true; + matchBlocks = { + "stargate" = { + hostname = "stargate.cs.usfca.edu"; + user = "tltien"; + forwardAgent = true; + identityFile = "/home/tao/.ssh/id_ed25519"; }; - - jujutsu = { - enable = true; - settings = { - user = { - name = "Tao Tien"; - email = "29749622+taotien@users.noreply.github.com"; - }; - ui = { - default-command = "log"; - }; - }; - # package = inputs.jujutsu.packages.${pkgs.system}.default; + "griffin" = { + hostname = "griffin.cs.usfca.edu"; + user = "tltien"; + forwardAgent = true; + identityFile = "/home/tao/.ssh/id_ed25519"; + # proxyCommand = "ssh griffin.cs.usfca.edu"; }; - - git = { - enable = true; - userName = "Tao Tien"; - userEmail = "29749622+taotien@users.noreply.github.com"; - # extraConfig = { - # }; - ignores = [ - "/target" - ".direnv" - ]; + "github" = { + hostname = "github.com"; + forwardAgent = true; + identityFile = "/home/tao/.ssh/id_ed25519"; }; - - nushell = { - enable = true; - configFile.source = ./nushell/config.nu; - envFile.source = ./nushell/env.nu; - # extraConfig = builtins.readFile ./nushell/stuff.nu; - extraConfig = lib.concatStrings (map builtins.readFile (map (x: ./nushell/extras/. + x) (map (x: "/" + x) (builtins.attrNames (builtins.readDir ./nushell/extras))))); - }; - - ssh = { - enable = true; - addKeysToAgent = "yes"; - compression = true; - matchBlocks = { - "stargate" = { - hostname = "stargate.cs.usfca.edu"; - user = "tltien"; - forwardAgent = true; - identityFile = "/home/tao/.ssh/id_ed25519"; - }; - "griffin" = { - hostname = "griffin.cs.usfca.edu"; - user = "tltien"; - forwardAgent = true; - identityFile = "/home/tao/.ssh/id_ed25519"; - # proxyCommand = "ssh griffin.cs.usfca.edu"; - }; - "github" = { - hostname = "github.com"; - forwardAgent = true; - identityFile = "/home/tao/.ssh/id_ed25519"; - }; - }; - }; - - starship = { - enable = true; - enableNushellIntegration = true; - settings = builtins.fromTOML (builtins.readFile ./starship.toml); - }; - - # taskwarrior = { - # enable = true; - # package = pkgs.taskwarrior3; - # dataLocation = "/home/tao/sync"; + # "uwuraid" = { + # hostname = "uwuraid"; + # user = "root"; + # # extraOptions = ["-t" "cd /mnt/user; exet \$SHELL -l"]; + # # requesttty = true; + # # identityFile = "/home/tao/.ssh/id_ed25519"; + # proxyCommand = "ssh -t root@uwuraid cd /mnt/user; exec \\$SHELL -l"; # }; - - wezterm = { - enable = true; - extraConfig = builtins.readFile ./wezterm.lua; - }; - - zathura = { - enable = true; - options = { - selection-clipboard = "clipboard"; - }; - }; - - zellij = { - enable = true; - settings = {}; - }; - - zoxide = { - enable = true; - enableNushellIntegration = true; - }; + }; }; - services = { - pueue = { - enable = true; - settings = {}; + starship = { + enable = true; + enableNushellIntegration = true; + settings = builtins.fromTOML (builtins.readFile ./starship.toml); + }; + + # taskwarrior = { + # enable = true; + # package = pkgs.taskwarrior3; + # dataLocation = "/home/tao/sync"; + # }; + + wezterm = { + enable = true; + extraConfig = builtins.readFile ./wezterm.lua; + }; + + zathura = { + enable = true; + options = { + selection-clipboard = "clipboard"; + }; + }; + + zellij = { + enable = true; + settings = {}; + }; + + zoxide = { + enable = true; + enableNushellIntegration = true; + }; + }; + + services = { + pueue = { + enable = true; + settings = {}; + }; + }; + + services.syncthing = { + enable = true; + # user = "tao"; + # dataDir = "/home/tao/sync"; + # configDir = "/home/tao/.config/syncthing"; + overrideDevices = true; + overrideFolders = true; + # openDefaultPorts = true; + settings = { + devices = { + # we do a lil anti-patterns https://github.com/ryantm/agenix?tab=readme-ov-file#builtinsreadfile-anti-pattern + # bootstrap by commenting out devices first and rebuild switch impurely + "nocomputer".id = builtins.readFile config.age.secrets.syncthing-NOcomputer.path; + "nolaptop".id = builtins.readFile config.age.secrets.syncthing-NOlaptop.path; + "uwuraid".id = builtins.readFile config.age.secrets.syncthing-uwuraid.path; + }; + folders = let + devs = [ + "nocomputer" + "nolaptop" + "uwuraid" + ]; + in { + # "documents" = { + # path = "/home/tao/documents"; + # devices = devs; + # }; + "pictures" = { + path = "/home/tao/pictures"; + devices = devs; }; - }; - - services.syncthing = { - enable = true; - # user = "tao"; - # dataDir = "/home/tao/sync"; - # configDir = "/home/tao/.config/syncthing"; - overrideDevices = true; - overrideFolders = true; - # openDefaultPorts = true; - settings = { - devices = { - # we do a lil anti-patterns https://github.com/ryantm/agenix?tab=readme-ov-file#builtinsreadfile-anti-pattern - # bootstrap by commenting out devices first and rebuild switch impurely - "nocomputer".id = builtins.readFile config.age.secrets.syncthing-NOcomputer.path; - "nolaptop".id = builtins.readFile config.age.secrets.syncthing-NOlaptop.path; - "uwuraid".id = builtins.readFile config.age.secrets.syncthing-uwuraid.path; - }; - folders = let - devs = [ - "nocomputer" - "nolaptop" - "uwuraid" - ]; - in { - # "documents" = { - # path = "/home/tao/documents"; - # devices = devs; - # }; - "pictures" = { - path = "/home/tao/pictures"; - devices = devs; - }; - "projects" = { - path = "/home/tao/projects"; - devices = devs; - }; - "school" = { - path = "/home/tao/school"; - devices = devs; - }; - "sync" = { - path = "/home/tao/sync"; - devices = devs; - }; - # "work" = { - # path = "/home/tao/work"; - # devices = devs; - # }; - }; + "projects" = { + path = "/home/tao/projects"; + devices = devs; }; + "school" = { + path = "/home/tao/school"; + devices = devs; + }; + "sync" = { + path = "/home/tao/sync"; + devices = devs; + }; + # "work" = { + # path = "/home/tao/work"; + # devices = devs; + # }; + }; }; + }; - xdg.userDirs = { - desktop = "desktop"; - documents = "documents"; - download = "downloads"; - music = "music"; - pictures = "pictures"; - templates = "templates"; - videos = "videos"; - publicShare = null; - createDirectories = true; - enable = true; - }; + xdg.userDirs = { + desktop = "desktop"; + documents = "documents"; + download = "downloads"; + music = "music"; + pictures = "pictures"; + templates = "templates"; + videos = "videos"; + publicShare = null; + createDirectories = true; + enable = true; + }; - home.username = "tao"; - home.homeDirectory = "/home/tao"; - home.stateVersion = "23.11"; + home.username = "tao"; + home.homeDirectory = "/home/tao"; + home.stateVersion = "23.11"; }