calamares-nixos-extensions: vendor sources

K900 917eb19a 641d909c

+5401
+29
pkgs/by-name/ca/calamares-nixos-extensions/src/.editorconfig
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + 4 + root = true 5 + 6 + [*] 7 + charset = utf-8 8 + end_of_line = lf 9 + trim_trailing_whitespace = true 10 + 11 + [CMakeLists.txt] 12 + indent_style = space 13 + indent_size = 4 14 + insert_final_newline = true 15 + 16 + [*.cmake] 17 + indent_style = space 18 + indent_size = 4 19 + insert_final_newline = true 20 + 21 + [*.{py,cpp,h}] 22 + indent_style = space 23 + indent_size = 4 24 + insert_final_newline = true 25 + 26 + [*.sh] 27 + indent_style = tab 28 + insert_final_newline = true 29 +
+13
pkgs/by-name/ca/calamares-nixos-extensions/src/.github/workflows/test.yml
··· 1 + name: "Test the nixos Python job module" 2 + on: 3 + pull_request: 4 + push: 5 + jobs: 6 + tests: 7 + runs-on: ubuntu-latest 8 + steps: 9 + - uses: actions/checkout@v4 10 + - uses: cachix/install-nix-action@v27 11 + with: 12 + github_access_token: ${{ secrets.GITHUB_TOKEN }} 13 + - run: nix run
+9
pkgs/by-name/ca/calamares-nixos-extensions/src/.gitignore
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + .kdev4/ 5 + build/ 6 + *.kdev4 7 + *.qmlc 8 + .vscode/ 9 + **/__pycache__/
+24
pkgs/by-name/ca/calamares-nixos-extensions/src/LICENSES/BSD-2-Clause.txt
··· 1 + 2 + Copyright 2019 Adriaan de Groot <groot@kde.org> 3 + 4 + Redistribution and use in source and binary forms, with or without 5 + modification, are permitted provided that the following conditions 6 + are met: 7 + 8 + 1. Redistributions of source code must retain the above copyright 9 + notice, this list of conditions and the following disclaimer. 10 + 2. Redistributions in binary form must reproduce the above copyright 11 + notice, this list of conditions and the following disclaimer in the 12 + documentation and/or other materials provided with the distribution. 13 + 14 + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 18 + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 + POSSIBILITY OF SUCH DAMAGE.
+395
pkgs/by-name/ca/calamares-nixos-extensions/src/LICENSES/CC-BY-4.0.txt
··· 1 + Attribution 4.0 International 2 + 3 + ======================================================================= 4 + 5 + Creative Commons Corporation ("Creative Commons") is not a law firm and 6 + does not provide legal services or legal advice. Distribution of 7 + Creative Commons public licenses does not create a lawyer-client or 8 + other relationship. Creative Commons makes its licenses and related 9 + information available on an "as-is" basis. Creative Commons gives no 10 + warranties regarding its licenses, any material licensed under their 11 + terms and conditions, or any related information. Creative Commons 12 + disclaims all liability for damages resulting from their use to the 13 + fullest extent possible. 14 + 15 + Using Creative Commons Public Licenses 16 + 17 + Creative Commons public licenses provide a standard set of terms and 18 + conditions that creators and other rights holders may use to share 19 + original works of authorship and other material subject to copyright 20 + and certain other rights specified in the public license below. The 21 + following considerations are for informational purposes only, are not 22 + exhaustive, and do not form part of our licenses. 23 + 24 + Considerations for licensors: Our public licenses are 25 + intended for use by those authorized to give the public 26 + permission to use material in ways otherwise restricted by 27 + copyright and certain other rights. Our licenses are 28 + irrevocable. Licensors should read and understand the terms 29 + and conditions of the license they choose before applying it. 30 + Licensors should also secure all rights necessary before 31 + applying our licenses so that the public can reuse the 32 + material as expected. Licensors should clearly mark any 33 + material not subject to the license. This includes other CC- 34 + licensed material, or material used under an exception or 35 + limitation to copyright. More considerations for licensors: 36 + wiki.creativecommons.org/Considerations_for_licensors 37 + 38 + Considerations for the public: By using one of our public 39 + licenses, a licensor grants the public permission to use the 40 + licensed material under specified terms and conditions. If 41 + the licensor's permission is not necessary for any reason--for 42 + example, because of any applicable exception or limitation to 43 + copyright--then that use is not regulated by the license. Our 44 + licenses grant only permissions under copyright and certain 45 + other rights that a licensor has authority to grant. Use of 46 + the licensed material may still be restricted for other 47 + reasons, including because others have copyright or other 48 + rights in the material. A licensor may make special requests, 49 + such as asking that all changes be marked or described. 50 + Although not required by our licenses, you are encouraged to 51 + respect those requests where reasonable. More considerations 52 + for the public: 53 + wiki.creativecommons.org/Considerations_for_licensees 54 + 55 + ======================================================================= 56 + 57 + Creative Commons Attribution 4.0 International Public License 58 + 59 + By exercising the Licensed Rights (defined below), You accept and agree 60 + to be bound by the terms and conditions of this Creative Commons 61 + Attribution 4.0 International Public License ("Public License"). To the 62 + extent this Public License may be interpreted as a contract, You are 63 + granted the Licensed Rights in consideration of Your acceptance of 64 + these terms and conditions, and the Licensor grants You such rights in 65 + consideration of benefits the Licensor receives from making the 66 + Licensed Material available under these terms and conditions. 67 + 68 + 69 + Section 1 -- Definitions. 70 + 71 + a. Adapted Material means material subject to Copyright and Similar 72 + Rights that is derived from or based upon the Licensed Material 73 + and in which the Licensed Material is translated, altered, 74 + arranged, transformed, or otherwise modified in a manner requiring 75 + permission under the Copyright and Similar Rights held by the 76 + Licensor. For purposes of this Public License, where the Licensed 77 + Material is a musical work, performance, or sound recording, 78 + Adapted Material is always produced where the Licensed Material is 79 + synched in timed relation with a moving image. 80 + 81 + b. Adapter's License means the license You apply to Your Copyright 82 + and Similar Rights in Your contributions to Adapted Material in 83 + accordance with the terms and conditions of this Public License. 84 + 85 + c. Copyright and Similar Rights means copyright and/or similar rights 86 + closely related to copyright including, without limitation, 87 + performance, broadcast, sound recording, and Sui Generis Database 88 + Rights, without regard to how the rights are labeled or 89 + categorized. For purposes of this Public License, the rights 90 + specified in Section 2(b)(1)-(2) are not Copyright and Similar 91 + Rights. 92 + 93 + d. Effective Technological Measures means those measures that, in the 94 + absence of proper authority, may not be circumvented under laws 95 + fulfilling obligations under Article 11 of the WIPO Copyright 96 + Treaty adopted on December 20, 1996, and/or similar international 97 + agreements. 98 + 99 + e. Exceptions and Limitations means fair use, fair dealing, and/or 100 + any other exception or limitation to Copyright and Similar Rights 101 + that applies to Your use of the Licensed Material. 102 + 103 + f. Licensed Material means the artistic or literary work, database, 104 + or other material to which the Licensor applied this Public 105 + License. 106 + 107 + g. Licensed Rights means the rights granted to You subject to the 108 + terms and conditions of this Public License, which are limited to 109 + all Copyright and Similar Rights that apply to Your use of the 110 + Licensed Material and that the Licensor has authority to license. 111 + 112 + h. Licensor means the individual(s) or entity(ies) granting rights 113 + under this Public License. 114 + 115 + i. Share means to provide material to the public by any means or 116 + process that requires permission under the Licensed Rights, such 117 + as reproduction, public display, public performance, distribution, 118 + dissemination, communication, or importation, and to make material 119 + available to the public including in ways that members of the 120 + public may access the material from a place and at a time 121 + individually chosen by them. 122 + 123 + j. Sui Generis Database Rights means rights other than copyright 124 + resulting from Directive 96/9/EC of the European Parliament and of 125 + the Council of 11 March 1996 on the legal protection of databases, 126 + as amended and/or succeeded, as well as other essentially 127 + equivalent rights anywhere in the world. 128 + 129 + k. You means the individual or entity exercising the Licensed Rights 130 + under this Public License. Your has a corresponding meaning. 131 + 132 + 133 + Section 2 -- Scope. 134 + 135 + a. License grant. 136 + 137 + 1. Subject to the terms and conditions of this Public License, 138 + the Licensor hereby grants You a worldwide, royalty-free, 139 + non-sublicensable, non-exclusive, irrevocable license to 140 + exercise the Licensed Rights in the Licensed Material to: 141 + 142 + a. reproduce and Share the Licensed Material, in whole or 143 + in part; and 144 + 145 + b. produce, reproduce, and Share Adapted Material. 146 + 147 + 2. Exceptions and Limitations. For the avoidance of doubt, where 148 + Exceptions and Limitations apply to Your use, this Public 149 + License does not apply, and You do not need to comply with 150 + its terms and conditions. 151 + 152 + 3. Term. The term of this Public License is specified in Section 153 + 6(a). 154 + 155 + 4. Media and formats; technical modifications allowed. The 156 + Licensor authorizes You to exercise the Licensed Rights in 157 + all media and formats whether now known or hereafter created, 158 + and to make technical modifications necessary to do so. The 159 + Licensor waives and/or agrees not to assert any right or 160 + authority to forbid You from making technical modifications 161 + necessary to exercise the Licensed Rights, including 162 + technical modifications necessary to circumvent Effective 163 + Technological Measures. For purposes of this Public License, 164 + simply making modifications authorized by this Section 2(a) 165 + (4) never produces Adapted Material. 166 + 167 + 5. Downstream recipients. 168 + 169 + a. Offer from the Licensor -- Licensed Material. Every 170 + recipient of the Licensed Material automatically 171 + receives an offer from the Licensor to exercise the 172 + Licensed Rights under the terms and conditions of this 173 + Public License. 174 + 175 + b. No downstream restrictions. You may not offer or impose 176 + any additional or different terms or conditions on, or 177 + apply any Effective Technological Measures to, the 178 + Licensed Material if doing so restricts exercise of the 179 + Licensed Rights by any recipient of the Licensed 180 + Material. 181 + 182 + 6. No endorsement. Nothing in this Public License constitutes or 183 + may be construed as permission to assert or imply that You 184 + are, or that Your use of the Licensed Material is, connected 185 + with, or sponsored, endorsed, or granted official status by, 186 + the Licensor or others designated to receive attribution as 187 + provided in Section 3(a)(1)(A)(i). 188 + 189 + b. Other rights. 190 + 191 + 1. Moral rights, such as the right of integrity, are not 192 + licensed under this Public License, nor are publicity, 193 + privacy, and/or other similar personality rights; however, to 194 + the extent possible, the Licensor waives and/or agrees not to 195 + assert any such rights held by the Licensor to the limited 196 + extent necessary to allow You to exercise the Licensed 197 + Rights, but not otherwise. 198 + 199 + 2. Patent and trademark rights are not licensed under this 200 + Public License. 201 + 202 + 3. To the extent possible, the Licensor waives any right to 203 + collect royalties from You for the exercise of the Licensed 204 + Rights, whether directly or through a collecting society 205 + under any voluntary or waivable statutory or compulsory 206 + licensing scheme. In all other cases the Licensor expressly 207 + reserves any right to collect such royalties. 208 + 209 + 210 + Section 3 -- License Conditions. 211 + 212 + Your exercise of the Licensed Rights is expressly made subject to the 213 + following conditions. 214 + 215 + a. Attribution. 216 + 217 + 1. If You Share the Licensed Material (including in modified 218 + form), You must: 219 + 220 + a. retain the following if it is supplied by the Licensor 221 + with the Licensed Material: 222 + 223 + i. identification of the creator(s) of the Licensed 224 + Material and any others designated to receive 225 + attribution, in any reasonable manner requested by 226 + the Licensor (including by pseudonym if 227 + designated); 228 + 229 + ii. a copyright notice; 230 + 231 + iii. a notice that refers to this Public License; 232 + 233 + iv. a notice that refers to the disclaimer of 234 + warranties; 235 + 236 + v. a URI or hyperlink to the Licensed Material to the 237 + extent reasonably practicable; 238 + 239 + b. indicate if You modified the Licensed Material and 240 + retain an indication of any previous modifications; and 241 + 242 + c. indicate the Licensed Material is licensed under this 243 + Public License, and include the text of, or the URI or 244 + hyperlink to, this Public License. 245 + 246 + 2. You may satisfy the conditions in Section 3(a)(1) in any 247 + reasonable manner based on the medium, means, and context in 248 + which You Share the Licensed Material. For example, it may be 249 + reasonable to satisfy the conditions by providing a URI or 250 + hyperlink to a resource that includes the required 251 + information. 252 + 253 + 3. If requested by the Licensor, You must remove any of the 254 + information required by Section 3(a)(1)(A) to the extent 255 + reasonably practicable. 256 + 257 + 4. If You Share Adapted Material You produce, the Adapter's 258 + License You apply must not prevent recipients of the Adapted 259 + Material from complying with this Public License. 260 + 261 + 262 + Section 4 -- Sui Generis Database Rights. 263 + 264 + Where the Licensed Rights include Sui Generis Database Rights that 265 + apply to Your use of the Licensed Material: 266 + 267 + a. for the avoidance of doubt, Section 2(a)(1) grants You the right 268 + to extract, reuse, reproduce, and Share all or a substantial 269 + portion of the contents of the database; 270 + 271 + b. if You include all or a substantial portion of the database 272 + contents in a database in which You have Sui Generis Database 273 + Rights, then the database in which You have Sui Generis Database 274 + Rights (but not its individual contents) is Adapted Material; and 275 + 276 + c. You must comply with the conditions in Section 3(a) if You Share 277 + all or a substantial portion of the contents of the database. 278 + 279 + For the avoidance of doubt, this Section 4 supplements and does not 280 + replace Your obligations under this Public License where the Licensed 281 + Rights include other Copyright and Similar Rights. 282 + 283 + 284 + Section 5 -- Disclaimer of Warranties and Limitation of Liability. 285 + 286 + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 287 + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 288 + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 289 + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 290 + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 291 + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 292 + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 293 + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 294 + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 295 + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 296 + 297 + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 298 + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 299 + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 300 + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 301 + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 302 + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 303 + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 304 + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 305 + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 306 + 307 + c. The disclaimer of warranties and limitation of liability provided 308 + above shall be interpreted in a manner that, to the extent 309 + possible, most closely approximates an absolute disclaimer and 310 + waiver of all liability. 311 + 312 + 313 + Section 6 -- Term and Termination. 314 + 315 + a. This Public License applies for the term of the Copyright and 316 + Similar Rights licensed here. However, if You fail to comply with 317 + this Public License, then Your rights under this Public License 318 + terminate automatically. 319 + 320 + b. Where Your right to use the Licensed Material has terminated under 321 + Section 6(a), it reinstates: 322 + 323 + 1. automatically as of the date the violation is cured, provided 324 + it is cured within 30 days of Your discovery of the 325 + violation; or 326 + 327 + 2. upon express reinstatement by the Licensor. 328 + 329 + For the avoidance of doubt, this Section 6(b) does not affect any 330 + right the Licensor may have to seek remedies for Your violations 331 + of this Public License. 332 + 333 + c. For the avoidance of doubt, the Licensor may also offer the 334 + Licensed Material under separate terms or conditions or stop 335 + distributing the Licensed Material at any time; however, doing so 336 + will not terminate this Public License. 337 + 338 + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 339 + License. 340 + 341 + 342 + Section 7 -- Other Terms and Conditions. 343 + 344 + a. The Licensor shall not be bound by any additional or different 345 + terms or conditions communicated by You unless expressly agreed. 346 + 347 + b. Any arrangements, understandings, or agreements regarding the 348 + Licensed Material not stated herein are separate from and 349 + independent of the terms and conditions of this Public License. 350 + 351 + 352 + Section 8 -- Interpretation. 353 + 354 + a. For the avoidance of doubt, this Public License does not, and 355 + shall not be interpreted to, reduce, limit, restrict, or impose 356 + conditions on any use of the Licensed Material that could lawfully 357 + be made without permission under this Public License. 358 + 359 + b. To the extent possible, if any provision of this Public License is 360 + deemed unenforceable, it shall be automatically reformed to the 361 + minimum extent necessary to make it enforceable. If the provision 362 + cannot be reformed, it shall be severed from this Public License 363 + without affecting the enforceability of the remaining terms and 364 + conditions. 365 + 366 + c. No term or condition of this Public License will be waived and no 367 + failure to comply consented to unless expressly agreed to by the 368 + Licensor. 369 + 370 + d. Nothing in this Public License constitutes or may be interpreted 371 + as a limitation upon, or waiver of, any privileges and immunities 372 + that apply to the Licensor or You, including from the legal 373 + processes of any jurisdiction or authority. 374 + 375 + 376 + ======================================================================= 377 + 378 + Creative Commons is not a party to its public 379 + licenses. Notwithstanding, Creative Commons may elect to apply one of 380 + its public licenses to material it publishes and in those instances 381 + will be considered the “Licensor.” The text of the Creative Commons 382 + public licenses is dedicated to the public domain under the CC0 Public 383 + Domain Dedication. Except for the limited purpose of indicating that 384 + material is shared under a Creative Commons public license or as 385 + otherwise permitted by the Creative Commons policies published at 386 + creativecommons.org/policies, Creative Commons does not authorize the 387 + use of the trademark "Creative Commons" or any other trademark or logo 388 + of Creative Commons without its prior written consent including, 389 + without limitation, in connection with any unauthorized modifications 390 + to any of its public licenses or any other arrangements, 391 + understandings, or agreements concerning use of licensed material. For 392 + the avoidance of doubt, this paragraph does not form part of the 393 + public licenses. 394 + 395 + Creative Commons may be contacted at creativecommons.org.
+430
pkgs/by-name/ca/calamares-nixos-extensions/src/LICENSES/CC-BY-SA-4.0.txt
··· 1 + Valid-License-Identifier: CC-BY-SA-4.0 2 + License-Text: 3 + 4 + Attribution-ShareAlike 4.0 International 5 + 6 + ======================================================================= 7 + 8 + Creative Commons Corporation ("Creative Commons") is not a law firm and 9 + does not provide legal services or legal advice. Distribution of 10 + Creative Commons public licenses does not create a lawyer-client or 11 + other relationship. Creative Commons makes its licenses and related 12 + information available on an "as-is" basis. Creative Commons gives no 13 + warranties regarding its licenses, any material licensed under their 14 + terms and conditions, or any related information. Creative Commons 15 + disclaims all liability for damages resulting from their use to the 16 + fullest extent possible. 17 + 18 + Using Creative Commons Public Licenses 19 + 20 + Creative Commons public licenses provide a standard set of terms and 21 + conditions that creators and other rights holders may use to share 22 + original works of authorship and other material subject to copyright 23 + and certain other rights specified in the public license below. The 24 + following considerations are for informational purposes only, are not 25 + exhaustive, and do not form part of our licenses. 26 + 27 + Considerations for licensors: Our public licenses are 28 + intended for use by those authorized to give the public 29 + permission to use material in ways otherwise restricted by 30 + copyright and certain other rights. Our licenses are 31 + irrevocable. Licensors should read and understand the terms 32 + and conditions of the license they choose before applying it. 33 + Licensors should also secure all rights necessary before 34 + applying our licenses so that the public can reuse the 35 + material as expected. Licensors should clearly mark any 36 + material not subject to the license. This includes other CC- 37 + licensed material, or material used under an exception or 38 + limitation to copyright. More considerations for licensors: 39 + wiki.creativecommons.org/Considerations_for_licensors 40 + 41 + Considerations for the public: By using one of our public 42 + licenses, a licensor grants the public permission to use the 43 + licensed material under specified terms and conditions. If 44 + the licensor's permission is not necessary for any reason--for 45 + example, because of any applicable exception or limitation to 46 + copyright--then that use is not regulated by the license. Our 47 + licenses grant only permissions under copyright and certain 48 + other rights that a licensor has authority to grant. Use of 49 + the licensed material may still be restricted for other 50 + reasons, including because others have copyright or other 51 + rights in the material. A licensor may make special requests, 52 + such as asking that all changes be marked or described. 53 + Although not required by our licenses, you are encouraged to 54 + respect those requests where reasonable. More_considerations 55 + for the public: 56 + wiki.creativecommons.org/Considerations_for_licensees 57 + 58 + ======================================================================= 59 + 60 + Creative Commons Attribution-ShareAlike 4.0 International Public 61 + License 62 + 63 + By exercising the Licensed Rights (defined below), You accept and agree 64 + to be bound by the terms and conditions of this Creative Commons 65 + Attribution-ShareAlike 4.0 International Public License ("Public 66 + License"). To the extent this Public License may be interpreted as a 67 + contract, You are granted the Licensed Rights in consideration of Your 68 + acceptance of these terms and conditions, and the Licensor grants You 69 + such rights in consideration of benefits the Licensor receives from 70 + making the Licensed Material available under these terms and 71 + conditions. 72 + 73 + 74 + Section 1 -- Definitions. 75 + 76 + a. Adapted Material means material subject to Copyright and Similar 77 + Rights that is derived from or based upon the Licensed Material 78 + and in which the Licensed Material is translated, altered, 79 + arranged, transformed, or otherwise modified in a manner requiring 80 + permission under the Copyright and Similar Rights held by the 81 + Licensor. For purposes of this Public License, where the Licensed 82 + Material is a musical work, performance, or sound recording, 83 + Adapted Material is always produced where the Licensed Material is 84 + synched in timed relation with a moving image. 85 + 86 + b. Adapter's License means the license You apply to Your Copyright 87 + and Similar Rights in Your contributions to Adapted Material in 88 + accordance with the terms and conditions of this Public License. 89 + 90 + c. BY-SA Compatible License means a license listed at 91 + creativecommons.org/compatiblelicenses, approved by Creative 92 + Commons as essentially the equivalent of this Public License. 93 + 94 + d. Copyright and Similar Rights means copyright and/or similar rights 95 + closely related to copyright including, without limitation, 96 + performance, broadcast, sound recording, and Sui Generis Database 97 + Rights, without regard to how the rights are labeled or 98 + categorized. For purposes of this Public License, the rights 99 + specified in Section 2(b)(1)-(2) are not Copyright and Similar 100 + Rights. 101 + 102 + e. Effective Technological Measures means those measures that, in the 103 + absence of proper authority, may not be circumvented under laws 104 + fulfilling obligations under Article 11 of the WIPO Copyright 105 + Treaty adopted on December 20, 1996, and/or similar international 106 + agreements. 107 + 108 + f. Exceptions and Limitations means fair use, fair dealing, and/or 109 + any other exception or limitation to Copyright and Similar Rights 110 + that applies to Your use of the Licensed Material. 111 + 112 + g. License Elements means the license attributes listed in the name 113 + of a Creative Commons Public License. The License Elements of this 114 + Public License are Attribution and ShareAlike. 115 + 116 + h. Licensed Material means the artistic or literary work, database, 117 + or other material to which the Licensor applied this Public 118 + License. 119 + 120 + i. Licensed Rights means the rights granted to You subject to the 121 + terms and conditions of this Public License, which are limited to 122 + all Copyright and Similar Rights that apply to Your use of the 123 + Licensed Material and that the Licensor has authority to license. 124 + 125 + j. Licensor means the individual(s) or entity(ies) granting rights 126 + under this Public License. 127 + 128 + k. Share means to provide material to the public by any means or 129 + process that requires permission under the Licensed Rights, such 130 + as reproduction, public display, public performance, distribution, 131 + dissemination, communication, or importation, and to make material 132 + available to the public including in ways that members of the 133 + public may access the material from a place and at a time 134 + individually chosen by them. 135 + 136 + l. Sui Generis Database Rights means rights other than copyright 137 + resulting from Directive 96/9/EC of the European Parliament and of 138 + the Council of 11 March 1996 on the legal protection of databases, 139 + as amended and/or succeeded, as well as other essentially 140 + equivalent rights anywhere in the world. 141 + 142 + m. You means the individual or entity exercising the Licensed Rights 143 + under this Public License. Your has a corresponding meaning. 144 + 145 + 146 + Section 2 -- Scope. 147 + 148 + a. License grant. 149 + 150 + 1. Subject to the terms and conditions of this Public License, 151 + the Licensor hereby grants You a worldwide, royalty-free, 152 + non-sublicensable, non-exclusive, irrevocable license to 153 + exercise the Licensed Rights in the Licensed Material to: 154 + 155 + a. reproduce and Share the Licensed Material, in whole or 156 + in part; and 157 + 158 + b. produce, reproduce, and Share Adapted Material. 159 + 160 + 2. Exceptions and Limitations. For the avoidance of doubt, where 161 + Exceptions and Limitations apply to Your use, this Public 162 + License does not apply, and You do not need to comply with 163 + its terms and conditions. 164 + 165 + 3. Term. The term of this Public License is specified in Section 166 + 6(a). 167 + 168 + 4. Media and formats; technical modifications allowed. The 169 + Licensor authorizes You to exercise the Licensed Rights in 170 + all media and formats whether now known or hereafter created, 171 + and to make technical modifications necessary to do so. The 172 + Licensor waives and/or agrees not to assert any right or 173 + authority to forbid You from making technical modifications 174 + necessary to exercise the Licensed Rights, including 175 + technical modifications necessary to circumvent Effective 176 + Technological Measures. For purposes of this Public License, 177 + simply making modifications authorized by this Section 2(a) 178 + (4) never produces Adapted Material. 179 + 180 + 5. Downstream recipients. 181 + 182 + a. Offer from the Licensor -- Licensed Material. Every 183 + recipient of the Licensed Material automatically 184 + receives an offer from the Licensor to exercise the 185 + Licensed Rights under the terms and conditions of this 186 + Public License. 187 + 188 + b. Additional offer from the Licensor -- Adapted Material. 189 + Every recipient of Adapted Material from You 190 + automatically receives an offer from the Licensor to 191 + exercise the Licensed Rights in the Adapted Material 192 + under the conditions of the Adapter's License You apply. 193 + 194 + c. No downstream restrictions. You may not offer or impose 195 + any additional or different terms or conditions on, or 196 + apply any Effective Technological Measures to, the 197 + Licensed Material if doing so restricts exercise of the 198 + Licensed Rights by any recipient of the Licensed 199 + Material. 200 + 201 + 6. No endorsement. Nothing in this Public License constitutes or 202 + may be construed as permission to assert or imply that You 203 + are, or that Your use of the Licensed Material is, connected 204 + with, or sponsored, endorsed, or granted official status by, 205 + the Licensor or others designated to receive attribution as 206 + provided in Section 3(a)(1)(A)(i). 207 + 208 + b. Other rights. 209 + 210 + 1. Moral rights, such as the right of integrity, are not 211 + licensed under this Public License, nor are publicity, 212 + privacy, and/or other similar personality rights; however, to 213 + the extent possible, the Licensor waives and/or agrees not to 214 + assert any such rights held by the Licensor to the limited 215 + extent necessary to allow You to exercise the Licensed 216 + Rights, but not otherwise. 217 + 218 + 2. Patent and trademark rights are not licensed under this 219 + Public License. 220 + 221 + 3. To the extent possible, the Licensor waives any right to 222 + collect royalties from You for the exercise of the Licensed 223 + Rights, whether directly or through a collecting society 224 + under any voluntary or waivable statutory or compulsory 225 + licensing scheme. In all other cases the Licensor expressly 226 + reserves any right to collect such royalties. 227 + 228 + 229 + Section 3 -- License Conditions. 230 + 231 + Your exercise of the Licensed Rights is expressly made subject to the 232 + following conditions. 233 + 234 + a. Attribution. 235 + 236 + 1. If You Share the Licensed Material (including in modified 237 + form), You must: 238 + 239 + a. retain the following if it is supplied by the Licensor 240 + with the Licensed Material: 241 + 242 + i. identification of the creator(s) of the Licensed 243 + Material and any others designated to receive 244 + attribution, in any reasonable manner requested by 245 + the Licensor (including by pseudonym if 246 + designated); 247 + 248 + ii. a copyright notice; 249 + 250 + iii. a notice that refers to this Public License; 251 + 252 + iv. a notice that refers to the disclaimer of 253 + warranties; 254 + 255 + v. a URI or hyperlink to the Licensed Material to the 256 + extent reasonably practicable; 257 + 258 + b. indicate if You modified the Licensed Material and 259 + retain an indication of any previous modifications; and 260 + 261 + c. indicate the Licensed Material is licensed under this 262 + Public License, and include the text of, or the URI or 263 + hyperlink to, this Public License. 264 + 265 + 2. You may satisfy the conditions in Section 3(a)(1) in any 266 + reasonable manner based on the medium, means, and context in 267 + which You Share the Licensed Material. For example, it may be 268 + reasonable to satisfy the conditions by providing a URI or 269 + hyperlink to a resource that includes the required 270 + information. 271 + 272 + 3. If requested by the Licensor, You must remove any of the 273 + information required by Section 3(a)(1)(A) to the extent 274 + reasonably practicable. 275 + 276 + b. ShareAlike. 277 + 278 + In addition to the conditions in Section 3(a), if You Share 279 + Adapted Material You produce, the following conditions also apply. 280 + 281 + 1. The Adapter's License You apply must be a Creative Commons 282 + license with the same License Elements, this version or 283 + later, or a BY-SA Compatible License. 284 + 285 + 2. You must include the text of, or the URI or hyperlink to, the 286 + Adapter's License You apply. You may satisfy this condition 287 + in any reasonable manner based on the medium, means, and 288 + context in which You Share Adapted Material. 289 + 290 + 3. You may not offer or impose any additional or different terms 291 + or conditions on, or apply any Effective Technological 292 + Measures to, Adapted Material that restrict exercise of the 293 + rights granted under the Adapter's License You apply. 294 + 295 + 296 + Section 4 -- Sui Generis Database Rights. 297 + 298 + Where the Licensed Rights include Sui Generis Database Rights that 299 + apply to Your use of the Licensed Material: 300 + 301 + a. for the avoidance of doubt, Section 2(a)(1) grants You the right 302 + to extract, reuse, reproduce, and Share all or a substantial 303 + portion of the contents of the database; 304 + 305 + b. if You include all or a substantial portion of the database 306 + contents in a database in which You have Sui Generis Database 307 + Rights, then the database in which You have Sui Generis Database 308 + Rights (but not its individual contents) is Adapted Material, 309 + 310 + including for purposes of Section 3(b); and 311 + c. You must comply with the conditions in Section 3(a) if You Share 312 + all or a substantial portion of the contents of the database. 313 + 314 + For the avoidance of doubt, this Section 4 supplements and does not 315 + replace Your obligations under this Public License where the Licensed 316 + Rights include other Copyright and Similar Rights. 317 + 318 + 319 + Section 5 -- Disclaimer of Warranties and Limitation of Liability. 320 + 321 + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 322 + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 323 + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 324 + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 325 + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 326 + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 327 + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 328 + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 329 + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 330 + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 331 + 332 + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 333 + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 334 + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 335 + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 336 + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 337 + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 338 + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 339 + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 340 + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 341 + 342 + c. The disclaimer of warranties and limitation of liability provided 343 + above shall be interpreted in a manner that, to the extent 344 + possible, most closely approximates an absolute disclaimer and 345 + waiver of all liability. 346 + 347 + 348 + Section 6 -- Term and Termination. 349 + 350 + a. This Public License applies for the term of the Copyright and 351 + Similar Rights licensed here. However, if You fail to comply with 352 + this Public License, then Your rights under this Public License 353 + terminate automatically. 354 + 355 + b. Where Your right to use the Licensed Material has terminated under 356 + Section 6(a), it reinstates: 357 + 358 + 1. automatically as of the date the violation is cured, provided 359 + it is cured within 30 days of Your discovery of the 360 + violation; or 361 + 362 + 2. upon express reinstatement by the Licensor. 363 + 364 + For the avoidance of doubt, this Section 6(b) does not affect any 365 + right the Licensor may have to seek remedies for Your violations 366 + of this Public License. 367 + 368 + c. For the avoidance of doubt, the Licensor may also offer the 369 + Licensed Material under separate terms or conditions or stop 370 + distributing the Licensed Material at any time; however, doing so 371 + will not terminate this Public License. 372 + 373 + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 374 + License. 375 + 376 + 377 + Section 7 -- Other Terms and Conditions. 378 + 379 + a. The Licensor shall not be bound by any additional or different 380 + terms or conditions communicated by You unless expressly agreed. 381 + 382 + b. Any arrangements, understandings, or agreements regarding the 383 + Licensed Material not stated herein are separate from and 384 + independent of the terms and conditions of this Public License. 385 + 386 + 387 + Section 8 -- Interpretation. 388 + 389 + a. For the avoidance of doubt, this Public License does not, and 390 + shall not be interpreted to, reduce, limit, restrict, or impose 391 + conditions on any use of the Licensed Material that could lawfully 392 + be made without permission under this Public License. 393 + 394 + b. To the extent possible, if any provision of this Public License is 395 + deemed unenforceable, it shall be automatically reformed to the 396 + minimum extent necessary to make it enforceable. If the provision 397 + cannot be reformed, it shall be severed from this Public License 398 + without affecting the enforceability of the remaining terms and 399 + conditions. 400 + 401 + c. No term or condition of this Public License will be waived and no 402 + failure to comply consented to unless expressly agreed to by the 403 + Licensor. 404 + 405 + d. Nothing in this Public License constitutes or may be interpreted 406 + as a limitation upon, or waiver of, any privileges and immunities 407 + that apply to the Licensor or You, including from the legal 408 + processes of any jurisdiction or authority. 409 + 410 + 411 + ======================================================================= 412 + 413 + Creative Commons is not a party to its public 414 + licenses. Notwithstanding, Creative Commons may elect to apply one of 415 + its public licenses to material it publishes and in those instances 416 + will be considered the “Licensor.” The text of the Creative Commons 417 + public licenses is dedicated to the public domain under the CC0 Public 418 + Domain Dedication. Except for the limited purpose of indicating that 419 + material is shared under a Creative Commons public license or as 420 + otherwise permitted by the Creative Commons policies published at 421 + creativecommons.org/policies, Creative Commons does not authorize the 422 + use of the trademark "Creative Commons" or any other trademark or logo 423 + of Creative Commons without its prior written consent including, 424 + without limitation, in connection with any unauthorized modifications 425 + to any of its public licenses or any other arrangements, 426 + understandings, or agreements concerning use of licensed material. For 427 + the avoidance of doubt, this paragraph does not form part of the 428 + public licenses. 429 + 430 + Creative Commons may be contacted at creativecommons.org.
+119
pkgs/by-name/ca/calamares-nixos-extensions/src/LICENSES/CC0-1.0.txt
··· 1 + Creative Commons Legal Code 2 + 3 + CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES 4 + NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE 5 + AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION 6 + ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE 7 + OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS 8 + LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION 9 + OR WORKS PROVIDED HEREUNDER. 10 + 11 + Statement of Purpose 12 + 13 + The laws of most jurisdictions throughout the world automatically confer exclusive 14 + Copyright and Related Rights (defined below) upon the creator and subsequent 15 + owner(s) (each and all, an "owner") of an original work of authorship and/or 16 + a database (each, a "Work"). 17 + 18 + Certain owners wish to permanently relinquish those rights to a Work for the 19 + purpose of contributing to a commons of creative, cultural and scientific 20 + works ("Commons") that the public can reliably and without fear of later claims 21 + of infringement build upon, modify, incorporate in other works, reuse and 22 + redistribute as freely as possible in any form whatsoever and for any purposes, 23 + including without limitation commercial purposes. These owners may contribute 24 + to the Commons to promote the ideal of a free culture and the further production 25 + of creative, cultural and scientific works, or to gain reputation or greater 26 + distribution for their Work in part through the use and efforts of others. 27 + 28 + For these and/or other purposes and motivations, and without any expectation 29 + of additional consideration or compensation, the person associating CC0 with 30 + a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 31 + and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 32 + and publicly distribute the Work under its terms, with knowledge of his or 33 + her Copyright and Related Rights in the Work and the meaning and intended 34 + legal effect of CC0 on those rights. 35 + 36 + 1. Copyright and Related Rights. A Work made available under CC0 may be protected 37 + by copyright and related or neighboring rights ("Copyright and Related Rights"). 38 + Copyright and Related Rights include, but are not limited to, the following: 39 + 40 + i. the right to reproduce, adapt, distribute, perform, display, communicate, 41 + and translate a Work; 42 + 43 + ii. moral rights retained by the original author(s) and/or performer(s); 44 + 45 + iii. publicity and privacy rights pertaining to a person's image or likeness 46 + depicted in a Work; 47 + 48 + iv. rights protecting against unfair competition in regards to a Work, subject 49 + to the limitations in paragraph 4(a), below; 50 + 51 + v. rights protecting the extraction, dissemination, use and reuse of data 52 + in a Work; 53 + 54 + vi. database rights (such as those arising under Directive 96/9/EC of the 55 + European Parliament and of the Council of 11 March 1996 on the legal protection 56 + of databases, and under any national implementation thereof, including any 57 + amended or successor version of such directive); and 58 + 59 + vii. other similar, equivalent or corresponding rights throughout the world 60 + based on applicable law or treaty, and any national implementations thereof. 61 + 62 + 2. Waiver. To the greatest extent permitted by, but not in contravention of, 63 + applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 64 + unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 65 + and Related Rights and associated claims and causes of action, whether now 66 + known or unknown (including existing as well as future claims and causes of 67 + action), in the Work (i) in all territories worldwide, (ii) for the maximum 68 + duration provided by applicable law or treaty (including future time extensions), 69 + (iii) in any current or future medium and for any number of copies, and (iv) 70 + for any purpose whatsoever, including without limitation commercial, advertising 71 + or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the 72 + benefit of each member of the public at large and to the detriment of Affirmer's 73 + heirs and successors, fully intending that such Waiver shall not be subject 74 + to revocation, rescission, cancellation, termination, or any other legal or 75 + equitable action to disrupt the quiet enjoyment of the Work by the public 76 + as contemplated by Affirmer's express Statement of Purpose. 77 + 78 + 3. Public License Fallback. Should any part of the Waiver for any reason be 79 + judged legally invalid or ineffective under applicable law, then the Waiver 80 + shall be preserved to the maximum extent permitted taking into account Affirmer's 81 + express Statement of Purpose. In addition, to the extent the Waiver is so 82 + judged Affirmer hereby grants to each affected person a royalty-free, non 83 + transferable, non sublicensable, non exclusive, irrevocable and unconditional 84 + license to exercise Affirmer's Copyright and Related Rights in the Work (i) 85 + in all territories worldwide, (ii) for the maximum duration provided by applicable 86 + law or treaty (including future time extensions), (iii) in any current or 87 + future medium and for any number of copies, and (iv) for any purpose whatsoever, 88 + including without limitation commercial, advertising or promotional purposes 89 + (the "License"). The License shall be deemed effective as of the date CC0 90 + was applied by Affirmer to the Work. Should any part of the License for any 91 + reason be judged legally invalid or ineffective under applicable law, such 92 + partial invalidity or ineffectiveness shall not invalidate the remainder of 93 + the License, and in such case Affirmer hereby affirms that he or she will 94 + not (i) exercise any of his or her remaining Copyright and Related Rights 95 + in the Work or (ii) assert any associated claims and causes of action with 96 + respect to the Work, in either case contrary to Affirmer's express Statement 97 + of Purpose. 98 + 99 + 4. Limitations and Disclaimers. 100 + 101 + a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, 102 + licensed or otherwise affected by this document. 103 + 104 + b. Affirmer offers the Work as-is and makes no representations or warranties 105 + of any kind concerning the Work, express, implied, statutory or otherwise, 106 + including without limitation warranties of title, merchantability, fitness 107 + for a particular purpose, non infringement, or the absence of latent or other 108 + defects, accuracy, or the present or absence of errors, whether or not discoverable, 109 + all to the greatest extent permissible under applicable law. 110 + 111 + c. Affirmer disclaims responsibility for clearing rights of other persons 112 + that may apply to the Work or any use thereof, including without limitation 113 + any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims 114 + responsibility for obtaining any necessary consents, permissions or other 115 + rights required for any use of the Work. 116 + 117 + d. Affirmer understands and acknowledges that Creative Commons is not a party 118 + to this document and has no duty or obligation with respect to this CC0 or 119 + use of the Work.
+674
pkgs/by-name/ca/calamares-nixos-extensions/src/LICENSES/GPL-3.0-or-later.txt
··· 1 + GNU GENERAL PUBLIC LICENSE 2 + Version 3, 29 June 2007 3 + 4 + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> 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 <http://www.gnu.org/licenses/>. 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 + <program> Copyright (C) <year> <name of author> 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 + <http://www.gnu.org/licenses/>. 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 + <http://www.gnu.org/philosophy/why-not-lgpl.html>.
+41
pkgs/by-name/ca/calamares-nixos-extensions/src/README.md
··· 1 + <!-- SPDX-FileCopyrightText: no 2 + SPDX-License-Identifier: CC0-1.0 3 + --> 4 + 5 + # Calamares Branding and Modules for NixOS 6 + 7 + ## Modules 8 + 9 + - [nixos](modules/nixos) is a Python **job** module 10 + that creates a new configuration file based on the values given by the following base calamares modules: 11 + - [locale](https://github.com/calamares/calamares/tree/calamares/src/modules/locale) 12 + - [keyboard](https://github.com/calamares/calamares/tree/calamares/src/modules/keyboard) 13 + - [users](https://github.com/calamares/calamares/tree/calamares/src/modules/users) 14 + - [partition](https://github.com/calamares/calamares/tree/calamares/src/modules/partition) 15 + - [packagechooser](https://github.com/calamares/calamares/tree/calamares/src/modules/packagechooser) 16 + 17 + ## Branding 18 + 19 + - [nixos](branding/nixos) generic NixOS branding based on the [nixos homepage](https://github.com/NixOS/nixos-homepage) 20 + 21 + 22 + ## Licenses 23 + 24 + Most code (.py, .cpp, etc) files are licensed under GPL-3.0-or-later, but see specific files for details. 25 + 26 + Configuration files in [config](config) are licensed under [CC0-1.0](LICENSES/CC0-1.0.txt) 27 + 28 + Images stored in [config/images](config/images) are licensed under [CC-BY-SA-4.0](LICENSES/CC-BY-SA-4.0.txt) 29 + 30 + Images [gfx-landing-declarative.png](branding/nixos/gfx-landing-declarative.png), [gfx-landing-reliable.png](branding/nixos/gfx-landing-reliable.png), and [gfx-landing-reproducible.png](branding/nixos/gfx-landing-reproducible.png) are licensed under [CC-BY-SA-4.0](LICENSES/CC-BY-SA-4.0.txt) 31 + 32 + Images [nix-snowflake.svg](branding/nixos/nix-snowflake.svg) and [white.png](branding/nixos/white.png) are licensed under [CC-BY-4.0](LICENSES/CC-BY-4.0.txt) 33 + 34 + ## Tests 35 + 36 + - The `nixos` Python job module is has unit tests in [testing/](https://github.com/NixOS/calamares-nixos-extensions/tree/calamares/testing). 37 + 38 + These tests can be executed with the command: 39 + ```sh 40 + $ nix run . 41 + ```
+233
pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/branding.desc
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + --- 5 + componentName: nixos 6 + 7 + 8 + ### WELCOME / OVERALL WORDING 9 + # 10 + # These settings affect some overall phrasing and looks, 11 + # which are most visible in the welcome page. 12 + 13 + # This selects between different welcome texts. When false, uses 14 + # the traditional "Welcome to the %1 installer.", and when true, 15 + # uses "Welcome to the Calamares installer for %1." This allows 16 + # to distinguish this installer from other installers for the 17 + # same distribution. 18 + welcomeStyleCalamares: false 19 + 20 + # Should the welcome image (productWelcome, below) be scaled 21 + # up beyond its natural size? If false, the image does not grow 22 + # with the window but remains the same size throughout (this 23 + # may have surprising effects on HiDPI monitors). 24 + welcomeExpandingLogo: true 25 + 26 + ### WINDOW CONFIGURATION 27 + # 28 + # The settings here affect the placement of the Calamares 29 + # window through hints to the window manager and initial 30 + # sizing of the Calamares window. 31 + 32 + # Size and expansion policy for Calamares. 33 + # - "normal" or unset, expand as needed, use *windowSize* 34 + # - "fullscreen", start as large as possible, ignore *windowSize* 35 + # - "noexpand", don't expand automatically, use *windowSize* 36 + windowExpanding: normal 37 + 38 + # Size of Calamares window, expressed as w,h. Both w and h 39 + # may be either pixels (suffix px) or font-units (suffix em). 40 + # e.g. "800px,600px" 41 + # "60em,480px" 42 + # This setting is ignored if "fullscreen" is selected for 43 + # *windowExpanding*, above. If not set, use constants defined 44 + # in CalamaresUtilsGui, 800x520. 45 + windowSize: 800px,520px 46 + 47 + # Placement of Calamares window. Either "center" or "free". 48 + # Whether "center" actually works does depend on the window 49 + # manager in use (and only makes sense if you're not using 50 + # *windowExpanding* set to "fullscreen"). 51 + windowPlacement: center 52 + 53 + ### PANELS CONFIGURATION 54 + # 55 + # Calamares has a main content area, and two panels (navigation 56 + # and progress / sidebar). The panels can be controlled individually, 57 + # or switched off. If both panels are switched off, the layout of 58 + # the main content area loses its margins, on the assumption that 59 + # you're doing something special. 60 + 61 + # Kind of sidebar (panel on the left, showing progress). 62 + # - "widget" or unset, use traditional sidebar (logo, items) 63 + # - "none", hide it entirely 64 + # - "qml", use calamares-sidebar.qml from branding folder 65 + # In addition, you **may** specify a side, separated by a comma, 66 + # from the kind. Valid sides are: 67 + # - "left" (if not specified, uses this) 68 + # - "right" 69 + # - "top" 70 + # - "bottom" 71 + # For instance, "widget,right" is valid; so is "qml", which defaults 72 + # to putting the sidebar on the left. Also valid is "qml,top". 73 + # While "widget,top" is valid, the widgets code is **not** flexible 74 + # and results will be terrible. 75 + sidebar: widget 76 + 77 + # Kind of navigation (button panel on the bottom). 78 + # - "widget" or unset, use traditional navigation 79 + # - "none", hide it entirely 80 + # - "qml", use calamares-navigation.qml from branding folder 81 + # In addition, you **may** specify a side, separated by a comma, 82 + # from the kind. The same sides are valid as for *sidebar*, 83 + # except the default is *bottom*. 84 + navigation: widget 85 + 86 + 87 + ### STRINGS, IMAGES AND COLORS 88 + # 89 + # This section contains the "branding proper" of names 90 + # and images, rather than global-look settings. 91 + 92 + # These are strings shown to the user in the user interface. 93 + # There is no provision for translating them -- since they 94 + # are names, the string is included as-is. 95 + # 96 + # The four Url strings are the Urls used by the buttons in 97 + # the welcome screen, and are not shown to the user. Clicking 98 + # on the "Support" button, for instance, opens the link supportUrl. 99 + # If a Url is empty, the corresponding button is not shown. 100 + # 101 + # bootloaderEntryName is how this installation / distro is named 102 + # in the boot loader (e.g. in the GRUB menu). 103 + # 104 + # These strings support substitution from /etc/os-release 105 + # if KDE Frameworks 5.58 are available at build-time. When 106 + # enabled, ${varname} is replaced by the equivalent value 107 + # from os-release. All the supported var-names are in all-caps, 108 + # and are listed on the FreeDesktop.org site, 109 + # https://www.freedesktop.org/software/systemd/man/os-release.html 110 + # Note that ANSI_COLOR and CPE_NAME don't make sense here, and 111 + # are not supported (the rest are). Remember to quote the string 112 + # if it contains substitutions, or you'll get YAML exceptions. 113 + # 114 + # The *Url* entries are used on the welcome page, and they 115 + # are visible as buttons there if the corresponding *show* keys 116 + # are set to "true" (they can also be overridden). 117 + strings: 118 + productName: "${NAME}" 119 + shortProductName: NixOS 120 + version: 121 + shortVersion: 122 + versionedName: NixOS 123 + shortVersionedName: NixOS 124 + bootloaderEntryName: NixOS 125 + productUrl: https://nixos.org/ 126 + supportUrl: https://nixos.org/manual/nixos 127 + knownIssuesUrl: https://github.com/NixOS/nixpkgs/issues 128 + releaseNotesUrl: https://nixos.org/manual/nixos/stable/release-notes.html 129 + donateUrl: https://nixos.org/donate.html 130 + 131 + # These images are loaded from the branding module directory. 132 + # 133 + # productBanner is an optional image, which if present, will be shown 134 + # on the welcome page of the application, above the welcome text. 135 + # It is intended to have a width much greater than height. 136 + # It is displayed at 64px height (also on HiDPI). 137 + # Recommended size is 64px tall, and up to 460px wide. 138 + # productIcon is used as the window icon, and will (usually) be used 139 + # by the window manager to represent the application. This image 140 + # should be square, and may be displayed by the window manager 141 + # as small as 16x16 (but possibly larger). 142 + # productLogo is used as the logo at the top of the left-hand column 143 + # which shows the steps to be taken. The image should be square, 144 + # and is displayed at 80x80 pixels (also on HiDPI). 145 + # productWallpaper is an optional image, which if present, will replace 146 + # the normal solid background on every page of the application. 147 + # It can be any size and proportion, 148 + # and will be tiled to fit the entire window. 149 + # For a non-tiled wallpaper, the size should be the same as 150 + # the overall window, see *windowSize* above (800x520). 151 + # productWelcome is shown on the welcome page of the application in 152 + # the middle of the window, below the welcome text. It can be 153 + # any size and proportion, and will be scaled to fit inside 154 + # the window. Use `welcomeExpandingLogo` to make it non-scaled. 155 + # Recommended size is 320x150. 156 + # 157 + # These filenames can also use substitutions from os-release (see above). 158 + images: 159 + # productBanner: "banner.png" 160 + productIcon: "nix-snowflake.svg" 161 + productLogo: "white.png" 162 + # productWallpaper: "wallpaper.png" 163 + productWelcome: "nix-snowflake.svg" 164 + 165 + # Colors for text and background components. 166 + # 167 + # - SidebarBackground is the background of the sidebar 168 + # - SidebarText is the (foreground) text color 169 + # - SidebarBackgroundCurrent sets the background of the current step. 170 + # Optional, and defaults to the application palette. 171 + # - SidebarTextCurrent is the text color of the current step. 172 + # 173 + # These colors can **also** be set through the stylesheet, if the 174 + # branding component also ships a stylesheet.qss. Then they are 175 + # the corresponding CSS attributes of #sidebarApp. 176 + style: 177 + SidebarBackground: "#5277C3" 178 + SidebarText: "#FFFFFF" 179 + SidebarTextCurrent: "#292F34" 180 + SidebarBackgroundCurrent: "#7EBAE4" 181 + 182 + ### SLIDESHOW 183 + # 184 + # The slideshow is displayed during execution steps (e.g. when the 185 + # installer is actually writing to disk and doing other slow things). 186 + 187 + # The slideshow can be a QML file (recommended) which can display 188 + # arbitrary things -- text, images, animations, or even play a game -- 189 + # during the execution step. The QML **is** abruptly stopped when the 190 + # execution step is done, though, so maybe a game isn't a great idea. 191 + # 192 + # The slideshow can also be a sequence of images (not recommended unless 193 + # you don't want QML at all in your Calamares). The images are displayed 194 + # at a rate of 1 every 2 seconds during the execution step. 195 + # 196 + # To configure a QML file, list a single filename: 197 + # slideshow: "show.qml" 198 + # To configure images, like the filenames (here, as an inline list): 199 + # slideshow: [ "/etc/calamares/slideshow/0.png", "/etc/logo.png" ] 200 + slideshow: "show.qml" 201 + 202 + # There are two available APIs for a QML slideshow: 203 + # - 1 (the default) loads the entire slideshow when the installation- 204 + # slideshow page is shown and starts the QML then. The QML 205 + # is never stopped (after installation is done, times etc. 206 + # continue to fire). 207 + # - 2 loads the slideshow on startup and calls onActivate() and 208 + # onLeave() in the root object. After the installation is done, 209 + # the show is stopped (first by calling onLeave(), then destroying 210 + # the QML components). 211 + # 212 + # An image slideshow does not need to have the API defined. 213 + slideshowAPI: 2 214 + 215 + 216 + # These options are to customize online uploading of logs to pastebins: 217 + # - type : Defines the kind of pastebin service to be used. Currently 218 + # it accepts two values: 219 + # - none : disables the pastebin functionality 220 + # - fiche : use fiche pastebin server 221 + # - url : Defines the address of pastebin service to be used. 222 + # Takes string as input. Important bits are the host and port, 223 + # the scheme is not used. 224 + # - sizeLimit : Defines maximum size limit (in KiB) of log file to be pasted. 225 + # The option must be set, to have the log option work. 226 + # Takes integer as input. If < 0, no limit will be forced, 227 + # else only last (approximately) 'n' KiB of log file will be pasted. 228 + # Please note that upload size may be slightly over the limit (due 229 + # to last minute logging), so provide a suitable value. 230 + uploadServer : 231 + type : "fiche" 232 + url : "http://termbin.com:9999" 233 + sizeLimit : -1
pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-declarative.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-reliable.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-reproducible.png

