|
5 | 5 | ...
|
6 | 6 | }: let
|
7 | 7 | vi = import ./../pub/vi/nix/default.nix {};
|
| 8 | + fj = import ./firejail.nix; |
8 | 9 | dns = ["8.8.8.8" "8.8.4.4"];
|
9 | 10 | unst = import ./nixpkgs-unstable.nix;
|
10 | 11 | vkdoom = import ./vkdoom.nix {inherit pkgs;};
|
|
80 | 81 | ${pkgs.glib}/bin/gsettings set $gnome_schema gtk-theme 'Dracula'
|
81 | 82 | '';
|
82 | 83 | };
|
83 |
| - mkFirejailSimple = pkg: { |
84 |
| - "${pkg}" = { |
85 |
| - executable = "${pkgs."${pkg}"}/bin/${pkg}"; |
86 |
| - profile = "${pkgs.firejail}/etc/firejail/${pkg}.profile"; |
87 |
| - }; |
88 |
| - }; |
89 |
| - mkFirejailCustom = { |
90 |
| - pkg, |
91 |
| - exe, |
92 |
| - dir, |
93 |
| - net ? false, |
94 |
| - cfg ? "", |
95 |
| - }: { |
96 |
| - "${pkg}" = { |
97 |
| - executable = exe; |
98 |
| - profile = mkFirejailProfile {inherit pkg dir net cfg;}; |
99 |
| - }; |
100 |
| - }; |
101 |
| - mkFirejailProfile = { |
102 |
| - pkg, |
103 |
| - dir, |
104 |
| - net, |
105 |
| - cfg, |
106 |
| - }: |
107 |
| - pkgs.writeText "${pkg}.local" ( |
108 |
| - '' |
109 |
| - include default.profile |
110 |
| -
|
111 |
| - include disable-X11.inc |
112 |
| - include disable-common.inc |
113 |
| - include disable-devel.inc |
114 |
| - include disable-exec.inc |
115 |
| - include disable-interpreters.inc |
116 |
| - include disable-proc.inc |
117 |
| - include disable-programs.inc |
118 |
| - include disable-shell.inc |
119 |
| - include disable-write-mnt.inc |
120 |
| - include disable-xdg.inc |
121 |
| -
|
122 |
| - # no3d |
123 |
| - # nosound |
124 |
| - apparmor |
125 |
| - caps.drop all |
126 |
| - machine-id |
127 |
| - ${ |
128 |
| - if net |
129 |
| - then "" |
130 |
| - else "net none" |
131 |
| - } |
132 |
| - netfilter |
133 |
| - nodvd |
134 |
| - nogroups |
135 |
| - noinput |
136 |
| - nonewprivs |
137 |
| - noprinters |
138 |
| - noroot |
139 |
| - notv |
140 |
| - nou2f |
141 |
| - novideo |
142 |
| - shell none |
143 |
| -
|
144 |
| - disable-mnt |
145 |
| - private ''${HOME}/.firejail/${dir} |
146 |
| - private-bin none |
147 |
| - private-cache |
148 |
| - private-cwd |
149 |
| - private-dev |
150 |
| - ${ |
151 |
| - if net |
152 |
| - then "" |
153 |
| - else "private-etc none" |
154 |
| - } |
155 |
| - private-lib none |
156 |
| - private-opt none |
157 |
| - private-srv none |
158 |
| - private-tmp |
159 |
| - seccomp |
160 |
| - ${ |
161 |
| - if net |
162 |
| - then "" |
163 |
| - else "x11 none" |
164 |
| - } |
165 |
| -
|
166 |
| - dbus-system none |
167 |
| - dbus-user none |
168 |
| -
|
169 |
| - restrict-namespaces |
170 |
| - '' |
171 |
| - + cfg |
172 |
| - ); |
173 |
| - mkFirejailWrapper = { |
174 |
| - pkgs, |
175 |
| - pkg, |
176 |
| - exe, |
177 |
| - desktop ? null, |
178 |
| - profile ? null, |
179 |
| - extraArgs ? [], |
180 |
| - }: |
181 |
| - pkgs.runCommand "firejail-wrap" |
182 |
| - { |
183 |
| - preferLocalBuild = true; |
184 |
| - allowSubstitutes = false; |
185 |
| - meta.priority = -1; # take precedence over non-firejailed versions |
186 |
| - } |
187 |
| - ( |
188 |
| - let |
189 |
| - firejailArgs = pkgs.lib.concatStringsSep " " ( |
190 |
| - extraArgs |
191 |
| - ++ ( |
192 |
| - pkgs.lib.optional (profile != null) "--profile=${toString profile}" |
193 |
| - ) |
194 |
| - ); |
195 |
| - in |
196 |
| - '' |
197 |
| - command_path="$out/bin/${pkg}" |
198 |
| - mkdir -p $out/bin |
199 |
| - mkdir -p $out/share/applications |
200 |
| - cat <<'_EOF' >"$command_path" |
201 |
| - #! ${pkgs.runtimeShell} -e |
202 |
| - exec /run/wrappers/bin/firejail ${firejailArgs} -- ${toString exe} "$@" |
203 |
| - _EOF |
204 |
| - chmod 0755 "$command_path" |
205 |
| - '' |
206 |
| - + pkgs.lib.optionalString (desktop != null) '' |
207 |
| - substitute ${desktop} $out/share/applications/$(basename ${desktop}) \ |
208 |
| - --replace ${exe} "$command_path" |
209 |
| - '' |
210 |
| - ); |
211 | 84 | mkKbd = cfg: dev: {
|
212 | 85 | config = cfg;
|
213 | 86 | device = dev;
|
|
862 | 735 | #
|
863 | 736 | programs.firejail.enable = true;
|
864 | 737 | programs.firejail.wrappedBinaries =
|
865 |
| - mkFirejailSimple "xonotic" |
866 |
| - // mkFirejailCustom { |
| 738 | + fj.mkFirejailSimple "xonotic" |
| 739 | + // fj.mkFirejailCustom { |
867 | 740 | pkg = "openarena";
|
868 | 741 | dir = "q3";
|
869 | 742 | exe = ''
|
|
872 | 745 | +set fs_game excessiveplus +set vm_cgame 2 +set vm_ui 2
|
873 | 746 | '';
|
874 | 747 | }
|
875 |
| - // mkFirejailCustom { |
| 748 | + // fj.mkFirejailCustom { |
876 | 749 | pkg = "doom-free2";
|
877 | 750 | dir = "doom";
|
878 | 751 | exe = ''
|
|
882 | 755 | -file ./SimpleSlots.1.1.pk7
|
883 | 756 | '';
|
884 | 757 | }
|
885 |
| - // mkFirejailCustom { |
| 758 | + // fj.mkFirejailCustom { |
886 | 759 | pkg = "doom-dsc";
|
887 | 760 | dir = "doom";
|
888 | 761 | exe = ''
|
|
894 | 767 | -file ./SimpleSlots.1.1.pk7
|
895 | 768 | '';
|
896 | 769 | }
|
897 |
| - // mkFirejailCustom { |
| 770 | + // fj.mkFirejailCustom { |
898 | 771 | pkg = "doom-ashes1";
|
899 | 772 | dir = "doom";
|
900 | 773 | exe = ''
|
|
907 | 780 | -file ./SimpleSlots.1.1.pk7
|
908 | 781 | '';
|
909 | 782 | }
|
910 |
| - // mkFirejailCustom { |
| 783 | + // fj.mkFirejailCustom { |
911 | 784 | pkg = "tabby-download-embed";
|
912 | 785 | dir = "tabby";
|
913 | 786 | net = true;
|
|
916 | 789 | download --model Nomic-Embed-Text
|
917 | 790 | '';
|
918 | 791 | }
|
919 |
| - // mkFirejailCustom { |
| 792 | + // fj.mkFirejailCustom { |
920 | 793 | pkg = "tabby-download-qwen";
|
921 | 794 | dir = "tabby";
|
922 | 795 | net = true;
|
|
925 | 798 | download --model Qwen2.5-Coder-0.5B
|
926 | 799 | '';
|
927 | 800 | }
|
928 |
| - // mkFirejailCustom { |
| 801 | + // fj.mkFirejailCustom { |
929 | 802 | pkg = "tabby-serve-qwen";
|
930 | 803 | dir = "tabby";
|
931 | 804 | cfg = ''
|
|
0 commit comments