├── LICENSE ├── README.md ├── apt-keys ├── bunsen-netinstall-logs-templates ├── README ├── install.log ├── sysdirs-added ├── sysfiles-added ├── sysfiles-replaced ├── userdirs-added ├── userfiles-added └── userfiles-replaced ├── config ├── copyright ├── gen_sources ├── greeting ├── install ├── pkgs-norecs ├── pkgs-norecs-base ├── pkgs-norecs-lite ├── pkgs-recs ├── pkgs-recs-base ├── pkgs-recs-lite ├── postinstall_commands ├── preinstall_commands ├── sysfiles1 └── etc │ └── apt │ ├── sources.list.d │ └── bunsen.list │ └── trusted.gpg.d │ └── bunsen-release.asc └── sysfiles2 └── etc ├── bunsen └── bunsen_install └── network └── interfaces /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | {one line to give the program's name and a brief idea of what it does.} 635 | Copyright (C) {year} {name of author} 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | {project} Copyright (C) {year} {fullname} 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is a collection of files intended to install a close approximation of 2 | BunsenLabs Linux on a basic command-line-only Debian Bookworm system. 3 | 4 | Bug reports are very welcome! Please visit the bunsenlabs forums: 5 | https://forums.bunsenlabs.org/viewforum.php?id=14 6 | 7 | Or post an issue on the GitHub repository: 8 | https://github.com/BunsenLabs/bunsen-netinstall/issues 9 | 10 | 11 | HOW TO USE 12 | ---------- 13 | 14 | Download the latest Debian bookworm "netinst" .iso file for your architecture. 15 | i386: https://cdimage.debian.org/cdimage/release/current/i386/iso-cd/ 16 | amd64: https://cdimage.debian.org/cdimage/release/current/amd64/iso-cd/ 17 | and use it to install a basic cli system. 18 | 19 | Make sure sudo is enabled. (See "DEBIAN NETINSTALL HINTS" below.) 20 | 21 | Boot your Debian cli system, log in and run these commands, as a normal user: 22 | (A fresh copy of this bunsen-netinstall package will be downloaded.) 23 | 24 | wget https://github.com/bunsenlabs/bunsen-netinstall/archive/boron.tar.gz 25 | tar -xpf boron.tar.gz 26 | cd bunsen-netinstall-boron 27 | ./install 28 | 29 | The installation process will start. 30 | Follow any prompts that appear on the screen. 31 | 32 | You will be asked to choose between a regular "full" install, a "lite" install 33 | and a "base" install. 34 | 35 | The "lite" version installs slightly fewer packages and uses fewer system resources, 36 | for example by not using composition or menu icons. 37 | It also makes some app substitutions, notably that the web browser is dillo and 38 | the text editor is nano. 39 | 40 | The "base" install is a minimal set of packages just sufficient to make 41 | a working BunsenLabs desktop. A lot of commonly used utilities have been omitted, 42 | and dillo and nano are substituted as with the "lite" install. 43 | 44 | Dillo has a very limited feature set but it's fast and light, and 45 | good enough for finding online documentation. 46 | 47 | Nano in a terminal has slightly different keyboard shortcuts from most graphical 48 | text editors, but is usable for simple edits to configuration files. 49 | 50 | A folder called bunsen-netinstall-logs will be added to your ~/.cache folder. 51 | (The file bunsen-netinstall-logs/install.log will contain verbose information 52 | about the install process.) 53 | This folder may safely be removed if the installation was successful, and no 54 | issues arose subsequently. 55 | 56 | A folder /backup/bunsen-netinstall on your root file system will hold backups 57 | of system files replaced during the install. 58 | 59 | The script itself has been separated off from the files holding specific data 60 | about the installation. This is intended to make customization easier. It 61 | should not be necessary to edit "install". Even if the script is upgraded in 62 | the future, the same config files should still work. 63 | 64 | If you want to customize the installation process before running the installer 65 | then use a cli editor like nano or vim to edit any of the files to your taste. 66 | You might particularly want to look at pkgs-recs and pkgs-norecs 67 | (or their "lite" or "base" equivalents), but there are other things 68 | you might want to adjust, eg to install on Devuan... 69 | 70 | FILES IN THIS COLLECTION 71 | ------------------------ 72 | 73 | README.md: this file\ 74 | LICENSE: a copy of the GPL3 license\ 75 | install: the installation script\ 76 | copyright: GNU licence statement\ 77 | greeting: message to user\ 78 | pkgs-recs: packages to install with recommends\ 79 | pkgs-norecs: packages to install without recommends\ 80 | pkgs-recs-lite: packages to install with recommends (lite package list)\ 81 | pkgs-norecs-lite: packages to install without recommends (lite package list)\ 82 | pkgs-recs-base: packages to install with recommends (base package list)\ 83 | pkgs-norecs-base: packages to install without recommends (base package list)\ 84 | sysfiles1: system files to copy in before installing packages (mainly apt-related)\ 85 | sysfiles2: system files to copy in after installing packages\ 86 | apt-keys: script to install the BunsenLabs Apt key\ 87 | gen_sources: commands to edit /etc/apt/sources.list\ 88 | preinstall_commands: commands to run before installing packages and files\ 89 | postinstall_commands: commands to run after installing packages and files\ 90 | config: sets some directory paths etc\ 91 | bunsen-netinstall-logs: folder to copy into user's ~/.cache directory 92 | 93 | DEBIAN NETINSTALL HINTS 94 | ----------------------- 95 | 96 | Installing Debian Bookworm by the netinstall CD is similar to using the standard 97 | installer. 98 | 99 | Two points to watch if you want to use this netinstall script afterwards: 100 | 101 | 1) At the "Set up users and passwords" screen, **DO NOT** enter a password for root. 102 | Type nothing and press "continue". 103 | Do this again at "Re-enter password to verify". 104 | Enter your own name and password as normal. 105 | You will then be given 'sudo' permissions, which will be needed in the script. 106 | 107 | 2) At the "software selection" stage DESELECT EVERYTHING except "standard 108 | system utilities". 109 | You will have a core system only, on which the netinstall installer will add 110 | what is needed.\ 111 | (Some software items will be marked with an asterisk, indicating that they have 112 | been preselected. Use the up/down arrows to move, and the spacebar to toggle 113 | selection.) 114 | 115 | The netinstall download and links to documentation can be found here: 116 | https://www.debian.org/CD/netinst/ 117 | -------------------------------------------------------------------------------- /apt-keys: -------------------------------------------------------------------------------- 1 | # This file is sourced by the install script just before installing 2 | # the main packages. 3 | # You can add code to install APT GPG keys here. 4 | # 5 | # LOGGING: 6 | # bigmsg "..." will output a bold message to the terminal and logfile. 7 | # End your command lines with: 8 | # > >( tee -a "$logfile" ) 2>&1 || giveup "Some message..." 1 9 | # so that output will be logged, and success checked. 10 | 11 | # BUNSEN_APT_FINGERPRINT='0F54 A732 2439 0760 EB5D 9A04 6979 6250 0AFF 9B75' 12 | 13 | bigmsg "Installing BunsenLabs APT key." 14 | 15 | # An apt-key file is now packaged with this script, shipped in-place. 16 | 17 | apt_keydir='/etc/apt/trusted.gpg.d' 18 | if [[ -f "${apt_keydir}/bunsen-release.asc" ]] 19 | then 20 | msg "BunsenLabs APT key found." 21 | else 22 | giveup "BunsenLabs APT key not found in $apt_keydir." 1 23 | fi 24 | -------------------------------------------------------------------------------- /bunsen-netinstall-logs-templates/README: -------------------------------------------------------------------------------- 1 | This folder contains files created during the installation of 2 | BunsenLabs by the bunsen-netinstall script. 3 | They could be useful in restoring a failed install to its 4 | previous state, or in bugfixing. 5 | There is also a copy of the "undo" script, which attempts to 6 | return the system to its original state. This is experimental, and 7 | not expected to work 100%. 8 | 9 | If the installation was successful and no issues occurred subsequently, 10 | this whole folder may safely be deleted. 11 | 12 | A folder /backup on your root file system holds backups of 13 | system files replaced during the install. 14 | This may also be removed if desired. 15 | -------------------------------------------------------------------------------- /bunsen-netinstall-logs-templates/install.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BunsenLabs/bunsen-netinstall/6e8d67e884b5b8c08dc6731d17c4e77c2e5b42f8/bunsen-netinstall-logs-templates/install.log -------------------------------------------------------------------------------- /bunsen-netinstall-logs-templates/sysdirs-added: -------------------------------------------------------------------------------- 1 | # this is a list of system directories added by the install script 2 | -------------------------------------------------------------------------------- /bunsen-netinstall-logs-templates/sysfiles-added: -------------------------------------------------------------------------------- 1 | # this is a list of system files added by the install script 2 | -------------------------------------------------------------------------------- /bunsen-netinstall-logs-templates/sysfiles-replaced: -------------------------------------------------------------------------------- 1 | # this is a list of system files replaced by the install script 2 | -------------------------------------------------------------------------------- /bunsen-netinstall-logs-templates/userdirs-added: -------------------------------------------------------------------------------- 1 | # this is a list of user directories added by the install script 2 | -------------------------------------------------------------------------------- /bunsen-netinstall-logs-templates/userfiles-added: -------------------------------------------------------------------------------- 1 | # this is a list of user files added by the install script 2 | -------------------------------------------------------------------------------- /bunsen-netinstall-logs-templates/userfiles-replaced: -------------------------------------------------------------------------------- 1 | # this is a list of user files replaced by the install script 2 | -------------------------------------------------------------------------------- /config: -------------------------------------------------------------------------------- 1 | # This file contains some configuration variables. 2 | # You may change these if you want, but they must be set, 3 | # and this file must be present. 4 | 5 | log_dir="$HOME/.cache/bunsen-netinstall-logs" # place to store install logs and other data 6 | backup_dir="/backup/bunsen-netinstall" # replaced system files will be moved here 7 | backup_suffix="~bunsen-netinst-$(date +%FT%T)~" # for backed-up files 8 | 9 | # files and directories which must be packaged with this script (array): 10 | necessary_files=(sysfiles1 sysfiles2 bunsen-netinstall-logs-templates pkgs-recs pkgs-recs-lite pkgs-recs-base pkgs-norecs pkgs-norecs-lite pkgs-norecs-base apt-keys gen_sources preinstall_commands postinstall_commands copyright README.md LICENSE) 11 | 12 | # Default behaviour is to add files in sysfiles1 & 2 to 13 | # the existing system directories. 14 | # If you want to completely replace any directories, list them here. 15 | # ( /etc/skel or something.d might be candidates. ) 16 | # NB These directories will be removed from your system (but backed up) 17 | # so be careful. 18 | # (Space-separated list, paths containing spaces quoted, or "none".) 19 | # (replaced_dirs is an array) 20 | #replaced_dirs=("/etc/skel" ) 21 | replaced_dirs=("none") 22 | 23 | # On the first run of the script any directories or files here 24 | # will be copied to a snapshots directory and left untouched. 25 | # They might be useful if trying to restore the original system. 26 | # (Space-separated list, paths containing spaces quoted, or "none".) 27 | # (snapshots is an array) 28 | #snapshots=() 29 | #snapshots=("/etc/skel") 30 | snapshots=("none") 31 | -------------------------------------------------------------------------------- /copyright: -------------------------------------------------------------------------------- 1 | Copyright: 2 | 3 | Copyright © 2015-2024 John Crawley 4 | 5 | License: 6 | 7 | This package is free software; you can redistribute it and/or 8 | modify it under the terms of the GNU General Public 9 | License as published by the Free Software Foundation; either 10 | version 3 of the License, or (at your option) any later version. 11 | 12 | This package is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | See the GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with this package; if not, write to the Free Software Foundation, 19 | Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 | 21 | On Debian systems, the complete text of the GNU General Public License 22 | can be found in `/usr/share/common-licenses/GPL-3'. 23 | -------------------------------------------------------------------------------- /gen_sources: -------------------------------------------------------------------------------- 1 | sed -r 's/(^\s*deb(-src)?\s+[^ ]+)(\s+bookworm\s+|\s+bookworm-security\s+|\s+bookworm-updates\s+|\s+bookworm-backports\s+).*$/\1\3 main contrib non-free-firmware non-free/g 2 | /deb-src/s/^/#/' /etc/apt/sources.list 2> >( tee -a "$logfile" ) > sysfiles1/etc/apt/sources.list || giveup "There was a problem editing sources.list." 1 3 | -------------------------------------------------------------------------------- /greeting: -------------------------------------------------------------------------------- 1 | This is a network installer for 2 | BunsenLabs Linux on cli Debian Bookworm. 3 | 4 | It will use the BunsenLabs Boron repository 5 | to download and install necessary packages, 6 | along with packages from the Debian repositories, 7 | and do any other necessary configuration. 8 | 9 | While there is a good chance of installing a working system, 10 | please be ready to deal with any bugs that might show up! 11 | -------------------------------------------------------------------------------- /install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This is intended to be a general-purpose script to install 3 | # a desktop environment, possibly BunsenLabs, 4 | # on a Debian netinstall base. (See README.md for more details.) 5 | # It will modify and add some system files, install the necessary 6 | # packages and copy configuration files into your home directory. 7 | # These changes might be reversible, but no guarantees are offered, 8 | # and all the usual caveats apply. 9 | # This install script is intended to be run on a newly installed 10 | # system with no personal settings or data. Attempts will be made to 11 | # backup any such data that might exist, but do not rely on it. 12 | 13 | # USAGE 14 | # This script should come in a folder called bunsen-?-netinstall, 15 | # along with a collection of other necessary files. 16 | # Change directory (cd) into that folder and run this script: 17 | # ./install 18 | # to start the installation process. 19 | # A folder bunsen-netinstall-logs will be added to your home folder, 20 | # to a location set in the "config" file (probably ~/.cache). 21 | # This may safely be removed if the installation was successful. 22 | # A folder /backup (or other name) on your root file system will hold 23 | # backups of system files replaced during the install. 24 | 25 | ################################################ 26 | 27 | set -o nounset # do not accept unset variables 28 | # If not running in terminal, exit with message 29 | [[ -t 0 && -t 1 && -t 2 ]] || { echo "$0: This script must be run from a terminal" >&2; exit 1; } 30 | 31 | # If running in a TTY, disable screen blanking 32 | [[ "$TERM" = "linux" ]] && setterm -blank 0 33 | 34 | [[ -r config ]] || { echo "$0: Cannot find necessary file \"config\"" >&2; exit 1; } 35 | . config 36 | for i in log_dir backup_dir backup_suffix necessary_files replaced_dirs 37 | do 38 | [[ -n $i ]] || { echo "$0: Config variable $i has not been set. Please check the \"config\" file." >&2; exit 1; } 39 | done 40 | install_backup_dir="${backup_dir}"/install 41 | snapshots_dir="${backup_dir}"/snapshots 42 | backup_dir="$install_backup_dir" 43 | 44 | logfile=error.log # temporary logfile in installer directory 45 | exec > >( tee -a "$logfile" ) 2>&1 46 | 47 | user=$USER 48 | 49 | # Debian release that this BunsenLabs system will be based on (lowercase) 50 | debian_base=bookworm 51 | 52 | # in case script is run after installing bunsen-os-release (lowercase too) 53 | bunsen_codename=boron 54 | 55 | msg() { 56 | echo " 57 | $1 58 | " 59 | } 60 | 61 | bigmsg() { 62 | tput bold 63 | echo " 64 | $1 65 | ------------------------------------------------" 66 | tput sgr0 67 | sleep 3 68 | } 69 | 70 | errmsg() { 71 | tput bold 72 | echo "######## ERROR ######## 73 | $1 74 | ------------------------------------------------" 75 | tput sgr0 76 | sleep 4 77 | } 78 | 79 | log() { 80 | echo " 81 | $1 82 | " >> "$logfile" 83 | } 84 | 85 | warnlog() { 86 | echo "######## WARNING ######## 87 | $1 88 | ------------------------------------------------" >> "$logfile" 89 | } 90 | 91 | confirm() { # $1 is message, $2 is desired return value: 0 or 1 (passed to 'giveup') 92 | echo " 93 | $1 94 | (press enter to continue, any other key to exit) 95 | " 96 | read -srn1 97 | [[ -n $REPLY ]] && giveup "terminated by $user, goodbye!" "$2" 98 | log "$user chose to continue" 99 | } 100 | 101 | option() { 102 | echo " 103 | $1 104 | (press enter to agree, any other key to pass) 105 | " 106 | read -srn1 107 | [[ $REPLY ]] && { log "$user did not agree"; return 1; } 108 | log "$user agreed" 109 | return 0 110 | } 111 | 112 | giveup() { # $1 is message, $2 is desired return value: 0 or 1 113 | if [[ ${2:-1} = 0 ]] 114 | then 115 | bigmsg "$1" 116 | else 117 | errmsg "$1" 118 | fi 119 | [[ ${replaced_dirs[0]} != "none" ]] && { 120 | for i in "${replaced_dirs[@]}" 121 | do 122 | sudo test -d "$i" || { # if dir has not been replaced by new version, put back the original backup 123 | if sudo test -d "${i%/*}" 124 | then 125 | sudo test -d "${backup_dir}/$i" && sudo mv "${backup_dir}/$i" "${i%/*}" || errmsg "Unable to restore missing folder $i ." 126 | else 127 | errmsg "Cannot move $i to ${i%/*} : no such directory." 128 | fi 129 | } 130 | done 131 | } 132 | echo "now exiting..." 133 | exit ${2:-1} 134 | } 135 | 136 | net_test() { 137 | tries=4 138 | printf 'checking network connection... ' 139 | while [[ $tries -gt 0 ]] 140 | do 141 | wget -O - 'http://ftp.debian.org/debian/README' >/dev/null 2>&1 && { 142 | msg '[OK]' 143 | return 0 144 | } 145 | ((tries--)) 146 | sleep 1 147 | done 148 | msg '[FAILED]' 149 | return 1 150 | } 151 | 152 | # pass Debian or BunsenLabs 153 | check_repo() { 154 | local repo_name="$1" 155 | msg "checking $repo_name repository is online..." 156 | case "$repo_name" in 157 | Debian) 158 | local repo_url='https://deb.debian.org/debian' 159 | local dist="$debian_base" 160 | ;; 161 | BunsenLabs) 162 | local repo_url='https://pkg.bunsenlabs.org/debian' 163 | local dist="$bunsen_codename" 164 | ;; 165 | *) 166 | giveup "Sorry, I don't understand the repository name $repo_name" 1 167 | ;; 168 | esac 169 | # if curl --output /dev/null --silent --head --fail "${repo_url}/dists/${dist}/InRelease"; then 170 | if wget --spider --quiet "${repo_url}/dists/${dist}/InRelease"; then 171 | msg "OK" 172 | return 0 173 | else 174 | errmsg "$repo_name repository seems to be offline" 175 | return 1 176 | fi 177 | } 178 | 179 | usingDebStable() { 180 | local reported_codename=$( lsb_release -cs ) 181 | case ${reported_codename,,} in 182 | "$debian_base"|"$bunsen_codename") return 0 ;; 183 | esac 184 | warnlog "'lsb_release -cs' reported wrong codename: $reported_codename" 185 | return 1 186 | } 187 | 188 | trap 'giveup "Script terminated." 1' 1 2 3 15 189 | [[ $user = root ]] && giveup "This script should be run by a normal user, not root" 1 190 | 191 | log " 192 | ######################################################################## 193 | Starting netinstall script for $user at $(date)" 194 | 195 | clear 196 | tput bold 197 | echo "Hi $user, welcome to the netinstall script!" 198 | tput sgr0 199 | echo " 200 | $( < greeting ) 201 | 202 | This script is expected to be run just after completing a netinstall 203 | installation of the Debian Bookworm CORE SYSTEM ONLY. 204 | (See \"Debian Netinstall Hints\" in the README.md file.) 205 | " 206 | confirm "Would you like to start the install now?" 0 207 | 208 | net_test || giveup "You do not seem to have a working network connection. 209 | Please fix this issue and run the script again." 1 210 | 211 | # make sure repos are online 212 | for i in Debian BunsenLabs 213 | do 214 | check_repo "$i" || giveup "Unable to continue without working $i repository" 1 215 | done 216 | 217 | # check for needed files 218 | missing_files= 219 | for i in "${necessary_files[@]}" 220 | do 221 | [[ -r $i ]] || missing_files+=" $i" 222 | done 223 | [[ $missing_files ]] && giveup "Some necessary files or folders were missing: $missing_files" 1 || msg "Necessary files: OK" 224 | 225 | # setup logfile 226 | [[ -d "$log_dir" ]] || { 227 | mkdir -p "$log_dir" || giveup "failed to create $log_dir in $HOME" 1 228 | cp bunsen-netinstall-logs-templates/* "$log_dir" || giveup "failed to copy logfiles directory contents into $log_dir" 1 229 | } 230 | cat "$logfile" >> "$log_dir"/install.log 231 | rm "$logfile" # finished with temporary logfile 232 | logfile="$log_dir"/install.log # this logfile will remain after the install 233 | exec > >( tee -a "$logfile" ) 2>&1 234 | bigmsg "Messages are being saved to $logfile" 235 | cp -f pkgs-recs pkgs-recs-lite pkgs-norecs pkgs-norecs-lite config "$log_dir" 236 | 237 | usingDebStable && msg "Debian version: OK" || { 238 | confirm "You do not appear to have Debian $debian_base 239 | or BunsenLabs $bunsen_codename installed. 240 | If you think this is incorrect, 241 | you may wish to continue with the installation, 242 | otherwise it would be safer to stop. 243 | Would you like to continue anyway?" 1; } 244 | 245 | # is X already installed? FIXME Is this the best way to check if there is a desktop system installed already? 246 | hash startx > /dev/null 2>&1 && { warnlog "Command 'startx' is available. Desktop system already installed?" 247 | confirm "You seem to have some kind of desktop environment already installed. 248 | If you continue with this installation you may have problems, 249 | or even end up with an unusable system. 250 | Would you like to continue anyway?" 1; } 251 | 252 | # can use sudo? 253 | echo " 254 | You will need your password to perform certain system tasks. 255 | Please enter it now and it will be stored for a while. 256 | (You may need to enter it again later.)" 257 | sudo -v || giveup "You do not appear to have permission to use sudo, 258 | which is needed in this script. 259 | Please make the necessary adjustments to your system and try again." 1 260 | 261 | pkgs_norecs_file= 262 | pkgs_recs_file= 263 | 264 | bigmsg "You can choose to install the \"full\" package list, which is the same as 265 | what is installed by the usual iso file, or the \"lite\" list, 266 | which is slightly smaller and more suitable for older machines. 267 | There is also a \"base\" list which installs only the minimum packages needed 268 | for a BunsenLabs desktop, with many common utilities omitted." 269 | 270 | PS3='Please enter the number of your choice > ' 271 | 272 | select list in 'full' 'lite' 'base' 273 | do 274 | case "$list" in 275 | full) 276 | log "$user chose the full install" 277 | pkgs_norecs_file=pkgs-norecs 278 | pkgs_recs_file=pkgs-recs 279 | break 280 | ;; 281 | lite) 282 | log "$user chose the lite install" 283 | pkgs_norecs_file=pkgs-norecs-lite 284 | pkgs_recs_file=pkgs-recs-lite 285 | break 286 | ;; 287 | base) 288 | log "$user chose the base install" 289 | pkgs_norecs_file=pkgs-norecs-base 290 | pkgs_recs_file=pkgs-recs-base 291 | break 292 | ;; 293 | esac 294 | done 295 | 296 | for i in "$pkgs_norecs_file" "$pkgs_recs_file" 297 | do 298 | [[ -r $i ]] || giveup "Cannot read package list $i" 1 299 | done 300 | 301 | # initial tweaking 302 | bigmsg "Adjusting some system settings." 303 | [[ -r preinstall_commands ]] && { 304 | . preinstall_commands 305 | } 306 | 307 | bigmsg "Upgrading system before install 308 | (this may take a little while)" 309 | bigmsg "Please press 'y' if prompted at some point." 310 | 311 | msg "Updating database..." 312 | sudo apt-get --quiet update || giveup "There was a problem with 'apt-get update'. 313 | There may be some information in ${logfile}." 1 314 | 315 | msg "Upgrading packages..." 316 | sudo apt-get --quiet dist-upgrade || giveup "There was a problem with 'apt-get dist-upgrade'. 317 | There may be some information in ${logfile}." 1 318 | 319 | #msg "Removing unnecessary packages..." 320 | #sudo apt-get --quiet autoremove || giveup "There was a problem with 'apt-get autoremove'. 321 | #There may be some information in ${logfile}." 1 322 | 323 | log "Packages originally installed by the Debian netinstaller are recorded in $log_dir/netinstall-core-apps" 324 | [[ -f "$log_dir"/netinstall-core-apps ]] || apt-mark showmanual > "$log_dir"/netinstall-core-apps 325 | log "Packages originally auto-installed by the Debian netinstaller are recorded in $log_dir/netinstall-auto-apps" 326 | [[ -f "$log_dir"/netinstall-auto-apps ]] || apt-mark showauto > "$log_dir"/netinstall-auto-apps 327 | 328 | # FIXME put this in a config file? 329 | msg "Installing rsync and apt-transport-https." 330 | sudo apt-get --quiet install rsync apt-transport-https || giveup "Failed to install necessary package 'rsync' or 'apt-transport-https'." 1 331 | 332 | [[ ${snapshots[0]} != "none" ]] && { 333 | bigmsg "Making snapshots of some files or directories" 334 | for i in "${snapshots[@]}" 335 | do 336 | [[ $i ]] || continue # blank line 337 | i="${i%/}" # remove any trailing slash 338 | sudo test -e "$i" || { errmsg "$i set in \"snapshots\" in file \"config\" does not exist"; continue;} 339 | sudo test -e "${snapshots_dir}${i}" && { msg "snapshot of $i already made"; continue;} 340 | msg "making snapshot of $i in ${snapshots_dir}" 341 | sudo mkdir -p "${snapshots_dir}${i%/*}" || errmsg "Failed to make directory ${snapshots_dir}${i%/*}" 342 | sudo cp -a "$i" "${snapshots_dir}${i%/*}" || errmsg "Failed to copy $i to ${snapshots_dir}${i%/*}." 343 | done 344 | } 345 | 346 | ############ file copying functions ############ 347 | # rsync would do almost the same, but this allows us to keep records and be picky about corner cases. 348 | 349 | are_identical() { # two files have same content and same permissions 350 | sudo cmp -s "$1" "$2" && [[ $(sudo stat -c %a "$1") = $(sudo stat -c %a "$2") ]] && return 0 351 | return 1 352 | } 353 | 354 | install_sysdir() { # recursively copy contents of $1 into $2, make backups in $3 of replaced files and keep records of changes 355 | [[ $# = 3 ]] || giveup "install_sysdir() needs three arguments" 1 356 | # use 'sudo test' in case file is only accessible to root 357 | sudo test -d "$1" || giveup "$1 is not an existing directory" 1 358 | sudo test -d "$2" || giveup "$2 is not an existing directory" 1 359 | sudo mkdir -p "$3" || giveup "Unable to make directory $3." 1 360 | for i in "$1"/* 361 | do 362 | sudo test -e "$i" || break # $1 is empty 363 | [[ $i = *$'\n'* ]] && giveup "Line-break in filename: $i 364 | Please contact the software provider, or remove this file 365 | before running the script again." 1 366 | [[ $i = *~ ]] && { msg "ignoring backup file $i"; continue; } 367 | filename="${i##*/}" 368 | target="${2%/}/${filename}" # avoid double slash if $2 is / 369 | if sudo test -d "$i" 370 | then 371 | if sudo test -e "${target}" 372 | then 373 | sudo test -d "${target}" || giveup "${target} exists, but is not a directory." 1 374 | sudo rsync --dirs --perms "${target}" "$3" || giveup "There was a problem copying ${target} to $3/${filename}." 1 375 | else 376 | msg "adding directory ${target}" 377 | sudo rsync --dirs --perms "$i" "$2" || giveup "There was a problem copying $i to $2." 1 378 | echo "${target}" >> "$log_dir"/sysdirs-added 379 | fi 380 | install_sysdir "$i" "${target}" "$3/${filename}" 381 | else 382 | if sudo test -e "${target}" 383 | then 384 | if are_identical "$i" "${target}" 385 | then # probably this file was added on a previous run of script 386 | msg "$i and ${target} are identical" 387 | else 388 | msg "replacing ${target}" 389 | if sudo test -e "$3/${filename}" 390 | then 391 | msg "A backup copy of ${target} already exists..." # do our best to keep meaningful backups 392 | if are_identical "${target}" "$3/${filename}" 393 | then 394 | msg "but is identical with ${target}" 395 | else 396 | msg "but an extra backup will be made at $3/${filename}${backup_suffix}" 397 | sudo mv "${target}" "$3/${filename}${backup_suffix}" || giveup "There was a problem moving ${target} to $3/${filename}." 1 398 | fi 399 | else 400 | sudo mv "${target}" "$3/${filename}" || giveup "There was a problem moving ${target} to $3/${filename}." 1 401 | fi 402 | sudo cp --preserve=mode "$i" "$2" || giveup "There was a problem copying $i to $2." 1 403 | echo "${target}" >> "$log_dir"/sysfiles-replaced 404 | fi 405 | else 406 | msg "adding ${target}" 407 | sudo cp --preserve=mode "$i" "$2" || giveup "There was a problem copying $i to $2." 1 408 | echo "${target}" >> "$log_dir"/sysfiles-added 409 | fi 410 | fi 411 | done 412 | } 413 | 414 | # This function is no longer needed. User files are installed by bl-user-setup (shipped with bunsen-configs) on first login. 415 | # If you adapt this netinstall script for other systems you might want to use it. 416 | install_userdir() { # recursively copy contents of $1 into $2, make backups of replaced files in $2 and keep records of changes 417 | [[ $# = 2 ]] || giveup "install_userdir() needs two arguments" 1 418 | [[ -d $1 ]] || giveup "$1 is not an existing directory." 1 419 | [[ -d $2 ]] || giveup "$2 is not an existing directory." 1 420 | for i in "$1"/* 421 | do 422 | [[ -e $i ]] || break # $1 is empty 423 | [[ $i = *$'\n'* ]] && giveup "Line-break in filename: $i 424 | Please contact the software provider, or remove this file 425 | before running the script again." 1 426 | filename="${i##*/}" 427 | if [[ -d $i ]] 428 | then 429 | if [[ -e "$2/${filename}" ]] 430 | then 431 | [[ -d "$2/${filename}" ]] || giveup "$2/${filename} exists, but is not a directory." 1 432 | else 433 | msg "adding directory $2/${filename}" 434 | rsync --dirs --perms "$i" "$2" || giveup "There was a problem copying $i to $2." 1 435 | echo "$2/${filename}" >> "$log_dir"/userdirs-added 436 | fi 437 | install_userdir "$i" "$2/${filename}" 438 | else 439 | if [[ -e "$2/${filename}" ]]; then 440 | if are_identical "$i" "$2/${filename}"; then # probably this file was added on a previous run of script 441 | msg "$i and $2/${filename} are identical" 442 | else 443 | msg "replacing $2/${filename}" 444 | # keep original backup, but try not to fill user's home with meaningless backup files 445 | mv --no-clobber "$2/${filename}" "$2/${filename}${backup_suffix}" || giveup "There was a problem renaming $2/${filename} to $2/${filename}${backup_suffix}." 1 446 | cp --preserve=mode "$i" "$2" || giveup "There was a problem copying $i to $2." 1 447 | echo "$2/${filename}" >> "$log_dir"/userfiles-replaced 448 | fi 449 | else 450 | msg "adding $2/${filename}" 451 | cp --preserve=mode "$i" "$2" || giveup "There was a problem copying $i to $2." 1 452 | echo "$2/${filename}" >> "$log_dir"/userfiles-added 453 | fi 454 | fi 455 | done 456 | } 457 | 458 | ########## end file copying functions ########## 459 | 460 | bigmsg "Adjusting package management (apt) settings." 461 | 462 | # gen_sources aims to preserve whatever mirrors user has configured 463 | # while adding 'contrib', 'non-free-firmware' and 'non-free' 464 | 465 | if [[ -r gen_sources ]]; then 466 | if [[ -s sysfiles1/etc/apt/sources.list ]]; then 467 | msg "sysfiles1/etc/apt/sources.list already generated" 468 | else 469 | msg "generating new sources.list" 470 | . gen_sources # commands to generate sysfiles1/etc/apt/sources.list 471 | fi 472 | fi 473 | 474 | [[ -s sysfiles1/etc/apt/sources.list ]] || giveup "There is no sources.list file." 1 475 | 476 | msg "installing apt configuration files" 477 | 478 | install_sysdir sysfiles1 / "${backup_dir}" 479 | bigmsg "Apt settings adjusted." 480 | 481 | # Install any necessary APT keys. 482 | [[ -r apt-keys ]] && { 483 | . apt-keys 484 | } 485 | 486 | bigmsg "Installing packages needed for the system. 487 | This may take some time." 488 | #bigmsg "Please press 'y' if prompted at some point." 489 | 490 | msg "updating apt database..." 491 | sudo apt-get --quiet update || { 492 | warnlog "'apt-get --quiet update' returned an error" 493 | confirm "There was a problem with 'apt-get update'. 494 | There may be some information in ${logfile}. 495 | Would you like to continue anyway, or exit?" 1 496 | } 497 | 498 | msg "upgrading existing packages..." 499 | sudo apt-get --quiet dist-upgrade || { 500 | warnlog "'apt-get --quiet dist-upgrade' returned an error" 501 | confirm "There was a problem with 'apt-get dist-upgrade'. 502 | There may be some information in ${logfile}. 503 | Would you like to continue anyway, or exit?" 1 504 | } 505 | 506 | bigmsg "Installing new packages. 507 | There may be around 1000 packages to install, 508 | so this will probably take a while..." 509 | 510 | # recommends settings here will override whatever is set in apt.conf.d 511 | 512 | norecs=($( sed 's/\#.*$//' "$pkgs_norecs_file" )) && [[ ${#norecs[@]} -gt 0 ]] && { 513 | bigmsg "Installing packages, without recommends." 514 | sudo apt-get --no-install-recommends --quiet install "${norecs[@]}" || { 515 | warnlog "'apt-get --no-install-recommends --quiet install' returned an error" 516 | confirm "There was a problem installing some packages. 517 | There may be some information in ${logfile}. 518 | You might want to exit the script, comment out packages causing problems 519 | in ${pkgs_norecs_file}, and run the script again. 520 | If the missing packages are unimportant, you might prefer to continue 521 | with the install and fix the issues later. 522 | Would you like to ignore the errors and continue now, 523 | or exit and try to fix the problems?" 1 524 | } 525 | } 526 | 527 | recs=($( sed 's/\#.*$//' "$pkgs_recs_file" )) && [[ ${#recs[@]} -gt 0 ]] && { 528 | bigmsg "Installing packages, with recommends." 529 | sudo apt-get -o APT::Install-Recommends=true --quiet install "${recs[@]}" || { 530 | warnlog "'apt-get -o APT::Install-Recommends=true --quiet install' returned an error" 531 | confirm "There was a problem installing some packages. 532 | There may be some information in ${logfile}. 533 | You might want to exit the script, comment out packages causing problems 534 | in ${pkgs_recs_file}, and run the script again. 535 | If the missing packages are unimportant, you might prefer to continue 536 | with the install and fix the issues later. 537 | Would you like to ignore the errors and continue now, 538 | or exit and try to fix the problems?" 1 539 | } 540 | } 541 | 542 | bigmsg "New packages installed" 543 | 544 | # get stuff from GitHub, make local repo, install from there 545 | #bigmsg "Importing packages from GitHub" 546 | #[[ -r github_install ]] && { 547 | # . github_install 548 | #} 549 | 550 | 551 | bigmsg "Copying in new system files. 552 | Replaced files will be backed up to ${backup_dir}" 553 | 554 | # move dirs that will be replaced to backup dir 555 | [[ ${replaced_dirs[0]} != "none" ]] && { 556 | for i in "${replaced_dirs[@]}" 557 | do 558 | sudo test -d "$i" || { errmsg "directory $i set in \"replaced_dirs\" in file \"config\" does not exist"; continue; } 559 | if sudo test -d "${backup_dir}/$i" 560 | then 561 | msg "${backup_dir}/$i already exists. 562 | No need to backup $i" 563 | else 564 | bigmsg "$i will be replaced: moving it to ${backup_dir}" # we want to completely replace the directory 565 | sudo mkdir -p "${backup_dir}/${i%/*}" || giveup "Unable to make directory ${backup_dir}/${i%/*}." 1 566 | sudo mv "$i" "${backup_dir}/${i%/*}" || giveup "Unable to move $i to ${backup_dir}/${i%/*}" 1 567 | fi 568 | done 569 | } 570 | 571 | shopt -s dotglob # want dotfiles too 572 | install_sysdir sysfiles2 / "${backup_dir}" 573 | shopt -u dotglob 574 | 575 | # TODO find a more elegant way of handling this: 576 | # hack to cope with /etc/network/interfaces being undesirably nuked when network-manager is not installed 577 | [[ $(dpkg-query --show --showformat='${db:Status-Abbrev}' 'network-manager' 2>/dev/null) =~ ^(i|h)i' '$ ]] || { 578 | msg "Restoring overwritten /etc/network/interfaces 579 | from backup at ${backup_dir}/etc/network/interfaces 580 | because network-manager is not installed." 581 | [[ -r "${backup_dir}/etc/network/interfaces" ]] || { 582 | errmsg "Cannot restore /etc/network/interfaces from backup. 583 | You may need to edit this file manually to get a working network." 584 | } 585 | sudo cp "${backup_dir}/etc/network/interfaces" /etc/network/interfaces 586 | } 587 | 588 | bigmsg "system files installed" 589 | 590 | #bigmsg "Updating your personal configuration files. 591 | #Replaced files wil be backed up with a suffix of $backup_suffix" 592 | 593 | #shopt -s dotglob # want dotfiles too 594 | #install_userdir /etc/skel $HOME 595 | #shopt -u dotglob 596 | 597 | #bigmsg "Files updated." 598 | 599 | # final tweaking 600 | bigmsg "Adjusting some system settings." 601 | [[ -r postinstall_commands ]] && { 602 | . postinstall_commands 603 | } 604 | 605 | bigmsg "INSTALL FINISHED!" 606 | confirm "You need to restart your computer to log into your new system. 607 | Would you like to continue to restart now, 608 | or exit the script and restart later?" 0 609 | bigmsg "REBOOTING... 610 | (thank you for your patience so far)" 611 | sudo shutdown -r now 612 | exit 613 | -------------------------------------------------------------------------------- /pkgs-norecs: -------------------------------------------------------------------------------- 1 | # Packages here will be installed without recommends. 2 | 3 | #alsa-base 4 | alsa-ucm-conf 5 | alsa-utils 6 | amd64-microcode 7 | anacron 8 | #apt-transport-https 9 | apt-xapian-index 10 | aptitude 11 | arandr 12 | arj 13 | at 14 | at-spi2-core 15 | #avahi-daemon 16 | #avahi-utils 17 | bash-completion 18 | btrfs-progs 19 | #bzip2 #dep 20 | catfish 21 | chntpw 22 | colordiff 23 | conky-all 24 | cpufrequtils 25 | cryptsetup 26 | cryptsetup-initramfs 27 | curl 28 | dillo 29 | dbus-user-session 30 | dbus-x11 31 | dmidecode 32 | dmz-cursor-theme 33 | dosfstools 34 | efibootmgr 35 | eject 36 | enchant-2 37 | evince 38 | exfatprogs 39 | f2fs-tools 40 | #fdpowermon 41 | feh 42 | file-roller 43 | filezilla 44 | firefox-esr 45 | firmware-ath9k-htc 46 | firmware-b43-installer 47 | firmware-b43legacy-installer 48 | firmware-iwlwifi 49 | firmware-linux 50 | #firmware-ralink 51 | firmware-realtek 52 | firmware-sof-signed 53 | fonts-cantarell 54 | fonts-noto 55 | fonts-noto-cjk 56 | fonts-noto-mono 57 | fonts-inconsolata 58 | fonts-liberation 59 | ftp 60 | fuse3 61 | #fusesmb 62 | #galculator 63 | galternatives 64 | gddrescue 65 | gdebi 66 | geany 67 | #geany-plugins 68 | ghostscript 69 | gigolo 70 | gmrun 71 | gnome-keyring 72 | gnome-themes-extra 73 | gparted 74 | gsimplecal 75 | gstreamer1.0-libav 76 | gstreamer1.0-plugins-bad 77 | gstreamer1.0-plugins-base 78 | gstreamer1.0-plugins-good 79 | gstreamer1.0-plugins-ugly 80 | gstreamer1.0-pulseaudio 81 | gtk2-engines-pixbuf 82 | #gtk2-engines-murrine 83 | #gtk3-nocsd 84 | gtk-update-icon-cache 85 | gvfs 86 | gvfs-backends 87 | #gvfs-bin 88 | gvfs-fuse 89 | hardinfo 90 | #haveged 91 | hdparm 92 | #hddtemp 93 | hexchat 94 | hfsprogs 95 | htop 96 | hwdata 97 | i965-va-driver 98 | inotify-tools 99 | intel-microcode 100 | inxi 101 | #jfsutils 102 | jgmenu 103 | lame 104 | less 105 | libblockdev-crypto2 106 | libglib2.0-bin 107 | libgtk-3-0 108 | libinput-tools 109 | libnotify-bin 110 | libpam-gnome-keyring 111 | libqt5svg5 112 | libreoffice-calc 113 | libreoffice-gtk3 114 | libreoffice-writer 115 | librsvg2-common 116 | #libnss-mdns 117 | lightdm 118 | lightdm-gtk-greeter 119 | lightdm-gtk-greeter-settings 120 | light-locker 121 | lm-sensors 122 | locales 123 | lsb-release 124 | lshw 125 | lvm2 126 | lxappearance 127 | lxterminal 128 | lz4 129 | lzop 130 | mdadm 131 | mlocate 132 | modemmanager 133 | mtools 134 | ncal 135 | network-manager 136 | network-manager-gnome 137 | #network-manager-openvpn-gnome 138 | #network-manager-pptp-gnome 139 | #network-manager-vpnc-gnome 140 | nitrogen 141 | ntfs-3g 142 | #ntp 143 | obconf 144 | openbox 145 | openssh-client 146 | p7zip-full 147 | pavucontrol 148 | pciutils 149 | pcmciautils 150 | picom 151 | pkexec 152 | pnmixer 153 | policykit-1-gnome 154 | polkitd 155 | polkitd-pkla 156 | pulseaudio 157 | python3 158 | python3-xdg 159 | qt5-style-plugins 160 | qt5-gtk-platformtheme 161 | #reiser4progs 162 | #reiserfsprogs 163 | rfkill 164 | ristretto 165 | rpl 166 | rsync 167 | rzip 168 | scrot 169 | sensible-utils 170 | smartmontools 171 | speedtest-cli 172 | suckless-tools 173 | sudo 174 | synaptic 175 | systemd-timesyncd 176 | #terminator 177 | thunar 178 | thunar-archive-plugin 179 | thunar-gtkhash 180 | thunar-media-tags-plugin 181 | thunar-volman 182 | tint2 183 | transmission-gtk 184 | #ttf-mscorefonts-installer 185 | tumbler 186 | tumbler-plugins-extra 187 | unace 188 | unalz 189 | unar 190 | unrar 191 | unzip 192 | update-inetd 193 | usb-modeswitch 194 | usbutils 195 | user-setup 196 | uuid-runtime 197 | va-driver-all 198 | #vdpau-va-driver 199 | vlc 200 | vlc-plugin-notify 201 | #volti 202 | #volumeicon-alsa 203 | wireless-tools 204 | #wmctrl 205 | wpasupplicant 206 | xbindkeys 207 | #xbindkeys-config 208 | xcape 209 | xdg-user-dirs 210 | xdg-utils 211 | #xdotool 212 | xfburn 213 | xfce4-appfinder 214 | #xfce4-mixer 215 | xfce4-clipman 216 | xfce4-notifyd 217 | xfce4-power-manager 218 | xfce4-screenshooter 219 | #xfce4-volumed 220 | xfsprogs 221 | xinput 222 | xorg 223 | xsel 224 | xserver-xorg-input-all 225 | xserver-xorg-input-synaptics 226 | xserver-xorg-input-evdev 227 | #xserver-xorg-input-vmmouse 228 | xserver-xorg-input-wacom 229 | xserver-xorg-video-all 230 | xserver-xorg-video-intel 231 | xserver-xorg-video-qxl 232 | xsettingsd 233 | xz-utils 234 | yad 235 | zip 236 | zstd 237 | -------------------------------------------------------------------------------- /pkgs-norecs-base: -------------------------------------------------------------------------------- 1 | # Packages here will be installed without recommends. 2 | 3 | arandr 4 | conky-all 5 | dillo 6 | dmz-cursor-theme 7 | galternatives 8 | gmrun 9 | inxi 10 | jgmenu 11 | libfuse2 12 | lightdm 13 | lightdm-gtk-greeter 14 | lightdm-gtk-greeter-settings 15 | light-locker 16 | lxappearance 17 | nitrogen 18 | obconf 19 | openbox 20 | pkexec 21 | policykit-1-gnome 22 | polkitd 23 | polkitd-pkla 24 | python3-xdg 25 | rxvt-unicode 26 | scrot 27 | sensible-utils 28 | suckless-tools 29 | thunar 30 | thunar-volman 31 | tint2 32 | xbindkeys 33 | xcape 34 | xauth 35 | xinit 36 | xserver-xorg 37 | x11-xserver-utils 38 | xsettingsd 39 | yad 40 | 41 | ## bunsenlabs 42 | ## In the "base" install, bunsenlabs packages are installed without recommends. 43 | bunsen-archive-keyring 44 | bunsen-common 45 | bunsen-configs-base 46 | bunsen-exit 47 | bunsen-images-base 48 | bunsen-numix-icon-theme 49 | bunsen-themes-base 50 | bunsen-thunar 51 | -------------------------------------------------------------------------------- /pkgs-norecs-lite: -------------------------------------------------------------------------------- 1 | # Packages here will be installed without recommends. 2 | 3 | #alsa-base 4 | alsa-ucm-conf 5 | alsa-utils 6 | amd64-microcode 7 | anacron 8 | #apt-transport-https 9 | #apt-xapian-index 10 | #aptitude 11 | arandr 12 | arj 13 | at 14 | at-spi2-core 15 | #avahi-daemon 16 | #avahi-utils 17 | bash-completion 18 | btrfs-progs 19 | #bzip2 #dep 20 | #catfish 21 | chntpw 22 | colordiff 23 | conky-all 24 | cpufrequtils 25 | cryptsetup 26 | cryptsetup-initramfs 27 | curl 28 | dbus-user-session 29 | dbus-x11 30 | dillo 31 | dmidecode 32 | dmz-cursor-theme 33 | dosfstools 34 | efibootmgr 35 | eject 36 | enchant-2 37 | evince 38 | exfatprogs 39 | f2fs-tools 40 | #fdpowermon 41 | feh 42 | file-roller 43 | #filezilla 44 | #firefox-esr 45 | firmware-ath9k-htc 46 | firmware-b43-installer 47 | firmware-b43legacy-installer 48 | firmware-iwlwifi 49 | firmware-linux 50 | #firmware-ralink 51 | firmware-realtek 52 | #firmware-sof-signed 53 | #fonts-cantarell 54 | #fonts-noto 55 | #fonts-noto-cjk 56 | #fonts-noto-mono 57 | fonts-inconsolata 58 | fonts-liberation 59 | #ftp 60 | fuse3 61 | #fusesmb 62 | #galculator 63 | galternatives 64 | gddrescue 65 | gdebi 66 | #geany 67 | #geany-plugins 68 | #ghostscript 69 | gigolo 70 | gmrun 71 | gnome-keyring 72 | gnome-themes-extra 73 | gparted 74 | gsimplecal 75 | #gstreamer1.0-libav 76 | #gstreamer1.0-plugins-bad 77 | #gstreamer1.0-plugins-base 78 | #gstreamer1.0-plugins-good 79 | #gstreamer1.0-plugins-ugly 80 | #gstreamer1.0-pulseaudio 81 | gtk2-engines-pixbuf 82 | #gtk2-engines-murrine 83 | #gtk3-nocsd 84 | gtk-update-icon-cache 85 | gvfs 86 | gvfs-backends 87 | #gvfs-bin 88 | gvfs-fuse 89 | hardinfo 90 | #haveged 91 | hdparm 92 | #hddtemp 93 | #hexchat 94 | hfsprogs 95 | htop 96 | hwdata 97 | i965-va-driver 98 | #inotify-tools 99 | intel-microcode 100 | inxi 101 | #jfsutils 102 | jgmenu 103 | #lame 104 | less 105 | libblockdev-crypto2 106 | #libglib2.0-bin 107 | libgtk-3-0 108 | libinput-tools 109 | libnotify-bin 110 | libpam-gnome-keyring 111 | libqt5svg5 112 | #libreoffice-calc 113 | #libreoffice-gtk3 114 | #libreoffice-writer 115 | librsvg2-common 116 | #libnss-mdns 117 | lightdm 118 | lightdm-gtk-greeter 119 | lightdm-gtk-greeter-settings 120 | light-locker 121 | lm-sensors 122 | locales 123 | lsb-release 124 | lshw 125 | lvm2 126 | lxappearance 127 | #lxterminal 128 | #lz4 129 | #lzop 130 | #mdadm 131 | mlocate 132 | modemmanager 133 | mousepad 134 | mpv 135 | mtools 136 | ncal 137 | network-manager 138 | network-manager-gnome 139 | #network-manager-openvpn-gnome 140 | #network-manager-pptp-gnome 141 | #network-manager-vpnc-gnome 142 | nitrogen 143 | ntfs-3g 144 | #ntp 145 | obconf 146 | openbox 147 | openssh-client 148 | p7zip-full 149 | pavucontrol 150 | pciutils 151 | pcmciautils 152 | #picom 153 | pkexec 154 | pnmixer 155 | policykit-1-gnome 156 | polkitd 157 | polkitd-pkla 158 | pulseaudio 159 | python3 160 | python3-xdg 161 | qt5-style-plugins 162 | qt5-gtk-platformtheme 163 | #reiser4progs 164 | #reiserfsprogs 165 | rfkill 166 | ristretto 167 | rpl 168 | rsync 169 | rxvt-unicode 170 | rzip 171 | scrot 172 | sensible-utils 173 | smartmontools 174 | speedtest-cli 175 | suckless-tools 176 | sudo 177 | synaptic 178 | systemd-timesyncd 179 | #terminator 180 | thunar 181 | thunar-archive-plugin 182 | thunar-gtkhash 183 | #thunar-media-tags-plugin 184 | thunar-volman 185 | tint2 186 | transmission-gtk 187 | #ttf-mscorefonts-installer 188 | #tumbler 189 | #tumbler-plugins-extra 190 | unace 191 | unalz 192 | unar 193 | unrar 194 | unzip 195 | update-inetd 196 | usb-modeswitch 197 | usbutils 198 | user-setup 199 | uuid-runtime 200 | va-driver-all 201 | #vdpau-va-driver 202 | #vlc 203 | #vlc-plugin-notify 204 | #volti 205 | #volumeicon-alsa 206 | wireless-tools 207 | #wmctrl 208 | wpasupplicant 209 | xbindkeys 210 | #xbindkeys-config 211 | xcape 212 | xdg-user-dirs 213 | xdg-utils 214 | #xdotool 215 | xfburn 216 | #xfce4-appfinder 217 | #xfce4-mixer 218 | xfce4-clipman 219 | xfce4-notifyd 220 | xfce4-power-manager 221 | #xfce4-screenshooter 222 | #xfce4-volumed 223 | xfsprogs 224 | xinput 225 | xorg 226 | xsel 227 | xserver-xorg-input-all 228 | xserver-xorg-input-synaptics 229 | xserver-xorg-input-evdev 230 | #xserver-xorg-input-vmmouse 231 | xserver-xorg-input-wacom 232 | xserver-xorg-video-all 233 | xserver-xorg-video-intel 234 | xserver-xorg-video-qxl 235 | xsettingsd 236 | xz-utils 237 | yad 238 | zip 239 | zstd 240 | -------------------------------------------------------------------------------- /pkgs-recs: -------------------------------------------------------------------------------- 1 | # Packages here will be installed with recommends. 2 | # comments are allowed 3 | 4 | ## bunsenlabs 5 | # bunsen-apt-update-checker 6 | bunsen-blob 7 | bunsen-common 8 | bunsen-configs 9 | bunsen-conky 10 | bunsen-docs 11 | bunsen-exit 12 | # bunsen-faenza-icon-theme 13 | bunsen-fortune 14 | bunsen-images 15 | # bunsen-images-archives 16 | # bunsen-keyring 17 | bunsen-archive-keyring 18 | bunsen-numix-icon-theme 19 | bunsen-os-release 20 | # bunsen-paper-icon-theme 21 | # bunsen-papirus-icon-theme 22 | bunsen-pipemenus 23 | bunsen-themes 24 | bunsen-thunar 25 | bunsen-utilities 26 | bunsen-welcome 27 | material-solarized-suruplusplus-icon-theme 28 | -------------------------------------------------------------------------------- /pkgs-recs-base: -------------------------------------------------------------------------------- 1 | # Packages here will be installed with recommends. 2 | # comments are allowed 3 | -------------------------------------------------------------------------------- /pkgs-recs-lite: -------------------------------------------------------------------------------- 1 | # Packages here will be installed with recommends. 2 | # comments are allowed 3 | 4 | ## bunsenlabs 5 | # bunsen-apt-update-checker 6 | bunsen-archive-keyring 7 | bunsen-blob 8 | bunsen-common 9 | bunsen-configs-lite 10 | bunsen-conky 11 | bunsen-docs 12 | bunsen-exit 13 | # bunsen-faenza-icon-theme 14 | bunsen-fortune 15 | bunsen-images-base 16 | bunsen-numix-icon-theme 17 | bunsen-os-release 18 | # bunsen-paper-icon-theme 19 | # bunsen-papirus-icon-theme 20 | bunsen-pipemenus 21 | bunsen-themes 22 | bunsen-thunar 23 | bunsen-utilities 24 | bunsen-welcome 25 | #material-solarized-suruplusplus-icon-theme 26 | -------------------------------------------------------------------------------- /postinstall_commands: -------------------------------------------------------------------------------- 1 | # commands to run after installing all files and packages 2 | 3 | # add any needed extra groups 4 | for i in #cbnetwork 5 | do 6 | if grep -q "^${i}:" /etc/group 7 | then 8 | msg "group $i already exists" 9 | else 10 | msg "adding group $i" 11 | sudo addgroup $i || errmsg "failed to add group: $i" 12 | fi 13 | done 14 | 15 | # add user to some extra groups 16 | # NB You should also check sysfiles2/etc/adduser.conf for default groups to add new users to 17 | for i in audio video cdrom plugdev floppy lp dip 18 | do 19 | sudo addgroup "$i" 20 | sudo adduser $user $i || errmsg "failed to add user: $user to group: $i" 21 | done 22 | for i in sudo netdev systemd-journal lpadmin scanner bluetooth 23 | do 24 | sudo addgroup --system "$i" 25 | sudo adduser $user $i || errmsg "failed to add user: $user to group: $i" 26 | done 27 | 28 | # make sure gksu runs in sudo mode 29 | #sudo update-alternatives --set libgksu-gconf-defaults /usr/share/libgksu/debian/gconf-defaults.libgksu-sudo || errmsg "failed to edit alternative for libgksu-gconf-defaults" 30 | #sudo update-gconf-defaults || errmsg "failed to update gconf defaults" 31 | 32 | # set cursor theme to pre-empt Adwaita 33 | #sudo update-alternatives --set x-cursor-theme /usr/share/icons/DMZ-White/cursor.theme || errmsg "failed to edit alternative for x-cursor-theme" 34 | 35 | # dmz-cursor-theme may have been installed after bunsen-configs 36 | # so re-run the cursor theme setting in bunsen-configs' postinst script. 37 | DEFAULT_CURSOR_THEME='/usr/share/icons/DMZ-White/cursor.theme' 38 | if update-alternatives --list x-cursor-theme 2>/dev/null | grep -q "$DEFAULT_CURSOR_THEME" 39 | then 40 | sudo update-alternatives --set x-cursor-theme "$DEFAULT_CURSOR_THEME" 41 | else 42 | errmsg "failed to edit alternative for x-cursor-theme" 43 | fi 44 | 45 | # Now bunsen-os-release is installed, refresh boot menu. 46 | sudo update-grub || errmsg "Failed to update grub" 47 | 48 | # Add install date to /etc/bunsen/bunsen_install 49 | #sudo echo "Install date: $(date --utc +%FT%T)" >> /etc/bunsen/bunsen_install 50 | sudo tee -a <<< "Install date: $(date --utc +%FT%T)" /etc/bunsen/bunsen_install 51 | -------------------------------------------------------------------------------- /preinstall_commands: -------------------------------------------------------------------------------- 1 | # commands to run after basic checks but before starting the installation 2 | 3 | msg "adjusting permissions of new system files before installing" 4 | # (git does not preserve permissions) 5 | # reset permissions on system files to default 6 | chmod --preserve-root --recursive u=Xrw,g=Xr,o=Xr sysfiles1 || errmsg "failed to reset permissions in sysfiles1" 7 | chmod --preserve-root --recursive u=Xrw,g=Xr,o=Xr sysfiles2 || errmsg "failed to reset permissions in sysfiles2" 8 | # set special permissions on some file 9 | #chmod --preserve-root g=,o= sysfiles2/etc/polkit-1/localauthority || errmsg "failed to change permissions on sysfiles2/etc/polkit-1/localauthority" 10 | -------------------------------------------------------------------------------- /sysfiles1/etc/apt/sources.list.d/bunsen.list: -------------------------------------------------------------------------------- 1 | deb https://pkg.bunsenlabs.org/debian boron main 2 | #deb-src https://pkg.bunsenlabs.org/debian boron main 3 | -------------------------------------------------------------------------------- /sysfiles1/etc/apt/trusted.gpg.d/bunsen-release.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | 3 | 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 85 | 62B2RWJED8aTExBREA== 86 | =H8Zu 87 | -----END PGP PUBLIC KEY BLOCK----- 88 | -------------------------------------------------------------------------------- /sysfiles2/etc/bunsen/bunsen_install: -------------------------------------------------------------------------------- 1 | Install method: netinstall 2 | Netinstall script, last commit date: 2025-04-02T00:07:33 3 | -------------------------------------------------------------------------------- /sysfiles2/etc/network/interfaces: -------------------------------------------------------------------------------- 1 | # This file describes the network interfaces available on your system 2 | # and how to activate them. For more information, see interfaces(5). 3 | 4 | # The loopback network interface 5 | auto lo 6 | iface lo inet loopback 7 | --------------------------------------------------------------------------------