This is a binary file and will not be displayed.

+513
pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/nix-snowflake.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 + 4 + <svg 5 + xmlns:dc="http://purl.org/dc/elements/1.1/" 6 + xmlns:cc="http://creativecommons.org/ns#" 7 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 8 + xmlns:svg="http://www.w3.org/2000/svg" 9 + xmlns="http://www.w3.org/2000/svg" 10 + xmlns:xlink="http://www.w3.org/1999/xlink" 11 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 12 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 13 + width="141.5919mm" 14 + height="122.80626mm" 15 + viewBox="0 0 501.70361 435.14028" 16 + id="svg2" 17 + version="1.1" 18 + inkscape:version="0.92.0 r15299" 19 + sodipodi:docname="nix-snowflake.svg"> 20 + <defs 21 + id="defs4"> 22 + <linearGradient 23 + inkscape:collect="always" 24 + id="linearGradient5562"> 25 + <stop 26 + style="stop-color:#699ad7;stop-opacity:1" 27 + offset="0" 28 + id="stop5564" /> 29 + <stop 30 + id="stop5566" 31 + offset="0.24345198" 32 + style="stop-color:#7eb1dd;stop-opacity:1" /> 33 + <stop 34 + style="stop-color:#7ebae4;stop-opacity:1" 35 + offset="1" 36 + id="stop5568" /> 37 + </linearGradient> 38 + <linearGradient 39 + inkscape:collect="always" 40 + id="linearGradient5053"> 41 + <stop 42 + style="stop-color:#415e9a;stop-opacity:1" 43 + offset="0" 44 + id="stop5055" /> 45 + <stop 46 + id="stop5057" 47 + offset="0.23168644" 48 + style="stop-color:#4a6baf;stop-opacity:1" /> 49 + <stop 50 + style="stop-color:#5277c3;stop-opacity:1" 51 + offset="1" 52 + id="stop5059" /> 53 + </linearGradient> 54 + <linearGradient 55 + id="linearGradient5960" 56 + inkscape:collect="always"> 57 + <stop 58 + id="stop5962" 59 + offset="0" 60 + style="stop-color:#637ddf;stop-opacity:1" /> 61 + <stop 62 + style="stop-color:#649afa;stop-opacity:1" 63 + offset="0.23168644" 64 + id="stop5964" /> 65 + <stop 66 + id="stop5966" 67 + offset="1" 68 + style="stop-color:#719efa;stop-opacity:1" /> 69 + </linearGradient> 70 + <linearGradient 71 + inkscape:collect="always" 72 + id="linearGradient5867"> 73 + <stop 74 + style="stop-color:#7363df;stop-opacity:1" 75 + offset="0" 76 + id="stop5869" /> 77 + <stop 78 + id="stop5871" 79 + offset="0.23168644" 80 + style="stop-color:#6478fa;stop-opacity:1" /> 81 + <stop 82 + style="stop-color:#719efa;stop-opacity:1" 83 + offset="1" 84 + id="stop5873" /> 85 + </linearGradient> 86 + <linearGradient 87 + y2="515.97058" 88 + x2="282.26105" 89 + y1="338.62445" 90 + x1="213.95642" 91 + gradientTransform="translate(983.36076,601.38885)" 92 + gradientUnits="userSpaceOnUse" 93 + id="linearGradient5855" 94 + xlink:href="#linearGradient5960" 95 + inkscape:collect="always" /> 96 + <linearGradient 97 + y2="515.97058" 98 + x2="282.26105" 99 + y1="338.62445" 100 + x1="213.95642" 101 + gradientTransform="translate(-197.75174,-337.1451)" 102 + gradientUnits="userSpaceOnUse" 103 + id="linearGradient5855-8" 104 + xlink:href="#linearGradient5867" 105 + inkscape:collect="always" /> 106 + <linearGradient 107 + y2="247.58188" 108 + x2="-702.75317" 109 + y1="102.74675" 110 + x1="-775.20807" 111 + gradientTransform="translate(983.36076,601.38885)" 112 + gradientUnits="userSpaceOnUse" 113 + id="linearGradient4544" 114 + xlink:href="#linearGradient5960" 115 + inkscape:collect="always" /> 116 + <clipPath 117 + id="clipPath4501" 118 + clipPathUnits="userSpaceOnUse"> 119 + <circle 120 + r="241.06563" 121 + cy="686.09473" 122 + cx="335.13995" 123 + id="circle4503" 124 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#adadad;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> 125 + </clipPath> 126 + <clipPath 127 + id="clipPath5410" 128 + clipPathUnits="userSpaceOnUse"> 129 + <circle 130 + r="241.13741" 131 + cy="340.98975" 132 + cx="335.98114" 133 + id="circle5412" 134 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> 135 + </clipPath> 136 + <linearGradient 137 + inkscape:collect="always" 138 + xlink:href="#linearGradient5053" 139 + id="linearGradient5137" 140 + gradientUnits="userSpaceOnUse" 141 + gradientTransform="translate(864.55062,-2197.497)" 142 + x1="-584.19934" 143 + y1="782.33563" 144 + x2="-496.29703" 145 + y2="937.71399" /> 146 + <linearGradient 147 + inkscape:collect="always" 148 + xlink:href="#linearGradient5053" 149 + id="linearGradient5147" 150 + gradientUnits="userSpaceOnUse" 151 + gradientTransform="translate(864.55062,-2197.497)" 152 + x1="-584.19934" 153 + y1="782.33563" 154 + x2="-496.29703" 155 + y2="937.71399" /> 156 + <linearGradient 157 + inkscape:collect="always" 158 + xlink:href="#linearGradient5562" 159 + id="linearGradient5162" 160 + gradientUnits="userSpaceOnUse" 161 + gradientTransform="translate(70.505061,-1761.3076)" 162 + x1="200.59668" 163 + y1="351.41116" 164 + x2="290.08701" 165 + y2="506.18814" /> 166 + <linearGradient 167 + inkscape:collect="always" 168 + xlink:href="#linearGradient5562" 169 + id="linearGradient5172" 170 + gradientUnits="userSpaceOnUse" 171 + gradientTransform="translate(70.505061,-1761.3076)" 172 + x1="200.59668" 173 + y1="351.41116" 174 + x2="290.08701" 175 + y2="506.18814" /> 176 + <linearGradient 177 + inkscape:collect="always" 178 + xlink:href="#linearGradient5562" 179 + id="linearGradient5182" 180 + gradientUnits="userSpaceOnUse" 181 + gradientTransform="translate(70.505061,-1761.3076)" 182 + x1="200.59668" 183 + y1="351.41116" 184 + x2="290.08701" 185 + y2="506.18814" /> 186 + <linearGradient 187 + y2="506.18814" 188 + x2="290.08701" 189 + y1="351.41116" 190 + x1="200.59668" 191 + gradientTransform="translate(70.505061,-1761.3076)" 192 + gradientUnits="userSpaceOnUse" 193 + id="linearGradient5201" 194 + xlink:href="#linearGradient5562" 195 + inkscape:collect="always" /> 196 + <linearGradient 197 + y2="937.71399" 198 + x2="-496.29703" 199 + y1="782.33563" 200 + x1="-584.19934" 201 + gradientTransform="translate(864.55062,-2197.497)" 202 + gradientUnits="userSpaceOnUse" 203 + id="linearGradient5205" 204 + xlink:href="#linearGradient5053" 205 + inkscape:collect="always" /> 206 + <linearGradient 207 + inkscape:collect="always" 208 + xlink:href="#linearGradient5562" 209 + id="linearGradient4328" 210 + gradientUnits="userSpaceOnUse" 211 + gradientTransform="translate(70.650339,-1055.1511)" 212 + x1="200.59668" 213 + y1="351.41116" 214 + x2="290.08701" 215 + y2="506.18814" /> 216 + <linearGradient 217 + inkscape:collect="always" 218 + xlink:href="#linearGradient5053" 219 + id="linearGradient4330" 220 + gradientUnits="userSpaceOnUse" 221 + gradientTransform="translate(864.69589,-1491.3405)" 222 + x1="-584.19934" 223 + y1="782.33563" 224 + x2="-496.29703" 225 + y2="937.71399" /> 226 + </defs> 227 + <sodipodi:namedview 228 + id="base" 229 + pagecolor="#ffffff" 230 + bordercolor="#666666" 231 + borderopacity="1.0" 232 + inkscape:pageopacity="0.0" 233 + inkscape:pageshadow="2" 234 + inkscape:zoom="0.98318225" 235 + inkscape:cx="113.58176" 236 + inkscape:cy="-45.193301" 237 + inkscape:document-units="px" 238 + inkscape:current-layer="layer3" 239 + showgrid="false" 240 + inkscape:window-width="2560" 241 + inkscape:window-height="1577" 242 + inkscape:window-x="0" 243 + inkscape:window-y="0" 244 + inkscape:window-maximized="1" 245 + inkscape:snap-global="true" 246 + fit-margin-top="0" 247 + fit-margin-left="0" 248 + fit-margin-right="0" 249 + fit-margin-bottom="0" /> 250 + <metadata 251 + id="metadata7"> 252 + <rdf:RDF> 253 + <cc:Work 254 + rdf:about=""> 255 + <dc:format>image/svg+xml</dc:format> 256 + <dc:type 257 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 258 + <dc:title /> 259 + </cc:Work> 260 + </rdf:RDF> 261 + </metadata> 262 + <g 263 + inkscape:groupmode="layer" 264 + id="layer7" 265 + inkscape:label="bg" 266 + style="display:none" 267 + transform="translate(-23.75651,-24.84972)"> 268 + <rect 269 + transform="translate(-132.5822,958.04022)" 270 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 271 + id="rect5389" 272 + width="1543.4283" 273 + height="483.7439" 274 + x="132.5822" 275 + y="-957.77832" /> 276 + </g> 277 + <g 278 + inkscape:groupmode="layer" 279 + id="layer6" 280 + inkscape:label="logo-guide" 281 + style="display:none" 282 + transform="translate(-156.33871,933.1905)"> 283 + <rect 284 + y="-958.02759" 285 + x="132.65129" 286 + height="484.30399" 287 + width="550.41602" 288 + id="rect5379" 289 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5c201e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 290 + inkscape:export-filename="/home/tim/dev/nix/homepage/logo/nix-wiki.png" 291 + inkscape:export-xdpi="22.07" 292 + inkscape:export-ydpi="22.07" /> 293 + <rect 294 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c24a46;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 295 + id="rect5372" 296 + width="501.94415" 297 + height="434.30405" 298 + x="156.12303" 299 + y="-933.02759" 300 + inkscape:export-filename="/home/tim/dev/nix/homepage/logo/nixos-logo-only-hires-print.png" 301 + inkscape:export-xdpi="212.2" 302 + inkscape:export-ydpi="212.2" /> 303 + <rect 304 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#d98d8a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 305 + id="rect5381" 306 + width="24.939611" 307 + height="24.939611" 308 + x="658.02826" 309 + y="-958.04022" /> 310 + </g> 311 + <g 312 + inkscape:label="print-logo" 313 + inkscape:groupmode="layer" 314 + id="layer1" 315 + style="display:inline" 316 + transform="translate(-156.33871,933.1905)" 317 + sodipodi:insensitive="true"> 318 + <path 319 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 320 + d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z" 321 + id="path4861" 322 + inkscape:connector-curvature="0" 323 + sodipodi:nodetypes="cccccccccc" /> 324 + <path 325 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#7ebae4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 326 + d="m 353.50926,-797.4433 -122.21756,211.6631 -28.53477,-48.37 32.93839,-56.6875 -65.41521,-0.1719 -13.9414,-24.1698 14.23637,-24.721 93.11177,0.2939 33.46371,-57.6903 z" 327 + id="use4863" 328 + inkscape:connector-curvature="0" 329 + sodipodi:nodetypes="cccccccccc" /> 330 + <path 331 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#7ebae4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 332 + d="m 362.88537,-628.243 244.41439,0.012 -27.62229,48.8968 -65.56199,-0.1817 32.55876,56.7371 -13.96098,24.1585 -28.52722,0.032 -46.3013,-80.7841 -66.69317,-0.1353 z" 333 + id="use4865" 334 + inkscape:connector-curvature="0" 335 + sodipodi:nodetypes="cccccccccc" /> 336 + <path 337 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#7ebae4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 338 + d="m 505.14318,-720.9886 -122.19683,-211.6751 56.15706,-0.5268 32.6236,56.8692 32.85645,-56.5653 27.90237,0.011 14.29086,24.6896 -46.81047,80.4902 33.22946,57.8256 z" 339 + id="use4867" 340 + inkscape:connector-curvature="0" 341 + sodipodi:nodetypes="cccccccccc" /> 342 + <path 343 + sodipodi:nodetypes="cccccccccc" 344 + inkscape:connector-curvature="0" 345 + id="path4873" 346 + d="m 309.40365,-710.2521 122.19683,211.6751 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4902 -33.22946,-57.8256 z" 347 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> 348 + <path 349 + sodipodi:nodetypes="cccccccccc" 350 + inkscape:connector-curvature="0" 351 + id="use4875" 352 + d="m 451.3364,-803.53264 -244.4144,-0.012 27.62229,-48.89685 65.56199,0.18175 -32.55875,-56.73717 13.96097,-24.15851 28.52722,-0.0315 46.3013,80.78414 66.69317,0.13524 z" 353 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> 354 + <path 355 + sodipodi:nodetypes="cccccccccc" 356 + inkscape:connector-curvature="0" 357 + id="use4877" 358 + d="m 460.87178,-633.8425 122.21757,-211.66304 28.53477,48.37003 -32.93839,56.68751 65.4152,0.1718 13.9414,24.1698 -14.23636,24.7211 -93.11177,-0.294 -33.46371,57.6904 z" 359 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#5277c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> 360 + <g 361 + id="layer2" 362 + inkscape:label="guides" 363 + style="display:none" 364 + transform="translate(72.039038,-1799.4476)"> 365 + <path 366 + d="M 460.60629,594.72881 209.74183,594.7288 84.309616,377.4738 209.74185,160.21882 l 250.86446,1e-5 125.43222,217.255 z" 367 + inkscape:randomized="0" 368 + inkscape:rounded="0" 369 + inkscape:flatsided="true" 370 + sodipodi:arg2="1.5707963" 371 + sodipodi:arg1="1.0471976" 372 + sodipodi:r2="217.25499" 373 + sodipodi:r1="250.86446" 374 + sodipodi:cy="377.47382" 375 + sodipodi:cx="335.17407" 376 + sodipodi:sides="6" 377 + id="path6032" 378 + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.23600003;fill:#4e4d52;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" 379 + sodipodi:type="star" /> 380 + <path 381 + transform="translate(0,-308.26772)" 382 + sodipodi:type="star" 383 + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#4e4d52;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" 384 + id="path5875" 385 + sodipodi:sides="6" 386 + sodipodi:cx="335.17407" 387 + sodipodi:cy="685.74158" 388 + sodipodi:r1="100.83495" 389 + sodipodi:r2="87.32563" 390 + sodipodi:arg1="1.0471976" 391 + sodipodi:arg2="1.5707963" 392 + inkscape:flatsided="true" 393 + inkscape:rounded="0" 394 + inkscape:randomized="0" 395 + d="m 385.59154,773.06721 -100.83495,0 -50.41747,-87.32564 50.41748,-87.32563 100.83495,10e-6 50.41748,87.32563 z" /> 396 + <path 397 + transform="translate(0,-308.26772)" 398 + sodipodi:nodetypes="ccccccccc" 399 + inkscape:connector-curvature="0" 400 + id="path5851" 401 + d="m 1216.5591,938.53395 123.0545,228.14035 -42.6807,-1.2616 -43.4823,-79.7725 -39.6506,80.3267 -32.6875,-19.7984 53.4737,-100.2848 -37.1157,-73.88955 z" 402 + style="fill:url(#linearGradient5855);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> 403 + <rect 404 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.41499999;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#c53a3a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 405 + id="rect5884" 406 + width="48.834862" 407 + height="226.22897" 408 + x="-34.74221" 409 + y="446.17056" 410 + transform="rotate(-30)" /> 411 + <path 412 + transform="translate(0,-308.26772)" 413 + sodipodi:type="star" 414 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.50899999;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 415 + id="path3428" 416 + sodipodi:sides="6" 417 + sodipodi:cx="223.93674" 418 + sodipodi:cy="878.63831" 419 + sodipodi:r1="28.048939" 420 + sodipodi:r2="24.291094" 421 + sodipodi:arg1="0" 422 + sodipodi:arg2="0.52359878" 423 + inkscape:flatsided="true" 424 + inkscape:rounded="0" 425 + inkscape:randomized="0" 426 + d="m 251.98568,878.63831 -14.02447,24.29109 h -28.04894 l -14.02447,-24.29109 14.02447,-24.2911 h 28.04894 z" /> 427 + <use 428 + x="0" 429 + y="0" 430 + xlink:href="#rect5884" 431 + id="use4252" 432 + transform="rotate(60,268.29786,489.4515)" 433 + width="100%" 434 + height="100%" /> 435 + <rect 436 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.6507937;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 437 + id="rect4254" 438 + width="5.3947482" 439 + height="115.12564" 440 + x="545.71014" 441 + y="467.07007" 442 + transform="rotate(30,575.23539,-154.13386)" /> 443 + </g> 444 + </g> 445 + <g 446 + inkscape:groupmode="layer" 447 + id="layer3" 448 + inkscape:label="gradient-logo" 449 + style="display:inline;opacity:1" 450 + sodipodi:insensitive="true" 451 + transform="translate(-156.33871,933.1905)"> 452 + <path 453 + sodipodi:nodetypes="cccccccccc" 454 + inkscape:connector-curvature="0" 455 + id="path3336-6" 456 + d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8257 z" 457 + style="opacity:1;fill:url(#linearGradient4328);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> 458 + <use 459 + height="100%" 460 + width="100%" 461 + transform="rotate(60,407.11155,-715.78724)" 462 + id="use3439-6" 463 + inkscape:transform-center-y="151.59082" 464 + inkscape:transform-center-x="124.43045" 465 + xlink:href="#path3336-6" 466 + y="0" 467 + x="0" /> 468 + <use 469 + height="100%" 470 + width="100%" 471 + transform="rotate(-60,407.31177,-715.70016)" 472 + id="use3445-0" 473 + inkscape:transform-center-y="75.573958" 474 + inkscape:transform-center-x="-168.20651" 475 + xlink:href="#path3336-6" 476 + y="0" 477 + x="0" /> 478 + <use 479 + height="100%" 480 + width="100%" 481 + transform="rotate(180,407.41868,-715.7565)" 482 + id="use3449-5" 483 + inkscape:transform-center-y="-139.94592" 484 + inkscape:transform-center-x="59.669705" 485 + xlink:href="#path3336-6" 486 + y="0" 487 + x="0" /> 488 + <path 489 + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4330);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" 490 + d="m 309.54892,-710.38827 122.19683,211.67512 -56.15706,0.5268 -32.6236,-56.8692 -32.85645,56.5653 -27.90237,-0.011 -14.29086,-24.6896 46.81047,-80.4901 -33.22946,-57.8256 z" 491 + id="path4260-0" 492 + inkscape:connector-curvature="0" 493 + sodipodi:nodetypes="cccccccccc" /> 494 + <use 495 + height="100%" 496 + width="100%" 497 + transform="rotate(120,407.33916,-716.08356)" 498 + id="use4354-5" 499 + xlink:href="#path4260-0" 500 + y="0" 501 + x="0" 502 + style="display:inline" /> 503 + <use 504 + height="100%" 505 + width="100%" 506 + transform="rotate(-120,407.28823,-715.86995)" 507 + id="use4362-2" 508 + xlink:href="#path4260-0" 509 + y="0" 510 + x="0" 511 + style="display:inline" /> 512 + </g> 513 + </svg>
+143
pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/show.qml
··· 1 + /* 2 + * 3 + * SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org> 4 + * SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org> 5 + * SPDX-FileCopyrightText: 2022 Victor Fuentes <vmfuentes64@gmail.com> 6 + * SPDX-License-Identifier: GPL-3.0-or-later 7 + * 8 + * Calamares is Free Software: see the License-Identifier above. 9 + * 10 + */ 11 + 12 + import QtQuick 2.0; 13 + import calamares.slideshow 1.0; 14 + 15 + Presentation 16 + { 17 + id: presentation 18 + 19 + function nextSlide() { 20 + console.log("QML Component (default slideshow) Next slide"); 21 + presentation.goToNextSlide(); 22 + } 23 + 24 + Timer { 25 + id: advanceTimer 26 + interval: 20000 27 + running: presentation.activatedInCalamares 28 + repeat: true 29 + onTriggered: nextSlide() 30 + } 31 + 32 + Slide { 33 + Text { 34 + id: text1 35 + anchors.centerIn: parent 36 + text: "Reproducible" 37 + font.pixelSize: 30 38 + wrapMode: Text.WordWrap 39 + width: presentation.width 40 + horizontalAlignment: Text.Center 41 + color: "#6586C8" 42 + } 43 + Image { 44 + id: background1 45 + source: "gfx-landing-reproducible.png" 46 + width: 200; height: 200 47 + fillMode: Image.PreserveAspectFit 48 + anchors.bottom: text1.top 49 + anchors.horizontalCenter: parent.horizontalCenter 50 + } 51 + Text { 52 + anchors.horizontalCenter: background1.horizontalCenter 53 + anchors.top: text1.bottom 54 + text: "Nix builds packages in isolation from each other.<br/>"+ 55 + "This ensures that they are reproducible and don't<br/>"+ 56 + "have undeclared dependencies, so <b>if a package<br/>"+ 57 + "works on one machine, it will also work on another.</b>" 58 + wrapMode: Text.WordWrap 59 + width: presentation.width 60 + horizontalAlignment: Text.Center 61 + } 62 + } 63 + 64 + Slide { 65 + Text { 66 + id: text2 67 + anchors.centerIn: parent 68 + text: "Declarative" 69 + font.pixelSize: 30 70 + wrapMode: Text.WordWrap 71 + width: presentation.width 72 + horizontalAlignment: Text.Center 73 + color: "#6586C8" 74 + } 75 + Image { 76 + id: background2 77 + source: "gfx-landing-declarative.png" 78 + width: 200; height: 200 79 + fillMode: Image.PreserveAspectFit 80 + anchors.bottom: text2.top 81 + anchors.horizontalCenter: parent.horizontalCenter 82 + } 83 + Text { 84 + anchors.horizontalCenter: background2.horizontalCenter 85 + anchors.top: text2.bottom 86 + text: "Nix makes it <b>trivial to share development and build<br/>"+ 87 + "environments</b> for your projects, regardless of what<br/>"+ 88 + "programming languages and tools you’re using." 89 + wrapMode: Text.WordWrap 90 + width: presentation.width 91 + horizontalAlignment: Text.Center 92 + } 93 + } 94 + 95 + Slide { 96 + Text { 97 + id: text3 98 + anchors.centerIn: parent 99 + text: "Reliable" 100 + font.pixelSize: 30 101 + wrapMode: Text.WordWrap 102 + width: presentation.width 103 + horizontalAlignment: Text.Center 104 + color: "#6586C8" 105 + } 106 + Image { 107 + id: background3 108 + source: "gfx-landing-reliable.png" 109 + width: 200; height: 200 110 + fillMode: Image.PreserveAspectFit 111 + anchors.bottom: text3.top 112 + anchors.horizontalCenter: parent.horizontalCenter 113 + } 114 + Text { 115 + anchors.horizontalCenter: background3.horizontalCenter 116 + anchors.top: text3.bottom 117 + text: "Nix ensures that installing or upgrading one package<br/>"+ 118 + "<b>cannot break other packages.</b> It allows you to <b>roll<br/>"+ 119 + "back to previous versions,</b> and ensures that no<br/>"+ 120 + "package is in an inconsistent state during an<br/>"+ 121 + "upgrade." 122 + wrapMode: Text.WordWrap 123 + width: presentation.width 124 + horizontalAlignment: Text.Center 125 + } 126 + } 127 + 128 + // When this slideshow is loaded as a V1 slideshow, only 129 + // activatedInCalamares is set, which starts the timer (see above). 130 + // 131 + // In V2, also the onActivate() and onLeave() methods are called. 132 + // These example functions log a message (and re-start the slides 133 + // from the first). 134 + function onActivate() { 135 + console.log("QML Component (default slideshow) activated"); 136 + presentation.currentSlide = 0; 137 + } 138 + 139 + function onLeave() { 140 + console.log("QML Component (default slideshow) deactivated"); 141 + } 142 + 143 + }
pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/white.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/budgie.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/cinnamon.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/deepin.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/enlightenment.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/gnome.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/lumina.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/lxqt.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/mate.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/nodesktop.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/pantheon.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/plasma6.png

This is a binary file and will not be displayed.

pkgs/by-name/ca/calamares-nixos-extensions/src/config/images/xfce.png

This is a binary file and will not be displayed.

+47
pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/finished.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + # Configuration for the "finished" page, which is usually shown only at 5 + # the end of the installation (successful or not). 6 + --- 7 + # DEPRECATED 8 + # 9 + # The finished page can hold a "restart system now" checkbox. 10 + # If this is false, no checkbox is shown and the system is not restarted 11 + # when Calamares exits. 12 + # restartNowEnabled: true 13 + 14 + # DEPRECATED 15 + # 16 + # Initial state of the checkbox "restart now". Only relevant when the 17 + # checkbox is shown by restartNowEnabled. 18 + # restartNowChecked: false 19 + 20 + # Behavior of the "restart system now" button. 21 + # 22 + # There are four usable values: 23 + # - never 24 + # Does not show the button and does not restart. 25 + # This matches the old behavior with restartNowEnabled=false. 26 + # - user-unchecked 27 + # Shows the button, defaults to unchecked, restarts if it is checked. 28 + # This matches the old behavior with restartNowEnabled=true and restartNowChecked=false. 29 + # - user-checked 30 + # Shows the button, defaults to checked, restarts if it is checked. 31 + # This matches the old behavior with restartNowEnabled=true and restartNowChecked=true. 32 + # - always 33 + # Shows the button, checked, but the user cannot change it. 34 + # This is new behavior. 35 + # 36 + # The three combinations of legacy values are still supported. 37 + restartNowMode: user-unchecked 38 + 39 + # If the checkbox is shown, and the checkbox is checked, then when 40 + # Calamares exits from the finished-page it will run this command. 41 + # If not set, falls back to "shutdown -r now". 42 + restartNowCommand: "systemctl -i reboot" 43 + 44 + # When the last page is (successfully) reached, send a DBus notification 45 + # to the desktop that the installation is done. This works only if the 46 + # user as whom Calamares is run, can reach the regular desktop session bus. 47 + notifyOnFinished: true
+19
pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/keyboard.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + # NOTE: you must have ckbcomp installed and runnable 5 + # on the live system, for keyboard layout previews. 6 + --- 7 + # The name of the file to write X11 keyboard settings to 8 + # The default value is the name used by upstream systemd-localed. 9 + # Relative paths are assumed to be relative to /etc/X11/xorg.conf.d 10 + xOrgConfFileName: "/etc/X11/xorg.conf.d/00-keyboard.conf" 11 + 12 + # The path to search for keymaps converted from X11 to kbd format 13 + # Leave this empty if the setting does not make sense on your distribution. 14 + #convertedKeymapPath: "/lib/kbd/keymaps/xkb" 15 + 16 + # Write keymap configuration to /etc/default/keyboard, usually 17 + # found on Debian-related systems. 18 + # Defaults to true if nothing is set. 19 + writeEtcDefaultKeyboard: false
+100
pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/locale.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + --- 5 + # This settings are used to set your default system time zone. 6 + # Time zones are usually located under /usr/share/zoneinfo and 7 + # provided by the 'tzdata' package of your Distribution. 8 + # 9 + # Distributions using systemd can list available 10 + # time zones by using the timedatectl command. 11 + # timedatectl list-timezones 12 + # 13 + # The starting timezone (e.g. the pin-on-the-map) when entering 14 + # the locale page can be set through keys *region* and *zone*. 15 + # If either is not set, defaults to America/New_York. 16 + # 17 + region: "America" 18 + zone: "New_York" 19 + 20 + 21 + # System locales are detected in the following order: 22 + # 23 + # - /usr/share/i18n/SUPPORTED 24 + # - localeGenPath (defaults to /etc/locale.gen if not set) 25 + # - 'locale -a' output 26 + # 27 + # Enable only when your Distribution is using an 28 + # custom path for locale.gen 29 + # 30 + #localeGenPath: "PATH_TO/locale.gen" 31 + 32 + # GeoIP based Language settings: Leave commented out to disable GeoIP. 33 + # 34 + # GeoIP needs a working Internet connection. 35 + # This can be managed from `welcome.conf` by adding 36 + # internet to the list of required conditions. 37 + # 38 + # The configuration 39 + # is in three parts: a *style*, which can be "json" or "xml" 40 + # depending on the kind of data returned by the service, and 41 + # a *url* where the data is retrieved, and an optional *selector* 42 + # to pick the right field out of the returned data (e.g. field 43 + # name in JSON or element name in XML). 44 + # 45 + # The default selector (when the setting is blank) is picked to 46 + # work with existing JSON providers (which use "time_zone") and 47 + # Ubiquity's XML providers (which use "TimeZone"). 48 + # 49 + # If the service configured via *url* uses 50 + # a different attribute name (e.g. "timezone") in JSON or a 51 + # different element tag (e.g. "<Time_Zone>") in XML, set this 52 + # string to the name or tag to be used. 53 + # 54 + # In JSON: 55 + # - if the string contains "." characters, this is used as a 56 + # multi-level selector, e.g. "a.b" will select the timezone 57 + # from data "{a: {b: "Europe/Amsterdam" } }". 58 + # - each part of the string split by "." characters is used as 59 + # a key into the JSON data. 60 + # In XML: 61 + # - all elements with the named tag (e.g. all TimeZone) elements 62 + # from the document are checked; the first one with non-empty 63 + # text value is used. 64 + # 65 + # 66 + # An HTTP(S) request is made to *url*. The request should return 67 + # valid data in a suitable format, depending on *style*; 68 + # generally this includes a string value with the timezone 69 + # in <region>/<zone> format. For services that return data which 70 + # does not follow the conventions of "suitable data" described 71 + # below, *selector* may be used to pick different data. 72 + # 73 + # Note that this example URL works, but the service is shutting 74 + # down in June 2018. 75 + # 76 + # Suitable JSON data looks like 77 + # ``` 78 + # {"time_zone":"America/New_York"} 79 + # ``` 80 + # Suitable XML data looks like 81 + # ``` 82 + # <Response><TimeZone>Europe/Brussels</TimeZone></Response> 83 + # ``` 84 + # 85 + # To accommodate providers of GeoIP timezone data with peculiar timezone 86 + # naming conventions, the following cleanups are performed automatically: 87 + # - backslashes are removed 88 + # - spaces are replaced with _ 89 + # 90 + # Legacy settings "geoipStyle", "geoipUrl" and "geoipSelector" 91 + # in the top-level are still supported, but I'd advise against. 92 + # 93 + # To disable GeoIP checking, either comment-out the entire geoip section, 94 + # or set the *style* key to an unsupported format (e.g. `none`). 95 + # Also, note the analogous feature in src/modules/welcome/welcome.conf. 96 + # 97 + geoip: 98 + style: "json" 99 + url: "https://geoip.kde.org/v1/calamares" 100 + selector: "" # leave blank for the default
+62
pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/mount.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + # Mount filesystems in the target (generally, before treating the 5 + # target as a usable chroot / "live" system). Filesystems are 6 + # automatically mounted from the partitioning module. Filesystems 7 + # listed here are **extra**. The filesystems listed in *extraMounts* 8 + # are mounted in all target systems. 9 + --- 10 + # Extra filesystems to mount. The key's value is a list of entries; each 11 + # entry has five keys: 12 + # - device The device node to mount 13 + # - fs (optional) The filesystem type to use 14 + # - mountPoint Where to mount the filesystem 15 + # - options (optional) An array of options to pass to mount 16 + # - efi (optional) A boolean that when true is only mounted for UEFI installs 17 + # 18 + # The device is not mounted if the mountPoint is unset or if the fs is 19 + # set to unformatted. 20 + # 21 + extraMounts: 22 + - device: proc 23 + fs: proc 24 + mountPoint: /proc 25 + - device: sys 26 + fs: sysfs 27 + mountPoint: /sys 28 + - device: /dev 29 + mountPoint: /dev 30 + options: [ bind ] 31 + - device: tmpfs 32 + fs: tmpfs 33 + mountPoint: /run 34 + - device: /run/udev 35 + mountPoint: /run/udev 36 + options: [ bind ] 37 + - device: efivarfs 38 + fs: efivarfs 39 + mountPoint: /sys/firmware/efi/efivars 40 + efi: true 41 + 42 + # The mount options used to mount each filesystem. 43 + # 44 + # filesystem contains the name of the filesystem or on of three special 45 + # values, "default", efi" and "btrfs_swap". The logic is applied in this manner: 46 + # - If the partition is the EFI partition, the "efi" entry will be used 47 + # - If the fs is btrfs and the subvolume is for the swapfile, 48 + # the "btrfs_swap" entry is used 49 + # - If the filesystem is an exact match for filesystem, that entry is used 50 + # - If no match is found in the above, the default entry is used 51 + # - If there is no match and no default entry, "defaults" is used 52 + # - If the mountOptions key is not present, "defaults" is used 53 + # 54 + # Each filesystem entry contains 3 keys, all of which are optional 55 + # options - An array of mount options that is used on all disk types 56 + # ssdOptions - An array of mount options combined with options for ssds 57 + # hddOptions - An array of mount options combined with options for hdds 58 + # If combining these options results in an empty array, "defaults" is used 59 + # 60 + mountOptions: 61 + - filesystem: efi 62 + options: [ fmask=0077, dmask=0077 ]
+243
pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/packagechooser.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + # Configuration for the low-density software chooser 5 + --- 6 + # Software selection mode, to set whether the software packages 7 + # can be chosen singly, or multiply. 8 + # 9 + # Possible modes are "optional", "required" (for zero-or-one or exactly-one) 10 + # or "optionalmultiple", "requiredmultiple" (for zero-or-more 11 + # or one-or-more). 12 + mode: required 13 + 14 + # Software installation method: 15 + # 16 + # - "legacy" or "custom" or "contextualprocess" 17 + # When set to "legacy", writes a GlobalStorage value for the choice that 18 + # has been made. The key is *packagechooser_<id>*. The module's 19 + # instance name is used; see the *instances* section of `settings.conf`. 20 + # If there is just one packagechooser module, and no special instance is set, 21 + # resulting GS key is probably *packagechooser_packagechooser*. 22 + # 23 + # The GS value is a comma-separated list of the IDs of the selected 24 + # packages, or an empty string if none is selected. 25 + # 26 + # With "legacy" installation, you should have a contextualprocess or similar 27 + # module somewhere in the `exec` phase to process the GlobalStorage key 28 + # and actually **do** something for the packages. 29 + # 30 + # - "packages" 31 + # When set to "packages", writes GlobalStorage values suitable for 32 + # consumption by the *packages* module (which should appear later 33 + # in the `exec` section. These package settings will then be handed 34 + # off to whatever package manager is configured there. 35 + # 36 + # - "netinstall-select" 37 + # When this is set, the id(s) selected are passed to the netinstall module. 38 + # Any id that matches a group name in that module is set to checked 39 + # 40 + # - "netinstall-add" 41 + # With this method, the packagechooser module is used to add groups to the 42 + # netinstall module. For this to hav=e any effect. You must set netinstall, 43 + # which is described below. 44 + # 45 + # There is no need to put this module in the `exec` section. There 46 + # are no jobs that this module provides. You should put **other** 47 + # modules, either *contextualprocess* or *packages* or some custom 48 + # module, in the `exec` section to do the actual work. 49 + method: legacy 50 + 51 + 52 + # Human-visible strings in this module. These are all optional. 53 + # The following translated keys are used: 54 + # - *step*, used in the overall progress view (left-hand pane) 55 + # 56 + # Each key can have a [locale] added to it, which is used as 57 + # the translated string for that locale. For the strings 58 + # associated with the "no-selection" item, see *items*, below 59 + # with the explicit item-*id* "". 60 + # 61 + labels: 62 + step: "Desktop" 63 + 64 + # (Optional) item-*id* of pre-selected list-view item. 65 + # Pre-selects one of the items below. 66 + default: gnome 67 + 68 + # Items to display in the chooser. In general, this should be a 69 + # pretty short list to avoid overwhelming the UI. This is a list 70 + # of objects, and the items are displayed in list order. 71 + # 72 + # Either provide the data for an item in the list (using the keys 73 + # below), or use existing AppData XML files, or use AppStream cache 74 + # as a source for the data. 75 + # 76 + # For data provided by the list: the item has an id, which is used in 77 + # setting the value of *packagechooser_<module-id>*. The following field 78 + # is mandatory: 79 + # 80 + # - *id* 81 + # ID for the product. The ID "" is special, and is used for 82 + # "no package selected". Only include this if the mode allows 83 + # selecting none. The name and description given for the "no package 84 + # selected" item are displayed when the module starts. 85 + # 86 + # Each item must adhere to one of three "styles" of item. Which styles 87 + # are supported depends on compile-time dependencies of Calamares. 88 + # Both AppData and AppStream may **optionally** be available. 89 + # 90 + # # Generic Items # 91 + # 92 + # These items are always supported. They require the most configuration 93 + # **in this file** and duplicate information that may be available elsewhere 94 + # (e.g. in AppData or AppStream), but do not require any additional 95 + # dependencies. These items have the following **mandatory** fields: 96 + # 97 + # - *name* 98 + # Human-readable name of the product. To provide translations, 99 + # add a *[lang]* decoration as part of the key name, e.g. `name[nl]` 100 + # for Dutch. The list of usable languages can be found in 101 + # `CMakeLists.txt` or as part of the debug output of Calamares. 102 + # - *description* 103 + # Human-readable description. These can be translated as well. 104 + # - *screenshot* 105 + # Path to a single screenshot of the product. May be a filesystem 106 + # path or a QRC path, e.g. ":/images/no-selection.png". If the path 107 + # is not found (e.g. is a non-existent absolute path, or is a relative 108 + # path that does not exist in the current working directory) then 109 + # an additional attempt is made to load the image from the **branding** 110 + # directory. 111 + # 112 + # The following fields are **optional** for an item: 113 + # 114 + # - *packages* : 115 + # List of package names for the product. If using the *method* 116 + # "packages", consider this item mandatory (because otherwise 117 + # selecting the item would install no packages). 118 + # 119 + # - *netinstall* : 120 + # The data in this field should follow the format of a group 121 + # from the netinstall module documented in 122 + # src/modules/netinstall/netinstall.conf. This is only used 123 + # when method is set to "netinstall-add" 124 + # 125 + # # AppData Items # 126 + # 127 + # For data provided by AppData XML: the item has an *appdata* 128 + # key which points to an AppData XML file in the local filesystem. 129 + # This file is parsed to provide the id (from AppData id), name 130 + # (from AppData name), description (from AppData description paragraphs 131 + # or the summary entries), and a screenshot (the default screenshot 132 + # from AppData). No package is set (but that is unused anyway). 133 + # 134 + # AppData may contain IDs that are not useful inside Calamares, 135 + # and the screenshot URL may be remote -- a remote URL will not 136 + # be loaded and the screenshot will be missing. An item with *appdata* 137 + # **may** specify an ID or screenshot path, as above. This will override 138 + # the settings from AppData. 139 + # 140 + # # AppStream Items # 141 + # 142 + # For data provided by AppStream cache: the item has an *appstream* 143 + # key which matches the AppStream identifier in the cache (e.g. 144 + # *org.kde.kwrite.desktop*). Data is retrieved from the AppStream 145 + # cache for that ID. The package name is set from the AppStream data. 146 + # 147 + # An item for AppStream may also contain an *id* and a *screenshot* 148 + # key which will override the data from AppStream. 149 + items: 150 + 151 + - id: gnome 152 + packages: [ gnome ] 153 + name: GNOME 154 + description: "<html>Every part of GNOME has been designed to make it simple and easy to use. It provides a focused working environment that helps you get things done. GNOME is a popular choice and well tested on NixOS.<br/> 155 + <br/> 156 + Learn more at <a href=\"https://www.gnome.org/\">gnome.org</a></html>" 157 + screenshot: "/run/current-system/sw/share/calamares/images/gnome.png" 158 + 159 + - id: plasma6 160 + packages: [ plasma6 ] 161 + name: Plasma 162 + description: "<html>Plasma is made to stay out of the way as it helps you get things done. But under its light and intuitive surface, it's a highly customizable. So you're free to choose ways of usage right as you need them and when you need them. Plasma is a popular choice and well tested on NixOS.<br/> 163 + <br/> 164 + Learn more at <a href=\"https://kde.org/plasma-desktop/\">kde.org/plasma-desktop</a></html>" 165 + screenshot: "/run/current-system/sw/share/calamares/images/plasma6.png" 166 + 167 + - id: xfce 168 + packages: [ xfce ] 169 + name: Xfce 170 + description: "<html>Xfce is a lightweight desktop environment. It aims to be fast and low on system resources, while still being visually appealing and user friendly.<br/> 171 + <br/> 172 + Learn more at <a href=\"https://www.xfce.org/\">xfce.org</a></html>" 173 + screenshot: "/run/current-system/sw/share/calamares/images/xfce.png" 174 + 175 + - id: pantheon 176 + packages: [ pantheon ] 177 + name: Pantheon 178 + description: "<html>Pantheon is the default desktop of Elementary OS. It provides a productive and intuitive user experience while also being visually appealing.<br/> 179 + <br/> 180 + Learn more at <a href=\"https://elementary.io/docs/learning-the-basics\">elementary.io/docs/learning-the-basics</a></html>" 181 + screenshot: "/run/current-system/sw/share/calamares/images/pantheon.png" 182 + 183 + - id: cinnamon 184 + packages: [ cinnamon ] 185 + name: Cinnamon 186 + description: "<html>Cinnamon is a desktop which provides advanced innovative features and a traditional user experience. The emphasis is put on making users feel at home and providing them with an easy to use and comfortable desktop experience.<br/> 187 + <br/> 188 + Learn more at <a href=\"https://projects.linuxmint.com/cinnamon/\">projects.linuxmint.com/cinnamon</a></html>" 189 + screenshot: "/run/current-system/sw/share/calamares/images/cinnamon.png" 190 + 191 + - id: mate 192 + packages: [ mate ] 193 + name: MATE 194 + description: "<html>The MATE Desktop Environment is the continuation of GNOME 2. It provides an intuitive and attractive desktop environment.<br/> 195 + <br/> 196 + Learn more at <a href=\"https://mate-desktop.org/\">mate-desktop.org</a></html>" 197 + screenshot: "/run/current-system/sw/share/calamares/images/mate.png" 198 + 199 + - id: enlightenment 200 + packages: [ enlightenment ] 201 + name: Enlightenment 202 + description: "<html>Enlightenment is a Window Manager, Compositor and Minimal Desktop. Enlightenment is classed as a desktop shell as it provides everything you need to operate your desktop or laptop, but it is not a full application suite.<br/> 203 + <br/> 204 + Learn more at <a href=\"https://www.enlightenment.org/\">enlightenment.org</a></html>" 205 + screenshot: "/run/current-system/sw/share/calamares/images/enlightenment.png" 206 + 207 + - id: lxqt 208 + packages: [ lxqt ] 209 + name: LXQt 210 + description: "<html>LXQt is a lightweight Qt desktop environment. It will not get in your way. It will not hang or slow down your system. It is focused on being a classic desktop with a modern look and feel.<br/> 211 + <br/> 212 + Learn more at <a href=\"https://lxqt-project.org/\">lxqt-project.org</a></html>" 213 + screenshot: "/run/current-system/sw/share/calamares/images/lxqt.png" 214 + 215 + # Lumina is not yet stable enough, once it is, simply uncommenting the lines below is all that's needed to enable it as an option 216 + #- id: lumina 217 + # packages: [ lumina ] 218 + # name: Lumina 219 + # description: "<html>Lumina is designed to have a small footprint, giving your system the best performance possible. It is built to flow seamlessly between computer tasks and offers several integrated utilities in one convenient package.<br/> 220 + # - Learn more at <a href=\"https://lumina-desktop.org/\">lumina-desktop.org</a></html>" 221 + # screenshot: "/run/current-system/sw/share/calamares/images/lumina.png" 222 + 223 + - id: budgie 224 + packages: [ budgie ] 225 + name: Budgie 226 + description: "<html>The Budgie Desktop is a feature-rich, modern desktop designed to keep out the way of the user.<br/> 227 + <br/> 228 + Learn more at <a href=\"https://docs.buddiesofbudgie.org/\">buddiesofbudgie.org</a></html>" 229 + screenshot: "/run/current-system/sw/share/calamares/images/budgie.png" 230 + 231 + - id: deepin 232 + packages: [ deepin ] 233 + name: Deepin 234 + description: "<html>The Deepin Desktop Environment is an elegant, easy to use and reliable desktop environment.<br/> 235 + <br/> 236 + Learn more at <a href=\"https://www.deepin.org/\">deepin.org</a></html>" 237 + screenshot: "/run/current-system/sw/share/calamares/images/deepin.png" 238 + 239 + - id: "" 240 + packages: [] 241 + name: "No desktop" 242 + screenshot: "/run/current-system/sw/share/calamares/images/nodesktop.png" 243 + description: "A minimal system without a graphical user interface will be installed. This is great for servers or custom setups with window managers. The configuration can be changed after installation."
+300
pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/partition.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + 5 + # Options for EFI system partition. 6 + # 7 + # - *mountPoint* 8 + # This setting specifies the mount point of the EFI system partition. Some 9 + # distributions (Fedora, Debian, Manjaro, etc.) use /boot/efi, others (KaOS, 10 + # etc.) use just /boot. 11 + # 12 + # Defaults to "/boot/efi", may be empty (but weird effects ensue) 13 + # - *recommendedSize* 14 + # This optional setting specifies the size of the EFI system partition. 15 + # If nothing is specified, the default size of 300MiB will be used. 16 + # When writing quantities here, M is treated as MiB, and if you really 17 + # want one-million (10^6) bytes, use MB. 18 + # - *minimumSize* 19 + # This optional setting specifies the absolute minimum size of the EFI 20 + # system partition. If nothing is specified, the *recommendedSize* 21 + # is used instead. 22 + # - *label* 23 + # This optional setting specifies the name of the EFI system partition (see 24 + # PARTLABEL; gpt only; requires KPMCore >= 4.2.0). 25 + # If nothing is specified, the partition name is left unset. 26 + # 27 + # Going below the *recommended* size is allowed, but the user will 28 + # get a warning that it might not work. Going below the *minimum* 29 + # size is not allowed and the user will be told it will not work. 30 + # 31 + # Both quantities must be at least 32MiB, this is enforced by the EFI 32 + # spec. If minimum is not specified, it defaults to the recommended 33 + # size. Distro's that allow more user latitude can set the minimum lower. 34 + efi: 35 + mountPoint: "/boot" 36 + recommendedSize: 1GiB 37 + minimumSize: 32MiB 38 + label: "EFI" 39 + 40 + # Deprecated alias of efi.mountPoint 41 + # efiSystemPartition: "/boot/efi" 42 + 43 + # Deprecated alias of efi.recommendedSize 44 + # efiSystemPartitionSize: 300MiB 45 + 46 + # Deprecated alias of efi.label 47 + # efiSystemPartitionName: EFI 48 + 49 + # In autogenerated partitioning, allow the user to select a swap size? 50 + # If there is exactly one choice, no UI is presented, and the user 51 + # cannot make a choice -- this setting is used. If there is more than 52 + # one choice, a UI is presented. 53 + # 54 + # Legacy settings *neverCreateSwap* and *ensureSuspendToDisk* correspond 55 + # to values of *userSwapChoices* as follows: 56 + # - *neverCreateSwap* is true, means [none] 57 + # - *neverCreateSwap* is false, *ensureSuspendToDisk* is false, [small] 58 + # - *neverCreateSwap* is false, *ensureSuspendToDisk* is true, [suspend] 59 + # 60 + # Autogenerated swap sizes are as follows: 61 + # - *suspend*: Swap is always at least total memory size, 62 + # and up to 4GiB RAM follows the rule-of-thumb 2 * memory; 63 + # from 4GiB to 8 GiB it stays steady at 8GiB, and over 8 GiB memory 64 + # swap is the size of main memory. 65 + # - *small*: Follows the rules above, but Swap is at 66 + # most 8GiB, and no more than 10% of available disk. 67 + # In both cases, a fudge factor (usually 10% extra) is applied so that there 68 + # is some space for administrative overhead (e.g. 8 GiB swap will allocate 69 + # 8.8GiB on disk in the end). 70 + # 71 + # If *file* is enabled here, make sure to have the *fstab* module 72 + # as well (later in the exec phase) so that the swap file is 73 + # actually created. 74 + userSwapChoices: 75 + - none # Create no swap, use no swap 76 + - small # Up to 4GB 77 + - suspend # At least main memory size 78 + # - reuse # Re-use existing swap, but don't create any (unsupported right now) 79 + # - file # To swap file instead of partition 80 + 81 + # This optional setting specifies the name of the swap partition (see 82 + # PARTLABEL; gpt only; requires KPMCore >= 4.2.0). 83 + # If nothing is specified, the partition name is left unset. 84 + # swapPartitionName: swap 85 + 86 + # LEGACY SETTINGS (these will generate a warning) 87 + # ensureSuspendToDisk: true 88 + # neverCreateSwap: false 89 + 90 + # This setting specifies the LUKS generation (i.e LUKS1, LUKS2) used internally by 91 + # cryptsetup when creating an encrypted partition. 92 + # 93 + # This option is set to luks1 by default, as grub doesn't support LUKS2 + Argon2id 94 + # currently. On the other hand grub does support LUKS2 with PBKDF2 and could therefore be 95 + # also set to luks2. Also there are some patches for grub and Argon2. 96 + # See: https://aur.archlinux.org/packages/grub-improved-luks2-git 97 + # 98 + # Choices: luks1, luks2 (in addition, "luks" means "luks1") 99 + # 100 + # The default is luks1 101 + # 102 + luksGeneration: luks2 103 + 104 + # This setting determines if encryption should be allowed when using zfs. This 105 + # setting has no effect unless zfs support is provided. 106 + # 107 + # This setting is to handle the fact that some bootloaders(such as grub) do not 108 + # support zfs encryption. 109 + # 110 + # The default is true 111 + # 112 + # allowZfsEncryption: true 113 + 114 + # Correctly draw nested (e.g. logical) partitions as such. 115 + drawNestedPartitions: false 116 + 117 + # Show/hide partition labels on manual partitioning page. 118 + alwaysShowPartitionLabels: true 119 + 120 + # Allow manual partitioning. 121 + # 122 + # When set to false, this option hides the "Manual partitioning" button, 123 + # limiting the user's choice to "Erase", "Replace" or "Alongside". 124 + # This can be useful when using a custom partition layout we don't want 125 + # the user to modify. 126 + # 127 + # If nothing is specified, manual partitioning is enabled. 128 + #allowManualPartitioning: true 129 + 130 + # Show not encrypted boot partition warning. 131 + # 132 + # When set to false, this option does not show the 133 + # "Boot partition not encrypted" warning when encrypting the 134 + # root partition but not /boot partition. 135 + # 136 + # If nothing is specified, the warning is shown. 137 + showNotEncryptedBootMessage: false 138 + 139 + # Initial selection on the Choice page 140 + # 141 + # There are four radio buttons (in principle: erase, replace, alongside, manual), 142 + # and you can pick which of them, if any, is initially selected. For most 143 + # installers, "none" is the right choice: it makes the user pick something specific, 144 + # rather than accidentally being able to click past an important choice (in particular, 145 + # "erase" is a dangerous choice). 146 + # 147 + # The default is "none" 148 + # 149 + initialPartitioningChoice: none 150 + # 151 + # Similarly, some of the installation choices may offer a choice of swap; 152 + # the available choices depend on *userSwapChoices*, above, and this 153 + # setting can be used to pick a specific one. 154 + # 155 + # The default is "none" (no swap) if that is one of the enabled options, otherwise 156 + # one of the items from the options. 157 + initialSwapChoice: none 158 + 159 + # armInstall 160 + # 161 + # Leaves 16MB empty at the start of a drive when partitioning 162 + # where usually the u-boot loader goes 163 + # 164 + # armInstall: false 165 + 166 + # Default partition table type, used when a "erase" disk is made. 167 + # 168 + # When erasing a disk, a new partition table is created on disk. 169 + # In other cases, e.g. Replace and Alongside, as well as when using 170 + # manual partitioning, this partition table exists already on disk 171 + # and it is left unmodified. 172 + # 173 + # Suggested values: gpt, msdos 174 + # If nothing is specified, Calamares defaults to "gpt" if system is 175 + # efi or "msdos". 176 + # 177 + # Names are case-sensitive and defined by KPMCore. 178 + # defaultPartitionTableType: msdos 179 + 180 + # Requirement for partition table type 181 + # 182 + # Restrict the installation on disks that match the type of partition 183 + # tables that are specified. 184 + # 185 + # Possible values: msdos, gpt. Names are case-sensitive and defined by KPMCore. 186 + # 187 + # If nothing is specified, Calamares defaults to both "msdos" and "gpt". 188 + # 189 + # requiredPartitionTableType: gpt 190 + # requiredPartitionTableType: 191 + # - msdos 192 + # - gpt 193 + 194 + # Default filesystem type, used when a "new" partition is made. 195 + # 196 + # When replacing a partition, the new filesystem type will be from the 197 + # defaultFileSystemType value. In other cases, e.g. Erase and Alongside, 198 + # as well as when using manual partitioning and creating a new 199 + # partition, this filesystem type is pre-selected. Note that 200 + # editing a partition in manual-creation mode will not automatically 201 + # change the filesystem type to this default value -- it is not 202 + # creating a new partition. 203 + # 204 + # Suggested values: ext2, ext3, ext4, reiser, xfs, jfs, btrfs 205 + # If nothing is specified, Calamares defaults to "ext4". 206 + # 207 + # Names are case-sensitive and defined by KPMCore. 208 + defaultFileSystemType: "ext4" 209 + 210 + # Selectable filesystem type, used when "erase" is done. 211 + # 212 + # When erasing the disk, the *defaultFileSystemType* is used (see 213 + # above), but it is also possible to give users a choice: 214 + # list suitable filesystems here. A drop-down is provided 215 + # to pick which is the filesystems will be used. 216 + # 217 + # The value *defaultFileSystemType* is added to this list (with a warning) 218 + # if not present; the default pick is the *defaultFileSystemType*. 219 + # 220 + # If not specified at all, uses *defaultFileSystemType* without a 221 + # warning (this matches traditional no-choice-available behavior best). 222 + # availableFileSystemTypes: ["ext4","f2fs"] 223 + 224 + # Show/hide LUKS related functionality in automated partitioning modes. 225 + # Disable this if you choose not to deploy early unlocking support in GRUB2 226 + # and/or your distribution's initramfs solution. 227 + # 228 + # BIG FAT WARNING: 229 + # 230 + # This option is unsupported, as it cuts out a crucial security feature. 231 + # Disabling LUKS and shipping Calamares without a correctly configured GRUB2 232 + # and initramfs is considered suboptimal use of the Calamares software. The 233 + # Calamares team will not provide user support for any potential issue that 234 + # may arise as a consequence of setting this option to false. 235 + # It is strongly recommended that system integrators put in the work to support 236 + # LUKS unlocking support in GRUB2 and initramfs/dracut/mkinitcpio/etc. 237 + # For more information on setting up GRUB2 for Calamares with LUKS, see 238 + # https://github.com/calamares/calamares/wiki/Deploy-LUKS 239 + # 240 + # If nothing is specified, LUKS is enabled in automated modes. 241 + #enableLuksAutomatedPartitioning: true 242 + 243 + # Partition layout. 244 + # 245 + # This optional setting specifies a custom partition layout. 246 + # 247 + # If nothing is specified, the default partition layout is a single partition 248 + # for root that uses 100% of the space and uses the filesystem defined by 249 + # defaultFileSystemType. 250 + # 251 + # Note: the EFI system partition is prepend automatically to the layout if 252 + # needed; the swap partition is appended to the layout if enabled (small of 253 + # suspend). 254 + # 255 + # Otherwise, the partition layout is defined as follow: 256 + # 257 + partitionLayout: 258 + - filesystem: "ext4" 259 + noEncrypt: false 260 + mountPoint: "/" 261 + size: 100% 262 + 263 + # 264 + # There can be any number of partitions, each entry having the following attributes: 265 + # - name: filesystem label 266 + # and 267 + # partition name (gpt only; since KPMCore 4.2.0) 268 + # - uuid: partition uuid (optional parameter; gpt only; requires KPMCore >= 4.2.0) 269 + # - type: partition type (optional parameter; gpt only; requires KPMCore >= 4.2.0) 270 + # - attributes: partition attributes (optional parameter; gpt only; requires KPMCore >= 4.2.0) 271 + # - filesystem: filesystem type (optional parameter) 272 + # - if not set at all, treat as "unformatted" 273 + # - if "unformatted", no filesystem will be created 274 + # - if "unknown" (or an unknown FS name, like "elephant") then the 275 + # default filesystem type, or the user's choice, will be applied instead 276 + # of "unknown" (e.g. the user might pick ext4, or xfs). 277 + # - noEncrypt: whether this partition is exempt from encryption if enabled (optional parameter; default is false) 278 + # - mountPoint: partition mount point (optional parameter; not mounted if unset) 279 + # - size: partition size in bytes (append 'K', 'M' or 'G' for KiB, MiB or GiB) 280 + # or 281 + # % of the available drive space if a '%' is appended to the value 282 + # - minSize: minimum partition size (optional parameter) 283 + # - maxSize: maximum partition size (optional parameter) 284 + # - features: filesystem features (optional parameter; requires KPMCore >= 4.2.0) 285 + # name: boolean or integer or string 286 + 287 + # Checking for available storage 288 + # 289 + # This overlaps with the setting of the same name in the welcome module's 290 + # requirements section. If nothing is set by the welcome module, this 291 + # value is used instead. It is still a problem if there is no required 292 + # size set at all, and the replace and resize options will not be offered 293 + # if no required size is set. 294 + # 295 + # The value is in Gibibytes (GiB). 296 + # 297 + # BIG FAT WARNING: except for OEM-phase-0 use, you should be using 298 + # the welcome module, **and** configure this value in 299 + # `welcome.conf`, not here. 300 + # requiredStorage: 3.5
+45
pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/umount.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + ### Umount Module 5 + # 6 + # This module represents the last part of the installation, the unmounting 7 + # of partitions used for the install. It is also the last place where it 8 + # is possible to copy files to the target system, thus the best place to 9 + # copy an installation log. 10 + # 11 + # This module has two configuration keys: 12 + # srcLog location in the live system where the log is 13 + # destLog location in the target system to copy the log 14 + # 15 + # You can either use the default source path (which is 16 + # `/root/.cache/calamares/session.log` ) to copy the regular log, 17 + # or if you want to use the full output of `sudo calamares -d` you will need 18 + # to redirect standard output, for instance in a launcher script or 19 + # in the desktop file. 20 + # 21 + # Example launcher script: 22 + # 23 + # ``` 24 + # #!/bin/sh 25 + # sudo /usr/bin/calamares -d > installation.log 26 + # ``` 27 + # 28 + # Example desktop line: 29 + # 30 + # ``` 31 + # Exec=sudo /usr/bin/calamares -d > installation.log 32 + # ``` 33 + # 34 + # If no source and destination are set, no copy is attempted. If the 35 + # copy fails for some reason, a warning is printed but the installation 36 + # does not fail. 37 + 38 + --- 39 + # example when using the normal Calamares log: 40 + srcLog: "/home/nixos/.cache/calamares/session.log" 41 + destLog: "/var/log/Calamares.log" 42 + 43 + # example when using a log created by `sudo calamares -d`: 44 + #srcLog: "/home/live/installation.log" 45 + #destLog: "/var/log/installation.log"
+11
pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/unfree.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + --- 5 + qmlLabel: 6 + label: "Unfree Software" 7 + method: legacy 8 + mode: required 9 + labels: 10 + step: "Unfree Software" 11 + packageChoice: free
+265
pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/users.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + # Configuration for the one-user-system user module. 5 + # 6 + # Besides these settings, the users module also places the following 7 + # keys into the Global Storage area, based on user input in the view step. 8 + # 9 + # - hostname 10 + # - username 11 + # - password (obscured) 12 + # - autologinUser (if enabled, set to username) 13 + # 14 + # These Global Storage keys are set when the configuration for this module 15 + # is read and when they are modified in the UI. 16 + --- 17 + ### GROUPS CONFIGURATION 18 + # 19 + # The system has groups of uses. Some special groups must be 20 + # created during installation. Optionally, there are special 21 + # groups for users who can use sudo and for supporting autologin. 22 + 23 + # Used as default groups for the created user. 24 + # Adjust to your Distribution defaults. 25 + # 26 + # Each entry in the *defaultGroups* list is either: 27 + # - a string, naming a group; this is a **non**-system group 28 + # which does not need to exist in the target system; if it 29 + # does not exist, it will be created. 30 + # - an entry with subkeys *name*, *must_exist* and *system*; 31 + # if the group *must_exist* and does not, an error is thrown 32 + # and the installation fails. 33 + # 34 + # The group is created if it does not exist, and it is 35 + # created as a system group (GID < 1000) or user group 36 + # (GID >= 1000) depending on the value of *system*. 37 + defaultGroups: 38 + - users 39 + - networkmanager 40 + - wheel 41 + 42 + # When *sudoersGroup* is set to a non-empty string, Calamares creates a 43 + # sudoers file for the user. This file is located at: 44 + # `/etc/sudoers.d/10-installer` 45 + # Remember to add the (value of) *sudoersGroup* to *defaultGroups*. 46 + # 47 + # If your Distribution already sets up a group of sudoers in its packaging, 48 + # remove this setting (delete or comment out the line below). Otherwise, 49 + # the setting will be duplicated in the `/etc/sudoers.d/10-installer` file, 50 + # potentially confusing users. 51 + # sudoersGroup: wheel 52 + 53 + # Some Distributions require a 'autologin' group for the user. 54 + # Autologin causes a user to become automatically logged in to 55 + # the desktop environment on boot. 56 + # Disable when your Distribution does not require such a group. 57 + # autologinGroup: autologin 58 + 59 + 60 + ### ROOT AND SUDO 61 + # 62 + # Some distributions have a root user enabled for login. Others 63 + # rely entirely on sudo or similar mechanisms to raise privileges. 64 + 65 + # If set to `false` (the default), writes a sudoers file with `ALL=(ALL)` 66 + # so that commands can be run as any user. If set to `true`, writes 67 + # `ALL=(ALL:ALL)` so that any user and any group can be chosen. 68 + # sudoersConfigureWithGroup: false 69 + 70 + # Setting this to false, causes the root account to be disabled. 71 + # When disabled, hides the "Use the same password for administrator" 72 + # checkbox. Also hides the "Choose a password" and associated text-inputs. 73 + setRootPassword: true 74 + 75 + # You can control the initial state for the 'reuse password for root' 76 + # checkbox here. Possible values are: 77 + # - true to check or 78 + # - false to uncheck 79 + # 80 + # When checked, the user password is used for the root account too. 81 + # 82 + # NOTE: *doReusePassword* requires *setRootPassword* to be enabled. 83 + doReusePassword: false 84 + 85 + 86 + ### PASSWORDS AND LOGIN 87 + # 88 + # Autologin is convenient for single-user systems, but depends on 89 + # the location of the machine if it is practical. "Password strength" 90 + # measures measures might improve security by enforcing hard-to-guess 91 + # passwords, or might encourage a post-it-under-the-keyboard approach. 92 + # Distributions are free to steer their users to one kind of password 93 + # or another. Weak(er) passwords may be allowed, may cause a warning, 94 + # or may be forbidden entirely. 95 + 96 + # You can control the initial state for the 'autologin checkbox' here. 97 + # Possible values are: 98 + # - true to check or 99 + # - false to uncheck 100 + # These set the **initial** state of the checkbox. 101 + doAutologin: false 102 + 103 + # These are optional password-requirements that a distro can enforce 104 + # on the user. The values given in this sample file set only very weak 105 + # validation settings. 106 + # 107 + # Calamares itself supports two checks: 108 + # - minLength 109 + # - maxLength 110 + # In this sample file, the values are set to -1 which means "no 111 + # minimum", "no maximum". This allows any password at all. 112 + # No effort is done to ensure that the checks are consistent 113 + # (e.g. specifying a maximum length less than the minimum length 114 + # will annoy users). 115 + # 116 + # Calamares supports password checking through libpwquality. 117 + # The libpwquality check relies on the (optional) libpwquality library. 118 + # The value for libpwquality is a list of configuration statements like 119 + # those found in pwquality.conf. The statements are handed off to the 120 + # libpwquality parser for evaluation. The check is ignored if 121 + # libpwquality is not available at build time (generates a warning in 122 + # the log). The Calamares password check rejects passwords with a 123 + # score of < 40 with the given libpwquality settings. 124 + # 125 + # (additional checks may be implemented in CheckPWQuality.cpp and 126 + # wired into UsersPage.cpp) 127 + # 128 + # To disable all password validations: 129 + # - comment out the relevant 'passwordRequirements' keys below, 130 + # or set minLength and maxLength to -1. 131 + # - disable libpwquality at build-time. 132 + # To allow all passwords, but provide warnings: 133 + # - set both 'allowWeakPasswords' and 'allowWeakPasswordsDefault' to true. 134 + # (That will show the box *Allow weak passwords* in the user- 135 + # interface, and check it by default). 136 + # - configure password-checking however you wish. 137 + # To require specific password characteristics: 138 + # - set 'allowWeakPasswords' to false (the default) 139 + # - configure password-checking, e.g. with NIST settings 140 + 141 + 142 + # These are very weak -- actually, none at all -- requirements 143 + passwordRequirements: 144 + minLength: 1 # Password at least this many characters 145 + maxLength: -1 # Password at most this many characters 146 + libpwquality: 147 + - minlen=0 148 + - minclass=0 149 + 150 + # These are "you must have a password, any password" -- requirements 151 + # 152 + # passwordRequirements: 153 + # minLength: 1 154 + 155 + # These are requirements the try to follow the suggestions from 156 + # https://pages.nist.gov/800-63-3/sp800-63b.html , "Digital Identity Guidelines". 157 + # Note that requiring long and complex passwords has its own cost, 158 + # because the user has to come up with one at install time. 159 + # Setting 'allowWeakPasswords' to false and 'doAutologin' to false 160 + # will require a strong password and prevent (graphical) login 161 + # without the password. It is likely to be annoying for casual users. 162 + # 163 + # passwordRequirements: 164 + # minLength: 8 165 + # maxLength: 64 166 + # libpwquality: 167 + # - minlen=8 168 + # - maxrepeat=3 169 + # - maxsequence=3 170 + # - usersubstr=4 171 + # - badwords=linux 172 + 173 + # You can control the visibility of the 'strong passwords' checkbox here. 174 + # Possible values are: 175 + # - true to show or 176 + # - false to hide (default) 177 + # the checkbox. This checkbox allows the user to choose to disable 178 + # password-strength-checks. By default the box is **hidden**, so 179 + # that you have to pick a password that satisfies the checks. 180 + allowWeakPasswords: true 181 + # You can control the initial state for the 'strong passwords' checkbox here. 182 + # Possible values are: 183 + # - true to uncheck or 184 + # - false to check (default) 185 + # the checkbox by default. Since the box is labeled to enforce strong 186 + # passwords, in order to **allow** weak ones by default, the box needs 187 + # to be unchecked. 188 + allowWeakPasswordsDefault: false 189 + 190 + 191 + # User settings 192 + # 193 + # The user can enter a username, but there are some other 194 + # hidden settings for the user which are configurable in Calamares. 195 + # 196 + # Key *user* has the following sub-keys: 197 + # 198 + # - *shell* Shell to be used for the regular user of the target system. 199 + # There are three possible kinds of settings: 200 + # - unset (i.e. commented out, the default), act as if set to /bin/bash 201 + # - empty (explicit), don't pass shell information to useradd at all 202 + # and rely on a correct configuration file in /etc/default/useradd 203 + # - set, non-empty, use that path as shell. No validation is done 204 + # that the shell actually exists or is executable. 205 + # - *forbidden_names* Login names that may not be used. This list always 206 + # contains "root" and "nobody", but may be extended to list other special 207 + # names for a given distro (eg. "video", or "mysql" might not be a valid 208 + # end-user login name). 209 + user: 210 + shell: /run/current-system/sw/bin/bash 211 + forbidden_names: [ root ] 212 + 213 + 214 + # Hostname settings 215 + # 216 + # The user can enter a hostname; this is configured into the system 217 + # in some way. There are settings for how a hostname is guessed (as 218 + # a default / suggestion) and where (or how) the hostname is set in 219 + # the target system. 220 + # 221 + # Key *hostname* has the following sub-keys: 222 + # 223 + # - *location* How the hostname is set in the target system: 224 + # - *None*, to not set the hostname at all 225 + # - *EtcFile*, to write to `/etc/hostname` directly 226 + # - *Etc*, identical to above 227 + # - *Hostnamed*, to use systemd hostnamed(1) over DBus 228 + # - *Transient*, to remove `/etc/hostname` from the target 229 + # The default is *EtcFile*. Setting this to *None* or *Transient* will 230 + # hide the hostname field. 231 + # - *writeHostsFile* Should /etc/hosts be written with a hostname for 232 + # this machine (also adds localhost and some ipv6 standard entries). 233 + # Defaults to *true*. 234 + # - *template* Is a simple template for making a suggestion for the 235 + # hostname, based on user data. The default is "${first}-${product}". 236 + # This is used only if the hostname field is shown. KMacroExpander is 237 + # used; write `${key}` where `key` is one of the following: 238 + # - *first* User's first name (whatever is first in the User Name field, 239 + # which is first-in-order but not necessarily a "first name" as in 240 + # "given name" or "name by which you call someone"; beware of western bias) 241 + # - *name* All the text in the User Name field. 242 + # - *login* The login name (which may be suggested based on User Name) 243 + # - *product* The hardware product, based on DMI data 244 + # - *product2* The product as described by Qt 245 + # - *cpu* CPU name 246 + # - *host* Current hostname (which may be a transient hostname) 247 + # Literal text in the template is preserved. Calamares tries to map 248 + # `${key}` values to something that will fit in a hostname, but does not 249 + # apply the same to literal text in the template. Do not use invalid 250 + # characters in the literal text, or no suggeston will be done. 251 + # - *forbidden_names* lists hostnames that may not be used. This list 252 + # always contains "localhost", but may list others that are unsuitable 253 + # or broken in special ways. 254 + hostname: 255 + location: None 256 + writeHostsFile: false 257 + forbidden_names: [ localhost ] 258 + 259 + presets: 260 + fullName: 261 + # value: "OEM User" 262 + editable: true 263 + loginName: 264 + # value: "oem" 265 + editable: true
+133
pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/welcome.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + # Configuration for the welcome module. The welcome page 5 + # displays some information from the branding file. 6 + # Which parts it displays can be configured through 7 + # the show* variables. 8 + # 9 + # In addition to displaying the welcome page, this module 10 + # can check requirements for installation. 11 + --- 12 + # Display settings for various buttons on the welcome page. 13 + # The URLs themselves come from `branding.desc`. Each button 14 + # is show if the corresponding *show<buttonname>* setting 15 + # here is "true". If the setting is "false", the button is hidden. 16 + # Empty or not-set is interpreted as "false". 17 + # 18 + # TODO:3.3 Remove the URL fallback here; URLs only in `branding.desc` 19 + # 20 + # The setting can also be a full URL which will then be used 21 + # instead of the one from the branding file. 22 + showSupportUrl: true 23 + showKnownIssuesUrl: true 24 + showReleaseNotesUrl: true 25 + # TODO:3.3 Move to branding, keep only a bool here 26 + # showDonateUrl: https://kde.org/community/donations/ 27 + 28 + # Requirements checking. These are general, generic, things 29 + # that are checked. They may not match with the actual requirements 30 + # imposed by other modules in the system. 31 + requirements: 32 + # Amount of available disk, in GiB. Floating-point is allowed here. 33 + # Note that this does not account for *usable* disk, so it is possible 34 + # to satisfy this requirement, yet have no space to install to. 35 + requiredStorage: 10 36 + 37 + # Amount of available RAM, in GiB. Floating-point is allowed here. 38 + requiredRam: 1.0 39 + 40 + # To check for internet connectivity, Calamares does a HTTP GET 41 + # on this URL; on success (e.g. HTTP code 200) internet is OK. 42 + # Use a privacy-respecting URL here, preferably in your distro's domain. 43 + # 44 + # The URL is only used if "internet" is in the *check* list below. 45 + internetCheckUrl: [ https://geoip.kde.org/v1/calamares, https://cache.nixos.org/ ] 46 + # 47 + # This may be a single URL, or a list or URLs, in which case the 48 + # URLs will be checked one-by-one; if any of them returns data, 49 + # internet is assumed to be OK. This can be used to check via 50 + # a number of places, where some domains may be down or blocked. 51 + # 52 + # To use a list of URLs, just use YAML list syntax (e.g. 53 + # 54 + # internetCheckUrl: 55 + # - http://www.kde.org 56 + # - http://www.freebsd.org 57 + # 58 + # or short-form 59 + # 60 + # internetCheckUrl: [ http://www.kde.org, http://www.freebsd.org ] 61 + 62 + # List conditions to check. Each listed condition will be 63 + # probed in some way, and yields true or false according to 64 + # the host system satisfying the condition. 65 + # 66 + # This sample file lists all the conditions that are known. 67 + # 68 + # Note that the last three checks are for testing-purposes only, 69 + # and shouldn't be used in production (they are only available 70 + # when building Calamares in development mode). There are five 71 + # special checks: 72 + # - *false* is a check that is always false (unsatisfied) 73 + # - *true* is a check that is always true (satisfied) 74 + # - *slow-false* takes 3 seconds, and then is false; use this one to 75 + # show off the waiting-spinner before the first results come in 76 + # - *slow-true* takes 3 seconds, and then is true 77 + # - *snark* is a check that is only satisfied once it has been checked 78 + # at least three times ("what I tell you three times is true"). 79 + # Keep in mind that "true" and "false" are YAML keywords for 80 + # boolean values, so should be quoted. 81 + check: 82 + - storage 83 + - ram 84 + - power 85 + - internet 86 + - screen 87 + # List conditions that **must** be satisfied (from the list 88 + # of conditions, above) for installation to proceed. 89 + # If any of these conditions are not met, the user cannot 90 + # continue past the welcome page. 91 + required: 92 + - storage 93 + - ram 94 + - internet 95 + 96 + # GeoIP checking 97 + # 98 + # This can be used to pre-select a language based on the country 99 + # the user is currently in. It *assumes* that there's internet 100 + # connectivity, though. Configuration is like in the locale module, 101 + # but remember to use a URL that returns full data **and** to 102 + # use a selector that will pick the country, not the timezone. 103 + # 104 + # To disable GeoIP checking, either comment-out the entire geoip section, 105 + # or set the *style* key to an unsupported format (e.g. `none`). 106 + # Also, note the analogous feature in `src/modules/locale/locale.conf`, 107 + # which is where you will find complete documentation. 108 + # 109 + # For testing, the *style* may be set to `fixed`, any URL that 110 + # returns data (e.g. `http://example.com`) and then *selector* 111 + # sets the data that is actually returned (e.g. "DE" to simulate 112 + # the machine being in Germany). 113 + # 114 + # NOTE: the *selector* must pick the country code from the GeoIP 115 + # data. Timezone, city, or other data will not be recognized. 116 + # 117 + # geoip: 118 + # style: "none" 119 + # url: "https://geoip.kde.org/v1/ubiquity" # extended XML format 120 + # selector: "CountryCode" # blank uses default, which is wrong 121 + 122 + # User interface 123 + # 124 + # The "select language" icon is an international standard, but it 125 + # might not theme very well with your desktop environment. 126 + # Fill in an icon name (following FreeDesktop standards) to 127 + # use that named icon instead of the usual one. 128 + # 129 + # Leave blank or unset to use the international standard. 130 + # 131 + # Known icons in this space are "set-language" and "config-language". 132 + # 133 + # languageIcon: set-language
+211
pkgs/by-name/ca/calamares-nixos-extensions/src/config/settings.conf
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + # 4 + # Configuration file for Calamares 5 + # 6 + # This is the top-level configuration file for Calamares. 7 + # It specifies what modules will be used, as well as some 8 + # overall characteristics -- is this a setup program, or 9 + # an installer. More specific configuration is devolved 10 + # to the branding file (for the UI) and the individual 11 + # module configuration files (for functionality). 12 + --- 13 + # Modules can be job modules (with different interfaces) and QtWidgets view 14 + # modules. They could all be placed in a number of different paths. 15 + # "modules-search" is a list of strings, each of these can either be a full 16 + # path to a directory or the keyword "local". 17 + # 18 + # "local" means: 19 + # - modules in $LIBDIR/calamares/modules, with 20 + # - settings in SHARE/calamares/modules or /etc/calamares/modules. 21 + # In debug-mode (e.g. calamares -d) "local" also adds some paths 22 + # that make sense from inside the build-directory, so that you 23 + # can build-and-run with the latest modules immediately. 24 + # 25 + # Strings other than "local" are taken as paths and interpreted 26 + # relative to wherever Calamares is started. It is therefore **strongly** 27 + # recommended to use only absolute paths here. This is mostly useful 28 + # if your distro has forks of standard Calamares modules, but also 29 + # uses some form of upstream packaging which might overwrite those 30 + # forked modules -- then you can keep modules somewhere outside of 31 + # the "regular" module tree. 32 + # 33 + # 34 + # YAML: list of strings. 35 + modules-search: [ local, /run/current-system/sw/lib/calamares/modules ] 36 + 37 + # Instances section. This section is optional, and it defines custom instances 38 + # for modules of any kind. An instance entry has these keys: 39 + # - *module* name, which matches the module name from the module descriptor 40 + # (usually the name of the directory under `src/modules/`, but third- 41 + # party modules may diverge. 42 + # - *id* (optional) an identifier to distinguish this instance from 43 + # all the others. If none is given, the name of the module is used. 44 + # Together, the module and id form an instance key (see below). 45 + # - *config* (optional) a filename for the configuration. If none is 46 + # given, *module*`.conf` is used (e.g. `welcome.conf` for the welcome 47 + # module) 48 + # - *weight* (optional) In the *exec* phase of the sequence, progress 49 + # is reported as jobs are completed. The jobs from a single module 50 + # together contribute the full weight of that module. The overall 51 + # progress (0 .. 100%) is divided up according to the weight of each 52 + # module. Give modules that take a lot of time to complete, a larger 53 + # weight to keep the overall progress moving along steadily. This 54 + # weight overrides a weight given in the module descriptor. If no weight 55 + # is given, uses the value from the module descriptor, or 1 if there 56 + # isn't one there either. 57 + # 58 + # The primary goal of this mechanism is to allow loading multiple instances 59 + # of the same module, with different configuration. If you don't need this, 60 + # the instances section can safely be left empty. 61 + # 62 + # Module name plus instance name makes an instance key, e.g. 63 + # "webview@owncloud", where "webview" is the module name (for the webview 64 + # viewmodule) and "owncloud" is the instance name. In the *sequence* 65 + # section below, use instance-keys to name instances (instead of just 66 + # a module name, for modules which have only a single instance). 67 + # 68 + # Every module implicitly has an instance with the instance name equal 69 + # to its module name, e.g. "welcome@welcome". In the *sequence* section, 70 + # mentioning a module without a full instance key (e.g. "welcome") 71 + # means that implicit module. 72 + # 73 + # An instance may specify its configuration file (e.g. `webview-home.conf`). 74 + # The implicit instances all have configuration files named `<module>.conf`. 75 + # This (implict) way matches the source examples, where the welcome 76 + # module contains an example `welcome.conf`. Specify a *config* for 77 + # any module (also implicit instances) to change which file is used. 78 + # 79 + # For more information on running module instances, run Calamares in debug 80 + # mode and check the Modules page in the Debug information interface. 81 + # 82 + # A module that is often used with instances is shellprocess, which will 83 + # run shell commands specified in the configuration file. By configuring 84 + # more than one instance of the module, multiple shell sessions can be run 85 + # during install. 86 + # 87 + # YAML: list of maps of string:string key-value pairs. 88 + instances: 89 + - id: unfree 90 + module: packagechooserq 91 + config: unfree.conf 92 + 93 + # Sequence section. This section describes the sequence of modules, both 94 + # viewmodules and jobmodules, as they should appear and/or run. 95 + # 96 + # A jobmodule instance key (or name) can only appear in an exec phase, whereas 97 + # a viewmodule instance key (or name) can appear in both exec and show phases. 98 + # There is no limit to the number of show or exec phases. However, the same 99 + # module instance key should not appear more than once per phase, and 100 + # deployers should take notice that the global storage structure is persistent 101 + # throughout the application lifetime, possibly influencing behavior across 102 + # phases. A show phase defines a sequence of viewmodules (and therefore 103 + # pages). These viewmodules can offer up jobs for the execution queue. 104 + # 105 + # An exec phase displays a progress page (with brandable slideshow). This 106 + # progress page iterates over the modules listed in the *immediately 107 + # preceding* show phase, and enqueues their jobs, as well as any other jobs 108 + # from jobmodules, in the order defined in the current exec phase. 109 + # 110 + # It then executes the job queue and clears it. If a viewmodule offers up a 111 + # job for execution, but the module name (or instance key) isn't listed in the 112 + # immediately following exec phase, this job will not be executed. 113 + # 114 + # YAML: list of lists of strings. 115 + sequence: 116 + - show: 117 + - welcome 118 + - locale 119 + - keyboard 120 + - users 121 + - packagechooser 122 + - packagechooserq@unfree 123 + - partition 124 + - summary 125 + - exec: 126 + - partition 127 + - mount 128 + - nixos 129 + - users 130 + - umount 131 + - show: 132 + - finished 133 + 134 + # A branding component is a directory, either in SHARE/calamares/branding or 135 + # in /etc/calamares/branding (the latter takes precedence). The directory must 136 + # contain a YAML file branding.desc which may reference additional resources 137 + # (such as images) as paths relative to the current directory. 138 + # 139 + # A branding component can also ship a QML slideshow for execution pages, 140 + # along with translation files. 141 + # 142 + # Only the name of the branding component (directory) should be specified 143 + # here, Calamares then takes care of finding it and loading the contents. 144 + # 145 + # YAML: string. 146 + branding: nixos 147 + 148 + # If this is set to true, Calamares will show an "Are you sure?" prompt right 149 + # before each execution phase, i.e. at points of no return. If this is set to 150 + # false, no prompt is shown. Default is false, but Calamares will complain if 151 + # this is not explicitly set. 152 + # 153 + # YAML: boolean. 154 + prompt-install: false 155 + 156 + # If this is set to true, Calamares will execute all target environment 157 + # commands in the current environment, without chroot. This setting should 158 + # only be used when setting up Calamares as a post-install configuration tool, 159 + # as opposed to a full operating system installer. 160 + # 161 + # Some official Calamares modules are not expected to function with this 162 + # setting. (e.g. partitioning seems like a bad idea, since that is expected to 163 + # have been done already) 164 + # 165 + # Default is false (for a normal installer), but Calamares will complain if 166 + # this is not explicitly set. 167 + # 168 + # YAML: boolean. 169 + dont-chroot: false 170 + 171 + # If this is set to true, Calamares refers to itself as a "setup program" 172 + # rather than an "installer". Defaults to the value of dont-chroot, but 173 + # Calamares will complain if this is not explicitly set. 174 + oem-setup: false 175 + 176 + # If this is set to true, the "Cancel" button will be disabled entirely. 177 + # The button is also hidden from view. 178 + # 179 + # This can be useful if when e.g. Calamares is used as a post-install 180 + # configuration tool and you require the user to go through all the 181 + # configuration steps. 182 + # 183 + # Default is false, but Calamares will complain if this is not explicitly set. 184 + # 185 + # YAML: boolean. 186 + disable-cancel: false 187 + 188 + # If this is set to true, the "Cancel" button will be disabled once 189 + # you start the 'Installation', meaning there won't be a way to cancel 190 + # the Installation until it has finished or installation has failed. 191 + # 192 + # Default is false, but Calamares will complain if this is not explicitly set. 193 + # 194 + # YAML: boolean. 195 + disable-cancel-during-exec: false 196 + 197 + # If this is set to true, the "Next" and "Back" button will be hidden once 198 + # you start the 'Installation'. 199 + # 200 + # Default is false, but Calamares will complain if this is not explicitly set. 201 + # 202 + # YAML: boolean. 203 + hide-back-and-next-during-exec: false 204 + 205 + # If this is set to true, then once the end of the sequence has 206 + # been reached, the quit (done) button is clicked automatically 207 + # and Calamares will close. Default is false: the user will see 208 + # that the end of installation has been reached, and that things are ok. 209 + # 210 + # 211 + quit-at-end: false
+27
pkgs/by-name/ca/calamares-nixos-extensions/src/flake.lock
··· 1 + { 2 + "nodes": { 3 + "nixpkgs": { 4 + "locked": { 5 + "lastModified": 1723991338, 6 + "narHash": "sha256-Grh5PF0+gootJfOJFenTTxDTYPidA3V28dqJ/WV7iis=", 7 + "owner": "NixOS", 8 + "repo": "nixpkgs", 9 + "rev": "8a3354191c0d7144db9756a74755672387b702ba", 10 + "type": "github" 11 + }, 12 + "original": { 13 + "owner": "NixOS", 14 + "ref": "nixos-unstable", 15 + "repo": "nixpkgs", 16 + "type": "github" 17 + } 18 + }, 19 + "root": { 20 + "inputs": { 21 + "nixpkgs": "nixpkgs" 22 + } 23 + } 24 + }, 25 + "root": "root", 26 + "version": 7 27 + }
+34
pkgs/by-name/ca/calamares-nixos-extensions/src/flake.nix
··· 1 + { 2 + description = "Testing calamares-nixos-extensions"; 3 + 4 + inputs = { 5 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 + }; 7 + 8 + outputs = { nixpkgs, ... }: 9 + let 10 + system = "x86_64-linux"; 11 + 12 + pkgs = import nixpkgs { 13 + inherit system; 14 + }; 15 + 16 + packages = [ 17 + (pkgs.python3.withPackages (pp: with pp; [ pytest pytest-mock ])) 18 + ]; 19 + in 20 + { 21 + packages.${system}.default = pkgs.writeShellApplication { 22 + name = "test-nixos-install"; 23 + runtimeInputs = packages; 24 + text = '' 25 + #!${pkgs.stdenv.shell} 26 + pytest -vv testing 27 + ''; 28 + }; 29 + 30 + devShells.${system}.default = pkgs.mkShell { 31 + inherit packages; 32 + }; 33 + }; 34 + }
+844
pkgs/by-name/ca/calamares-nixos-extensions/src/modules/nixos/main.py
··· 1 + #!/usr/bin/env python3 2 + # -*- coding: utf-8 -*- 3 + # 4 + # SPDX-FileCopyrightText: 2022 Victor Fuentes <vmfuentes64@gmail.com> 5 + # SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org> 6 + # SPDX-License-Identifier: GPL-3.0-or-later 7 + # 8 + # Calamares is Free Software: see the License-Identifier above. 9 + # 10 + 11 + import configparser 12 + import libcalamares 13 + import os 14 + import subprocess 15 + import re 16 + 17 + import gettext 18 + 19 + _ = gettext.translation( 20 + "calamares-python", 21 + localedir=libcalamares.utils.gettext_path(), 22 + languages=libcalamares.utils.gettext_languages(), 23 + fallback=True, 24 + ).gettext 25 + 26 + 27 + # The following strings contain pieces of a nix-configuration file. 28 + # They are adapted from the default config generated from the nixos-generate-config command. 29 + 30 + cfghead = """# Edit this configuration file to define what should be installed on 31 + # your system. Help is available in the configuration.nix(5) man page 32 + # and in the NixOS manual (accessible by running ‘nixos-help’). 33 + 34 + { config, pkgs, ... }: 35 + 36 + { 37 + imports = 38 + [ # Include the results of the hardware scan. 39 + ./hardware-configuration.nix 40 + ]; 41 + 42 + """ 43 + cfgbootefi = """ # Bootloader. 44 + boot.loader.systemd-boot.enable = true; 45 + boot.loader.efi.canTouchEfiVariables = true; 46 + 47 + """ 48 + 49 + cfgbootbios = """ # Bootloader. 50 + boot.loader.grub.enable = true; 51 + boot.loader.grub.device = "@@bootdev@@"; 52 + boot.loader.grub.useOSProber = true; 53 + 54 + """ 55 + 56 + cfgbootnone = """ # Disable bootloader. 57 + boot.loader.grub.enable = false; 58 + 59 + """ 60 + 61 + cfgbootgrubcrypt = """ # Setup keyfile 62 + boot.initrd.secrets = { 63 + "/boot/crypto_keyfile.bin" = null; 64 + }; 65 + 66 + boot.loader.grub.enableCryptodisk = true; 67 + 68 + """ 69 + 70 + cfgnetwork = """ networking.hostName = "@@hostname@@"; # Define your hostname. 71 + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. 72 + 73 + # Configure network proxy if necessary 74 + # networking.proxy.default = "http://user:password@proxy:port/"; 75 + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; 76 + 77 + """ 78 + 79 + cfgnetworkmanager = """ # Enable networking 80 + networking.networkmanager.enable = true; 81 + 82 + """ 83 + 84 + cfgconnman = """ # Enable networking 85 + services.connman.enable = true; 86 + 87 + """ 88 + 89 + cfgnmapplet = """ # Enable network manager applet 90 + programs.nm-applet.enable = true; 91 + 92 + """ 93 + 94 + cfgtime = """ # Set your time zone. 95 + time.timeZone = "@@timezone@@"; 96 + 97 + """ 98 + 99 + cfglocale = """ # Select internationalisation properties. 100 + i18n.defaultLocale = "@@LANG@@"; 101 + 102 + """ 103 + 104 + cfglocaleextra = """ i18n.extraLocaleSettings = { 105 + LC_ADDRESS = "@@LC_ADDRESS@@"; 106 + LC_IDENTIFICATION = "@@LC_IDENTIFICATION@@"; 107 + LC_MEASUREMENT = "@@LC_MEASUREMENT@@"; 108 + LC_MONETARY = "@@LC_MONETARY@@"; 109 + LC_NAME = "@@LC_NAME@@"; 110 + LC_NUMERIC = "@@LC_NUMERIC@@"; 111 + LC_PAPER = "@@LC_PAPER@@"; 112 + LC_TELEPHONE = "@@LC_TELEPHONE@@"; 113 + LC_TIME = "@@LC_TIME@@"; 114 + }; 115 + 116 + """ 117 + 118 + cfggnome = """ # Enable the X11 windowing system. 119 + services.xserver.enable = true; 120 + 121 + # Enable the GNOME Desktop Environment. 122 + services.xserver.displayManager.gdm.enable = true; 123 + services.xserver.desktopManager.gnome.enable = true; 124 + 125 + """ 126 + 127 + cfgplasma6 = """ # Enable the X11 windowing system. 128 + # You can disable this if you're only using the Wayland session. 129 + services.xserver.enable = true; 130 + 131 + # Enable the KDE Plasma Desktop Environment. 132 + services.displayManager.sddm.enable = true; 133 + services.desktopManager.plasma6.enable = true; 134 + 135 + """ 136 + 137 + cfgxfce = """ # Enable the X11 windowing system. 138 + services.xserver.enable = true; 139 + 140 + # Enable the XFCE Desktop Environment. 141 + services.xserver.displayManager.lightdm.enable = true; 142 + services.xserver.desktopManager.xfce.enable = true; 143 + 144 + """ 145 + 146 + cfgpantheon = """ # Enable the X11 windowing system. 147 + services.xserver.enable = true; 148 + 149 + # Enable the Pantheon Desktop Environment. 150 + services.xserver.displayManager.lightdm.enable = true; 151 + services.xserver.desktopManager.pantheon.enable = true; 152 + 153 + """ 154 + 155 + cfgcinnamon = """ # Enable the X11 windowing system. 156 + services.xserver.enable = true; 157 + 158 + # Enable the Cinnamon Desktop Environment. 159 + services.xserver.displayManager.lightdm.enable = true; 160 + services.xserver.desktopManager.cinnamon.enable = true; 161 + 162 + """ 163 + 164 + cfgmate = """ # Enable the X11 windowing system. 165 + services.xserver.enable = true; 166 + 167 + # Enable the MATE Desktop Environment. 168 + services.xserver.displayManager.lightdm.enable = true; 169 + services.xserver.desktopManager.mate.enable = true; 170 + 171 + """ 172 + 173 + cfgenlightenment = """ # Enable the X11 windowing system. 174 + services.xserver.enable = true; 175 + 176 + # Enable the Enlightenment Desktop Environment. 177 + services.xserver.displayManager.lightdm.enable = true; 178 + services.xserver.desktopManager.enlightenment.enable = true; 179 + 180 + # Enable acpid 181 + services.acpid.enable = true; 182 + 183 + """ 184 + 185 + cfglxqt = """ # Enable the X11 windowing system. 186 + services.xserver.enable = true; 187 + 188 + # Enable the LXQT Desktop Environment. 189 + services.xserver.displayManager.lightdm.enable = true; 190 + services.xserver.desktopManager.lxqt.enable = true; 191 + 192 + """ 193 + 194 + cfglumina = """ # Enable the X11 windowing system. 195 + services.xserver.enable = true; 196 + 197 + # Enable the Lumina Desktop Environment. 198 + services.xserver.displayManager.lightdm.enable = true; 199 + services.xserver.desktopManager.lumina.enable = true; 200 + 201 + """ 202 + 203 + cfgbudgie = """ # Enable the X11 windowing system. 204 + services.xserver.enable = true; 205 + 206 + # Enable the Budgie Desktop environment. 207 + services.xserver.displayManager.lightdm.enable = true; 208 + services.xserver.desktopManager.budgie.enable = true; 209 + 210 + """ 211 + 212 + cfgdeepin = """ # Enable the X11 windowing system. 213 + services.xserver.enable = true; 214 + 215 + # Enable the Deepin Desktop Environment. 216 + services.xserver.displayManager.lightdm.enable = true; 217 + services.xserver.desktopManager.deepin.enable = true; 218 + 219 + """ 220 + 221 + cfgkeymap = """ # Configure keymap in X11 222 + services.xserver.xkb = { 223 + layout = "@@kblayout@@"; 224 + variant = "@@kbvariant@@"; 225 + }; 226 + 227 + """ 228 + cfgconsole = """ # Configure console keymap 229 + console.keyMap = "@@vconsole@@"; 230 + 231 + """ 232 + 233 + cfgmisc = """ # Enable CUPS to print documents. 234 + services.printing.enable = true; 235 + 236 + # Enable sound with pipewire. 237 + services.pulseaudio.enable = false; 238 + security.rtkit.enable = true; 239 + services.pipewire = { 240 + enable = true; 241 + alsa.enable = true; 242 + alsa.support32Bit = true; 243 + pulse.enable = true; 244 + # If you want to use JACK applications, uncomment this 245 + #jack.enable = true; 246 + 247 + # use the example session manager (no others are packaged yet so this is enabled by default, 248 + # no need to redefine it in your config for now) 249 + #media-session.enable = true; 250 + }; 251 + 252 + # Enable touchpad support (enabled default in most desktopManager). 253 + # services.xserver.libinput.enable = true; 254 + 255 + """ 256 + cfgusers = """ # Define a user account. Don't forget to set a password with ‘passwd’. 257 + users.users.@@username@@ = { 258 + isNormalUser = true; 259 + description = "@@fullname@@"; 260 + extraGroups = [ @@groups@@ ]; 261 + packages = with pkgs; [@@pkgs@@]; 262 + }; 263 + 264 + """ 265 + 266 + cfgfirefox = """ # Install firefox. 267 + programs.firefox.enable = true; 268 + 269 + """ 270 + 271 + cfgautologin = """ # Enable automatic login for the user. 272 + services.displayManager.autoLogin.enable = true; 273 + services.displayManager.autoLogin.user = "@@username@@"; 274 + 275 + """ 276 + 277 + cfgautologingdm = """ # Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229 278 + systemd.services."getty@tty1".enable = false; 279 + systemd.services."autovt@tty1".enable = false; 280 + 281 + """ 282 + 283 + cfgautologintty = """ # Enable automatic login for the user. 284 + services.getty.autologinUser = "@@username@@"; 285 + 286 + """ 287 + 288 + cfgunfree = """ # Allow unfree packages 289 + nixpkgs.config.allowUnfree = true; 290 + 291 + """ 292 + 293 + cfgpkgs = """ # List packages installed in system profile. To search, run: 294 + # $ nix search wget 295 + environment.systemPackages = with pkgs; [ 296 + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. 297 + # wget 298 + ]; 299 + 300 + """ 301 + 302 + cfgtail = """ # Some programs need SUID wrappers, can be configured further or are 303 + # started in user sessions. 304 + # programs.mtr.enable = true; 305 + # programs.gnupg.agent = { 306 + # enable = true; 307 + # enableSSHSupport = true; 308 + # }; 309 + 310 + # List services that you want to enable: 311 + 312 + # Enable the OpenSSH daemon. 313 + # services.openssh.enable = true; 314 + 315 + # Open ports in the firewall. 316 + # networking.firewall.allowedTCPPorts = [ ... ]; 317 + # networking.firewall.allowedUDPPorts = [ ... ]; 318 + # Or disable the firewall altogether. 319 + # networking.firewall.enable = false; 320 + 321 + # This value determines the NixOS release from which the default 322 + # settings for stateful data, like file locations and database versions 323 + # on your system were taken. It‘s perfectly fine and recommended to leave 324 + # this value at the release version of the first install of this system. 325 + # Before changing this value read the documentation for this option 326 + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 327 + system.stateVersion = "@@nixosversion@@"; # Did you read the comment? 328 + 329 + } 330 + """ 331 + 332 + cfglatestkernel = """ # Use latest kernel. 333 + boot.kernelPackages = pkgs.linuxPackages_latest; 334 + 335 + """ 336 + def env_is_set(name): 337 + envValue = os.environ.get(name) 338 + return not (envValue is None or envValue == "") 339 + 340 + def generateProxyStrings(): 341 + proxyEnv = [] 342 + if env_is_set('http_proxy'): 343 + proxyEnv.append('http_proxy={}'.format(os.environ.get('http_proxy'))) 344 + if env_is_set('https_proxy'): 345 + proxyEnv.append('https_proxy={}'.format(os.environ.get('https_proxy'))) 346 + if env_is_set('HTTP_PROXY'): 347 + proxyEnv.append('HTTP_PROXY={}'.format(os.environ.get('HTTP_PROXY'))) 348 + if env_is_set('HTTPS_PROXY'): 349 + proxyEnv.append('HTTPS_PROXY={}'.format(os.environ.get('HTTPS_PROXY'))) 350 + 351 + if len(proxyEnv) > 0: 352 + proxyEnv.insert(0, "env") 353 + 354 + return proxyEnv 355 + 356 + def pretty_name(): 357 + return _("Installing NixOS.") 358 + 359 + 360 + status = pretty_name() 361 + 362 + 363 + def pretty_status_message(): 364 + return status 365 + 366 + 367 + def catenate(d, key, *values): 368 + """ 369 + Sets @p d[key] to the string-concatenation of @p values 370 + if none of the values are None. 371 + This can be used to set keys conditionally based on 372 + the values being found. 373 + """ 374 + if [v for v in values if v is None]: 375 + return 376 + 377 + d[key] = "".join(values) 378 + 379 + 380 + def run(): 381 + """NixOS Configuration.""" 382 + 383 + global status 384 + status = _("Configuring NixOS") 385 + libcalamares.job.setprogress(0.1) 386 + 387 + ngc_cfg = configparser.ConfigParser() 388 + ngc_cfg["Defaults"] = { "Kernel": "lts" } 389 + ngc_cfg.read("/etc/nixos-generate-config.conf") 390 + 391 + # Create initial config file 392 + cfg = cfghead 393 + gs = libcalamares.globalstorage 394 + variables = dict() 395 + 396 + # Setup variables 397 + root_mount_point = gs.value("rootMountPoint") 398 + config = os.path.join(root_mount_point, "etc/nixos/configuration.nix") 399 + fw_type = gs.value("firmwareType") 400 + bootdev = ( 401 + "nodev" 402 + if gs.value("bootLoader") is None 403 + else gs.value("bootLoader")["installPath"] 404 + ) 405 + 406 + # Pick config parts and prepare substitution 407 + 408 + # Check bootloader 409 + if fw_type == "efi": 410 + cfg += cfgbootefi 411 + elif bootdev != "nodev": 412 + cfg += cfgbootbios 413 + catenate(variables, "bootdev", bootdev) 414 + else: 415 + cfg += cfgbootnone 416 + 417 + if ngc_cfg["Defaults"]["Kernel"] == "latest": 418 + cfg += cfglatestkernel 419 + 420 + # Setup encrypted swap devices. nixos-generate-config doesn't seem to notice them. 421 + for part in gs.value("partitions"): 422 + if ( 423 + part["claimed"] is True 424 + and (part["fsName"] == "luks" or part["fsName"] == "luks2") 425 + and part["device"] is not None 426 + and part["fs"] == "linuxswap" 427 + ): 428 + cfg += """ boot.initrd.luks.devices."{}".device = "/dev/disk/by-uuid/{}";\n""".format( 429 + part["luksMapperName"], part["uuid"] 430 + ) 431 + 432 + # Check partitions 433 + root_is_encrypted = False 434 + boot_is_encrypted = False 435 + boot_is_partition = False 436 + 437 + for part in gs.value("partitions"): 438 + if part["mountPoint"] == "/": 439 + root_is_encrypted = part["fsName"] in ["luks", "luks2"] 440 + elif part["mountPoint"] == "/boot": 441 + boot_is_partition = True 442 + boot_is_encrypted = part["fsName"] in ["luks", "luks2"] 443 + 444 + # Setup keys in /boot/crypto_keyfile if using BIOS and Grub cryptodisk 445 + if fw_type != "efi" and ( 446 + (boot_is_partition and boot_is_encrypted) 447 + or (root_is_encrypted and not boot_is_partition) 448 + ): 449 + cfg += cfgbootgrubcrypt 450 + status = _("Setting up LUKS") 451 + libcalamares.job.setprogress(0.15) 452 + try: 453 + libcalamares.utils.host_env_process_output( 454 + ["mkdir", "-p", root_mount_point + "/boot"], None 455 + ) 456 + libcalamares.utils.host_env_process_output( 457 + ["chmod", "0700", root_mount_point + "/boot"], None 458 + ) 459 + # Create /boot/crypto_keyfile.bin 460 + libcalamares.utils.host_env_process_output( 461 + [ 462 + "dd", 463 + "bs=512", 464 + "count=4", 465 + "if=/dev/random", 466 + "of=" + root_mount_point + "/boot/crypto_keyfile.bin", 467 + "iflag=fullblock", 468 + ], 469 + None, 470 + ) 471 + libcalamares.utils.host_env_process_output( 472 + ["chmod", "600", root_mount_point + "/boot/crypto_keyfile.bin"], None 473 + ) 474 + except subprocess.CalledProcessError: 475 + libcalamares.utils.error("Failed to create /boot/crypto_keyfile.bin") 476 + return ( 477 + _("Failed to create /boot/crypto_keyfile.bin"), 478 + _("Check if you have enough free space on your partition."), 479 + ) 480 + 481 + for part in gs.value("partitions"): 482 + if ( 483 + part["claimed"] is True 484 + and (part["fsName"] == "luks" or part["fsName"] == "luks2") 485 + and part["device"] is not None 486 + ): 487 + cfg += """ boot.initrd.luks.devices."{}".keyFile = "/boot/crypto_keyfile.bin";\n""".format( 488 + part["luksMapperName"] 489 + ) 490 + try: 491 + # Grub currently only supports pbkdf2 for luks2 492 + libcalamares.utils.host_env_process_output( 493 + [ 494 + "cryptsetup", 495 + "luksConvertKey", 496 + "--hash", 497 + "sha256", 498 + "--pbkdf", 499 + "pbkdf2", 500 + part["device"], 501 + ], 502 + None, 503 + part["luksPassphrase"], 504 + ) 505 + # Add luks drives to /boot/crypto_keyfile.bin 506 + libcalamares.utils.host_env_process_output( 507 + [ 508 + "cryptsetup", 509 + "luksAddKey", 510 + "--hash", 511 + "sha256", 512 + "--pbkdf", 513 + "pbkdf2", 514 + part["device"], 515 + root_mount_point + "/boot/crypto_keyfile.bin", 516 + ], 517 + None, 518 + part["luksPassphrase"], 519 + ) 520 + except subprocess.CalledProcessError: 521 + libcalamares.utils.error( 522 + "Failed to add {} to /boot/crypto_keyfile.bin".format( 523 + part["luksMapperName"] 524 + ) 525 + ) 526 + return ( 527 + _("cryptsetup failed"), 528 + _( 529 + "Failed to add {} to /boot/crypto_keyfile.bin".format( 530 + part["luksMapperName"] 531 + ) 532 + ), 533 + ) 534 + 535 + status = _("Configuring NixOS") 536 + libcalamares.job.setprogress(0.18) 537 + 538 + cfg += cfgnetwork 539 + if gs.value("packagechooser_packagechooser") == "enlightenment": 540 + cfg += cfgconnman 541 + else: 542 + cfg += cfgnetworkmanager 543 + 544 + if ( 545 + (gs.value("packagechooser_packagechooser") == "mate") 546 + | (gs.value("packagechooser_packagechooser") == "lxqt") 547 + | (gs.value("packagechooser_packagechooser") == "lumina") 548 + ): 549 + cfg += cfgnmapplet 550 + 551 + if gs.value("hostname") is None: 552 + catenate(variables, "hostname", "nixos") 553 + else: 554 + catenate(variables, "hostname", gs.value("hostname")) 555 + 556 + if gs.value("locationRegion") is not None and gs.value("locationZone") is not None: 557 + cfg += cfgtime 558 + catenate( 559 + variables, 560 + "timezone", 561 + gs.value("locationRegion"), 562 + "/", 563 + gs.value("locationZone"), 564 + ) 565 + 566 + if gs.value("localeConf") is not None: 567 + localeconf = gs.value("localeConf") 568 + locale = localeconf.pop("LANG").split("/")[0] 569 + cfg += cfglocale 570 + catenate(variables, "LANG", locale) 571 + if ( 572 + len(set(localeconf.values())) != 1 573 + or list(set(localeconf.values()))[0] != locale 574 + ): 575 + cfg += cfglocaleextra 576 + for conf in localeconf: 577 + catenate(variables, conf, localeconf.get(conf).split("/")[0]) 578 + 579 + # Choose desktop environment 580 + if gs.value("packagechooser_packagechooser") == "gnome": 581 + cfg += cfggnome 582 + elif gs.value("packagechooser_packagechooser") == "plasma6": 583 + cfg += cfgplasma6 584 + elif gs.value("packagechooser_packagechooser") == "xfce": 585 + cfg += cfgxfce 586 + elif gs.value("packagechooser_packagechooser") == "pantheon": 587 + cfg += cfgpantheon 588 + elif gs.value("packagechooser_packagechooser") == "cinnamon": 589 + cfg += cfgcinnamon 590 + elif gs.value("packagechooser_packagechooser") == "mate": 591 + cfg += cfgmate 592 + elif gs.value("packagechooser_packagechooser") == "enlightenment": 593 + cfg += cfgenlightenment 594 + elif gs.value("packagechooser_packagechooser") == "lxqt": 595 + cfg += cfglxqt 596 + elif gs.value("packagechooser_packagechooser") == "lumina": 597 + cfg += cfglumina 598 + elif gs.value("packagechooser_packagechooser") == "budgie": 599 + cfg += cfgbudgie 600 + elif gs.value("packagechooser_packagechooser") == "deepin": 601 + cfg += cfgdeepin 602 + 603 + if ( 604 + gs.value("keyboardLayout") is not None 605 + and gs.value("keyboardVariant") is not None 606 + ): 607 + cfg += cfgkeymap 608 + catenate(variables, "kblayout", gs.value("keyboardLayout")) 609 + catenate(variables, "kbvariant", gs.value("keyboardVariant")) 610 + 611 + if gs.value("keyboardVConsoleKeymap") is not None: 612 + try: 613 + subprocess.check_output( 614 + ["pkexec", "loadkeys", gs.value("keyboardVConsoleKeymap").strip()], 615 + stderr=subprocess.STDOUT, 616 + ) 617 + cfg += cfgconsole 618 + catenate( 619 + variables, "vconsole", gs.value("keyboardVConsoleKeymap").strip() 620 + ) 621 + except subprocess.CalledProcessError as e: 622 + libcalamares.utils.error("loadkeys: {}".format(e.output)) 623 + libcalamares.utils.error( 624 + "Setting vconsole keymap to {} will fail, using default".format( 625 + gs.value("keyboardVConsoleKeymap").strip() 626 + ) 627 + ) 628 + else: 629 + kbdmodelmap = open( 630 + "/run/current-system/sw/share/systemd/kbd-model-map", "r" 631 + ) 632 + kbd = kbdmodelmap.readlines() 633 + out = [] 634 + for line in kbd: 635 + if line.startswith("#"): 636 + continue 637 + out.append(line.split()) 638 + # Find rows with same layout 639 + find = [] 640 + for row in out: 641 + if gs.value("keyboardLayout") == row[1]: 642 + find.append(row) 643 + if find != []: 644 + vconsole = find[0][0] 645 + else: 646 + vconsole = "" 647 + if gs.value("keyboardVariant") is not None: 648 + variant = gs.value("keyboardVariant") 649 + else: 650 + variant = "-" 651 + # Find rows with same variant 652 + for row in find: 653 + if variant in row[3]: 654 + vconsole = row[0] 655 + break 656 + # If none found set to "us" 657 + if vconsole != "" and vconsole != "us" and vconsole is not None: 658 + try: 659 + subprocess.check_output( 660 + ["pkexec", "loadkeys", vconsole], stderr=subprocess.STDOUT 661 + ) 662 + cfg += cfgconsole 663 + catenate(variables, "vconsole", vconsole) 664 + except subprocess.CalledProcessError as e: 665 + libcalamares.utils.error("loadkeys: {}".format(e.output)) 666 + libcalamares.utils.error("vconsole value: {}".format(vconsole)) 667 + libcalamares.utils.error( 668 + "Setting vconsole keymap to {} will fail, using default".format( 669 + gs.value("keyboardVConsoleKeymap") 670 + ) 671 + ) 672 + 673 + if ( 674 + gs.value("packagechooser_packagechooser") is not None 675 + and gs.value("packagechooser_packagechooser") != "" 676 + ): 677 + cfg += cfgmisc 678 + 679 + if gs.value("username") is not None: 680 + fullname = gs.value("fullname") 681 + groups = ["networkmanager", "wheel"] 682 + 683 + cfg += cfgusers 684 + catenate(variables, "username", gs.value("username")) 685 + catenate(variables, "fullname", fullname) 686 + catenate(variables, "groups", (" ").join(['"' + s + '"' for s in groups])) 687 + if ( 688 + gs.value("autoLoginUser") is not None 689 + and gs.value("packagechooser_packagechooser") is not None 690 + and gs.value("packagechooser_packagechooser") != "" 691 + ): 692 + cfg += cfgautologin 693 + if gs.value("packagechooser_packagechooser") == "gnome": 694 + cfg += cfgautologingdm 695 + elif gs.value("autoLoginUser") is not None: 696 + cfg += cfgautologintty 697 + 698 + if gs.value("packagechooser_packagechooser") != "": 699 + cfg += cfgfirefox 700 + 701 + # Check if unfree packages are allowed 702 + free = True 703 + if gs.value("packagechooser_unfree") is not None: 704 + if gs.value("packagechooser_unfree") == "unfree": 705 + free = False 706 + cfg += cfgunfree 707 + 708 + cfg += cfgpkgs 709 + # Use firefox as default as a graphical web browser, and add kate to plasma desktop 710 + if gs.value("packagechooser_packagechooser") == "plasma6": 711 + catenate( 712 + variables, "pkgs", "\n kdePackages.kate\n # thunderbird\n " 713 + ) 714 + elif gs.value("packagechooser_packagechooser") != "": 715 + catenate(variables, "pkgs", "\n # thunderbird\n ") 716 + else: 717 + catenate(variables, "pkgs", "") 718 + 719 + cfg += cfgtail 720 + version = ".".join(subprocess.getoutput(["nixos-version"]).split(".")[:2])[:5] 721 + catenate(variables, "nixosversion", version) 722 + 723 + # Check that all variables are used 724 + for key in variables.keys(): 725 + pattern = "@@{key}@@".format(key=key) 726 + if pattern not in cfg: 727 + libcalamares.utils.warning("Variable '{key}' is not used.".format(key=key)) 728 + 729 + # Check that all patterns exist 730 + variable_pattern = re.compile(r"@@\w+@@") 731 + for match in variable_pattern.finditer(cfg): 732 + variable_name = cfg[match.start() + 2 : match.end() - 2] 733 + if variable_name not in variables: 734 + libcalamares.utils.warning( 735 + "Variable '{key}' is used but not defined.".format(key=variable_name) 736 + ) 737 + 738 + # Do the substitutions 739 + for key in variables.keys(): 740 + pattern = "@@{key}@@".format(key=key) 741 + cfg = cfg.replace(pattern, str(variables[key])) 742 + 743 + status = _("Generating NixOS configuration") 744 + libcalamares.job.setprogress(0.25) 745 + 746 + try: 747 + # Generate hardware.nix with mounted swap device 748 + subprocess.check_output( 749 + ["pkexec", "nixos-generate-config", "--root", root_mount_point], 750 + stderr=subprocess.STDOUT, 751 + ) 752 + except subprocess.CalledProcessError as e: 753 + if e.output is not None: 754 + libcalamares.utils.error(e.output.decode("utf8")) 755 + return (_("nixos-generate-config failed"), _(e.output.decode("utf8"))) 756 + 757 + # Check for unfree stuff in hardware-configuration.nix 758 + hf = open(root_mount_point + "/etc/nixos/hardware-configuration.nix", "r") 759 + htxt = hf.read() 760 + search = re.search(r"boot\.extraModulePackages = \[ (.*) \];", htxt) 761 + 762 + # Check if any extraModulePackages are defined, and remove if only free packages are allowed 763 + if search is not None and free: 764 + expkgs = search.group(1).split(" ") 765 + for pkg in expkgs: 766 + p = ".".join(pkg.split(".")[3:]) 767 + # Check package p is unfree 768 + isunfree = subprocess.check_output( 769 + [ 770 + "nix-instantiate", 771 + "--eval", 772 + "--strict", 773 + "-E", 774 + "with import <nixpkgs> {{}}; pkgs.linuxKernel.packageAliases.linux_default.{}.meta.unfree".format( 775 + p 776 + ), 777 + "--json", 778 + ], 779 + stderr=subprocess.STDOUT, 780 + ) 781 + if isunfree == b"true": 782 + libcalamares.utils.warning( 783 + "{} is marked as unfree, removing from hardware-configuration.nix".format( 784 + p 785 + ) 786 + ) 787 + expkgs.remove(pkg) 788 + hardwareout = re.sub( 789 + r"boot\.extraModulePackages = \[ (.*) \];", 790 + "boot.extraModulePackages = [ {}];".format( 791 + "".join(map(lambda x: x + " ", expkgs)) 792 + ), 793 + htxt, 794 + ) 795 + # Write the hardware-configuration.nix file 796 + libcalamares.utils.host_env_process_output( 797 + [ 798 + "cp", 799 + "/dev/stdin", 800 + root_mount_point + "/etc/nixos/hardware-configuration.nix", 801 + ], 802 + None, 803 + hardwareout, 804 + ) 805 + 806 + # Write the configuration.nix file 807 + libcalamares.utils.host_env_process_output(["cp", "/dev/stdin", config], None, cfg) 808 + 809 + status = _("Installing NixOS") 810 + libcalamares.job.setprogress(0.3) 811 + 812 + # build nixos-install command 813 + nixosInstallCmd = [ "pkexec" ] 814 + nixosInstallCmd.extend(generateProxyStrings()) 815 + nixosInstallCmd.extend( 816 + [ 817 + "nixos-install", 818 + "--no-root-passwd", 819 + "--root", 820 + root_mount_point 821 + ] 822 + ) 823 + 824 + # Install customizations 825 + try: 826 + output = "" 827 + proc = subprocess.Popen( 828 + nixosInstallCmd, 829 + stdout=subprocess.PIPE, 830 + stderr=subprocess.STDOUT 831 + ) 832 + while True: 833 + line = proc.stdout.readline().decode("utf-8") 834 + output += line 835 + libcalamares.utils.debug("nixos-install: {}".format(line.strip())) 836 + if not line: 837 + break 838 + exit = proc.wait() 839 + if exit != 0: 840 + return (_("nixos-install failed"), _(output)) 841 + except: 842 + return (_("nixos-install failed"), _("Installation failed to complete")) 843 + 844 + return None
+7
pkgs/by-name/ca/calamares-nixos-extensions/src/modules/nixos/module.desc
··· 1 + # SPDX-FileCopyrightText: no 2 + # SPDX-License-Identifier: CC0-1.0 3 + --- 4 + type: "job" 5 + name: "nixos" 6 + interface: "python" 7 + script: "main.py"
pkgs/by-name/ca/calamares-nixos-extensions/src/testing/__init__.py

This is a binary file and will not be displayed.

+172
pkgs/by-name/ca/calamares-nixos-extensions/src/testing/conftest.py
··· 1 + import os 2 + import sys 3 + 4 + import pytest 5 + 6 + 7 + @pytest.fixture 8 + def mock_translation_gettext(mocker): 9 + return mocker.Mock( 10 + "gettext.translation().gettext", 11 + # Return the translation key as the translation 12 + side_effect=lambda t: t, 13 + ) 14 + 15 + 16 + @pytest.fixture 17 + def mock_gettext_translation(mocker, mock_translation_gettext): 18 + mock_translation_object = mocker.Mock("gettext.translation()") 19 + mock_translation_object.gettext = mock_translation_gettext 20 + 21 + return mocker.Mock("gettext.translation", return_value=mock_translation_object) 22 + 23 + 24 + @pytest.fixture 25 + def globalstorage(): 26 + return { 27 + "rootMountPoint": "/mnt/root", 28 + "firmwareType": "efi", 29 + "partitions": [], 30 + "keyboardLayout": "us", 31 + "username": "username", 32 + "fullname": "fullname", 33 + } 34 + 35 + 36 + @pytest.fixture 37 + def mock_check_output(mocker): 38 + return mocker.Mock(name="subprocess.check_output") 39 + 40 + 41 + @pytest.fixture 42 + def mock_getoutput(mocker): 43 + return mocker.Mock( 44 + name="subprocess.getoutput", 45 + # subprocess.getoutput() is only called to get the output of `nixos-version` so it is hard-coded here. 46 + return_value="24.05.20240815.c3d4ac7 (Uakari)", 47 + ) 48 + 49 + 50 + @pytest.fixture 51 + def mock_Popen(mocker): 52 + mock_Popen_inst = mocker.Mock("Popen()") 53 + mock_Popen_inst.stdout = mocker.Mock("Popen().stdout") 54 + mock_Popen_inst.stdout.readline = mocker.Mock( 55 + "Popen().stdout.readline", 56 + # Make Popen print nothing (empty bytes) to stdout 57 + return_value=b"", 58 + ) 59 + mock_Popen_inst.wait = mocker.Mock( 60 + "Popen().wait", 61 + # Make Popen().wait() give a returncode of 0 62 + return_value=0, 63 + ) 64 + return mocker.Mock(name="subprocess.Popen", return_value=mock_Popen_inst) 65 + 66 + 67 + @pytest.fixture 68 + def mock_libcalamares(mocker, globalstorage): 69 + mock_libcalamares = mocker.Mock("libcalamares") 70 + 71 + mock_libcalamares.globalstorage = mocker.Mock("libcalamares.globalstorage") 72 + mock_libcalamares.globalstorage.value = mocker.Mock( 73 + "libcalamares.globalstorage.value" 74 + ) 75 + mock_libcalamares.globalstorage.value.side_effect = lambda k: globalstorage.get(k) 76 + 77 + mock_libcalamares.utils = mocker.Mock("libcalamares.utils") 78 + mock_libcalamares.utils.gettext = mocker.Mock("libcalamares.utils.gettext") 79 + mock_libcalamares.utils.gettext_path = mocker.Mock( 80 + "libcalamares.utils.gettext_path" 81 + ) 82 + mock_libcalamares.utils.gettext_languages = mocker.Mock( 83 + "libcalamares.utils.gettext_languages" 84 + ) 85 + mock_libcalamares.utils.warning = mocker.Mock("libcalamares.utils.warning") 86 + mock_libcalamares.utils.debug = mocker.Mock("libcalamares.utils.debug") 87 + mock_libcalamares.utils.host_env_process_output = mocker.Mock( 88 + "libcalamares.utils.host_env_process_output" 89 + ) 90 + 91 + mock_libcalamares.job = mocker.Mock("libcalamares.job") 92 + mock_libcalamares.job.setprogress = mocker.Mock("libcalamares.job.setprogress") 93 + 94 + return mock_libcalamares 95 + 96 + 97 + @pytest.fixture 98 + def mock_open_ngcconf(mocker): 99 + return mocker.Mock('open("nixos-generate-config.conf")') 100 + 101 + 102 + @pytest.fixture 103 + def mock_open_hwconf(mocker): 104 + return mocker.Mock('open("hardware-configuration.nix")') 105 + 106 + 107 + @pytest.fixture 108 + def mock_open_kbdmodelmap(mocker): 109 + return mocker.Mock('open("kbd-model-map")') 110 + 111 + 112 + @pytest.fixture 113 + def mock_open(mocker, mock_open_ngcconf, mock_open_hwconf, mock_open_kbdmodelmap): 114 + testing_dir = os.path.dirname(__file__) 115 + 116 + ngcconf_txt = "" 117 + with open(os.path.join(testing_dir, "nixos-generate-config.conf"), "r") as ngcconf: 118 + ngcconf_txt = ngcconf.read() 119 + 120 + hwconf_txt = "" 121 + with open(os.path.join(testing_dir, "hardware-configuration.nix"), "r") as hwconf: 122 + hwconf_txt = hwconf.read() 123 + 124 + kbdmodelmap_txt = "" 125 + with open(os.path.join(testing_dir, "kbd-model-map"), "r") as kbdmodelmap: 126 + kbdmodelmap_txt = kbdmodelmap.read() 127 + 128 + mock_open = mocker.Mock("open") 129 + 130 + def fake_open(*args, **kwargs): 131 + file, *mode = args 132 + assert len(mode) == 0 or mode[0] == "r", "open() called with non-'r' mode" 133 + 134 + if file.endswith("nixos-generate-config.conf"): 135 + return mocker.mock_open(mock=mock_open_ngcconf, read_data=ngcconf_txt)(*args) 136 + elif file.endswith("hardware-configuration.nix"): 137 + return mocker.mock_open(mock=mock_open_hwconf, read_data=hwconf_txt)(*args) 138 + elif file.endswith("kbd-model-map"): 139 + return mocker.mock_open( 140 + mock=mock_open_kbdmodelmap, read_data=kbdmodelmap_txt 141 + )(*args) 142 + else: 143 + raise AssertionError(f"open() called with unexpected file '{file}'") 144 + 145 + mock_open.side_effect = fake_open 146 + 147 + return mock_open 148 + 149 + 150 + @pytest.fixture 151 + def run( 152 + mocker, 153 + mock_gettext_translation, 154 + mock_libcalamares, 155 + mock_check_output, 156 + mock_getoutput, 157 + mock_Popen, 158 + mock_open, 159 + ): 160 + sys.modules["libcalamares"] = mock_libcalamares 161 + 162 + mocker.patch("gettext.translation", mock_gettext_translation) 163 + 164 + mocker.patch("subprocess.check_output", mock_check_output) 165 + mocker.patch("subprocess.getoutput", mock_getoutput) 166 + mocker.patch("subprocess.Popen", mock_Popen) 167 + 168 + mocker.patch("builtins.open", mock_open) 169 + 170 + from modules.nixos.main import run 171 + 172 + return run
+31
pkgs/by-name/ca/calamares-nixos-extensions/src/testing/hardware-configuration.nix
··· 1 + # Do not modify this file! It was generated by ‘nixos-generate-config’ 2 + # and may be overwritten by future invocations. Please make changes 3 + # to /etc/nixos/configuration.nix instead. 4 + { config, lib, pkgs, modulesPath, ... }: 5 + 6 + { 7 + imports = 8 + [ (modulesPath + "/installer/scan/not-detected.nix") 9 + ]; 10 + 11 + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" ]; 12 + boot.initrd.kernelModules = [ ]; 13 + boot.kernelModules = [ "kvm-amd" ]; 14 + boot.extraModulePackages = [ ]; 15 + 16 + swapDevices = [ ]; 17 + 18 + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 19 + # (the default) this is the recommended approach. When using systemd-networkd it's 20 + # still possible to use this option, but it's recommended to use it in conjunction 21 + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. 22 + networking.useDHCP = lib.mkDefault true; 23 + # networking.interfaces.docker0.useDHCP = lib.mkDefault true; 24 + # networking.interfaces.veth1a64ca3.useDHCP = lib.mkDefault true; 25 + # networking.interfaces.vethb5290db.useDHCP = lib.mkDefault true; 26 + # networking.interfaces.vethf60304e.useDHCP = lib.mkDefault true; 27 + # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; 28 + 29 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 30 + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 31 + }
+72
pkgs/by-name/ca/calamares-nixos-extensions/src/testing/kbd-model-map
··· 1 + # Originally generated from system-config-keyboard's model list. 2 + # consolelayout xlayout xmodel xvariant xoptions 3 + sg ch pc105 de_nodeadkeys terminate:ctrl_alt_bksp 4 + nl nl pc105 - terminate:ctrl_alt_bksp 5 + mk-utf mk,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll 6 + trq tr pc105 - terminate:ctrl_alt_bksp 7 + uk gb pc105 - terminate:ctrl_alt_bksp 8 + is-latin1 is pc105 - terminate:ctrl_alt_bksp 9 + de de pc105 - terminate:ctrl_alt_bksp 10 + la-latin1 latam pc105 - terminate:ctrl_alt_bksp 11 + us us pc105+inet - terminate:ctrl_alt_bksp 12 + ko kr pc105 - terminate:ctrl_alt_bksp 13 + ro-std ro pc105 std terminate:ctrl_alt_bksp 14 + de-latin1 de pc105 - terminate:ctrl_alt_bksp 15 + slovene si pc105 - terminate:ctrl_alt_bksp 16 + hu hu pc105 - terminate:ctrl_alt_bksp 17 + jp106 jp jp106 - terminate:ctrl_alt_bksp 18 + croat hr pc105 - terminate:ctrl_alt_bksp 19 + it2 it pc105 - terminate:ctrl_alt_bksp 20 + hu101 hu pc105 qwerty terminate:ctrl_alt_bksp 21 + sr-latin rs pc105 latin terminate:ctrl_alt_bksp 22 + fi fi pc105 - terminate:ctrl_alt_bksp 23 + fr_CH ch pc105 fr terminate:ctrl_alt_bksp 24 + dk-latin1 dk pc105 - terminate:ctrl_alt_bksp 25 + fr fr pc105 - terminate:ctrl_alt_bksp 26 + it it pc105 - terminate:ctrl_alt_bksp 27 + ua-utf ua,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll 28 + fr-latin1 fr pc105 - terminate:ctrl_alt_bksp 29 + sg-latin1 ch pc105 de_nodeadkeys terminate:ctrl_alt_bksp 30 + be-latin1 be pc105 - terminate:ctrl_alt_bksp 31 + dk dk pc105 - terminate:ctrl_alt_bksp 32 + fr-pc fr pc105 - terminate:ctrl_alt_bksp 33 + bg_pho-utf8 bg,us pc105 ,phonetic terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll 34 + it-ibm it pc105 - terminate:ctrl_alt_bksp 35 + cz-us-qwertz cz,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll 36 + cz-qwerty cz,us pc105 qwerty, terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll 37 + br-abnt2 br abnt2 - terminate:ctrl_alt_bksp 38 + ro ro pc105 - terminate:ctrl_alt_bksp 39 + us-acentos us pc105 intl terminate:ctrl_alt_bksp 40 + pt-latin1 pt pc105 - terminate:ctrl_alt_bksp 41 + ro-std-cedilla ro pc105 std_cedilla terminate:ctrl_alt_bksp 42 + tj_alt-UTF8 tj pc105 - terminate:ctrl_alt_bksp 43 + de-latin1-nodeadkeys de pc105 nodeadkeys terminate:ctrl_alt_bksp 44 + no no pc105 - terminate:ctrl_alt_bksp 45 + bg_bds-utf8 bg,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll 46 + dvorak us pc105 dvorak terminate:ctrl_alt_bksp 47 + dvorak us pc105 dvorak-alt-intl terminate:ctrl_alt_bksp 48 + ru ru,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll 49 + cz-lat2 cz pc105 qwerty terminate:ctrl_alt_bksp 50 + pl2 pl pc105 - terminate:ctrl_alt_bksp 51 + es es pc105 - terminate:ctrl_alt_bksp 52 + ro-cedilla ro pc105 cedilla terminate:ctrl_alt_bksp 53 + ie ie pc105 - terminate:ctrl_alt_bksp 54 + et ee pc105 - terminate:ctrl_alt_bksp 55 + sk-qwerty sk pc105 qwerty terminate:ctrl_alt_bksp 56 + sk-qwertz sk pc105 - terminate:ctrl_alt_bksp 57 + fr-latin9 fr pc105 latin9 terminate:ctrl_alt_bksp 58 + fr_CH-latin1 ch pc105 fr terminate:ctrl_alt_bksp 59 + cf ca pc105 - terminate:ctrl_alt_bksp 60 + sv-latin1 se pc105 - terminate:ctrl_alt_bksp 61 + sr-cy rs pc105 - terminate:ctrl_alt_bksp 62 + gr gr,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll 63 + by by,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll 64 + il il pc105 - terminate:ctrl_alt_bksp 65 + kazakh kz,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll 66 + lt.baltic lt pc105 - terminate:ctrl_alt_bksp 67 + lt.l4 lt pc105 - terminate:ctrl_alt_bksp 68 + lt lt pc105 - terminate:ctrl_alt_bksp 69 + khmer kh,us pc105 - terminate:ctrl_alt_bksp 70 + es-dvorak es microsoftpro dvorak terminate:ctrl_alt_bksp 71 + lv lv pc105 apostrophe terminate:ctrl_alt_bksp 72 + lv-tilde lv pc105 tilde terminate:ctrl_alt_bksp
+2
pkgs/by-name/ca/calamares-nixos-extensions/src/testing/nixos-generate-config.conf
··· 1 + [Defaults] 2 + Kernel=latest
+153
pkgs/by-name/ca/calamares-nixos-extensions/src/testing/test_baseline.py
··· 1 + import subprocess 2 + 3 + 4 + BASELINE_CFG = """# Edit this configuration file to define what should be installed on 5 + # your system. Help is available in the configuration.nix(5) man page 6 + # and in the NixOS manual (accessible by running ‘nixos-help’). 7 + 8 + { config, pkgs, ... }: 9 + 10 + { 11 + imports = 12 + [ # Include the results of the hardware scan. 13 + ./hardware-configuration.nix 14 + ]; 15 + 16 + # Bootloader. 17 + boot.loader.systemd-boot.enable = true; 18 + boot.loader.efi.canTouchEfiVariables = true; 19 + 20 + # Use latest kernel. 21 + boot.kernelPackages = pkgs.linuxPackages_latest; 22 + 23 + networking.hostName = "nixos"; # Define your hostname. 24 + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. 25 + 26 + # Configure network proxy if necessary 27 + # networking.proxy.default = "http://user:password@proxy:port/"; 28 + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; 29 + 30 + # Enable networking 31 + networking.networkmanager.enable = true; 32 + 33 + # Define a user account. Don't forget to set a password with ‘passwd’. 34 + users.users.username = { 35 + isNormalUser = true; 36 + description = "fullname"; 37 + extraGroups = [ "networkmanager" "wheel" ]; 38 + packages = with pkgs; [ 39 + # thunderbird 40 + ]; 41 + }; 42 + 43 + # Install firefox. 44 + programs.firefox.enable = true; 45 + 46 + # List packages installed in system profile. To search, run: 47 + # $ nix search wget 48 + environment.systemPackages = with pkgs; [ 49 + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. 50 + # wget 51 + ]; 52 + 53 + # Some programs need SUID wrappers, can be configured further or are 54 + # started in user sessions. 55 + # programs.mtr.enable = true; 56 + # programs.gnupg.agent = { 57 + # enable = true; 58 + # enableSSHSupport = true; 59 + # }; 60 + 61 + # List services that you want to enable: 62 + 63 + # Enable the OpenSSH daemon. 64 + # services.openssh.enable = true; 65 + 66 + # Open ports in the firewall. 67 + # networking.firewall.allowedTCPPorts = [ ... ]; 68 + # networking.firewall.allowedUDPPorts = [ ... ]; 69 + # Or disable the firewall altogether. 70 + # networking.firewall.enable = false; 71 + 72 + # This value determines the NixOS release from which the default 73 + # settings for stateful data, like file locations and database versions 74 + # on your system were taken. It‘s perfectly fine and recommended to leave 75 + # this value at the release version of the first install of this system. 76 + # Before changing this value read the documentation for this option 77 + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 78 + system.stateVersion = "24.05"; # Did you read the comment? 79 + 80 + } 81 + """ 82 + 83 + 84 + def test_baseline( 85 + mocker, 86 + run, 87 + mock_gettext_translation, 88 + mock_libcalamares, 89 + mock_getoutput, 90 + mock_check_output, 91 + mock_open_ngcconf, 92 + mock_open_hwconf, 93 + mock_Popen, 94 + ): 95 + result = run() 96 + 97 + assert result is None, "nixos-install failed." 98 + 99 + mock_gettext_translation.assert_called_once_with( 100 + "calamares-python", localedir=mocker.ANY, languages=mocker.ANY, fallback=True 101 + ) 102 + 103 + # libcalamares.job.setprogress(0.1) 104 + assert mock_libcalamares.job.setprogress.mock_calls[0] == mocker.call(0.1) 105 + 106 + 107 + 108 + # libcalamares.job.setprogress(0.18) 109 + assert mock_libcalamares.job.setprogress.mock_calls[1] == mocker.call(0.18) 110 + 111 + # version = ".".join(subprocess.getoutput( 112 + # ["nixos-version"]).split(".")[:2])[:5] 113 + assert mock_getoutput.mock_calls[0] == mocker.call(["nixos-version"]) 114 + 115 + # The baseline configuration should not raise any warnings. 116 + mock_libcalamares.utils.warning.assert_not_called() 117 + 118 + # libcalamares.job.setprogress(0.25) 119 + assert mock_libcalamares.job.setprogress.mock_calls[2] == mocker.call(0.25) 120 + 121 + # subprocess.check_output( 122 + # ["pkexec", "nixos-generate-config", "--root", root_mount_point], stderr=subprocess.STDOUT) 123 + assert mock_check_output.mock_calls[0] == mocker.call( 124 + ["pkexec", "nixos-generate-config", "--root", "/mnt/root"], 125 + stderr=subprocess.STDOUT, 126 + ) 127 + 128 + mock_open_ngcconf.assert_called_once_with( 129 + "/etc/nixos-generate-config.conf" 130 + ) 131 + 132 + # hf = open(root_mount_point + "/etc/nixos/hardware-configuration.nix", "r") 133 + mock_open_hwconf.assert_called_once_with( 134 + "/mnt/root/etc/nixos/hardware-configuration.nix", "r" 135 + ) 136 + 137 + # libcalamares.utils.host_env_process_output( 138 + # ["cp", "/dev/stdin", config], None, cfg) 139 + mock_libcalamares.utils.host_env_process_output.assert_called_once_with( 140 + ["cp", "/dev/stdin", "/mnt/root/etc/nixos/configuration.nix"], None, mocker.ANY 141 + ) 142 + cfg = mock_libcalamares.utils.host_env_process_output.call_args[0][2] 143 + assert cfg == BASELINE_CFG 144 + 145 + # libcalamares.job.setprogress(0.3) 146 + assert mock_libcalamares.job.setprogress.mock_calls[3] == mocker.call(0.3) 147 + 148 + # proc = subprocess.Popen(["pkexec", "nixos-install", "--no-root-passwd", "--root", root_mount_point], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 149 + mock_Popen.assert_called_once_with( 150 + ["pkexec", "nixos-install", "--no-root-passwd", "--root", "/mnt/root"], 151 + stdout=subprocess.PIPE, 152 + stderr=subprocess.STDOUT, 153 + )