diff options
author | polwex <polwex@sortug.com> | 2025-05-17 07:24:14 +0000 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-05-17 07:24:14 +0000 |
commit | 9d89a55dff02122ebef9d8c7b388707084bac2fa (patch) | |
tree | 015a6a49ddc1f484960e7977e624d1d971a45453 | |
parent | bb5002c60d57600ecb812720106a88df80d07362 (diff) | |
parent | 3efdd55d5cc2e784c6934e9d133f16844c324aad (diff) |
Merge branch 'master' of mygit:/polwex/nixconf
-rw-r--r-- | .gitignore | 10 | ||||
-rw-r--r-- | derivations/yek/flake.lock | 6 | ||||
-rw-r--r-- | derivations/yek/flake.nix | 2 | ||||
-rw-r--r-- | derivations/yek/package.nix | 2 | ||||
-rw-r--r-- | devenv.lock | 103 | ||||
-rw-r--r-- | flake.nix | 6 | ||||
-rw-r--r-- | hosts/cloud/bkk/nginx.nix | 36 | ||||
-rw-r--r-- | hosts/cloud/sortug/nginx.nix | 37 | ||||
-rw-r--r-- | hosts/cloud/sortug/packages.nix | 20 | ||||
-rw-r--r-- | hosts/editors.nix | 12 | ||||
-rw-r--r-- | hosts/local/gui.nix | 7 | ||||
-rw-r--r-- | hosts/local/i3.nix | 18 | ||||
-rw-r--r-- | hosts/local/master/configuration.nix | 51 | ||||
-rw-r--r-- | hosts/local/master/hardware-configuration.nix | 48 | ||||
-rw-r--r-- | hosts/local/master/keyboard.nix | 4 | ||||
-rw-r--r-- | hosts/local/master/rgb.nix | 15 | ||||
-rw-r--r-- | hosts/local/master/rtl8188gu.nix | 56 | ||||
-rw-r--r-- | hosts/local/nvidia.nix | 2 | ||||
-rw-r--r-- | hosts/local/wayland.nix | 4 | ||||
-rw-r--r-- | hosts/pkgs.nix | 8 |
20 files changed, 364 insertions, 83 deletions
@@ -1 +1,11 @@ .aider* + +# Devenv +.devenv* +devenv.local.nix + +# direnv +.direnv + +# pre-commit +.pre-commit-config.yaml diff --git a/derivations/yek/flake.lock b/derivations/yek/flake.lock index bad2016..e19c85d 100644 --- a/derivations/yek/flake.lock +++ b/derivations/yek/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1739866667, - "narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=", + "lastModified": 1740367490, + "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680", + "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", "type": "github" }, "original": { diff --git a/derivations/yek/flake.nix b/derivations/yek/flake.nix index 904d54f..9dc0497 100644 --- a/derivations/yek/flake.nix +++ b/derivations/yek/flake.nix @@ -13,7 +13,7 @@ pkgs = nixpkgs.legacyPackages.${system}; in { packages.${system}.default = pkgs.callPackage ./package.nix { - inherit (pkgs) lib; + inherit (pkgs) nixpkgs lib; }; }; } diff --git a/derivations/yek/package.nix b/derivations/yek/package.nix index c8ddaf6..cf00581 100644 --- a/derivations/yek/package.nix +++ b/derivations/yek/package.nix @@ -8,7 +8,7 @@ nix-update-script, versionCheckHook, }: let - version = "0.16.0"; + version = "0.21.0"; in rustPlatform.buildRustPackage { pname = "yek"; diff --git a/devenv.lock b/devenv.lock new file mode 100644 index 0000000..0b61657 --- /dev/null +++ b/devenv.lock @@ -0,0 +1,103 @@ +{ + "nodes": { + "devenv": { + "locked": { + "dir": "src/modules", + "lastModified": 1743783972, + "owner": "cachix", + "repo": "devenv", + "rev": "2f53e2f867e0c2ba18b880e66169366e5f8ca554", + "type": "github" + }, + "original": { + "dir": "src/modules", + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1742649964, + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1733477122, + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "7bd9e84d0452f6d2e63b6e6da29fe73fac951857", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "git-hooks": "git-hooks", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": [ + "git-hooks" + ] + } + } + }, + "root": "root", + "version": 7 +} @@ -99,6 +99,12 @@ ########### this fucking guy ######## nixos-rk3588.url = "github:ryan4yin/nixos-rk3588"; + devenv = { + url = "github:cachix/devenv"; + }; + + # determinate systems patched nix. supposedly for enterprise + # determinate.url = "https://flakehub.com/f/DeterminateSystems/determinate/*"; }; outputs = inputs: import ./outputs.nix inputs; } diff --git a/hosts/cloud/bkk/nginx.nix b/hosts/cloud/bkk/nginx.nix index 3314674..7de02ee 100644 --- a/hosts/cloud/bkk/nginx.nix +++ b/hosts/cloud/bkk/nginx.nix @@ -85,23 +85,23 @@ proxy_cache off; ''; }; - # virtualHosts."t.urbit.men" = { - # enableACME = true; - # forceSSL = true; - # locations."/" = { - # proxyPass = "http://127.0.0.1:8081"; - # # proxyWebsockets = true; # needed if you need to use WebSocket - # extraConfig = '' - # proxy_set_header Host $host; - # proxy_set_header Forwarded $proxy_add_x_forwarded_for; - # ''; - # }; - # extraConfig = '' - # chunked_transfer_encoding off; - # proxy_http_version 1.1; - # proxy_buffering off; - # proxy_cache off; - # ''; - # }; + virtualHosts."t.urbit.men" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:3000"; + # proxyWebsockets = true; # needed if you need to use WebSocket + extraConfig = '' + proxy_set_header Host $host; + proxy_set_header Forwarded $proxy_add_x_forwarded_for; + ''; + }; + extraConfig = '' + chunked_transfer_encoding off; + proxy_http_version 1.1; + proxy_buffering off; + proxy_cache off; + ''; + }; }; } diff --git a/hosts/cloud/sortug/nginx.nix b/hosts/cloud/sortug/nginx.nix index 68a0c5b..5c129fb 100644 --- a/hosts/cloud/sortug/nginx.nix +++ b/hosts/cloud/sortug/nginx.nix @@ -58,6 +58,25 @@ proxyWebsockets = true; # needed if you need to use WebSocket }; }; + # polwex + virtualHosts."pw.sortug.com" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:8091"; + # proxyWebsockets = true; # needed if you need to use WebSocket + extraConfig = '' + proxy_set_header Host $host; + proxy_set_header Forwarded $proxy_add_x_forwarded_for; + ''; + }; + extraConfig = '' + proxy_http_version 1.1; + chunked_transfer_encoding off; + proxy_buffering off; + proxy_cache off; + ''; + }; virtualHosts."p.sortug.com" = { enableACME = true; forceSSL = true; @@ -76,6 +95,24 @@ proxy_cache off; ''; }; + virtualHosts."papa.sortug.com" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:8924"; + # proxyWebsockets = true; # needed if you need to use WebSocket + extraConfig = '' + proxy_set_header Host $host; + proxy_set_header Forwarded $proxy_add_x_forwarded_for; + ''; + }; + extraConfig = '' + proxy_http_version 1.1; + chunked_transfer_encoding off; + proxy_buffering off; + proxy_cache off; + ''; + }; virtualHosts."mcp.sortug.com" = { enableACME = true; forceSSL = true; diff --git a/hosts/cloud/sortug/packages.nix b/hosts/cloud/sortug/packages.nix index 6985acb..72ce5c4 100644 --- a/hosts/cloud/sortug/packages.nix +++ b/hosts/cloud/sortug/packages.nix @@ -1,9 +1,11 @@ -{ config, pkgs, ... }: - { - nixpkgs.config = { - allowUnfree = true; - }; + config, + pkgs, + ... +}: { + nixpkgs.config = { + allowUnfree = true; + }; environment.systemPackages = with pkgs; [ neovim @@ -31,7 +33,6 @@ testdisk tokei # Handy tool to see lines of code by language watchexec # Fileystem watcher/executor useful for speedy development - xsv # CSV file parsing utility just # Intriguing new make replacement mdcat # Markdown converter/reader for the CLI tree @@ -42,12 +43,11 @@ curl caddy # simple web server made with go innernet - + # s3 minio # databases - # postgresql - # sqlite + # postgresql + # sqlite ]; } - diff --git a/hosts/editors.nix b/hosts/editors.nix index 241ea57..78d0fdd 100644 --- a/hosts/editors.nix +++ b/hosts/editors.nix @@ -5,10 +5,14 @@ }: { environment.variables.EDITOR = "hx"; environment.variables.F = "hx"; - environment.systemPackages = [ - pkgs.neovim + environment.systemPackages = with pkgs; [ + neovim #inputs.helix.packages.${pkgs.system}.helix - pkgs.nodePackages.prettier - pkgs.helix + nodePackages.prettier + helix + vscode-langservers-extracted + nil + alejandra + superhtml ]; } diff --git a/hosts/local/gui.nix b/hosts/local/gui.nix index 82d78b1..d783f28 100644 --- a/hosts/local/gui.nix +++ b/hosts/local/gui.nix @@ -12,7 +12,7 @@ foot # messaging - signal-desktop + signal-desktop-bin tdesktop # video mpv @@ -25,7 +25,7 @@ #browsers brave firefox - librewolf + # librewolf vivaldi chromium # mail @@ -36,7 +36,7 @@ xfce.thunar # libreoffice - digikam + # digikam gimp qbittorrent zathura # pdf @@ -46,5 +46,6 @@ ryujinx wineWowPackages.staging dosbox + siyuan ]; } diff --git a/hosts/local/i3.nix b/hosts/local/i3.nix index f955c56..b9e67a7 100644 --- a/hosts/local/i3.nix +++ b/hosts/local/i3.nix @@ -1,10 +1,14 @@ {pkgs, ...}: { environment.pathsToLink = ["/libexec"]; services.xserver = { - xkb.layout = "us"; - xkb.variant = ""; + xkb.options = "compose:ralt"; + # xkb.layout = "us"; + # xkb.variant = ""; enable = true; autorun = false; + # displayManager = { + # startx.enable = true; + # }; desktopManager = { xterm.enable = false; }; @@ -45,6 +49,7 @@ # screenshots flameshot shutter + maim xclip pavucontrol # icons @@ -111,7 +116,14 @@ # screen capture # - xdg.portal.enable = true; + xdg.portal = { + enable = true; + xdgOpenUsePortal = true; + extraPortals = [ + pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-gnome + ]; + }; xdg.portal.config.common.default = "*"; xdg.portal.wlr.enable = true; services.dbus.enable = true; diff --git a/hosts/local/master/configuration.nix b/hosts/local/master/configuration.nix index 375c10b..83de833 100644 --- a/hosts/local/master/configuration.nix +++ b/hosts/local/master/configuration.nix @@ -9,18 +9,19 @@ ../../unfree.nix #../../android.nix ../gui.nix - ../i3.nix + # ../i3.nix # ../gnome.nix - # ../wayland.nix + ../wayland.nix ../nvidia.nix ./keyboard.nix - ./rgb.nix + # ./rgb.nix ]; # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; # boot.kernelPackages = pkgs.linuxPackages_latest; + boot.kernelPackages = pkgs.linuxPackages_zen; boot.kernelParams = ["intel_pstate=active"]; # boot.supportedFilesystems = ["ntfs"]; services.fprintd.enable = true; @@ -34,8 +35,14 @@ time.timeZone = "Asia/Bangkok"; # Enable the OpenSSH daemon. - # services.openssh.enable = true; - # services.openssh.ports = [5555]; + services.openssh = { + enable = true; + ports = [5555]; + settings.PasswordAuthentication = false; + }; + services.tailscale = { + enable = true; + }; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions @@ -46,11 +53,13 @@ # # environment.systemPackages = [ - pkgs.nodejs - pkgs.python312 + # for AI IDE shit + # pkgs.nodejs + # pkgs.python312 # pkgs.openrgb-with-all-plugins ]; - + environment.etc."X11/xorg.conf.d/20-nvidia.conf".source = ./xorg.conf; + services.xserver.displayManager.xserverArgs = ["-config ${./xorg.conf}"]; system.stateVersion = "23.11"; # Did you read the comment? #debugging segfaults @@ -71,4 +80,30 @@ # Ensure the script is copied to the system # environment.etc."startup.sh".source = ./startup.sh; + # temp! + # run vllm through docker (its broken in nixpkgs, but this may be better anyway?) + # virtualisation.oci-containers = { + # backend = "podman"; + # containers = { + # vllm = { + # autoStart = false; + # image = "vllm/vllm-openai:latest"; + # ports = ["5000:5000"]; + # extraOptions = [ + # "--runtime" + # "nvidia" + # "--gpus" + # "all" + # "--ipc" + # "host" + # "--pull=always" + # "--network=host" + # ]; + # cmd = [ + # "--model" + # "mistralai/Mistral-7B-v0.1" + # ]; + # }; + # }; + # }; } diff --git a/hosts/local/master/hardware-configuration.nix b/hosts/local/master/hardware-configuration.nix index 6e2ed9f..8439f01 100644 --- a/hosts/local/master/hardware-configuration.nix +++ b/hosts/local/master/hardware-configuration.nix @@ -1,32 +1,38 @@ # 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, pkgs, modulesPath, ... }: - { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + config, + lib, + pkgs, + modulesPath, + ... +}: let + rtl8188gu = config.boot.kernelPackages.callPackage ./rtl8188gu.nix {}; +in { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-intel"]; + boot.extraModulePackages = []; - fileSystems."/" = - { device = "/dev/disk/by-uuid/3f1343f2-1ba3-4c57-b95e-bb808d3dffd3"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/3f1343f2-1ba3-4c57-b95e-bb808d3dffd3"; + fsType = "ext4"; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/C676-FD24"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/C676-FD24"; + fsType = "vfat"; + options = ["fmask=0077" "dmask=0077"]; + }; - swapDevices = - [ { device = "/dev/disk/by-uuid/e34d7981-458b-462a-b551-007bce4f40f9"; } - ]; + swapDevices = [ + {device = "/dev/disk/by-uuid/e34d7981-458b-462a-b551-007bce4f40f9";} + ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's diff --git a/hosts/local/master/keyboard.nix b/hosts/local/master/keyboard.nix index d6ba135..f148d74 100644 --- a/hosts/local/master/keyboard.nix +++ b/hosts/local/master/keyboard.nix @@ -31,10 +31,10 @@ keyboards = { wirelessThinkpad = { device = "/dev/input/by-id/usb-Lenovo_TrackPoint_Keyboard_II-event-kbd"; - config = builtins.readFile ./thinkpad2.kbd; + config = builtins.readFile ./thinkpad.kbd; }; wiredThinkpad = { - device = "/dev/input/by-id/usb-Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint-event-kbd"; + device = "/dev/input/by-id/usb-Lenovo_ThinkPad_Compact_usb_Keyboard_with_TrackPoint-event-kbd"; config = builtins.readFile ./thinkpad.kbd; }; }; diff --git a/hosts/local/master/rgb.nix b/hosts/local/master/rgb.nix index 66dbbfb..cd5ffae 100644 --- a/hosts/local/master/rgb.nix +++ b/hosts/local/master/rgb.nix @@ -14,9 +14,18 @@ in { # config = { # services.udev.packages = [pkgs.openrgb]; - services.hardware.openrgb.enable = true; - # boot.kernelModules = ["i2c-dev"]; - # hardware.i2c.enable = true; + services.hardware.openrgb = { + enable = true; + motherboard = "intel"; + package = pkgs.openrgb-with-all-plugins; + }; + boot.kernelParams = ["acpi_enforce_resources=lax"]; + boot.kernelModules = ["i2c-dev" "i2c-pii4"]; + hardware.i2c.enable = true; + environment.systemPackages = with pkgs; [ + i2c-tools + liquidctl + ]; # systemd.services.no-rgb = { # description = "no-rgb"; diff --git a/hosts/local/master/rtl8188gu.nix b/hosts/local/master/rtl8188gu.nix new file mode 100644 index 0000000..74aa78a --- /dev/null +++ b/hosts/local/master/rtl8188gu.nix @@ -0,0 +1,56 @@ +{ + stdenv, + lib, + fetchFromGitHub, + kernel, + bc, +}: let + modDestDir = "$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/net/wireless/realtek/rtl8188gu"; +in + stdenv.mkDerivation rec { + name = "r8188gu-${kernel.version}-${version}"; + # on update please verify that the source matches the realtek version + version = "1.0"; + + src = fetchFromGitHub { + owner = "McMCCRU"; + repo = "rtl8188gu"; + rev = "bb3292dbb72ba6675b5465245eee0e69912f6e76"; + hash = "sha256-ixu8v3ikTdqlNBEp6YrvuoDWKyi0RxjySXr+fTuO77Q="; + }; + + hardeningDisable = ["pic"]; + + nativeBuildInputs = kernel.moduleBuildDependencies ++ [bc]; + + preBuild = + '' + makeFlagsArray+=("KVER=${kernel.modDirVersion}") + makeFlagsArray+=("KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build") + makeFlagsArray+=("modules") + + # try to make it work for v5.8 - but update_mgmt_frame_registrations is too different + #find -type f -exec sed -i 's/sha256_/rtl_sha256_/g ; s/timespec/timespec64/ ; s/getboottime/getboottime64/ ; s/mgmt_frame_register/update_mgmt_frame_registrations/g' {} \+ + find -type f -exec sed -i 's/timespec/timespec64/ ; s/getboottime/getboottime64/ ; s/entry = proc_create_data.*/entry = NULL;/' {} \+ + '' + + lib.optionalString stdenv.hostPlatform.isAarch64 '' + makeFlagsArray+=("ARCH=arm64") + ''; + + enableParallelBuilding = true; + + installPhase = '' + mkdir -p ${modDestDir} + find . -name '*.ko' -exec cp --parents '{}' ${modDestDir} \; + find ${modDestDir} -name '*.ko' -exec xz -f '{}' \; + ''; + + meta = with lib; { + description = "Realtek RTL8188GU driver"; + longDescription = '' + A kernel module for Realtek 8188 network cards. + ''; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; + } diff --git a/hosts/local/nvidia.nix b/hosts/local/nvidia.nix index 295d05d..40217ac 100644 --- a/hosts/local/nvidia.nix +++ b/hosts/local/nvidia.nix @@ -12,6 +12,7 @@ else config.boot.kernelPackages.nvidiaPackages.beta; in { boot.kernelModules = ["nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm"]; + environment.systemPackages = [pkgs.nvitop]; # boot.kernelPackages = lib.mkForce unfreePkgs.linuxKernel.packages.linux_xanmod_latest; # boot.kernelParams = ["video=HDMI-A-1:1920x1080"]; # @@ -51,6 +52,7 @@ in { modesetting.enable = true; powerManagement.enable = false; powerManagement.finegrained = false; + # forceFullCompositionPipeline = true; # nvidiaSettings = true; open = false; }; diff --git a/hosts/local/wayland.nix b/hosts/local/wayland.nix index 5c191fe..8de0450 100644 --- a/hosts/local/wayland.nix +++ b/hosts/local/wayland.nix @@ -19,7 +19,7 @@ programs.sway = { enable = true; wrapperFeatures.gtk = true; - extraOptions = ["unsupported-gpu" "--verbose" "--debug"]; + # extraOptions = ["unsupported-gpu" "--verbose" "--debug"]; extraPackages = with pkgs; [ xdg-utils xdg-desktop-portal @@ -96,7 +96,7 @@ tigervnc foliate # code - kompare + kdePackages.kompare meld # tmp # browser TTS diff --git a/hosts/pkgs.nix b/hosts/pkgs.nix index 36584b7..a084f51 100644 --- a/hosts/pkgs.nix +++ b/hosts/pkgs.nix @@ -44,17 +44,16 @@ ncdu zip unzip + p7zip # images imagemagick # nix - nil - alejandra #nixfmt direnv nix-direnv devenv - #inputs.devenv.packages.${pkgs.system}.default + # inputs.devenv.packages.${pkgs.system}.default # scraping python312Packages.yt-dlp # markdown lsp @@ -63,7 +62,6 @@ #crypto # electrum # yacreader - superhtml # ai stuff! # aider-chat @@ -90,6 +88,8 @@ appimage-run # disk automount udiskie + nodejs + bun # /mac ] ++ lib.optionals pkgs.stdenv.isDarwin [ |