My collection of nix configurations
1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8with lib;
9
10let
11 cfg = config.programs.gitlab-dev;
12 ld_search_path = lib.makeSearchPath "lib" [
13 pkgs.openssl.out
14 pkgs.icu
15 pkgs.libxml2.out
16 pkgs.libxslt.out
17 pkgs.libyaml
18 pkgs.zlib
19 pkgs.pcre2.out
20 pkgs.readline
21 pkgs.libffi
22 pkgs.krb5.lib
23 pkgs.re2
24 pkgs.gmp
25 pkgs.curl.out
26 pkgs.util-linuxMinimal.lib
27 ];
28 includes_search_path = lib.makeSearchPath "include" [
29 pkgs.openssl.dev
30 pkgs.icu.dev
31 pkgs.libxml2.dev
32 pkgs.libxslt.dev
33 pkgs.libyaml.dev
34 pkgs.pcre2.dev
35 pkgs.readline.dev
36 pkgs.libffi.dev
37 pkgs.krb5.dev
38 pkgs.re2.dev
39 pkgs.gmp.dev
40 pkgs.curl.dev
41 pkgs.pixman
42 pkgs.abseil-cpp.dev
43 pkgs.cairo.dev
44 pkgs.util-linuxMinimal.dev
45 pkgs.zlib.dev
46 ];
47in
48{
49 options.programs.gitlab-dev.enable = mkEnableOption "GitLab development environment";
50
51 config = mkIf cfg.enable {
52 home.packages = with pkgs; [
53
54 bat
55 opencode
56 ripgrep
57 gcc
58 gnumake
59 cmake
60 pkg-config
61 meson
62 ninja
63 autoconf
64 automake
65 libtool
66
67 git-lfs
68
69 neovim
70
71 icu
72 libxml2
73 libxslt
74 libyaml
75 openssl
76 zlib
77 pcre2
78 readline
79 krb5
80 re2
81 abseil-cpp
82 libffi
83 gmp
84 pixman
85 cairo
86 libclang
87 bison
88 flex
89
90 curl
91 wget
92 ed
93 rsync
94 graphicsmagick
95 exiftool
96 sqlite
97 gpgme
98 libgpg-error
99
100 gnutar
101 bzip2
102 rustPlatform.bindgenHook
103 ];
104
105 home.sessionVariables = {
106 LD_LIBRARY_PATH = ld_search_path;
107 BINDGEN_HOOK = pkgs.rustPlatform.bindgenHook;
108 PKG_CONFIG_PATH = lib.strings.join ":" [
109 (lib.makeSearchPath "lib/pkgconfig" [
110 pkgs.openssl.dev
111 pkgs.icu.dev
112 pkgs.libxml2.dev
113 pkgs.libxslt.dev
114 pkgs.libyaml.dev
115 pkgs.pcre2.dev
116 pkgs.readline.dev
117 pkgs.libffi.dev
118 pkgs.krb5.dev
119 pkgs.re2.dev
120 pkgs.gmp.dev
121 pkgs.curl.dev
122 pkgs.pixman
123 pkgs.abseil-cpp.dev
124 pkgs.cairo.dev
125 pkgs.libpng.out
126 ])
127
128 (lib.makeSearchPath "share/pkgconfig" [ pkgs.zlib.dev ])
129 ];
130 OPENSSL_DIR = "${pkgs.openssl.dev}";
131 OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib";
132 OPENSSL_INCLUDE_DIR = "${pkgs.openssl.dev}/include";
133 LIBRARY_PATH = lib.makeLibraryPath [
134 pkgs.re2
135 pkgs.abseil-cpp
136 ];
137 CPATH = lib.makeSearchPath "include" [
138 pkgs.re2.dev
139 pkgs.abseil-cpp.dev
140 ];
141 };
142
143 home.file.".asdf-postgres-configure-options".text = ''
144 POSTGRES_EXTRA_CONFIGURE_OPTIONS='--with-libraries=${ld_search_path} --with-includes=${includes_search_path}'
145 '';
146 home.file.".bundle/config".text = ''
147 ---
148 BUNDLE_FORCE_RUBY_PLATFORM: "true"
149 BUNDLE_BUILD__CHARLOCK_HOLMES: "--with-z-lib=${pkgs.zlib}/lib --with-z-include=${pkgs.zlib.dev}/include"
150 BUNDLE_BUILD__TIMFEL___KRB5___AUTH: "--with-krb5-lib=${pkgs.krb5.lib}/lib --with-krb5-include=${pkgs.krb5.dev}/include"
151 BUNDLE_BUILD__RE2: "--enable-system-libraries --with-re2-lib=${pkgs.re2}/lib --with-re2-include=${pkgs.re2.dev}/include --with-abseil-dir=${pkgs.abseil-cpp} --with-abseil-lib=${pkgs.abseil-cpp}/lib --with-abseil-include=${pkgs.abseil-cpp.dev}/include"
152 BUNDLE_BUILD__GPGME: "--enable-system-libraries"
153 '';
154
155 home.file."Repos/.gdk-envrc".text = ''
156 export CGO_CFLAGS="$(pkg-config --cflags krb5-gssapi)"
157 export CFLAGS="$(pkg-config --cflags libcurl)"
158 source $BINDGEN_HOOK/nix-support/setup-hook
159 populateBindgenEnv
160
161 '';
162
163 };
164
165}