summary refs log tree commit diff
path: root/modules/packages.nix
blob: 7c3e2f6a6ba193a5aeb533c2f782ad31d5062047 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{
  me,
  pkgs,
  auxiliaryPkgs,
  unstablePkgs,
  ...
}:

let
  inherit (builtins) filter elem;

  filterUnsupportedPackages =
    packages: filter (p: elem me.system (p.meta.platforms or [ me.system ])) packages;
in
{
  # TODO: the filter already does some good work, but we need some way to
  # pick out x86-only packages, so it is not as opaque as it currently is.
  # (who knows if muse-sounds-manager is actually installed, for example?)
  environment.systemPackages = (with pkgs; filterUnsupportedPackages [
    file unzip tree jq dig htop wget screen dive
    gnupg pinentry-gnome3 age agenix minisign openssl cryptsetup pamtester
    bitwarden-desktop bitwarden-cli
    inetutils pciutils usbutils lshw lsof inxi iw pmutils acpi acpid
    minicom miniserve netcat-gnu socat tcpdump nmap iftop iperf mtr arp-scan ethtool
    sysprof wireshark seer mitmproxy hardinfo2 btrfs-assistant trayscale
    vlc celluloid foliate calibre
    yt-dlp ffmpeg_7-full imagemagick handbrake mpv helvum
    gimp3 krita mypaint aseprite rnote fontforge-gtk
    blender inkscape obs-studio darktable davinci-resolve
    orca-slicer
    renderdoc
    audacity musescore muse-sounds-manager reaper
    # bitwigs bubblewrap configuration requires some non-ARM package sets.
    # bitwig-studio
    ungoogled-chromium librewolf lagrange
    senpai signal-desktop newsflash
    qemu_full virtiofsd

    openvpn openvpn3 update-resolv-conf
    transmission_4-gtk fragments

    xorg.xeyes wl-clipboard

    ripgrep hyperfine parallel just fzf bat delta eza fd tokei didyoumean
    universal-ctags compiledb graphviz
    python3 uv ruff black
    nodejs_22 deno yarn
    rustc rustup cargo rustfmt
    go gopls delve go-task gotags golangci-lint
    meson cmake gnumake ninja gdb gcc clang clang-tools
    hare haredoc
    jdk maven gradle
    nil nixfmt-rfc-style
    nixpkgs-review nixpkgs-fmt nixpkgs-lint-community
    shellcheck shfmt
    postgresql
    helix alacritty ghostty
    androidStudioPackages.dev

    winetricks bottles
    scrcpy apfs-fuse nfs-utils
    ubootTools dtc cloud-utils
    borgbackup pika-backup
    moonlight-qt remmina

    prismlauncher xonotic

    man-pages man-pages-posix
  ]) ++ (with unstablePkgs; [
    claude-code gemini-cli antigravity-fhs beekeeper-studio
  ]) ++ (with auxiliaryPkgs; [
    # TODO: need fixes for 25.05
    # retroarch wine

    # TODO: ngfx (obviously) does not work on ARM, put it somewhere else
    # ngfx
  ]);

  environment.etc.openvpn.source = "${pkgs.update-resolv-conf}/libexec/openvpn";
}
="n">Actions& actions); void move(Position::WorldOffset by); void move_to(Position::World to); void rotate(Rotation by); void rotate_to(Rotation to); PURE AABB bounds() const; private: struct BlockedAxis { Bool positive, negative; }; PURE Bool can_collide() const; struct ProcessCollisionsResult { Position::World position; Vector<3, BlockedAxis> blocked_axes; }; static ProcessCollisionsResult process_collisions(World::World& world, Position::World from, Position::World to); static std::vector<AABB> terrain_collision_domain(Position::World from, Position::World to, World::World& world); Position::World rescue_from_void_on_new_chunk(Time const& time, World::World& world, Position::World position); Position::World movement(Time const& time, Vec3 input_direction); Vec3 walking_velocity(Time const& time, Vec3 input_direction); PURE Vec3 flying_velocity(Time const& time, Vec3 input_direction) const; PURE Vec3 noclip_velocity(Time const& time, Vec3 input_direction) const; void update_targeted_block(World::World& world); void actions(Input const& input, World::World& world); PURE Transform camera_transform() const; void update_camera_position(GFX::Camera& camera) const; static Vec3 directional_input(Input const& input); static Rotation rotational_input(Input const& input); // Creates a bounding box where `position` is at the center of the bottom face. static AABB bounding_box_for_position(Position::World position); // Returns position of the center of the bottom face of `box`. static Position::World position_for_bounding_box(AABB box); static GFX::Mesh create_outline_cube_mesh(); enum class MovementMode { // Gravity, collision, and normal movement Walking, // Collisions, but no gravity, and normal movement Flying, // No collisions, no gravity, movement in the facing direction NoClip, }; MovementMode m_movement = MovementMode::Walking; Bool m_on_ground = false; struct TargetedBlock { Position::BlockWorld position; Position::BlockWorldOffset normal; }; std::optional<TargetedBlock> m_targeted_block; Vec3 m_velocity{}; Transform m_transform; static inline AABB s_bounds{{0.35, 1.8, 0.35}}; GFX::Mesh m_outline_mesh; }; }