flake.nix 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. {
  2. description = "Kilo Code development environment";
  3. inputs = {
  4. nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
  5. };
  6. outputs =
  7. { self, nixpkgs, ... }:
  8. let
  9. systems = [
  10. "aarch64-darwin"
  11. "x86_64-linux"
  12. ];
  13. forAllSystems = nixpkgs.lib.genAttrs systems;
  14. mkDevShell =
  15. system:
  16. let
  17. pkgs = import nixpkgs { inherit system; };
  18. in
  19. pkgs.mkShell {
  20. name = "kilo-code";
  21. packages = with pkgs; [
  22. nodejs_20
  23. corepack_20
  24. libnotify
  25. jetbrains.idea-community
  26. jetbrains.jdk
  27. jdk21
  28. gradle
  29. unzip
  30. # Build tools for native modules
  31. pkg-config
  32. python3
  33. gcc
  34. gnumake
  35. # Libraries
  36. libsecret
  37. # X11 libraries for JetBrains IDEs and native-keymap
  38. xorg.libX11
  39. xorg.libX11.dev
  40. xorg.libXext
  41. xorg.libXi
  42. xorg.libXrender
  43. xorg.libXtst
  44. xorg.libXrandr
  45. xorg.libXinerama
  46. xorg.libXcursor
  47. xorg.libXdamage
  48. xorg.libXfixes
  49. xorg.libXcomposite
  50. xorg.libxkbfile
  51. xorg.libxkbfile.dev
  52. xorg.libxcb
  53. # Additional GUI libraries
  54. freetype
  55. fontconfig
  56. glib
  57. gtk3
  58. cairo
  59. pango
  60. gdk-pixbuf
  61. atk
  62. # JCEF dependencies
  63. nspr
  64. nss
  65. cups
  66. dbus
  67. at-spi2-atk
  68. at-spi2-core
  69. libdrm
  70. mesa
  71. expat
  72. alsa-lib
  73. pulseaudio
  74. # Github
  75. act
  76. # Microphone support
  77. ffmpeg_7-full
  78. ];
  79. # Set library path for dynamic linking
  80. shellHook = ''
  81. export DEVENV="nix"
  82. export JAVA_HOME="${pkgs.jetbrains.jdk}"
  83. export PATH="$JAVA_HOME/bin:$PATH"
  84. export LD_LIBRARY_PATH="${
  85. pkgs.lib.makeLibraryPath [
  86. pkgs.xorg.libX11
  87. pkgs.xorg.libXext
  88. pkgs.xorg.libXi
  89. pkgs.xorg.libXrender
  90. pkgs.xorg.libXtst
  91. pkgs.xorg.libXrandr
  92. pkgs.xorg.libXinerama
  93. pkgs.xorg.libXcursor
  94. pkgs.xorg.libXdamage
  95. pkgs.xorg.libXfixes
  96. pkgs.xorg.libXcomposite
  97. pkgs.xorg.libxkbfile
  98. pkgs.xorg.libxcb
  99. pkgs.freetype
  100. pkgs.fontconfig
  101. pkgs.glib
  102. pkgs.gtk3
  103. pkgs.cairo
  104. pkgs.pango
  105. pkgs.gdk-pixbuf
  106. pkgs.atk
  107. pkgs.libsecret
  108. pkgs.jetbrains.jdk
  109. # JCEF-specific libraries
  110. pkgs.nspr
  111. pkgs.nss
  112. pkgs.cups
  113. pkgs.dbus
  114. pkgs.at-spi2-atk
  115. pkgs.at-spi2-core
  116. pkgs.libdrm
  117. pkgs.mesa
  118. pkgs.expat
  119. pkgs.alsa-lib
  120. pkgs.pulseaudio
  121. ]
  122. }:$LD_LIBRARY_PATH"
  123. '';
  124. };
  125. in
  126. {
  127. devShells = forAllSystems (system: {
  128. default = mkDevShell system;
  129. });
  130. };
  131. }