Compare commits
532 commits
bfeea8cb21
...
91e5d860e7
Author | SHA1 | Date | |
---|---|---|---|
Manuel Thalmann | 91e5d860e7 | ||
Manuel Thalmann | 4191d5e89d | ||
Manuel Thalmann | 513d873f0f | ||
Manuel Thalmann | 61b898fdd5 | ||
Manuel Thalmann | 74273705ee | ||
Manuel Thalmann | 190248828d | ||
Manuel Thalmann | c1b9674ff0 | ||
Manuel Thalmann | 6962f6d323 | ||
Manuel Thalmann | b8c8fb28f3 | ||
Manuel Thalmann | d42320ce4a | ||
Manuel Thalmann | 139cf706fc | ||
Manuel Thalmann | b74e9c632e | ||
Manuel Thalmann | d1a0e38805 | ||
Manuel Thalmann | 03c4f8012f | ||
Manuel Thalmann | 6e7bfed63e | ||
Manuel Thalmann | e47e98b804 | ||
Manuel Thalmann | eee70fdf2a | ||
Manuel Thalmann | ae0913e2ef | ||
Manuel Thalmann | d10dd9205c | ||
Manuel Thalmann | ea3935e737 | ||
Manuel Thalmann | 4e793a3a83 | ||
Manuel Thalmann | d3cafda83a | ||
Manuel Thalmann | 6a852059fb | ||
Manuel Thalmann | f410c33972 | ||
Manuel Thalmann | 90f97848ce | ||
Manuel Thalmann | 2397a1919d | ||
Manuel Thalmann | a8bc078525 | ||
Manuel Thalmann | 69a61e6002 | ||
Manuel Thalmann | 0a83eb7e10 | ||
Manuel Thalmann | fb90448395 | ||
Manuel Thalmann | 7127bae277 | ||
Manuel Thalmann | 83101c8873 | ||
Manuel Thalmann | 9c6f6a85e5 | ||
Manuel Thalmann | d33940c38c | ||
Manuel Thalmann | 6e6cef4392 | ||
Manuel Thalmann | 621e0842ed | ||
Manuel Thalmann | 5dd9205437 | ||
Manuel Thalmann | 1581ddc80c | ||
Manuel Thalmann | a107654d40 | ||
Manuel Thalmann | 372e75d655 | ||
Manuel Thalmann | 678c56cf78 | ||
Manuel Thalmann | 66779b42cc | ||
Manuel Thalmann | 01791b293c | ||
Manuel Thalmann | 1e35fa150f | ||
Manuel Thalmann | 8c7d22a780 | ||
Manuel Thalmann | fa3e8cf821 | ||
Manuel Thalmann | 253331ea7a | ||
Manuel Thalmann | afd1f38a81 | ||
Manuel Thalmann | 10a64e3424 | ||
Manuel Thalmann | a381e0e892 | ||
Manuel Thalmann | 1abc314a51 | ||
Manuel Thalmann | 597dcc9b83 | ||
Manuel Thalmann | 36ae05b90d | ||
Manuel Thalmann | 5991878f2d | ||
Manuel Thalmann | 08b3f2d1e9 | ||
Manuel Thalmann | b54ec95a7a | ||
Manuel Thalmann | 6346644f76 | ||
Manuel Thalmann | 0a586e3323 | ||
Manuel Thalmann | ecaf4ff7b0 | ||
Manuel Thalmann | e232b1ce9b | ||
Manuel Thalmann | 1dcf168a9f | ||
Manuel Thalmann | b1a15cfd66 | ||
Manuel Thalmann | 6a38a943c0 | ||
Manuel Thalmann | 12f0b4aebe | ||
Manuel Thalmann | 96818ef702 | ||
Manuel Thalmann | a6a2b6331e | ||
Manuel Thalmann | 867553c479 | ||
Manuel Thalmann | d8e31c4361 | ||
Manuel Thalmann | 5d89828dc4 | ||
Manuel Thalmann | 9961690fea | ||
Manuel Thalmann | 1ed75d314e | ||
Manuel Thalmann | cb24c6bf17 | ||
Manuel Thalmann | 8faaef98c9 | ||
Manuel Thalmann | 6f9437002a | ||
Manuel Thalmann | 3b9c291689 | ||
Manuel Thalmann | 171f34bd57 | ||
Manuel Thalmann | fe63a74d88 | ||
Manuel Thalmann | 42e9b3ddf1 | ||
Manuel Thalmann | 8ddce6410a | ||
Manuel Thalmann | 846e3fee5a | ||
Manuel Thalmann | 9a62c37880 | ||
Manuel Thalmann | 85dd40fcbc | ||
Manuel Thalmann | bf0c7abcc3 | ||
Manuel Thalmann | d83b64608a | ||
Manuel Thalmann | 1d4a62b7e2 | ||
Manuel Thalmann | 17e7699179 | ||
Manuel Thalmann | 41e79cdf07 | ||
Manuel Thalmann | a298518f37 | ||
Manuel Thalmann | d0fd6fcc61 | ||
Manuel Thalmann | f1a3fd2f25 | ||
Manuel Thalmann | 2f82ae4544 | ||
Manuel Thalmann | 2af45fbf89 | ||
Manuel Thalmann | 0df3d90ca9 | ||
Manuel Thalmann | f721cd8910 | ||
Manuel Thalmann | 4db4136aab | ||
Manuel Thalmann | 478e489911 | ||
Manuel Thalmann | a93413d54f | ||
Manuel Thalmann | 0cda6e7966 | ||
Manuel Thalmann | 08e4d1e644 | ||
Manuel Thalmann | 40b88603c6 | ||
Manuel Thalmann | 6c9acc515d | ||
Manuel Thalmann | fcd05a87d2 | ||
Manuel Thalmann | 588d410741 | ||
Manuel Thalmann | 417db2d35b | ||
Manuel Thalmann | b9f27baa9b | ||
Manuel Thalmann | 682808480c | ||
Manuel Thalmann | c97815f065 | ||
Manuel Thalmann | 4b0d0afa4d | ||
Manuel Thalmann | 267eb3d7ec | ||
Manuel Thalmann | 1ceb0cd8e4 | ||
Manuel Thalmann | 27064c97b5 | ||
Manuel Thalmann | 3aae307e2a | ||
Manuel Thalmann | d957b98c33 | ||
Manuel Thalmann | 70b3768ec2 | ||
Manuel Thalmann | b2541dab68 | ||
Manuel Thalmann | 020e592065 | ||
Manuel Thalmann | 1264202a88 | ||
Manuel Thalmann | e19429eb3a | ||
Manuel Thalmann | 971daed11f | ||
Manuel Thalmann | fc8113d2cc | ||
Manuel Thalmann | cec1feaa2f | ||
Manuel Thalmann | 0e23435397 | ||
Manuel Thalmann | 66e5405e74 | ||
Manuel Thalmann | 3f049600a4 | ||
Manuel Thalmann | 9b06999370 | ||
Manuel Thalmann | cda5ce64c5 | ||
Manuel Thalmann | 708f689113 | ||
Manuel Thalmann | 9505d6891f | ||
Manuel Thalmann | 6d74c1b6cc | ||
Manuel Thalmann | ce0473d106 | ||
Manuel Thalmann | eda3c967ae | ||
Manuel Thalmann | 2224796241 | ||
Manuel Thalmann | 44ae99f063 | ||
Manuel Thalmann | f93b3697bc | ||
Manuel Thalmann | 63844c8cf5 | ||
Manuel Thalmann | 980489a29d | ||
Manuel Thalmann | 91993ea2c7 | ||
Manuel Thalmann | 90fc39ef6d | ||
Manuel Thalmann | 19bebca310 | ||
Manuel Thalmann | dbd6e5d9d8 | ||
Manuel Thalmann | b60c8ca60e | ||
Manuel Thalmann | 49b58727f2 | ||
Manuel Thalmann | c0f63f7b52 | ||
Manuel Thalmann | ef372f7feb | ||
Manuel Thalmann | bdb4eaed80 | ||
Manuel Thalmann | c9fbf55d52 | ||
Manuel Thalmann | 1fa0a30755 | ||
Manuel Thalmann | 43a9d867bb | ||
Manuel Thalmann | bd9234e3bb | ||
Manuel Thalmann | b0dd02f3ce | ||
Manuel Thalmann | 4157d698e3 | ||
Manuel Thalmann | 79d5b6d06c | ||
Manuel Thalmann | 394d06ae48 | ||
Manuel Thalmann | 75383437d8 | ||
Manuel Thalmann | 253fcbec6e | ||
Manuel Thalmann | a23719f83b | ||
Manuel Thalmann | 83cb3b33e4 | ||
Manuel Thalmann | f3b83c78a0 | ||
Manuel Thalmann | 76a293d341 | ||
Manuel Thalmann | 09cb18a0d5 | ||
Manuel Thalmann | 62d70c1375 | ||
Manuel Thalmann | 1499099301 | ||
Manuel Thalmann | 7902b864ed | ||
Manuel Thalmann | 34d9511736 | ||
Manuel Thalmann | b644ca406a | ||
Manuel Thalmann | fd9db7a4ff | ||
Manuel Thalmann | a26b1fe78c | ||
Manuel Thalmann | bdfc43b805 | ||
Manuel Thalmann | c070bde72a | ||
Manuel Thalmann | 47e553ee6a | ||
Manuel Thalmann | b3e8319348 | ||
Manuel Thalmann | c32f40860c | ||
Manuel Thalmann | c2e43c73df | ||
Manuel Thalmann | ab95a43bdf | ||
Manuel Thalmann | ccfe29799a | ||
Manuel Thalmann | ecf9e8e689 | ||
Manuel Thalmann | 9ea809adfd | ||
Manuel Thalmann | bcbf53297b | ||
Manuel Thalmann | 7ebf09b93f | ||
Manuel Thalmann | 0e18b63853 | ||
Manuel Thalmann | c6e7d2d3d5 | ||
Manuel Thalmann | 7838c7186e | ||
Manuel Thalmann | d37f4da080 | ||
Manuel Thalmann | d611857375 | ||
Manuel Thalmann | 4553548a3a | ||
Manuel Thalmann | 8f820297c7 | ||
Manuel Thalmann | 11f80cda08 | ||
Manuel Thalmann | 2f2a3f53fb | ||
Manuel Thalmann | a5430d0298 | ||
Manuel Thalmann | 1e3968fd0d | ||
Manuel Thalmann | 3ca7554422 | ||
Manuel Thalmann | aa8513b15a | ||
Manuel Thalmann | 5f4548403c | ||
Manuel Thalmann | 65f93af0b3 | ||
Manuel Thalmann | 70c9155bc0 | ||
Manuel Thalmann | b09452a7bc | ||
Manuel Thalmann | 6c8882efd9 | ||
Manuel Thalmann | 61be50fb63 | ||
Manuel Thalmann | d6d416ce17 | ||
Manuel Thalmann | 29a744a154 | ||
Manuel Thalmann | 6274918f4b | ||
Manuel Thalmann | cf1de70b3b | ||
Manuel Thalmann | 61e38c2bec | ||
Manuel Thalmann | 7632e91793 | ||
Manuel Thalmann | c481c54f41 | ||
Manuel Thalmann | 741b698a33 | ||
Manuel Thalmann | 395945ec72 | ||
Manuel Thalmann | f45081ff99 | ||
Manuel Thalmann | 2e5fa8f5a0 | ||
Manuel Thalmann | f19e2eba1a | ||
Manuel Thalmann | ef56c3ab4b | ||
Manuel Thalmann | 09984cff8e | ||
Manuel Thalmann | 869ca8870d | ||
Manuel Thalmann | 2063d276ec | ||
Manuel Thalmann | e8db7ea047 | ||
Manuel Thalmann | 0cfa2f2fa0 | ||
Manuel Thalmann | 97cbcc7dfb | ||
Manuel Thalmann | 00aae35c96 | ||
Manuel Thalmann | d95396b06b | ||
Manuel Thalmann | c46d241147 | ||
Manuel Thalmann | 1696207b0a | ||
Manuel Thalmann | 52c5a6c6a3 | ||
Manuel Thalmann | c347ff6377 | ||
Manuel Thalmann | aa4c392569 | ||
Manuel Thalmann | 3a45dfca73 | ||
Manuel Thalmann | a9bd4f5eb4 | ||
Manuel Thalmann | cfd1559782 | ||
Manuel Thalmann | 8dd65b0ad3 | ||
Manuel Thalmann | 308e86efc8 | ||
Manuel Thalmann | add76b3986 | ||
Manuel Thalmann | 1a0e83735c | ||
Manuel Thalmann | 1d8c416fe1 | ||
Manuel Thalmann | 894eb30f23 | ||
Manuel Thalmann | a23b51f9f8 | ||
Manuel Thalmann | 54114ffbd2 | ||
Manuel Thalmann | f4eb58a3a1 | ||
Manuel Thalmann | a553bc9cb7 | ||
Manuel Thalmann | 9c603d173f | ||
Manuel Thalmann | 9ed7773341 | ||
Manuel Thalmann | 5b36f75abf | ||
Manuel Thalmann | 3decf57f5e | ||
Manuel Thalmann | 9dff674894 | ||
Manuel Thalmann | 8878a7d7fe | ||
Manuel Thalmann | 7e31a0cac5 | ||
Manuel Thalmann | d2ddca8ab5 | ||
Manuel Thalmann | db31ae2419 | ||
Manuel Thalmann | 40d1ef5c78 | ||
Manuel Thalmann | 1b4204cf3b | ||
Manuel Thalmann | 460a30bf89 | ||
Manuel Thalmann | 2e92b9f6db | ||
Manuel Thalmann | d6084b0ee8 | ||
Manuel Thalmann | 5209a9d5d8 | ||
Manuel Thalmann | f469bd6eb7 | ||
Manuel Thalmann | a43f09dce4 | ||
Manuel Thalmann | 1baf93c48a | ||
Manuel Thalmann | 8034b77370 | ||
Manuel Thalmann | c52ea65121 | ||
Manuel Thalmann | 8473cf201f | ||
Manuel Thalmann | 0e940efeeb | ||
Manuel Thalmann | f3e1e4ee00 | ||
Manuel Thalmann | b9dbb50f76 | ||
Manuel Thalmann | 4068e95504 | ||
Manuel Thalmann | 186d84704d | ||
Manuel Thalmann | 5c6b0c18fd | ||
Manuel Thalmann | 43e6cf47d1 | ||
Manuel Thalmann | eea20772be | ||
Manuel Thalmann | 1fc9dafb89 | ||
Manuel Thalmann | 49770fa11b | ||
Manuel Thalmann | 76496d0a7d | ||
Manuel Thalmann | 39f39238fe | ||
Manuel Thalmann | 2ab3b3b9cd | ||
Manuel Thalmann | 300f629453 | ||
Manuel Thalmann | 8a59fd4c5d | ||
Manuel Thalmann | daa37a1b9b | ||
Manuel Thalmann | 47b014e3cd | ||
Manuel Thalmann | 617c6ce8ef | ||
Manuel Thalmann | 329007b063 | ||
Manuel Thalmann | 67ccb819e0 | ||
Manuel Thalmann | f278409727 | ||
Manuel Thalmann | a8b35f4406 | ||
Manuel Thalmann | 828c27352d | ||
Manuel Thalmann | af8541791b | ||
Manuel Thalmann | 1dbfe0ab4d | ||
Manuel Thalmann | 594a425cd3 | ||
Manuel Thalmann | a9b8ecf105 | ||
Manuel Thalmann | d345488655 | ||
Manuel Thalmann | e4bf4898ec | ||
Manuel Thalmann | de3aaedad0 | ||
Manuel Thalmann | 4fd18e32b6 | ||
Manuel Thalmann | 98248d23e0 | ||
Manuel Thalmann | ae555e133d | ||
Manuel Thalmann | 6a8303fdc2 | ||
Manuel Thalmann | f2cd00248a | ||
Manuel Thalmann | 7118ec594f | ||
Manuel Thalmann | 580f06779f | ||
Manuel Thalmann | 43bc0fae7e | ||
Manuel Thalmann | f5533bf7f6 | ||
Manuel Thalmann | 2aa608bc8d | ||
Manuel Thalmann | d1a1a13346 | ||
Manuel Thalmann | 95418ba6aa | ||
Manuel Thalmann | 6c06f719c9 | ||
Manuel Thalmann | bf9679e522 | ||
Manuel Thalmann | 0af53191ba | ||
Manuel Thalmann | e735320fcb | ||
Manuel Thalmann | 76ba329ad2 | ||
Manuel Thalmann | 69925fac74 | ||
Manuel Thalmann | 8ad9f00956 | ||
Manuel Thalmann | 2ac7045883 | ||
Manuel Thalmann | 4613f82442 | ||
Manuel Thalmann | 95922559c2 | ||
Manuel Thalmann | 2eebf4db53 | ||
Manuel Thalmann | 2ee11b7fa3 | ||
Manuel Thalmann | 2612b6b6de | ||
Manuel Thalmann | 584841870b | ||
Manuel Thalmann | e204d0f819 | ||
Manuel Thalmann | a8a99ffc23 | ||
Manuel Thalmann | 88dfbc30c9 | ||
Manuel Thalmann | eeee33917a | ||
Manuel Thalmann | 6ce28f4751 | ||
Manuel Thalmann | db99c0a10b | ||
Manuel Thalmann | 4f3573329a | ||
Manuel Thalmann | 7b31ecf85e | ||
Manuel Thalmann | 1d0270e455 | ||
Manuel Thalmann | 32daa81086 | ||
Manuel Thalmann | a86b1b1069 | ||
Manuel Thalmann | 52caf4d991 | ||
Manuel Thalmann | 211700fbee | ||
Manuel Thalmann | 38deb9dc88 | ||
Manuel Thalmann | cfc5643347 | ||
Manuel Thalmann | 60b9464dfb | ||
Manuel Thalmann | 09009b3541 | ||
Manuel Thalmann | 9d024f9c3e | ||
Manuel Thalmann | 7b9eb1b370 | ||
Manuel Thalmann | 99cc9cb12b | ||
Manuel Thalmann | b024445989 | ||
Manuel Thalmann | 498d65e24a | ||
Manuel Thalmann | 0e30d9cc0b | ||
Manuel Thalmann | 2e042f9e1b | ||
Manuel Thalmann | 339379a04f | ||
Manuel Thalmann | 5145b5383f | ||
Manuel Thalmann | e9b0cb3f7f | ||
Manuel Thalmann | 1d6fafa73f | ||
Manuel Thalmann | 37e5636da1 | ||
Manuel Thalmann | 9ab7cdc4d0 | ||
Manuel Thalmann | 27d2797ed2 | ||
Manuel Thalmann | 164a3b60ef | ||
Manuel Thalmann | d13d774b4b | ||
Manuel Thalmann | 7b8849e0bf | ||
Manuel Thalmann | 629e2044c7 | ||
Manuel Thalmann | 9602b40c50 | ||
Manuel Thalmann | ebc90e6e2e | ||
Manuel Thalmann | 603d665f9e | ||
Manuel Thalmann | 5b299e432d | ||
Manuel Thalmann | 32a190342f | ||
Manuel Thalmann | 51558e02c9 | ||
Manuel Thalmann | 87036479fa | ||
Manuel Thalmann | 118b653a63 | ||
Manuel Thalmann | 0fc2d9348c | ||
Manuel Thalmann | c95519fef7 | ||
Manuel Thalmann | c437c6c6cf | ||
Manuel Thalmann | 0c47df9f00 | ||
Manuel Thalmann | e230a95209 | ||
Manuel Thalmann | dbe0515965 | ||
Manuel Thalmann | 13b33d6ee8 | ||
Manuel Thalmann | 2bde374dca | ||
Manuel Thalmann | a919979a68 | ||
Manuel Thalmann | 83bf9a4d32 | ||
Manuel Thalmann | fa57e95def | ||
Manuel Thalmann | 1e6d44d1bb | ||
Manuel Thalmann | 2fe3b639f7 | ||
Manuel Thalmann | 92dee406ff | ||
Manuel Thalmann | c37ea23130 | ||
Manuel Thalmann | a9769bd980 | ||
Manuel Thalmann | 290b9a3611 | ||
Manuel Thalmann | 633df57fee | ||
Manuel Thalmann | f43e612883 | ||
Manuel Thalmann | 00ee61ac90 | ||
Manuel Thalmann | 39803bbbba | ||
Manuel Thalmann | db38915911 | ||
Manuel Thalmann | fb02b79a4d | ||
Manuel Thalmann | 8c447dabbe | ||
Manuel Thalmann | 7a47b016ef | ||
Manuel Thalmann | a9ae8c9a98 | ||
Manuel Thalmann | 72fd72f5bd | ||
Manuel Thalmann | 4906bb0b24 | ||
Manuel Thalmann | 2e03728d44 | ||
Manuel Thalmann | b5d9489f21 | ||
Manuel Thalmann | d9be9fe3da | ||
Manuel Thalmann | 8dbac3564d | ||
Manuel Thalmann | 38f65b3e63 | ||
Manuel Thalmann | 06b314b1f5 | ||
Manuel Thalmann | 9bcdd2fd9f | ||
Manuel Thalmann | 429cc25c4c | ||
Manuel Thalmann | 629046b212 | ||
Manuel Thalmann | 369fcaed00 | ||
Manuel Thalmann | cc77eaf05c | ||
Manuel Thalmann | 9324e3074f | ||
Manuel Thalmann | c5be70b11d | ||
Manuel Thalmann | 38ed315bd2 | ||
Manuel Thalmann | d3dd4ff5a9 | ||
Manuel Thalmann | 5b0074bea9 | ||
Manuel Thalmann | 6612b9e7d4 | ||
Manuel Thalmann | 1fb70ecda0 | ||
Manuel Thalmann | 781d133e7e | ||
Manuel Thalmann | bba8da3b84 | ||
Manuel Thalmann | 86732247b9 | ||
Manuel Thalmann | be41a143c0 | ||
Manuel Thalmann | 8f0e147fa0 | ||
Manuel Thalmann | fa60493ae1 | ||
Manuel Thalmann | a6985d7e1b | ||
Manuel Thalmann | 5bb0cd41cc | ||
Manuel Thalmann | 467b429bd9 | ||
Manuel Thalmann | f228817817 | ||
Manuel Thalmann | e327ca8d17 | ||
Manuel Thalmann | 734ae7bd05 | ||
Manuel Thalmann | cd3f85103a | ||
Manuel Thalmann | dbdedad1d9 | ||
Manuel Thalmann | 31c30e6854 | ||
Manuel Thalmann | 89183dbeed | ||
Manuel Thalmann | 64c2ba9127 | ||
Manuel Thalmann | d07d4c9057 | ||
Manuel Thalmann | bb0b4a5988 | ||
Manuel Thalmann | 1be172ae07 | ||
Manuel Thalmann | fad332b267 | ||
Manuel Thalmann | c137952345 | ||
Manuel Thalmann | 156c72c977 | ||
Manuel Thalmann | 8d9e9ca3a6 | ||
Manuel Thalmann | ca2a5f23b0 | ||
Manuel Thalmann | 4e87165196 | ||
Manuel Thalmann | 0d926a06b8 | ||
Manuel Thalmann | ea991759af | ||
Manuel Thalmann | d285e69c97 | ||
Manuel Thalmann | 974b1b8083 | ||
Manuel Thalmann | 6e505faada | ||
Manuel Thalmann | 8e1f3e0148 | ||
Manuel Thalmann | 346614deee | ||
Manuel Thalmann | 4d2c02c2b5 | ||
Manuel Thalmann | 852b1c71ce | ||
Manuel Thalmann | e87a39691b | ||
Manuel Thalmann | 06cbabc36c | ||
Manuel Thalmann | 5b650f7efc | ||
Manuel Thalmann | 5f0a25deb2 | ||
Manuel Thalmann | 3c6933c03d | ||
Manuel Thalmann | f3049e9fd2 | ||
Manuel Thalmann | 4a34593d83 | ||
Manuel Thalmann | 7d322b8759 | ||
Manuel Thalmann | 4c9b801fd2 | ||
Manuel Thalmann | f1e5d22043 | ||
Manuel Thalmann | b40c6d71d4 | ||
Manuel Thalmann | 083703e44b | ||
Manuel Thalmann | 298fd5de72 | ||
Manuel Thalmann | ee8d8c12cd | ||
Manuel Thalmann | 64d4b1d7a4 | ||
Manuel Thalmann | 029fd19388 | ||
Manuel Thalmann | 15637c34ce | ||
Manuel Thalmann | cba6a2cada | ||
Manuel Thalmann | 5484010371 | ||
Manuel Thalmann | 1922eed510 | ||
Manuel Thalmann | 39fc0e85e5 | ||
Manuel Thalmann | 3c22ba0577 | ||
Manuel Thalmann | 795d50a2a3 | ||
Manuel Thalmann | 209fc34187 | ||
Manuel Thalmann | bd0b61f8ed | ||
Manuel Thalmann | 81a3e10d65 | ||
Manuel Thalmann | 427586e432 | ||
Manuel Thalmann | 697a1c77a5 | ||
Manuel Thalmann | a3c582c627 | ||
Manuel Thalmann | 51d56d6170 | ||
Manuel Thalmann | b65d7c4604 | ||
Manuel Thalmann | 9c6d5509f6 | ||
Manuel Thalmann | ac814a123d | ||
Manuel Thalmann | 2b38c0e81e | ||
Manuel Thalmann | 0713eed08c | ||
Manuel Thalmann | cc1f27f568 | ||
Manuel Thalmann | 843e9dba26 | ||
Manuel Thalmann | 6d8b4b0424 | ||
Manuel Thalmann | 7db404be82 | ||
Manuel Thalmann | 5ceb570098 | ||
Manuel Thalmann | 572ac87336 | ||
Manuel Thalmann | dbce62fbd9 | ||
Manuel Thalmann | b54bea2391 | ||
Manuel Thalmann | 9b46eaec15 | ||
Manuel Thalmann | 74d4454bb0 | ||
Manuel Thalmann | a7390cbf9b | ||
Manuel Thalmann | 6b1c97956d | ||
Manuel Thalmann | 0ebe9ace15 | ||
Manuel Thalmann | 051019072a | ||
Manuel Thalmann | 2680dce208 | ||
Manuel Thalmann | 8cc8da2eb6 | ||
Manuel Thalmann | 46237dc982 | ||
Manuel Thalmann | 699418155b | ||
Manuel Thalmann | d3a38daafc | ||
Manuel Thalmann | 2a434b8653 | ||
Manuel Thalmann | 7411963897 | ||
Manuel Thalmann | 5bffc229a4 | ||
Manuel Thalmann | 68f8eb81f9 | ||
Manuel Thalmann | a3ea73efbf | ||
Manuel Thalmann | eeabf6dadf | ||
Manuel Thalmann | a613f92535 | ||
Manuel Thalmann | ef49fab43a | ||
Manuel Thalmann | 358cb3a327 | ||
Manuel Thalmann | e9434ef43f | ||
Manuel Thalmann | a125d4e154 | ||
Manuel Thalmann | 73070fb232 | ||
Manuel Thalmann | f85140da48 | ||
Manuel Thalmann | f1406cd372 | ||
Manuel Thalmann | 54e629f706 | ||
Manuel Thalmann | 81d6a7cbd3 | ||
Manuel Thalmann | 8d144252bb | ||
Manuel Thalmann | 894b397ffd | ||
Manuel Thalmann | f74f92e980 | ||
Manuel Thalmann | ce37071c0f | ||
Manuel Thalmann | 4c1ccee7d1 | ||
Manuel Thalmann | dd02a51d03 | ||
Manuel Thalmann | e8e6866f1e | ||
Manuel Thalmann | d3124852ef | ||
Manuel Thalmann | 1aa3066140 | ||
Manuel Thalmann | 1856d1401f | ||
Manuel Thalmann | 6f7ad07540 | ||
Manuel Thalmann | 82a02ca080 | ||
Manuel Thalmann | caf781e913 | ||
Manuel Thalmann | e1ec40ad03 | ||
Manuel Thalmann | 279ca46478 | ||
Manuel Thalmann | 69ca2c4630 | ||
Manuel Thalmann | f08589266d | ||
Manuel Thalmann | 0a63082bec | ||
Manuel Thalmann | 3645f668eb | ||
Manuel Thalmann | f9eb812b5b | ||
Manuel Thalmann | 482b72330e | ||
Manuel Thalmann | b79053bfc9 | ||
Manuel Thalmann | c15599223b | ||
Manuel Thalmann | 660c32b790 |
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
*.fish text eol=lf
|
||||
*.sh text eol=lf
|
|
@ -10,6 +10,10 @@
|
|||
{
|
||||
"name": "archiso-valhalla",
|
||||
"path": "./archiso"
|
||||
},
|
||||
{
|
||||
"name": "winiso-valhalla",
|
||||
"path": "./winiso"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ automated_script() {
|
|||
sleep 1
|
||||
done
|
||||
printf '%s: downloading %s\n' "$0" "${script}"
|
||||
curl "${script}" --location --retry-connrefused --retry 10 -s -o /tmp/startup_script
|
||||
curl "${script}" --location --retry-connrefused --retry 10 --fail -s -o /tmp/startup_script
|
||||
rt=$?
|
||||
else
|
||||
cp "${script}" /tmp/startup_script
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
extra-experimental-features = nix-command flakes
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/airootfs/root/.zlogin b/airootfs/root/.zlogin
|
||||
index bf6bc8f..76e5893 100755
|
||||
index bf6bc8f..a0dae7b 100755
|
||||
--- a/airootfs/root/.zlogin
|
||||
+++ b/airootfs/root/.zlogin
|
||||
@@ -4,3 +4,18 @@ if grep -Fqa 'accessibility=' /proc/cmdline &> /dev/null; then
|
||||
@@ -4,3 +4,19 @@ if grep -Fqa 'accessibility=' /proc/cmdline &> /dev/null; then
|
||||
fi
|
||||
|
||||
~/.automated_script.sh
|
||||
|
@ -16,13 +16,14 @@ index bf6bc8f..76e5893 100755
|
|||
+
|
||||
+git diff -p -R --no-ext-diff --no-color --diff-filter=M \
|
||||
+ | grep -E "^(diff|(old|new) mode)" --color=never \
|
||||
+ | sed "/^diff/{ x; d; }; x; /./{ p; z; }; x;" \
|
||||
+ | git apply
|
||||
+
|
||||
+popd > /dev/null
|
||||
+
|
||||
+loadkeys de_CH-latin1
|
||||
diff --git a/packages.x86_64 b/packages.x86_64
|
||||
index 9e876e7..b89ab30 100755
|
||||
index 9e876e7..c5db92a 100755
|
||||
--- a/packages.x86_64
|
||||
+++ b/packages.x86_64
|
||||
@@ -30,8 +30,10 @@ ethtool
|
||||
|
@ -36,7 +37,15 @@ index 9e876e7..b89ab30 100755
|
|||
gnu-netcat
|
||||
gpart
|
||||
gpm
|
||||
@@ -75,6 +77,7 @@ nbd
|
||||
@@ -45,6 +47,7 @@ irssi
|
||||
iw
|
||||
iwd
|
||||
jfsutils
|
||||
+jq
|
||||
kitty-terminfo
|
||||
ldns
|
||||
less
|
||||
@@ -75,6 +78,7 @@ nbd
|
||||
ndisc6
|
||||
nfs-utils
|
||||
nilfs-utils
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
flake-utils.url = "github:numtide/flake-utils?ref=b1d9ab70662946ef0850d488da1c9019f3a9752a";
|
||||
};
|
||||
|
||||
outputs = { self, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem (
|
||||
outputs = { self, flake-utils, nixpkgs }: (flake-utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
|
@ -32,5 +32,10 @@
|
|||
packages = {
|
||||
archiso = pkgs.archiso;
|
||||
};
|
||||
});
|
||||
})) // {
|
||||
valhalla = {
|
||||
DerGeret = import ./profiles/machines/manuel/DerGeret/Arch/config.nix;
|
||||
ManuSurface = import ./profiles/machines/manuel/ManuSurface/Arch/config.nix;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
15
lib/eval-attribute.nix
Normal file
15
lib/eval-attribute.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
let
|
||||
inherit (nixpkgs) lib;
|
||||
nixpkgs = import <nixpkgs> { config = {}; overlay = []; };
|
||||
property = (builtins.getEnv "PROPERTY");
|
||||
processor = if (builtins.stringLength property > 0)
|
||||
then
|
||||
(_: lib.attrsets.getAttrFromPath (lib.strings.splitString "." property) _)
|
||||
else
|
||||
(_: _);
|
||||
in
|
||||
_: processor (lib.evalModules {
|
||||
modules = [
|
||||
_
|
||||
];
|
||||
}).config
|
16
lib/eval-module.nix
Normal file
16
lib/eval-module.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
let
|
||||
inherit (nixpkgs) lib;
|
||||
nixpkgs = import <nixpkgs> { config = {}; overlay = []; };
|
||||
file = (builtins.getEnv "FILE");
|
||||
property = (builtins.getEnv "PROPERTY");
|
||||
processor = if (builtins.stringLength property > 0)
|
||||
then
|
||||
(_: lib.attrsets.getAttrFromPath (lib.strings.splitString "." property) _)
|
||||
else
|
||||
(_: _);
|
||||
in
|
||||
processor (lib.evalModules {
|
||||
modules = [
|
||||
(import file)
|
||||
];
|
||||
}).config
|
|
@ -1,41 +0,0 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
|
||||
gitOptions = {
|
||||
defaultBranch = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The name of the default branch in git.";
|
||||
default = null;
|
||||
};
|
||||
|
||||
flow = {
|
||||
mainBranch = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The name of the stable branch in git flow.";
|
||||
default = null;
|
||||
};
|
||||
|
||||
devBranch = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The name of the development branch in git flow.";
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
|
||||
aliases = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
description = "Git command aliases to install.";
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
in {
|
||||
options = {
|
||||
valhalla = {
|
||||
git = gitOptions;
|
||||
};
|
||||
};
|
||||
}
|
55
lib/modules/hardware.nix
Normal file
55
lib/modules/hardware.nix
Normal file
|
@ -0,0 +1,55 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
in {
|
||||
options = {
|
||||
valhalla = {
|
||||
hardware = {
|
||||
components = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "The names of the hardware components of the computer.";
|
||||
default = [];
|
||||
};
|
||||
|
||||
eyeX = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether a Tobii EyeX device is present.";
|
||||
default = false;
|
||||
};
|
||||
|
||||
amdCPU = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether an AMD CPU is present.";
|
||||
default = false;
|
||||
};
|
||||
|
||||
nvidiaGPU = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether an NVIDIA GPU is present.";
|
||||
default = false;
|
||||
};
|
||||
|
||||
corsairDevice = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether a Corsair device is present.";
|
||||
default = false;
|
||||
};
|
||||
|
||||
elgatoWave = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether an Elgato Wave device is present.";
|
||||
default = false;
|
||||
};
|
||||
|
||||
logitechG = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether a Logitech G device is present.";
|
||||
default = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
52
lib/modules/os.nix
Normal file
52
lib/modules/os.nix
Normal file
|
@ -0,0 +1,52 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
in {
|
||||
options = {
|
||||
valhalla = mkOption {
|
||||
type = types.submodule (
|
||||
{ extendModules, ... }:
|
||||
let
|
||||
osVariant = extendModules {
|
||||
modules = [
|
||||
({ config, ... }: {
|
||||
options = {
|
||||
config = mkOption {
|
||||
type = types.attrs;
|
||||
description = "The configuration of the Operating System.";
|
||||
default = builtins.removeAttrs config ["_module" "config" "linux" "windows"];
|
||||
visible = false;
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
linuxVariant = osVariant.extendModules { };
|
||||
windowsVariant = osVariant.extendModules { };
|
||||
in {
|
||||
options = {
|
||||
linux = mkOption {
|
||||
inherit (linuxVariant) type;
|
||||
description = "The options for setting up Linux.";
|
||||
default = {};
|
||||
visible = "shallow";
|
||||
};
|
||||
|
||||
windows = mkOption {
|
||||
inherit (windowsVariant) type;
|
||||
description = "The options for setting up Windows.";
|
||||
default = {};
|
||||
visible = "shallow";
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
description = "Configuration for PortValhalla.";
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
}
|
59
lib/modules/packages/git.nix
Normal file
59
lib/modules/packages/git.nix
Normal file
|
@ -0,0 +1,59 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
|
||||
gitType = types.submodule (
|
||||
{ ... }: {
|
||||
options = {
|
||||
defaultBranch = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The name of the default branch in newly created repositories.";
|
||||
default = null;
|
||||
};
|
||||
|
||||
flow = {
|
||||
mainBranch = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The name of the stable branch in git flow.";
|
||||
default = null;
|
||||
};
|
||||
|
||||
devBranch = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The name of the development branch in git flow.";
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
|
||||
aliases = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
description = "The git command aliases to install.";
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
gitOption = mkOption {
|
||||
type = gitType;
|
||||
description = "The git related options.";
|
||||
default = {};
|
||||
};
|
||||
in {
|
||||
options = {
|
||||
valhalla = {
|
||||
git = gitOption;
|
||||
|
||||
users = mkOption {
|
||||
type = types.attrsOf (types.submodule (
|
||||
{ ... }: {
|
||||
options = {
|
||||
git = gitOption;
|
||||
};
|
||||
}));
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
44
lib/modules/packages/nextcloud.nix
Normal file
44
lib/modules/packages/nextcloud.nix
Normal file
|
@ -0,0 +1,44 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
mkEnableOption
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
|
||||
syncType = types.submodule (
|
||||
{ ... }: {
|
||||
options = {
|
||||
remotePath = mkOption {
|
||||
type = types.str;
|
||||
description = "The path to the folder on the cloud to sync.";
|
||||
};
|
||||
|
||||
localPath = mkOption {
|
||||
type = types.str;
|
||||
description = "The path to sync the cloud content to.";
|
||||
};
|
||||
|
||||
virtualFiles = (mkEnableOption "virtual file support") // {
|
||||
default = true;
|
||||
};
|
||||
};
|
||||
});
|
||||
in {
|
||||
options = {
|
||||
valhalla.windows.users = mkOption {
|
||||
type = types.attrsOf (types.submodule (
|
||||
{ ... }: {
|
||||
options = {
|
||||
nextcloud = {
|
||||
folderSyncs = mkOption {
|
||||
type = types.listOf syncType;
|
||||
description = "The folders to synchronize.";
|
||||
default = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}));
|
||||
};
|
||||
};
|
||||
}
|
60
lib/modules/packages/oh-my-posh.nix
Normal file
60
lib/modules/packages/oh-my-posh.nix
Normal file
|
@ -0,0 +1,60 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
|
||||
themeType = types.submodule (
|
||||
{ config, ... }: {
|
||||
options = {
|
||||
source = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
description = "The path to the oh-my-posh theme to use.";
|
||||
default = null;
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The name of the theme.";
|
||||
default = if (config.source != null)
|
||||
then
|
||||
lib.strings.removeSuffix ".omp" (lib.strings.removeSuffix ".json" (builtins.baseNameOf config.source))
|
||||
else
|
||||
null;
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
ompType = types.submodule (
|
||||
{ config, ... }: {
|
||||
options = {
|
||||
theme = mkOption {
|
||||
type = types.either types.str themeType;
|
||||
description = "The default theme.";
|
||||
default = {};
|
||||
};
|
||||
|
||||
additionalThemes = mkOption {
|
||||
type = types.listOf themeType;
|
||||
description = "A set of additional themes to install.";
|
||||
default = [];
|
||||
};
|
||||
};
|
||||
});
|
||||
in {
|
||||
options = {
|
||||
valhalla.users = mkOption {
|
||||
type = types.attrsOf (types.submodule (
|
||||
{ ... }: {
|
||||
options = {
|
||||
oh-my-posh = mkOption {
|
||||
type = ompType;
|
||||
description = "The Oh My Posh configuration to apply.";
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
}));
|
||||
};
|
||||
};
|
||||
}
|
40
lib/modules/packages/rclone.nix
Normal file
40
lib/modules/packages/rclone.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
|
||||
syncType = types.submodule (
|
||||
{ ... }: {
|
||||
options = {
|
||||
dirName = mkOption {
|
||||
type = types.str;
|
||||
description = "The name of the directory to sync the remote files to.";
|
||||
};
|
||||
|
||||
cacheDuration = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The amount of time to keep cached files.";
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
});
|
||||
in {
|
||||
options = {
|
||||
valhalla.linux.users = mkOption {
|
||||
type = types.attrsOf (types.submodule (
|
||||
{ ... }: {
|
||||
options = {
|
||||
rclone = {
|
||||
configurations = mkOption {
|
||||
type = types.attrsOf syncType;
|
||||
description = "The configurations of the rclone mounts.";
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
}));
|
||||
};
|
||||
};
|
||||
}
|
|
@ -12,6 +12,7 @@
|
|||
software =
|
||||
let
|
||||
inherit (cfg.software)
|
||||
coding
|
||||
common
|
||||
desktopExperience
|
||||
school
|
||||
|
@ -42,6 +43,12 @@
|
|||
default = common && !server;
|
||||
};
|
||||
|
||||
fileSync = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether file syncs should be installed.";
|
||||
default = common && !server;
|
||||
};
|
||||
|
||||
school = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether software for studies should be installed.";
|
||||
|
@ -77,6 +84,12 @@
|
|||
description = "A value indicating whether development apps should be installed.";
|
||||
default = common;
|
||||
};
|
||||
|
||||
python = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether apps for coding python should be installed.";
|
||||
default = coding;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
91
lib/modules/users.nix
Normal file
91
lib/modules/users.nix
Normal file
|
@ -0,0 +1,91 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
|
||||
capitalize = (import ../text.nix { inherit lib; }).capitalize;
|
||||
|
||||
userType = types.submodule (
|
||||
{ ... } : {
|
||||
options = {
|
||||
displayName = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The human-readable name of the user.";
|
||||
default = null;
|
||||
};
|
||||
|
||||
mailAddress = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The mail address of the user.";
|
||||
default = null;
|
||||
};
|
||||
|
||||
groups = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "The additional groups of the user.";
|
||||
default = [];
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
linuxUserType = types.submodule (
|
||||
{ ... }: {
|
||||
options = {
|
||||
defaultShell = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The default shell of the user.";
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
winUserType = types.submodule (
|
||||
{ ... }: {
|
||||
options = {
|
||||
microsoftAccount = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether this user is a Microsoft Account.";
|
||||
default = false;
|
||||
};
|
||||
};
|
||||
});
|
||||
in {
|
||||
options = {
|
||||
valhalla = {
|
||||
users = mkOption {
|
||||
type = types.attrsOf userType;
|
||||
description = "The users to create on the machine.";
|
||||
default = {};
|
||||
};
|
||||
|
||||
linux.users = mkOption {
|
||||
type = types.attrsOf linuxUserType;
|
||||
};
|
||||
|
||||
windows = mkOption {
|
||||
type = types.submoduleWith {
|
||||
modules = [
|
||||
({ config, options, ... }: {
|
||||
options = {
|
||||
users = mkOption {
|
||||
type = types.attrsOf winUserType;
|
||||
};
|
||||
|
||||
winUsers = mkOption {
|
||||
type = options.users.type;
|
||||
description = "Blablabla";
|
||||
default = (lib.attrsets.concatMapAttrs (
|
||||
name: options: {
|
||||
${capitalize name} = options;
|
||||
}) config.users);
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -6,10 +6,17 @@
|
|||
;
|
||||
in {
|
||||
imports = [
|
||||
./git.nix
|
||||
./packages/git.nix
|
||||
./packages/nextcloud.nix
|
||||
./packages/oh-my-posh.nix
|
||||
./packages/rclone.nix
|
||||
./hardware.nix
|
||||
./i18n.nix
|
||||
./os.nix
|
||||
./partition.nix
|
||||
./software.nix
|
||||
./users.nix
|
||||
./windows.nix
|
||||
];
|
||||
|
||||
options = {
|
||||
|
|
47
lib/modules/windows.nix
Normal file
47
lib/modules/windows.nix
Normal file
|
@ -0,0 +1,47 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
mkDefault
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkOption
|
||||
types
|
||||
;
|
||||
|
||||
capitalize = (import ../text.nix { inherit lib; }).capitalize;
|
||||
in {
|
||||
options = {
|
||||
valhalla = {
|
||||
windows = {
|
||||
dualboot = {
|
||||
enable = mkEnableOption "dual boot";
|
||||
|
||||
linuxPercentage = mkOption {
|
||||
type = types.number;
|
||||
description = "The percentage of the disk size reserved for Linux.";
|
||||
};
|
||||
};
|
||||
|
||||
showFileExt = mkOption {
|
||||
type = types.bool;
|
||||
description = "A value indicating whether file extensions should be displayed in Windows Explorer.";
|
||||
default = true;
|
||||
};
|
||||
|
||||
legacyIconSpacing = mkEnableOption "legacy icon spacing" // {
|
||||
default = true;
|
||||
};
|
||||
|
||||
dynamicLighting = mkEnableOption "dynamic lighting";
|
||||
adware = mkEnableOption "adware"; # Fuck you for displaying ads on an OS I fricking paid for!
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
valhalla.windows = {
|
||||
setupUser.name = mkDefault (capitalize config.valhalla.setupUser.name);
|
||||
dualboot.linuxPercentage = mkIf (!config.valhalla.windows.dualboot.enable) (mkDefault 0);
|
||||
};
|
||||
};
|
||||
}
|
9
lib/text.nix
Normal file
9
lib/text.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ lib, ... }: {
|
||||
capitalize = text:
|
||||
let
|
||||
chars = lib.strings.stringToCharacters text;
|
||||
in lib.strings.concatStrings (
|
||||
[(lib.strings.toUpper (builtins.elemAt chars 0))] ++
|
||||
(lib.lists.drop 1 chars)
|
||||
);
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
#!/bin/bash -e
|
||||
function install() {
|
||||
function installDrivers() {
|
||||
. "../../../scripts/Arch/Config/SecureBoot/install.sh";
|
||||
. "../../../scripts/Arch/Software/nvidia-dkms/install.sh";
|
||||
. "../../../scripts/Arch/Software/xone/install.sh";
|
||||
. "../../../scripts/Arch/Software/bt-dualboot/install.sh";
|
||||
}
|
||||
|
||||
function initializeConfig() {
|
||||
. "../../../scripts/Unix/Devices/Logitech G903/install.sh";
|
||||
}
|
||||
|
||||
pushd "$dir" > /dev/null;
|
||||
. "../../../scripts/Arch/OS/install.sh";
|
||||
popd > /dev/null;
|
||||
}
|
||||
|
||||
install;
|
|
@ -1,139 +0,0 @@
|
|||
#!/bin/pwsh
|
||||
$env:WIN_COMPUTER_NAME = "DerGeret";
|
||||
$env:SETUP_SCRIPT_NAME = "$PSScriptRoot/Restore.ps1";
|
||||
|
||||
function Initialize-SetupConfig() {
|
||||
param(
|
||||
[xml] $config,
|
||||
[System.Xml.XmlNamespaceManager] $namespace
|
||||
);
|
||||
|
||||
$setupComponent = $config.SelectSingleNode(
|
||||
"/ua:unattend/ua:settings[@pass='windowsPE']/ua:component[@name='Microsoft-Windows-Setup']",
|
||||
$namespace);
|
||||
|
||||
$diskConfig = $setupComponent.SelectSingleNode("./ua:DiskConfiguration/ua:Disk", $namespace);
|
||||
|
||||
$partitionCreationContainer = $diskConfig.SelectSingleNode("./ua:CreatePartitions", $namespace);
|
||||
$partitionCreations = $partitionCreationContainer.SelectNodes("./ua:CreatePartition", $namespace);
|
||||
|
||||
$partitionModificationContainer = $diskConfig.SelectSingleNode("./ua:ModifyPartitions", $namespace);
|
||||
$partitionModifications = $partitionModificationContainer.SelectNodes("./ua:ModifyPartition", $namespace);
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the XML element describing the installation partition ID.
|
||||
#>
|
||||
function Get-InstallationPartition {
|
||||
$setupComponent.SelectSingleNode("./ua:ImageInstall/ua:OSImage/ua:InstallTo/ua:PartitionID", $namespace)
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Increases the ID of all partitions in the specified range by 1.
|
||||
#>
|
||||
function Move-PartitionRange {
|
||||
param (
|
||||
[int]$From = 0,
|
||||
[System.Nullable[int]]$To = $null,
|
||||
[int]$By = 1
|
||||
)
|
||||
|
||||
# Update installation partition ID if necessary
|
||||
$installationPartition = Get-InstallationPartition;
|
||||
$installPartitionID = [int]$installationPartition.InnerText;
|
||||
|
||||
if (($installPartitionID -ge $From) -and (($null -eq $To) -or ($installPartitionID -le $To))) {
|
||||
$installationPartition.InnerText = "$($installPartitionID + $By)";
|
||||
}
|
||||
|
||||
# Update IDs of all partition creations
|
||||
foreach ($partition in $partitionCreations) {
|
||||
$orderNode = $partition.SelectSingleNode("./ua:Order", $namespace);
|
||||
$order = [int]$orderNode.InnerText;
|
||||
$newOrder = $order;
|
||||
|
||||
if (($newOrder -ge $From) -and (($null -eq $To) -or ($newOrder -le $To))) {
|
||||
$newOrder += $By;
|
||||
}
|
||||
|
||||
if ($order -ne $newOrder) {
|
||||
$orderNode.InnerText = "$newOrder";
|
||||
}
|
||||
}
|
||||
|
||||
# Update IDs of all partition modifications
|
||||
foreach ($partition in $partitionModifications) {
|
||||
$partitionNode = $partition.SelectSingleNode("./ua:PartitionID", $namespace);
|
||||
$partitionID = [int]$partitionNode.InnerText;
|
||||
$newID = $partitionID;
|
||||
|
||||
if (($newID -ge $From) -and (($null -eq $To) -or ($newID -le $To))) {
|
||||
$newID += $By;
|
||||
}
|
||||
|
||||
if ($partitionID -ne $newID) {
|
||||
$partitionNode.InnerText = "$newID";
|
||||
$partition.SelectSingleNode("./ua:Order", $namespace).InnerText = "$newID";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Add-Partition {
|
||||
param (
|
||||
[int]$Index,
|
||||
[int]$Size,
|
||||
[string]$Type = "Primary"
|
||||
)
|
||||
|
||||
Move-PartitionRange -From $Index -By 1;
|
||||
|
||||
$newPartition = $partitionCreations[0].CloneNode($true);
|
||||
$newPartition.SelectSingleNode("./ua:Order", $namespace).InnerText = "$Index";
|
||||
$newPartition.SelectSingleNode("./ua:Type", $namespace).InnerText = "$Type";
|
||||
$newPartition.SelectSingleNode("./ua:Size", $namespace).InnerText = "$Size";
|
||||
$null = $partitionCreationContainer.AppendChild($newPartition);
|
||||
|
||||
$newModification = $partitionModifications[2].CloneNode($true);
|
||||
$newModification.SelectSingleNode("./ua:Order", $namespace).InnerText = "$Index";
|
||||
$newModification.SelectSingleNode("./ua:PartitionID", $namespace).InnerText = "$Index";
|
||||
$null = $partitionModificationContainer.AppendChild($newModification);
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Relocates the partition with the specified `$From` ID to the specified `$To` ID.
|
||||
#>
|
||||
function Invoke-PartitionRelocation {
|
||||
param (
|
||||
[int]$From,
|
||||
[int]$To
|
||||
)
|
||||
|
||||
Move-PartitionRange $From $From (-1 * ($From + 1))
|
||||
|
||||
if ($From -gt $To) {
|
||||
Move-PartitionRange $To ($From - 1);
|
||||
}
|
||||
elseif ($From -lt $To) {
|
||||
Move-PartitionRange ($From + 1) $To -1;
|
||||
}
|
||||
|
||||
Move-PartitionRange -1 -1 ($To + 1)
|
||||
}
|
||||
|
||||
# Resize EFI partition to 1GB
|
||||
$partitionCreations[1].SelectSingleNode("./ua:Size", $namespace).InnerText = "$(1024)";
|
||||
|
||||
# Swap Windows RE partition (partition #1) and boot partition (partition #2)
|
||||
Invoke-PartitionRelocation 2 1;
|
||||
|
||||
# Add space before Windows installation... wha-!? For Linux, ofc! I use Arch Linux, btw.
|
||||
$swapSpacer = 100;
|
||||
Add-Partition 2 $swapSpacer;
|
||||
|
||||
# Add a 1.2 TB partition for Linux
|
||||
Add-Partition 3 ((1.2 * 1024 * 1024) - 1024 - $swapSpacer);
|
||||
}
|
||||
|
||||
. "$PSScriptRoot/../../../scripts/Windows/OS/Setup.ps1";
|
|
@ -1,21 +0,0 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
../Generic/config.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
valhalla.partition.os.partitions = {
|
||||
Boot.keepExisting = true;
|
||||
|
||||
Windows = {
|
||||
index = 6;
|
||||
label = "OS";
|
||||
format = "ntfs";
|
||||
size = "+600G";
|
||||
mountPoint = "/win";
|
||||
mountOptions = ["force"];
|
||||
keepExisting = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
../config.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
valhalla.partition.os.partitions = {
|
||||
OS.label = "Arch";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
#!/bin/pwsh
|
||||
. "$PSScriptRoot/../../../scripts/Windows/Scripts/Context.ps1";
|
||||
. "$PSScriptRoot/../../../scripts/Windows/OS/Install.ps1";
|
||||
. "$PSScriptRoot/../../../scripts/Windows/Collections/Generic.ps1"
|
||||
|
||||
function Restore-Apps {
|
||||
param([Context] $context)
|
||||
Restore-GenericApps $context;
|
||||
}
|
||||
|
||||
[Context]$context = [Context]::new();
|
||||
Invoke-WindowsInstallation $context;
|
||||
Restart-Computer -Force;
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/pwsh
|
||||
$env:WIN_COMPUTER_NAME ??= "win11";
|
||||
$env:SETUP_SCRIPT_NAME ??= "$PSScriptRoot/Install.ps1";
|
||||
|
||||
. "$PSScriptRoot/../../../scripts/Windows/OS/Setup.ps1";
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/pwsh
|
||||
$env:SETUP_SCRIPT_NAME ??= "$PSScriptRoot/Install.ps1";
|
||||
|
||||
. "$PSScriptRoot/../../Generic/Windows/Setup.ps1";
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../../scripts/Arch/OS/install.fish"
|
||||
end
|
|
@ -1,26 +0,0 @@
|
|||
#!/bin/bash -e
|
||||
function install() {
|
||||
function installDrivers() {
|
||||
. "../../../scripts/Arch/Config/SecureBoot/install.sh";
|
||||
. "../../../scripts/Arch/Drivers/SurfaceBook2/install.sh";
|
||||
}
|
||||
|
||||
function installSoftware() {
|
||||
. "../../../scripts/Arch/Collections/school.sh";
|
||||
}
|
||||
|
||||
function initializeConfig() {
|
||||
. "../../../scripts/Common/Config/Steam/hidpi.sh";
|
||||
. "../../../scripts/Unix/Devices/Surface Book 2/install.sh";
|
||||
. "../../../scripts/Unix/Devices/Logitech G903/install.sh";
|
||||
|
||||
# Because, as it looks, Surface Books are fucking stupid.
|
||||
. "../../../scripts/Common/Config/GRUB/verbose.sh";
|
||||
}
|
||||
|
||||
pushd "${BASH_SOURCE%/*}" > /dev/null;
|
||||
. "../../../scripts/Arch/OS/install.sh";
|
||||
popd > /dev/null;
|
||||
}
|
||||
|
||||
install;
|
|
@ -1,16 +0,0 @@
|
|||
#!/bin/bash
|
||||
pushd "${BASH_SOURCE%/*}" > /dev/null;
|
||||
# Set Hostname
|
||||
sudo hostnamectl set-hostname ManuSurface;
|
||||
|
||||
source "../../../scripts/PopOS/Scripts/preinstall.sh";
|
||||
source "../../../scripts/PopOS/OS/install.sh";
|
||||
source "../../../scripts/Debian/Drivers/SurfaceBook2/Setup/install.sh";
|
||||
source "../../../scripts/PopOS/Software/Collections/school.sh";
|
||||
INSTALL_FONTS=1 NEXTCLOUD_DIR="${NEXTCLOUD_DIR}" source "../../../scripts/Common/Config/UserProfile/install.sh";
|
||||
|
||||
# Install equalizer
|
||||
source "../../../scripts/Common/Config/EasyEffects/SurfaceBook2/install.sh";
|
||||
|
||||
source "../../../scripts/PopOS/Scripts/postinstall.sh";
|
||||
popd > /dev/null;
|
|
@ -1,12 +0,0 @@
|
|||
#!/bin/bash
|
||||
pushd "${BASH_SOURCE%/*}" > /dev/null;
|
||||
|
||||
# Set Hostname
|
||||
sudo hostnamectl set-hostname ManuPopOSLive;
|
||||
source "../../scripts/PopOS/Scripts/prepare.sh";
|
||||
source "../../scripts/PopOS/OS/install.sh";
|
||||
source "../../scripts/PopOS/Software/Collections/personal.sh";
|
||||
INSTALL_FONTS=1 NEXTCLOUD_DIR="${NEXTCLOUD_DIR}" source "../../scripts/Common/Config/UserProfile/personal.sh";
|
||||
|
||||
source "../../scripts/PopOS/Scripts/postinstall.sh";
|
||||
popd > /dev/null;
|
4
profiles/machines/manuel/DerGeret/Arch/install.fish
Executable file
4
profiles/machines/manuel/DerGeret/Arch/install.fish
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
bash "$(status dirname)/install.sh"
|
||||
end
|
19
profiles/machines/manuel/DerGeret/Arch/install.sh
Executable file
19
profiles/machines/manuel/DerGeret/Arch/install.sh
Executable file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash -e
|
||||
function install() {
|
||||
function installDrivers() {
|
||||
. "../../../../../scripts/Arch/Config/SecureBoot/install.sh";
|
||||
. "../../../../../scripts/Arch/Software/nvidia-dkms/install.sh";
|
||||
. "../../../../../scripts/Arch/Software/xone/install.sh";
|
||||
. "../../../../../scripts/Arch/Software/bt-dualboot/install.sh";
|
||||
}
|
||||
|
||||
function initializeConfig() {
|
||||
. "../../../../../scripts/Unix/Devices/Logitech G903/install.sh";
|
||||
}
|
||||
|
||||
pushd "$dir" > /dev/null;
|
||||
. "../../../../../scripts/Arch/OS/install.sh";
|
||||
popd > /dev/null;
|
||||
}
|
||||
|
||||
install;
|
13
profiles/machines/manuel/DerGeret/Arch/setup.fish
Executable file
13
profiles/machines/manuel/DerGeret/Arch/setup.fish
Executable file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
|
||||
function getInstallerScript -V dir -S
|
||||
echo "$dir/install.fish"
|
||||
end
|
||||
|
||||
CONFIG_NAME="DerGeret" \
|
||||
ARCH_HOSTNAME="der-geret" \
|
||||
USER_DISPLAYNAME="Manuel Thalmann" \
|
||||
source "$(status dirname)/../../../../../scripts/Arch/OS/setup.fish"
|
||||
end
|
|
@ -4,6 +4,6 @@ pushd "${BASH_SOURCE%/*}" > /dev/null;
|
|||
CONFIG_MODULE="./config.nix" \
|
||||
ARCH_HOSTNAME="der-geret" \
|
||||
USER_DISPLAYNAME="Manuel Thalmann" \
|
||||
. "../../../scripts/Arch/OS/setup.sh";
|
||||
. "../../../../../scripts/Arch/OS/setup.sh";
|
||||
|
||||
popd > /dev/null;
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/pwsh
|
||||
$null = New-Module {
|
||||
. "$PSScriptRoot/../../../scripts/Windows/Scripts/Context.ps1";
|
||||
. "$PSScriptRoot/../../../scripts/Windows/OS/Manage.ps1";
|
||||
. "$PSScriptRoot/../../../../../scripts/Common/Scripts/Context.ps1";
|
||||
. "$PSScriptRoot/../../../../../scripts/Windows/OS/Legacy.ps1";
|
||||
|
||||
Write-Host "Starting Backup of Windows";
|
||||
$context = [Context]::new();
|
|
@ -1,12 +1,12 @@
|
|||
#!/bin/pwsh
|
||||
. "$PSScriptRoot/../../../scripts/Windows/Scripts/Context.ps1";
|
||||
. "$PSScriptRoot/../../../../../scripts/Common/Scripts/Context.ps1";
|
||||
|
||||
function Install-PortValhallaDrivers {
|
||||
param(
|
||||
[Context] $context
|
||||
)
|
||||
|
||||
$winPath = "$PSScriptRoot/../../../scripts/Windows";
|
||||
$winPath = "$PSScriptRoot/../../../../../scripts/Windows";
|
||||
$driverPath = "$winPath/Drivers";
|
||||
$mbDriverPath = "$driverPath/ROG Zenith Extreme Alpha";
|
||||
$context.RegisterReboot();
|
||||
|
@ -38,7 +38,7 @@ function Install-PersonalDrivers {
|
|||
[Context] $context
|
||||
)
|
||||
|
||||
$softwarePath = "$PSScriptRoot/../../../scripts/Windows/Software";
|
||||
$softwarePath = "$PSScriptRoot/../../../../../scripts/Windows/Software";
|
||||
. "$softwarePath/TobiiGhost/Install.ps1" $context;
|
||||
. "$softwarePath/TobiiGameHub/Install.ps1" $context;
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
#!/bin/pwsh
|
||||
. "$PSScriptRoot/Drivers.ps1";
|
||||
. "$PSScriptRoot/../../../scripts/Windows/Collections/Personal.ps1"
|
||||
. "$PSScriptRoot/../../../scripts/Windows/OS/Install.ps1";
|
||||
. "$PSScriptRoot/../../../scripts/Windows/Scripts/Context.ps1";
|
||||
. "$PSScriptRoot/../../../../../scripts/Common/Scripts/Context.ps1";
|
||||
. "$PSScriptRoot/../../../../../scripts/Windows/Collections/Personal.ps1"
|
||||
. "$PSScriptRoot/../../../../../scripts/Windows/OS/Manage.ps1";
|
||||
|
||||
function Initialize-Configuration {
|
||||
# Fix synchronization between Linux and Windows clock
|
||||
|
@ -26,5 +26,4 @@ function Restore-Apps {
|
|||
|
||||
Write-Host "Starting Restoration of Windows";
|
||||
[Context]$context = [Context]::new();
|
||||
Invoke-WindowsInstallation $context;
|
||||
Restart-Computer -Force;
|
||||
Start-WindowsInstallation;
|
5
profiles/machines/manuel/DerGeret/Windows/Setup.ps1
Normal file
5
profiles/machines/manuel/DerGeret/Windows/Setup.ps1
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/pwsh
|
||||
$env:WIN_COMPUTER_NAME = "DerGeret";
|
||||
$env:CONFIG_NAME = $env:WIN_COMPUTER_NAME;
|
||||
|
||||
. "$PSScriptRoot/../../../../../scripts/Windows/OS/Setup.ps1";
|
48
profiles/machines/manuel/DerGeret/config.nix
Normal file
48
profiles/machines/manuel/DerGeret/config.nix
Normal file
|
@ -0,0 +1,48 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
../defaults.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
valhalla = {
|
||||
windows = {
|
||||
dualboot = {
|
||||
enable = true;
|
||||
linuxPercentage = 70; # better safe than sorry
|
||||
};
|
||||
|
||||
users.manuel = {
|
||||
microsoftAccount = true;
|
||||
groups = ["Administrators"];
|
||||
};
|
||||
};
|
||||
|
||||
partition.os.partitions = {
|
||||
Boot.keepExisting = true;
|
||||
|
||||
Windows = {
|
||||
index = 6;
|
||||
label = "OS";
|
||||
format = "ntfs";
|
||||
mountPoint = "/win";
|
||||
mountOptions = ["force"];
|
||||
keepExisting = true;
|
||||
};
|
||||
};
|
||||
|
||||
hardware = {
|
||||
components = [
|
||||
"ROG Zenith Extreme Alpha"
|
||||
"Predator Z301C"
|
||||
];
|
||||
|
||||
eyeX = true;
|
||||
amdCPU = true;
|
||||
nvidiaGPU = true;
|
||||
logitechG = true;
|
||||
corsairDevice = true;
|
||||
elgatoWave = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
9
profiles/machines/manuel/Generic/Arch/config.nix
Normal file
9
profiles/machines/manuel/Generic/Arch/config.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
../config.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
valhalla.boot.label = "Arch";
|
||||
};
|
||||
}
|
|
@ -3,11 +3,11 @@ function install() {
|
|||
local dir="$(realpath "${BASH_SOURCE%/*}")";
|
||||
|
||||
function installDrivers() {
|
||||
. "$dir/../../../scripts/Arch/Config/SecureBoot/install.sh";
|
||||
. "$dir/../../../../../scripts/Arch/Config/SecureBoot/install.sh";
|
||||
}
|
||||
|
||||
|
||||
. "../../../scripts/Arch/OS/install.sh";
|
||||
. "../../../../../scripts/Arch/OS/install.sh";
|
||||
}
|
||||
|
||||
install;
|
|
@ -4,6 +4,6 @@ pushd "${BASH_SOURCE%/*}" > /dev/null;
|
|||
ARCH_MOUNT_ROOT="/mnt" \
|
||||
ARCH_HOSTNAME="archlinux" \
|
||||
USER_DISPLAYNAME="Manuel Thalmann" \
|
||||
. "../../../scripts/Arch/OS/setup.sh";
|
||||
. "../../../../../scripts/Arch/OS/setup.sh";
|
||||
|
||||
popd > /dev/null;
|
13
profiles/machines/manuel/Generic/Windows/Install.ps1
Normal file
13
profiles/machines/manuel/Generic/Windows/Install.ps1
Normal file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/pwsh
|
||||
. "$PSScriptRoot/../../../../../scripts/Common/Scripts/Context.ps1";
|
||||
. "$PSScriptRoot/../../../../../scripts/Windows/OS/Manage.ps1";
|
||||
. "$PSScriptRoot/../../../../../scripts/Windows/Collections/Generic.ps1"
|
||||
|
||||
function Restore-Apps {
|
||||
param([Context] $context)
|
||||
Restore-GenericApps $context;
|
||||
}
|
||||
|
||||
[Context]$context = [Context]::new();
|
||||
Invoke-WindowsInstallation $context;
|
||||
Restart-Computer -Force;
|
5
profiles/machines/manuel/Generic/Windows/Setup.ps1
Normal file
5
profiles/machines/manuel/Generic/Windows/Setup.ps1
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/pwsh
|
||||
$env:WIN_COMPUTER_NAME ??= "win11";
|
||||
$env:CONFIG_MODULE ??= "$PSScriptRoot/../config.nix";
|
||||
|
||||
. "$PSScriptRoot/../../../../../scripts/Windows/OS/Setup.ps1";
|
|
@ -1,9 +1,9 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
fs = import ../../lib/modules/partition/fs.nix;
|
||||
fs = import ../../../../lib/modules/partition/fs.nix;
|
||||
in {
|
||||
imports = [
|
||||
../../lib/modules/valhalla.nix
|
||||
../defaults.nix
|
||||
];
|
||||
|
||||
config = {
|
|
@ -14,4 +14,4 @@ function Install-PortValhallaDrivers {
|
|||
choco install -y spice-agent;
|
||||
}
|
||||
|
||||
. "$PSScriptRoot/../../Generic/Windows/Install.ps1";
|
||||
. "$PSScriptRoot/../../../../Generic/Windows/Install.ps1";
|
2
profiles/machines/manuel/KVM/Windows/Setup.ps1
Normal file
2
profiles/machines/manuel/KVM/Windows/Setup.ps1
Normal file
|
@ -0,0 +1,2 @@
|
|||
#!/bin/pwsh
|
||||
. "$PSScriptRoot/../../../../Generic/Windows/Setup.ps1";
|
5
profiles/machines/manuel/ManuSurface/Arch/install.fish
Executable file
5
profiles/machines/manuel/ManuSurface/Arch/install.fish
Executable file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../../../../scripts/Arch/OS/install.fish"
|
||||
end
|
26
profiles/machines/manuel/ManuSurface/Arch/install.sh
Executable file
26
profiles/machines/manuel/ManuSurface/Arch/install.sh
Executable file
|
@ -0,0 +1,26 @@
|
|||
#!/bin/bash -e
|
||||
function install() {
|
||||
function installDrivers() {
|
||||
. "../../../../../scripts/Arch/Config/SecureBoot/install.sh";
|
||||
. "../../../../../scripts/Arch/Drivers/SurfaceBook2/install.sh";
|
||||
}
|
||||
|
||||
function installSoftware() {
|
||||
. "../../../../../scripts/Arch/Collections/school.sh";
|
||||
}
|
||||
|
||||
function initializeConfig() {
|
||||
. "../../../../../scripts/Common/Config/Steam/hidpi.sh";
|
||||
. "../../../../../scripts/Unix/Devices/Surface Book 2/install.sh";
|
||||
. "../../../../../scripts/Unix/Devices/Logitech G903/install.sh";
|
||||
|
||||
# Because, as it looks, Surface Books are fucking stupid.
|
||||
. "../../../../../scripts/Common/Config/GRUB/verbose.sh";
|
||||
}
|
||||
|
||||
pushd "${BASH_SOURCE%/*}" > /dev/null;
|
||||
. "../../../../../scripts/Arch/OS/install.sh";
|
||||
popd > /dev/null;
|
||||
}
|
||||
|
||||
install;
|
|
@ -3,7 +3,7 @@ begin
|
|||
set -l dir (status dirname)
|
||||
|
||||
function installDrivers -V dir -S
|
||||
source "$dir/../../../scripts/Common/Scripts/config.fish"
|
||||
source "$dir/../../../../../scripts/Common/Scripts/config.fish"
|
||||
pacstrap -K (getConfig valhalla.partition.rootDir) linux-firmware-marvell;
|
||||
end
|
||||
|
||||
|
@ -11,8 +11,8 @@ begin
|
|||
echo "$dir/install.fish"
|
||||
end
|
||||
|
||||
CONFIG_MODULE="$(status dirname)/config.nix" \
|
||||
CONFIG_NAME="ManuSurface" \
|
||||
ARCH_HOSTNAME="manu-surface" \
|
||||
USER_DISPLAYNAME="Manuel Thalmann" \
|
||||
source "$(status dirname)/../../../scripts/Arch/OS/setup.fish";
|
||||
source "$(status dirname)/../../../../../scripts/Arch/OS/setup.fish";
|
||||
end
|
16
profiles/machines/manuel/ManuSurface/PopOS/setup.sh
Executable file
16
profiles/machines/manuel/ManuSurface/PopOS/setup.sh
Executable file
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
pushd "${BASH_SOURCE%/*}" > /dev/null;
|
||||
# Set Hostname
|
||||
sudo hostnamectl set-hostname ManuSurface;
|
||||
|
||||
source "../../../../../scripts/PopOS/Scripts/preinstall.sh";
|
||||
source "../../../../../scripts/PopOS/OS/install.sh";
|
||||
source "../../../../../scripts/Debian/Drivers/SurfaceBook2/Setup/install.sh";
|
||||
source "../../../../../scripts/PopOS/Software/Collections/school.sh";
|
||||
INSTALL_FONTS=1 NEXTCLOUD_DIR="${NEXTCLOUD_DIR}" source "../../../../../scripts/Common/Config/UserProfile/install.sh";
|
||||
|
||||
# Install equalizer
|
||||
source "../../../../../scripts/Common/Config/EasyEffects/SurfaceBook2/install.sh";
|
||||
|
||||
source "../../../../../scripts/PopOS/Scripts/postinstall.sh";
|
||||
popd > /dev/null;
|
12
profiles/machines/manuel/PopOSLive/setup.sh
Executable file
12
profiles/machines/manuel/PopOSLive/setup.sh
Executable file
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
pushd "${BASH_SOURCE%/*}" > /dev/null;
|
||||
|
||||
# Set Hostname
|
||||
sudo hostnamectl set-hostname ManuPopOSLive;
|
||||
source "../../../../scripts/PopOS/Scripts/prepare.sh";
|
||||
source "../../../../scripts/PopOS/OS/install.sh";
|
||||
source "../../../../scripts/PopOS/Software/Collections/personal.sh";
|
||||
INSTALL_FONTS=1 NEXTCLOUD_DIR="${NEXTCLOUD_DIR}" source "../../../../scripts/Common/Config/UserProfile/personal.sh";
|
||||
|
||||
source "../../../../scripts/PopOS/Scripts/postinstall.sh";
|
||||
popd > /dev/null;
|
6
profiles/machines/manuel/defaults.nix
Normal file
6
profiles/machines/manuel/defaults.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
../../users/manuel/config.nix
|
||||
../../../lib/modules/valhalla.nix
|
||||
];
|
||||
}
|
66
profiles/users/manuel/config.nix
Normal file
66
profiles/users/manuel/config.nix
Normal file
|
@ -0,0 +1,66 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
../../../lib/modules/valhalla.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
valhalla = {
|
||||
users.manuel = {
|
||||
displayName = "Manuel Thalmann";
|
||||
mailAddress = "m@nuth.ch";
|
||||
|
||||
oh-my-posh = {
|
||||
theme = {
|
||||
source = ./manuel.omp.json;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
linux.users.manuel = {
|
||||
defaultShell = "fish";
|
||||
|
||||
groups = [
|
||||
"wheel"
|
||||
"nix-users"
|
||||
];
|
||||
|
||||
rclone = {
|
||||
configurations = {
|
||||
nextcloud = {
|
||||
dirName = "Nextcloud";
|
||||
};
|
||||
proton = {
|
||||
dirName = "Proton";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
windows.users.manuel = {
|
||||
nextcloud = {
|
||||
folderSyncs =
|
||||
let
|
||||
localPath = "C:/tools/RetroArch-Win64";
|
||||
remotePath = "/Saved Games/RetroArch";
|
||||
in [
|
||||
{
|
||||
remotePath = "${remotePath}/Saves";
|
||||
localPath = "${localPath}/saves";
|
||||
virtualFiles = false;
|
||||
}
|
||||
{
|
||||
remotePath = "${remotePath}/System";
|
||||
localPath = "${localPath}/system";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
partition = {
|
||||
os = {
|
||||
partitions = { };
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
173
profiles/users/manuel/manuel.omp.json
Normal file
173
profiles/users/manuel/manuel.omp.json
Normal file
|
@ -0,0 +1,173 @@
|
|||
{
|
||||
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
||||
"version": 2,
|
||||
"blocks": [
|
||||
{
|
||||
"type": "prompt",
|
||||
"alignment": "left",
|
||||
"segments": [
|
||||
{
|
||||
"type": "os",
|
||||
"style": "diamond",
|
||||
"leading_diamond": "\ue0b6",
|
||||
"trailing_diamond": "\ue0b4",
|
||||
"background_templates": [
|
||||
"{{ if eq .OS \"ubuntu\" }}#EA531A{{ end }}",
|
||||
"{{ if eq .OS \"debian\" }}#D80150{{ end }}",
|
||||
"{{ if eq .OS \"arch\" }}#1793D1{{ end }}"
|
||||
],
|
||||
"foreground": "p:white",
|
||||
"template": "{{ if ne .OS \"windows\" }}{{ .Icon }} {{ end }}"
|
||||
},
|
||||
{
|
||||
"type": "session",
|
||||
"style": "diamond",
|
||||
"leading_diamond": "\ue0b6",
|
||||
"trailing_diamond": "\ue0b0",
|
||||
"background": "p:yellow",
|
||||
"foreground": "p:black",
|
||||
"properties": {
|
||||
"display_host": false
|
||||
},
|
||||
"template": " {{ if .SSHSession }}\ueb39 {{ end }}{{ .UserName }} "
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"style": "powerline",
|
||||
"powerline_symbol": "\ue0b0",
|
||||
"background": "p:orange",
|
||||
"foreground": "p:black",
|
||||
"properties": {
|
||||
"home_icon": "~",
|
||||
"style": "folder"
|
||||
},
|
||||
"template": " \udb80\ude4b {{ path .Path .Location }} "
|
||||
},
|
||||
{
|
||||
"type": "dotnet",
|
||||
"style": "powerline",
|
||||
"powerline_symbol": "\ue0b0",
|
||||
"foreground": "p:black",
|
||||
"background": "#00ffff",
|
||||
"template": " \udb81\ude10 {{ .Full }} "
|
||||
},
|
||||
{
|
||||
"type": "java",
|
||||
"style": "powerline",
|
||||
"powerline_symbol": "\ue0b0",
|
||||
"background": "#4063d8",
|
||||
"template": " \udb82\udf37 {{ .Full }} "
|
||||
},
|
||||
{
|
||||
"type": "python",
|
||||
"style": "powerline",
|
||||
"powerline_symbol": "\ue0b0",
|
||||
"background": "#906cff",
|
||||
"template": " \udb80\udf20 {{ .Full }} "
|
||||
},
|
||||
{
|
||||
"type": "git",
|
||||
"style": "powerline",
|
||||
"powerline_symbol": "\ue0b0",
|
||||
"trailing_diamond": "\ue0b4",
|
||||
"background": "p:green",
|
||||
"background_templates": [
|
||||
"{{ if or (.Working.Changed) (.Staging.Changed) }}p:yellow{{ end }}",
|
||||
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:red{{ end }}",
|
||||
"{{ if gt .Ahead 0 }}#49416D{{ end }}",
|
||||
"{{ if gt .Behind 0 }}#7A306C{{ end }}"
|
||||
],
|
||||
"foreground": "p:black",
|
||||
"foreground_templates": [
|
||||
"{{ if or (.Working.Changed) (.Staging.Changed) }}p:black{{ end }}",
|
||||
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:white{{ end }}",
|
||||
"{{ if gt .Ahead 0 }}p:white{{ end }}"
|
||||
],
|
||||
"properties": {
|
||||
"branch_max_length": 25,
|
||||
"fetch_stash_count": true,
|
||||
"fetch_status": true,
|
||||
"fetch_upstream_icon": true,
|
||||
"upstream_icons": {
|
||||
"codeberg.org": "\uf330 ",
|
||||
"git.nuth.ch": "\uf335",
|
||||
"git.jonascosta.ch": "\uf339 ",
|
||||
"git.romhackersworld.eu": "\uf339 ",
|
||||
"aur.archlinux.org": "\uf303 "
|
||||
}
|
||||
},
|
||||
"templates": [
|
||||
"{{ if .UpstreamURL }} {{ url .UpstreamIcon .UpstreamURL }}{{ end }}",
|
||||
" {{ .HEAD }} ",
|
||||
"{{ if .BranchStatus }}{{ .BranchStatus }} {{ end }}",
|
||||
"{{ if .Working.Changed }} \uf044 {{ .Working.String }} {{ end }}",
|
||||
"{{ if and (.Working.Changed) (or (.Staging.Changed) (gt .StashCount 0)) }} | {{ end }}",
|
||||
"{{ if .Staging.Changed }} \uf046 {{ .Staging.String }} {{ end }}",
|
||||
"{{ if and (.Staging.Changed) (gt .StashCount 0) }} | {{ end }}",
|
||||
"{{ if gt .StashCount 0 }} \udb80\udd93 {{ .StashCount }}{{ end }} "
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "node",
|
||||
"style": "powerline",
|
||||
"powerline_symbol": "\ue0b0",
|
||||
"background": "#6ca35e",
|
||||
"foreground": "p:white",
|
||||
"properties": {
|
||||
"fetch_version": true
|
||||
},
|
||||
"template": " \udb80\udf99 {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }} "
|
||||
},
|
||||
{
|
||||
"type": "root",
|
||||
"style": "powerline",
|
||||
"powerline_symbol": "\ue0b0",
|
||||
"background": "p:yellow",
|
||||
"foreground": "p:white",
|
||||
"properties": {
|
||||
"root_icon": "\uf0e7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "executiontime",
|
||||
"style": "plain",
|
||||
"background": "#83769c",
|
||||
"foreground": "p:white",
|
||||
"properties": {
|
||||
"always_enabled": true
|
||||
},
|
||||
"template": "<transparent>\ue0b0</> \udb81\udead {{ .FormattedMs }}\u2800"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"style": "diamond",
|
||||
"background": "p:blue",
|
||||
"trailing_diamond": "\ue0b4",
|
||||
"background_templates": [
|
||||
"{{ if gt .Code 0 }}p:red{{ end }}"
|
||||
],
|
||||
"foreground": "p:white",
|
||||
"properties": {
|
||||
"always_enabled": true
|
||||
},
|
||||
"template": "<parentBackground>\ue0b0</> {{ if gt .Code 0 }}\uf00d{{ else }}\uf00c{{ end }} "
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"transient_prompt": {
|
||||
"background": "transparent",
|
||||
"foreground": "p:black",
|
||||
"template": "<p:yellow,transparent>\ue0b6</><,p:yellow> {{ .Folder }} </><p:yellow,transparent>\ue0b0</> "
|
||||
},
|
||||
"final_space": true,
|
||||
"palette": {
|
||||
"black": "#262B44",
|
||||
"blue": "#4B95E9",
|
||||
"green": "#59C9A5",
|
||||
"orange": "#F07623",
|
||||
"red": "#D81E5B",
|
||||
"white": "#E0DEF4",
|
||||
"yellow": "#F3AE35"
|
||||
}
|
||||
}
|
|
@ -109,7 +109,7 @@ yay --noconfirm -Syu jq;
|
|||
BROWSER_BIN="brave" \
|
||||
EXTENSION_DIR="/usr/share/chromium-extensions" \
|
||||
EXTENSION_POLICY_DIR="$braveExtensions" \
|
||||
source "../../Common/Config/Chromium/install-ytmusic-dl.sh";
|
||||
source "../../Common/Software/Chromium/ytmdl.sh";
|
||||
|
||||
# sudo ln -sf "$braveExtensions" /opt/brave.com/brave-beta/extensions;
|
||||
# sudo ln -sf "$braveExtensions" /opt/brave.com/brave-nightly/extensions;
|
||||
|
|
167
scripts/Arch/OS/install.fish
Normal file → Executable file
167
scripts/Arch/OS/install.fish
Normal file → Executable file
|
@ -41,18 +41,21 @@ begin
|
|||
rar
|
||||
|
||||
sudo pkgfile --update
|
||||
source "$dir/../../Common/Software/bash/main.fish"
|
||||
source "$dir/../Software/openssh/main.fish"
|
||||
source "$dir/../Software/vim/main.fish"
|
||||
source "$dir/../Software/git/main.fish"
|
||||
source "$dir/../Software/zoxide/main.fish"
|
||||
source "$dir/../Software/logo-ls/main.fish"
|
||||
|
||||
# GRUB Shenanigans - if that's not an essential I don't know what is!
|
||||
source "$dir/../Software/minegrub-theme/main.fish";
|
||||
end
|
||||
|
||||
if collectionActive common
|
||||
yayinst \
|
||||
tldr \
|
||||
btop \
|
||||
nvtop \
|
||||
numbat-bin \
|
||||
terminal-parrot
|
||||
|
||||
source "$dir/../Software/aliae/main.fish"
|
||||
|
@ -75,6 +78,69 @@ begin
|
|||
ttf-ms-win11-auto \
|
||||
otf-cascadia-code \
|
||||
ttf-droid
|
||||
|
||||
# Password Management
|
||||
yayinst \
|
||||
bitwarden \
|
||||
keepass \
|
||||
keepassxc
|
||||
|
||||
# Tools
|
||||
yayinst \
|
||||
android-tools \
|
||||
blackbox-terminal \
|
||||
cpu-x \
|
||||
gnome-calculator \
|
||||
yubikey-manager-qt
|
||||
|
||||
yayinst \
|
||||
remmina (
|
||||
# RDP support for Remmina
|
||||
) freerdp \
|
||||
wireshark-qt \
|
||||
linux-wifi-hotspot
|
||||
|
||||
# Creativity
|
||||
yayinst \
|
||||
gimp \
|
||||
inkscape
|
||||
|
||||
# Office stuff
|
||||
yayinst \
|
||||
libreoffice-fresh \
|
||||
naps2-bin \
|
||||
pdfarranger \
|
||||
protonmail-bridge \
|
||||
thunderbird
|
||||
|
||||
yayinst \
|
||||
texlive \
|
||||
texlive-langgerman
|
||||
|
||||
# Browser
|
||||
source "$dir/../Software/Firefox/main.fish"
|
||||
source "$dir/../Software/brave/main.fish"
|
||||
source "$dir/../Software/Pennywise/main.fish"
|
||||
|
||||
# Virtualization
|
||||
source "$dir/../Software/waydroid/main.fish"
|
||||
source "$dir/../Software/Virtual Machine Manager/main.fish"
|
||||
yayinst propertree-git # mac config file editor
|
||||
|
||||
if collectionActive coding
|
||||
yayinst \
|
||||
devdocs-desktop \
|
||||
godot-mono-bin
|
||||
|
||||
source "$dir/../Software/vscode/main.fish"
|
||||
end
|
||||
|
||||
if collectionActive school
|
||||
yayinst \
|
||||
teams-for-linux \
|
||||
xournalpp-git \
|
||||
rnote
|
||||
end
|
||||
end
|
||||
|
||||
if collectionActive server
|
||||
|
@ -86,7 +152,102 @@ begin
|
|||
# Networking
|
||||
yayinst \
|
||||
networkmanager-openvpn \
|
||||
networkmanager-openconnect
|
||||
networkmanager-openconnect \
|
||||
protonvpn
|
||||
|
||||
if collectionActive common
|
||||
source "$dir/../Software/IcedTea/main.fish"
|
||||
|
||||
yayinst \
|
||||
img2pdf \
|
||||
numbat-bin \
|
||||
nvtop \
|
||||
pdf2svg \
|
||||
tnef
|
||||
end
|
||||
end
|
||||
|
||||
if collectionActive media
|
||||
yayinst \
|
||||
ytmdesktop-bin \
|
||||
netflix \
|
||||
spotube-bin \
|
||||
stremio \
|
||||
tidal-dl \
|
||||
tidal-hifi-bin \
|
||||
nuclear-player-bin \
|
||||
audius-client-bin
|
||||
end
|
||||
|
||||
if collectionActive fileSync
|
||||
yayinst nextcloud-client
|
||||
source "$dir/../Software/rclone/main.fish"
|
||||
end
|
||||
|
||||
if collectionActive socialMedia
|
||||
yayinst \
|
||||
signal-desktop \
|
||||
threema-desktop \
|
||||
discord (
|
||||
# Open Source Discord implementation
|
||||
) openasar-git
|
||||
end
|
||||
|
||||
if collectionActive productivity
|
||||
yayinst \
|
||||
anki-bin
|
||||
end
|
||||
|
||||
if collectionActive school
|
||||
yayinst \
|
||||
jdk17-temurin \
|
||||
gradle \
|
||||
jetbrains-toolbox
|
||||
|
||||
source "$dir/../../Common/Software/udev/ct-board.fish"
|
||||
end
|
||||
|
||||
if collectionActive coding
|
||||
yayinst \
|
||||
archiso \
|
||||
wimlib (
|
||||
# ISO support for wimlib
|
||||
) cdrkit \
|
||||
tea \
|
||||
woodpecker-cli (
|
||||
# AsciiDocs
|
||||
) python-docutils (
|
||||
# reStructuredText
|
||||
) esbonio
|
||||
|
||||
source "$dir/../Software/n/main.fish"
|
||||
end
|
||||
|
||||
if collectionActive python
|
||||
yayinst \
|
||||
python \
|
||||
python-pip \
|
||||
python-pipenv
|
||||
|
||||
source "$dir/../Software/pyenv/main.fish"
|
||||
end
|
||||
|
||||
if collectionActive gaming
|
||||
yayinst \
|
||||
steam \
|
||||
chiaki \
|
||||
osu-lazer-bin \
|
||||
libretro \
|
||||
supertux \
|
||||
gamepad-tool-bin
|
||||
|
||||
source "$dir/../Software/Lutris/main.fish"
|
||||
flatpak install -y flathub com.usebottles.bottles
|
||||
end
|
||||
|
||||
if collectionActive essential
|
||||
yayinst \
|
||||
bb
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
12
scripts/Arch/OS/setup.fish
Normal file → Executable file
12
scripts/Arch/OS/setup.fish
Normal file → Executable file
|
@ -1,7 +1,6 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
set -q CONFIG_MODULE || set -l CONFIG_MODULE "$dir/config.nix"
|
||||
source "$dir/../../Common/OS/setup.fish"
|
||||
source "$dir/../../Common/Scripts/config.fish"
|
||||
|
||||
|
@ -15,7 +14,7 @@ begin
|
|||
pacstrap -K "$mountDir" fish jq nix tmux
|
||||
end
|
||||
|
||||
function setupOS -S -V dir -V CONFIG_MODULE -V mountDir
|
||||
function setupOS -S -V dir -V mountDir
|
||||
source "$dir/../../Common/Scripts/wait-network.fish"
|
||||
source "$dir/../../Common/Scripts/hooks.fish"
|
||||
|
||||
|
@ -69,6 +68,7 @@ begin
|
|||
end | begin
|
||||
read LOCALES
|
||||
and arch-chroot "$mountDir" sed -i "s/^#\?\(\($LOCALES\).*\)\$/\1/" /etc/locale.gen
|
||||
and arch-chroot "$mountDir" locale-gen
|
||||
end
|
||||
|
||||
and begin
|
||||
|
@ -86,14 +86,8 @@ begin
|
|||
|
||||
and arch-chroot "$mountDir" mkinitcpio -P
|
||||
and runHook installDrivers "Installing drivers..." || true
|
||||
and runInOS fish "$tempDir/../../Common/Software/nix/main.fish" configure user
|
||||
and arch-chroot "$mountDir" bash "$tempDir/../Software/sudo/install.sh"
|
||||
and arch-chroot "$mountDir" bash "$tempDir/../Software/GRUB/install.sh"
|
||||
|
||||
and USER_NAME="$USER_NAME" \
|
||||
USER_DISPLAYNAME="$USER_DISPLAYNAME" \
|
||||
USER_GROUPS="$USER_GROUPS" \
|
||||
arch-chroot "$mountDir" bash "$tempDir/user.sh"
|
||||
and runInOS fish "$tempDir/../Software/GRUB/main.fish"
|
||||
|
||||
and if set -l keyLayout (getConfig valhalla.keyboardLayout)
|
||||
set -l serviceName set-keymap.service
|
||||
|
|
12
scripts/Arch/Scripts/software.fish
Normal file → Executable file
12
scripts/Arch/Scripts/software.fish
Normal file → Executable file
|
@ -3,11 +3,19 @@ begin
|
|||
set -l dir (status dirname)
|
||||
source "$dir/../../Common/Scripts/software.fish"
|
||||
|
||||
function runYay -d "Run yay with pre-configured defaults"
|
||||
yay --needed --answerclean=None --answerdiff=None -Syu $argv
|
||||
end
|
||||
|
||||
function yayinst -d "Install yay-package non-interactively"
|
||||
yay --noconfirm --needed --answerclean=None --answerdiff=None -Syu $argv
|
||||
runYay --noconfirm $argv
|
||||
end
|
||||
|
||||
function runPacman -d "Run pacman with pre-configured defaults"
|
||||
sudo pacman --needed -Syu $argv
|
||||
end
|
||||
|
||||
function pacinst -d "Install pacman-package non-interactively"
|
||||
sudo pacman --noconfirm --needed -Syu $argv
|
||||
runPacman --noconfirm $argv
|
||||
end
|
||||
end
|
||||
|
|
12
scripts/Arch/Software/Firefox/main.fish
Executable file
12
scripts/Arch/Software/Firefox/main.fish
Executable file
|
@ -0,0 +1,12 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW -V dir
|
||||
yayinst firefox
|
||||
fish "$dir/../../../Common/Software/Firefox/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
16
scripts/Arch/Software/GRUB/main.fish
Executable file
16
scripts/Arch/Software/GRUB/main.fish
Executable file
|
@ -0,0 +1,16 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW
|
||||
pacinst \
|
||||
grub \
|
||||
efibootmgr \
|
||||
os-prober
|
||||
|
||||
fish "$dir/../../../Common/Software/GRUB/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
24
scripts/Arch/Software/IcedTea/main.fish
Executable file
24
scripts/Arch/Software/IcedTea/main.fish
Executable file
|
@ -0,0 +1,24 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW
|
||||
yayinst \
|
||||
jdk-temurin
|
||||
|
||||
yayinst \
|
||||
icedtea-web
|
||||
|
||||
configureSW
|
||||
end
|
||||
|
||||
function configureSW
|
||||
# Allow execution of huwaei KVM application (uses out of date security mechanisms)
|
||||
sudo sed -i \
|
||||
"/^jdk.jar.disabledAlgorithms=/{ :comment; s/\(.*\)/#\1/; /\\\\\$/{ n; bcomment; }; }" \
|
||||
/usr/lib/jvm/default-runtime/conf/security/java.security
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
0
scripts/Arch/Software/KDE/main.fish
Normal file → Executable file
0
scripts/Arch/Software/KDE/main.fish
Normal file → Executable file
72
scripts/Arch/Software/Lutris/main.fish
Executable file
72
scripts/Arch/Software/Lutris/main.fish
Executable file
|
@ -0,0 +1,72 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW
|
||||
yayinst \
|
||||
wine-staging \
|
||||
giflib \
|
||||
lib32-giflib \
|
||||
libpng \
|
||||
lib32-libpng \
|
||||
libldap \
|
||||
lib32-libldap \
|
||||
gnutls \
|
||||
lib32-gnutls \
|
||||
mpg123 \
|
||||
lib32-mpg123 \
|
||||
openal \
|
||||
lib32-openal \
|
||||
v4l-utils \
|
||||
lib32-v4l-utils \
|
||||
libpulse \
|
||||
lib32-libpulse \
|
||||
libgpg-error \
|
||||
lib32-libgpg-error \
|
||||
alsa-plugins \
|
||||
lib32-alsa-plugins \
|
||||
alsa-lib \
|
||||
lib32-alsa-lib \
|
||||
libjpeg-turbo \
|
||||
lib32-libjpeg-turbo \
|
||||
sqlite \
|
||||
lib32-sqlite \
|
||||
libxcomposite \
|
||||
lib32-libxcomposite \
|
||||
libxinerama \
|
||||
lib32-libgcrypt \
|
||||
libgcrypt \
|
||||
lib32-libxinerama \
|
||||
ncurses \
|
||||
lib32-ncurses \
|
||||
ocl-icd \
|
||||
lib32-ocl-icd \
|
||||
libxslt \
|
||||
lib32-libxslt \
|
||||
libva \
|
||||
lib32-libva \
|
||||
gtk3 \
|
||||
lib32-gtk3 \
|
||||
gst-plugins-base-libs \
|
||||
lib32-gst-plugins-base-libs \
|
||||
vulkan-icd-loader \
|
||||
lib32-vulkan-icd-loader
|
||||
|
||||
yayinst (
|
||||
# Extracting GOG games
|
||||
) innoextract \
|
||||
gamemode \
|
||||
lib32-gamemode \
|
||||
vkd3d \
|
||||
lib32-vkd3d \
|
||||
gamescope \
|
||||
yad \
|
||||
protontricks \
|
||||
protonup-qt-bin
|
||||
|
||||
yayinst lutris
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
25
scripts/Arch/Software/Pennywise/main.fish
Executable file
25
scripts/Arch/Software/Pennywise/main.fish
Executable file
|
@ -0,0 +1,25 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW
|
||||
yayinst \
|
||||
pennywise-bin
|
||||
|
||||
configureSW
|
||||
end
|
||||
|
||||
function configureSW
|
||||
set -l patch " --no-sandbox"
|
||||
set -l pattern "^Exec=.*"
|
||||
set -l indicator "$pattern$patch"
|
||||
set -l file /usr/share/applications/pennywise.desktop
|
||||
|
||||
if ! grep "$indicator" "$file" > /dev/null
|
||||
sudo sed -i "/$pattern/s/$pattern/\0 --no-sandbox/" "$file"
|
||||
end
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
28
scripts/Arch/Software/Virtual Machine Manager/main.fish
Executable file
28
scripts/Arch/Software/Virtual Machine Manager/main.fish
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW
|
||||
yayinst qemu-full
|
||||
yes | runPacman --asdeps iptables-nft
|
||||
|
||||
yes | yayinst \
|
||||
virtiofsd \
|
||||
virt-manager \
|
||||
dnsmasq \
|
||||
swtpm \
|
||||
lxc \
|
||||
virt-bootstrap-git
|
||||
|
||||
configureSW
|
||||
end
|
||||
|
||||
function configureSW -V dir
|
||||
sudo systemctl enable --now libvirtd
|
||||
sudo systemctl enable --now virtlogd
|
||||
fish "$dir/../../../Common/Software/Virtual Machine Manager/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
5
scripts/Arch/Software/aliae/main.fish
Normal file → Executable file
5
scripts/Arch/Software/aliae/main.fish
Normal file → Executable file
|
@ -2,13 +2,12 @@
|
|||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
source "$dir/../../../Common/Software/aliae/main.fish"
|
||||
|
||||
function installSW
|
||||
function installSW -V dir
|
||||
yayinst \
|
||||
aliae-bin
|
||||
|
||||
configureSW
|
||||
fish "$dir/../../../Common/Software/aliae/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
|
|
0
scripts/Arch/Software/base-devel/main.fish
Normal file → Executable file
0
scripts/Arch/Software/base-devel/main.fish
Normal file → Executable file
17
scripts/Arch/Software/brave/main.fish
Executable file
17
scripts/Arch/Software/brave/main.fish
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
source "$dir/../../../Common/Software/brave/main.fish"
|
||||
|
||||
function installSW -V dir
|
||||
yayinst brave-bin (
|
||||
# brave-beta-bin
|
||||
# brave-nightly-bin
|
||||
)
|
||||
|
||||
fish "$dir/../../../Common/Software/brave/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
4
scripts/Arch/Software/git/main.fish
Normal file → Executable file
4
scripts/Arch/Software/git/main.fish
Normal file → Executable file
|
@ -4,7 +4,7 @@ begin
|
|||
source "$dir/../../Scripts/software.fish"
|
||||
source "$dir/../../../Common/Software/git/main.fish"
|
||||
|
||||
function installSW
|
||||
function installSW -V dir
|
||||
yayinst \
|
||||
git \
|
||||
git-lfs \
|
||||
|
@ -13,7 +13,7 @@ begin
|
|||
gitflow-fishcompletion-avh \
|
||||
gitflow-zshcompletion-avh
|
||||
|
||||
and configureSW
|
||||
and fish "$dir/../../../Common/Software/git/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
|
|
45
scripts/Arch/Software/logo-ls/main.fish
Executable file
45
scripts/Arch/Software/logo-ls/main.fish
Executable file
|
@ -0,0 +1,45 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW -V dir
|
||||
set -l dirName (realpath "$dir")
|
||||
set -l contextRoot (mktemp -d)
|
||||
set -l pkgName logo-ls
|
||||
set -l patchName workaround.patch
|
||||
|
||||
if not type -q logo-ls
|
||||
begin
|
||||
pushd "$contextRoot" > /dev/null
|
||||
yay -G -f "$pkgName"
|
||||
cd "$pkgName"
|
||||
cp "$dirName/$patchName" .
|
||||
|
||||
sed -i \
|
||||
-e "/^source=(/s/source=(/\0$patchName /" \
|
||||
-e "/^md5sums=(/s/^md5sums=(/\0SKIP /" \
|
||||
-e "/^build() {/,/}/{" \
|
||||
-e "/^[[:space:]]*cd/{" \
|
||||
-e "a cat ../$patchName | patch --strip 1 --forward --merge" \
|
||||
-e "}" \
|
||||
-e "}" \
|
||||
PKGBUILD
|
||||
|
||||
makepkg --noconfirm -si --force
|
||||
popd > /dev/null
|
||||
end
|
||||
|
||||
rm -rf "$contextRoot"
|
||||
end
|
||||
|
||||
configureSW
|
||||
end
|
||||
|
||||
function configureSW -V dir
|
||||
sudo systemctl enable --now nix-daemon
|
||||
fish "$dir/../../../Common/Software/logo-ls/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
12
scripts/Arch/Software/minegrub-theme/main.fish
Executable file
12
scripts/Arch/Software/minegrub-theme/main.fish
Executable file
|
@ -0,0 +1,12 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW -V dir
|
||||
yayinst grub-theme-minegrub-git
|
||||
fish "$dir/../../../Common/Software/minegrub-theme/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
12
scripts/Arch/Software/n/main.fish
Executable file
12
scripts/Arch/Software/n/main.fish
Executable file
|
@ -0,0 +1,12 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW -V dir
|
||||
yayinst nodejs-n
|
||||
sudo --preserve-env --set-home fish "$dir/../../../Common/Software/n/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
20
scripts/Arch/Software/nix/main.fish
Executable file
20
scripts/Arch/Software/nix/main.fish
Executable file
|
@ -0,0 +1,20 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW
|
||||
yayinst \
|
||||
nix \
|
||||
nil-git
|
||||
|
||||
configureSW
|
||||
end
|
||||
|
||||
function configureSW -V dir
|
||||
sudo systemctl enable --now nix-daemon
|
||||
fish "$dir/../../../Common/Software/nix/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
4
scripts/Arch/Software/openssh/main.fish
Normal file → Executable file
4
scripts/Arch/Software/openssh/main.fish
Normal file → Executable file
|
@ -7,10 +7,12 @@ begin
|
|||
yayinst \
|
||||
openssh \
|
||||
libfido2
|
||||
|
||||
source (status filename) configure
|
||||
end
|
||||
|
||||
function configureSW
|
||||
systemctl --global enable --now ssh-agent
|
||||
sudo systemctl --global enable ssh-agent
|
||||
|
||||
and begin
|
||||
printf %s\n \
|
||||
|
|
0
scripts/Arch/Software/pacman/main.fish
Normal file → Executable file
0
scripts/Arch/Software/pacman/main.fish
Normal file → Executable file
12
scripts/Arch/Software/pyenv/main.fish
Executable file
12
scripts/Arch/Software/pyenv/main.fish
Executable file
|
@ -0,0 +1,12 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW -V dir
|
||||
yayinst pyenv
|
||||
fish "$dir/../../../Common/Software/pyenv/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
15
scripts/Arch/Software/rclone/main.fish
Executable file
15
scripts/Arch/Software/rclone/main.fish
Executable file
|
@ -0,0 +1,15 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
source "$dir/../../../Common/Software/rclone/main.fish"
|
||||
|
||||
function installSW -V dir
|
||||
yayinst \
|
||||
rclone
|
||||
|
||||
fish "$dir/../../../Common/Software/rclone/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
2
scripts/Arch/Software/sddm/main.fish
Normal file → Executable file
2
scripts/Arch/Software/sddm/main.fish
Normal file → Executable file
|
@ -14,7 +14,7 @@ begin
|
|||
function configureSW -V dir
|
||||
set -l configDir /etc/sddm.conf.d
|
||||
sudo systemctl enable sddm
|
||||
mkdir -p "$configDir"
|
||||
sudo mkdir -p "$configDir"
|
||||
sudo cp "$dir/wayland.conf" "$configDir/10-wayland.conf"
|
||||
end
|
||||
|
||||
|
|
4
scripts/Arch/Software/vim/main.fish
Normal file → Executable file
4
scripts/Arch/Software/vim/main.fish
Normal file → Executable file
|
@ -4,7 +4,7 @@ begin
|
|||
source "$dir/../../Scripts/software.fish"
|
||||
source "$dir/../../../Common/Software/vim/main.fish"
|
||||
|
||||
function installSW
|
||||
function installSW -V dir
|
||||
yayinst (
|
||||
# Necessary for accessing clipboard in terminal: https://wiki.archlinux.org/title/Vim
|
||||
) gvim \
|
||||
|
@ -13,7 +13,7 @@ begin
|
|||
) vim-wayland-clipboard-git \
|
||||
wl-clipboard
|
||||
|
||||
and configureSW
|
||||
and fish "$dir/../../../Common/Software/vim/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
|
|
33
scripts/Arch/Software/vscode/main.fish
Executable file
33
scripts/Arch/Software/vscode/main.fish
Executable file
|
@ -0,0 +1,33 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW
|
||||
yayinst \
|
||||
vscodium-bin \
|
||||
visual-studio-code-bin (
|
||||
# Trash functionality
|
||||
) gvfs
|
||||
|
||||
configureSW
|
||||
end
|
||||
|
||||
function configureSW -V dir
|
||||
set -l bins codium code
|
||||
|
||||
for bin in $bins
|
||||
if type -q "$bin"
|
||||
begin
|
||||
set -l file "/etc/skel/.config/$bin-flags.conf"
|
||||
sudo mkdir -p (dirname "$file")
|
||||
echo "--touch-events" | sudo tee "$file" > /dev/null
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
fish "$dir/../../../Common/Software/vscode/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
20
scripts/Arch/Software/waydroid/main.fish
Executable file
20
scripts/Arch/Software/waydroid/main.fish
Executable file
|
@ -0,0 +1,20 @@
|
|||
#!/bin/env fish
|
||||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
|
||||
function installSW
|
||||
yayinst (
|
||||
# Waydroid prerequisite: https://wiki.archlinux.org/title/Waydroid#DKMS_modules
|
||||
) binder_linux-dkms \
|
||||
waydroid (
|
||||
# For installing ARM suppot on waydroid
|
||||
) waydroid-script-git (
|
||||
# Clipboard support: https://wiki.archlinux.org/title/Waydroid#Failed_to_start_Clipboard_manager_service
|
||||
) python-pyclip (
|
||||
# Wayland clipboard support: https://github.com/spyoungtech/pyclip?tab=readme-ov-file#linux
|
||||
) wl-clipboard
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
end
|
0
scripts/Arch/Software/yay/main.fish
Normal file → Executable file
0
scripts/Arch/Software/yay/main.fish
Normal file → Executable file
5
scripts/Arch/Software/zoxide/main.fish
Normal file → Executable file
5
scripts/Arch/Software/zoxide/main.fish
Normal file → Executable file
|
@ -2,13 +2,12 @@
|
|||
begin
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../../Scripts/software.fish"
|
||||
source "$dir/../../../Common/Software/zoxide/main.fish"
|
||||
|
||||
function installSW
|
||||
function installSW -V dir
|
||||
yayinst \
|
||||
zoxide
|
||||
|
||||
configureSW
|
||||
fish "$dir/../../../Common/Software/zoxide/main.fish" configure
|
||||
end
|
||||
|
||||
runInstaller $argv
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/bash
|
||||
pushd "${BASH_SOURCE%/*}" > /dev/null;
|
||||
sudo cp ./firefox.sh /etc/profile.d/;
|
||||
sudo cp ../../Software/Firefox/firefox.sh /etc/profile.d/;
|
||||
popd > /dev/null;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#!/bin/pwsh
|
||||
. "$PSScriptRoot/../../Software/powershell/profile.ps1";
|
||||
. "$PSScriptRoot/../../Software/PowerShell/Profile.ps1";
|
||||
|
||||
Add-PowerShellProfileStatement `
|
||||
-System `
|
||||
-Category "oh-my-posh" `
|
||||
-Statement $(
|
||||
-Script $(
|
||||
@(
|
||||
"# Oh My Posh!",
|
||||
$(Get-ScriptInitializer "oh-my-posh init pwsh"),
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#!/bin/pwsh
|
||||
. "$PSScriptRoot/../../Software/powershell/profile.ps1";
|
||||
. "$PSScriptRoot/../../Software/PowerShell/Profile.ps1";
|
||||
|
||||
foreach ($defaultUser in @($true, $false)) {
|
||||
Add-PowerShellProfileStatement -DefaultUser:$defaultUser -Statement "# aliae`naliae init pwsh | Invoke-Expression";
|
||||
Add-PowerShellProfileStatement -DefaultUser:$defaultUser -Script "# aliae`naliae init pwsh | Invoke-Expression";
|
||||
}
|
||||
|
||||
Add-PowerShellProfileStatement -System -Category "aliae" -Statement "# aliae`n$(Get-ScriptInitializer "aliae completion powershell")";
|
||||
Add-PowerShellProfileStatement -System -Category "aliae" -Script "# aliae`n$(Get-ScriptInitializer "aliae completion powershell")";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/bash
|
||||
pushd "${BASH_SOURCE%/*}" > /dev/null;
|
||||
pushd "${BASH_SOURCE%/*}/../../Software/rclone" > /dev/null;
|
||||
|
||||
sudo cp "rclone.service" "rclone.target" "rclone@.service" /etc/systemd/user;
|
||||
systemctl enable --user rclone;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#!/bin/pwsh
|
||||
. "$PSScriptRoot/../../Software/powershell/profile.ps1";
|
||||
. "$PSScriptRoot/../../Software/PowerShell/Profile.ps1";
|
||||
|
||||
Add-PowerShellProfileStatement `
|
||||
-System `
|
||||
-Category "zoxide" `
|
||||
-Statement $(
|
||||
-Script $(
|
||||
@(
|
||||
"# zoxide",
|
||||
$(Get-ScriptInitializer "zoxide init powershell | Out-String")
|
||||
|
|
15
scripts/Common/OS/install.fish
Normal file → Executable file
15
scripts/Common/OS/install.fish
Normal file → Executable file
|
@ -3,14 +3,10 @@ set -l dir (status dirname)
|
|||
source "$dir/../Scripts/config.fish"
|
||||
source "$dir/../Scripts/hooks.fish"
|
||||
|
||||
function configureNix -V dir
|
||||
source "$dir/../Software/nix/main.fish" configure user
|
||||
end
|
||||
|
||||
if [ (id -u) -eq 0 ]
|
||||
configureNix
|
||||
set -l name (getConfig valhalla.setupUser.name)
|
||||
set -l sudoConfig "/etc/sudoers.d/PortValhalla"
|
||||
rm ~/.bash_profile
|
||||
|
||||
runHook createUser || \
|
||||
begin
|
||||
|
@ -28,16 +24,21 @@ if [ (id -u) -eq 0 ]
|
|||
echo "$name ALL=(ALL:ALL) NOPASSWD: ALL"
|
||||
end > "$sudoConfig"
|
||||
|
||||
and sudo --preserve-env="CONFIG_MODULE" --user "$name" "$INSTALLER_SCRIPT"
|
||||
and sudo --preserve-env="CONFIG_NAME" --user "$name" "$INSTALLER_SCRIPT"
|
||||
rm "$sudoConfig"
|
||||
userdel -r "$name"
|
||||
else
|
||||
configureNix
|
||||
source "$dir/../Software/bash/main.fish"
|
||||
runHook initialize || true
|
||||
runHook installDrivers || true
|
||||
runHook installOS || true
|
||||
|
||||
runHook addUsers || begin
|
||||
source "$dir/users.fish"
|
||||
end
|
||||
|
||||
runHook installSoftware || true
|
||||
runHook initializeConfig || true
|
||||
|
||||
runHook postInstall || true
|
||||
end
|
||||
|
|
5
scripts/Common/OS/setup.fish
Normal file → Executable file
5
scripts/Common/OS/setup.fish
Normal file → Executable file
|
@ -3,7 +3,6 @@ function runSetup
|
|||
set -l dir (status dirname)
|
||||
source "$dir/../Scripts/config.fish"
|
||||
source "$dir/../Scripts/hooks.fish"
|
||||
set -l name (getConfig valhalla.setupUser.name)
|
||||
set -l mountDir (getConfig valhalla.partition.rootDir)
|
||||
set -l projectRoot (realpath "$dir/../../..")
|
||||
set -l projectName (basename "$projectRoot")
|
||||
|
@ -31,7 +30,7 @@ function runSetup
|
|||
|
||||
function runInOS -S
|
||||
set -l script "/root/run_once"
|
||||
wrapScript $argv | chroot "$mountDir" tee "$script"
|
||||
wrapScript $argv | chroot "$mountDir" tee "$script" > /dev/null
|
||||
runChroot "$mountDir" chmod +x "$script"
|
||||
runChroot "$mountDir" "$script"
|
||||
runChroot "$mountDir" rm "$script"
|
||||
|
@ -40,7 +39,7 @@ function runSetup
|
|||
function wrapScript -S
|
||||
printf %s\n \
|
||||
"cd $PROJECT_CLONE_ROOT" \
|
||||
"export CONFIG_MODULE=$(string escape (getCloneFile "$CONFIG_MODULE"))" \
|
||||
"export CONFIG_NAME=$(string escape (getCloneFile "$CONFIG_NAME"))" \
|
||||
"$argv"
|
||||
end
|
||||
|
||||
|
|
32
scripts/Common/OS/users.fish
Executable file
32
scripts/Common/OS/users.fish
Executable file
|
@ -0,0 +1,32 @@
|
|||
#!/bin/env fish
|
||||
set -l dir (status dirname)
|
||||
source "$dir/../Scripts/config.fish"
|
||||
set -l users (getUsers)
|
||||
|
||||
|
||||
for name in (echo "$users" | jq '.[]' --raw-output0 | string split0)
|
||||
function getUserConfig -S -a config
|
||||
getConfig "valhalla.users.$name.$config" $argv[2..]
|
||||
end
|
||||
|
||||
set -l displayName (getUserConfig displayName --json)
|
||||
set -l shell (getUserConfig displayName --json)
|
||||
|
||||
sudo useradd --create-home (
|
||||
if [ displayName != "null" ]
|
||||
echo "--comment"
|
||||
echo "$displayName" | jq --raw-output
|
||||
end
|
||||
) --groups (getUserConfig groups --apply 'builtins.concatStringsSep ","') \
|
||||
"$name"
|
||||
|
||||
if echo "$shell" | jq --exit-status > /dev/null
|
||||
sudo chsh "$name" --shell "$shell"
|
||||
end
|
||||
|
||||
echo "Please Choose a New Password for User `$name`"
|
||||
|
||||
while ! sudo passwd "$name"
|
||||
echo "An error occurred! Please try again."
|
||||
end
|
||||
end
|
163
scripts/Common/Scripts/BrowserAutomation.ps1
Normal file
163
scripts/Common/Scripts/BrowserAutomation.ps1
Normal file
|
@ -0,0 +1,163 @@
|
|||
#!/bin/bash
|
||||
$null = New-Module {
|
||||
. "$PSScriptRoot/System.ps1";
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Runs an action involving browser automation.
|
||||
|
||||
.PARAMETER Action
|
||||
The action to execute.
|
||||
#>
|
||||
function Start-BrowserAutomation {
|
||||
param(
|
||||
[scriptblock] $Action
|
||||
)
|
||||
|
||||
if (-not ("OpenQA.Selenium.Firefox.FirefoxDriver" -as [type])) {
|
||||
$packageRoot = Split-Path -Parent (Get-Package Selenium.WebDriver).Source;
|
||||
$file = Join-Path $packageRoot "lib/netstandard2.0/WebDriver.dll";
|
||||
$env:SE_MANAGER_PATH = Join-Path $packageRoot "manager" ($IsWindows ? "windows" : "linux") "selenium-manager$($IsWindows ? ".exe" : '')";
|
||||
$null = [System.Reflection.Assembly]::LoadFile($file);
|
||||
}
|
||||
|
||||
& $Action;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Downloads a file from the specified url using browser automation.
|
||||
|
||||
.PARAMETER URL
|
||||
The url to download the file from.
|
||||
|
||||
.PARAMETER Action
|
||||
The action to execute in the browser for initiating the download.
|
||||
|
||||
.PARAMETER OutDir
|
||||
The directory to download the file to.
|
||||
#>
|
||||
function Start-CustomBrowserDownload {
|
||||
param(
|
||||
[string] $URL,
|
||||
[scriptblock] $Action,
|
||||
[string] $OutDir
|
||||
)
|
||||
|
||||
$downloadAction = $Action;
|
||||
|
||||
Start-BrowserAutomation {
|
||||
if (-not $OutDir) {
|
||||
$OutDir = ".";
|
||||
}
|
||||
|
||||
$dir = New-TemporaryDirectory;
|
||||
Write-Host "Downloading ``$URL`` using browser automation…";
|
||||
$options = [OpenQA.Selenium.Firefox.FirefoxOptions]::new();
|
||||
$options.SetPreference("browser.download.folderList", 2);
|
||||
$options.SetPreference("browser.download.dir", "$dir");
|
||||
|
||||
$downloadChecker = {
|
||||
$files = Get-ChildItem $dir;
|
||||
|
||||
if ((@($files)).Count -eq 1) {
|
||||
$file = $files[0];
|
||||
|
||||
try {
|
||||
$stream = [System.IO.File]::Open($file.FullName, [System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None);
|
||||
|
||||
if ($stream) {
|
||||
$stream.Close();
|
||||
}
|
||||
}
|
||||
catch {
|
||||
return $true;
|
||||
}
|
||||
|
||||
return $false;
|
||||
} else {
|
||||
return $true;
|
||||
}
|
||||
};
|
||||
|
||||
$browser = [OpenQA.Selenium.Firefox.FirefoxDriver]::new($options);
|
||||
$browser.Navigate().GoToUrl($URL);
|
||||
|
||||
while (-not ($browser.ExecuteScript("return document.readyState;") -eq "complete")) {
|
||||
Start-Sleep 0.1;
|
||||
}
|
||||
|
||||
try {
|
||||
$null = & $downloadAction -Browser $browser;
|
||||
|
||||
while (& $downloadChecker) {
|
||||
Write-Host "Waiting for the download to finish…";
|
||||
Start-Sleep 1;
|
||||
}
|
||||
|
||||
$file = Get-ChildItem $dir;
|
||||
$result = Move-Item $file $OutDir -PassThru;
|
||||
$browser.Quit();
|
||||
Remove-Item -Recurse $dir;
|
||||
$result;
|
||||
}
|
||||
catch {
|
||||
Write-Error $Error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Downloads a file from the specified url using browser automation.
|
||||
|
||||
.PARAMETER URL
|
||||
The url to download the file from.
|
||||
|
||||
.PARAMETER ButtonSelector
|
||||
The jQuery selector for finding the download button.
|
||||
|
||||
.PARAMETER OutDir
|
||||
The directory to download the file to.
|
||||
|
||||
.PARAMETER Timeout
|
||||
The number of seconds to wait before clicking the download button.
|
||||
#>
|
||||
function Start-BrowserDownload {
|
||||
param(
|
||||
[string] $URL,
|
||||
[string] $ButtonSelector,
|
||||
[string] $OutDir = $null,
|
||||
[double] $Timeout = 0
|
||||
)
|
||||
|
||||
Start-CustomBrowserDownload @PSBoundParameters -Action {
|
||||
param(
|
||||
[OpenQA.Selenium.Firefox.FirefoxDriver] $Browser
|
||||
)
|
||||
|
||||
$selector = [OpenQA.Selenium.By]::CssSelector($ButtonSelector);
|
||||
[OpenQA.Selenium.IWebElement] $element = $null;
|
||||
|
||||
for ($i = 0; $i -lt 5; $i++) {
|
||||
$element = $Browser.FindElement($selector);
|
||||
|
||||
if ($element) {
|
||||
break;
|
||||
} else {
|
||||
Start-Sleep 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ($Timeout -gt 0) {
|
||||
Start-Sleep $Timeout;
|
||||
}
|
||||
|
||||
if ($element) {
|
||||
$Browser.FindElement($selector).Click();
|
||||
} else {
|
||||
Write-Error "Unable to find download button!";
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
575
scripts/Common/Scripts/Config.ps1
Normal file
575
scripts/Common/Scripts/Config.ps1
Normal file
|
@ -0,0 +1,575 @@
|
|||
using namespace Microsoft.Win32;
|
||||
using namespace System.Management.Automation.Host;
|
||||
using namespace System.Security.AccessControl;
|
||||
using namespace System.Security.Principal;
|
||||
|
||||
enum WindowsInstallerStage {
|
||||
Initialize
|
||||
Run
|
||||
Cleanup
|
||||
Completed
|
||||
}
|
||||
|
||||
enum SetupStage {
|
||||
Initialize
|
||||
Configure
|
||||
Install
|
||||
CreateUser
|
||||
}
|
||||
|
||||
enum BackupStage {
|
||||
Initialize
|
||||
Backup
|
||||
BackupUsers
|
||||
}
|
||||
|
||||
enum UserStage {
|
||||
Create
|
||||
Configure
|
||||
Cleanup
|
||||
Completed
|
||||
}
|
||||
|
||||
$null = New-Module {
|
||||
[string] $configRoot = "HKLM:\Software\PortValhalla";
|
||||
[string] $stageOption = "Stage";
|
||||
[string] $setupStageOption = "SetupStage";
|
||||
[string] $backupStageOption = "BackupStage";
|
||||
[string] $userOption = "SetupUser";
|
||||
[string] $userStageOption = "UserStage";
|
||||
[string] $accountOption = "MSAccount";
|
||||
[string] $finishedOption = "Finished";
|
||||
[RegistryKey] $key = $null;
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Prompts the user to select a profile to act on.
|
||||
#>
|
||||
function Show-ProfileNamePrompt {
|
||||
. "$PSScriptRoot/../../Windows/Types/WindowsInstallerAction.ps1";
|
||||
|
||||
$profiles = & {
|
||||
. "$PSScriptRoot/SoftwareManagement.ps1";
|
||||
|
||||
if (Test-Command "wsl") {
|
||||
return Invoke-ConfigScript "getProfiles";
|
||||
} else {
|
||||
return Get-ChildItem "$PSScriptRoot/../../../.config" | ForEach-Object { Split-Path -LeafBase $_ };
|
||||
}
|
||||
};
|
||||
|
||||
$choice = $Host.UI.PromptForChoice(
|
||||
"Select Profile",
|
||||
(& {
|
||||
switch (Get-Stage) {
|
||||
([WindowsInstallerAction]::Backup) {
|
||||
"Which profile do you wish to back up?";
|
||||
}
|
||||
([WindowsInstallerAction]::Install) {
|
||||
"Which profile do you wish to install?";
|
||||
}
|
||||
$null {
|
||||
"Which profile do you wish to set up?";
|
||||
}
|
||||
}
|
||||
}),
|
||||
(& {
|
||||
for ($i = 0; $i -lt $profiles.Count; $i++) {
|
||||
[ChoiceDescription]"&$i - $($profiles[$i])";
|
||||
}
|
||||
|
||||
[ChoiceDescription]"&Abort";
|
||||
}),
|
||||
$profiles.Count);
|
||||
|
||||
if ($choice -eq $profiles.Count) {
|
||||
exit;
|
||||
} else {
|
||||
$env:CONFIG_NAME = $profiles[$choice];
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Converts the specified path to linux and escapes it for the use in a script.
|
||||
|
||||
.PARAMETER Path
|
||||
The path to convert.
|
||||
#>
|
||||
function ConvertTo-LinuxPath {
|
||||
param(
|
||||
[string] $Path
|
||||
)
|
||||
|
||||
& {
|
||||
$ErrorActionPreference = 'Continue';
|
||||
$completed = $false;
|
||||
|
||||
while (-not $completed) {
|
||||
$job = Start-Job {
|
||||
$env:Value = Resolve-Path $Using:Path;
|
||||
$env:WSLENV = "Value/p";
|
||||
$result = wsl -- bash -c 'echo "$Value"';
|
||||
wsl -e printf "%q" "$result";
|
||||
};
|
||||
|
||||
$result = Receive-Job -Wait $job;
|
||||
|
||||
|
||||
if ((Split-Path -Leaf $Path) -ne (Split-Path -Leaf $result)) {
|
||||
Write-Error "The result of the path conversion of ``$Path`` was unexpected: ``$result``";
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($job.State -ne ([System.Management.Automation.JobState]::Completed)) {
|
||||
Write-Error "An error occurred while converting ``$Path`` to a Linux path.`nOutput: ``$result``";
|
||||
continue;
|
||||
}
|
||||
|
||||
$completed = $true;
|
||||
}
|
||||
|
||||
$result;
|
||||
};
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the registry key containing options related to the setup.
|
||||
#>
|
||||
function Get-SetupConfigKey {
|
||||
if (-not (Test-Path $configRoot)) {
|
||||
$key = New-Item $configRoot;
|
||||
$acl = Get-Acl $configRoot;
|
||||
|
||||
$acl.AddAccessRule(
|
||||
[RegistryAccessRule]::new(
|
||||
[SecurityIdentifier]::new([WellKnownSidType]::BuiltinUsersSid, $null),
|
||||
[RegistryRights]::FullControl,
|
||||
[InheritanceFlags]::ObjectInherit -bor [InheritanceFlags]::ContainerInherit,
|
||||
[PropagationFlags]::None,
|
||||
[AccessControlType]::Allow));
|
||||
|
||||
Set-Acl $configRoot $acl;
|
||||
} else {
|
||||
$key = Get-Item $configRoot;
|
||||
}
|
||||
|
||||
return $key;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Runs a script based on the `config.fish` script.
|
||||
|
||||
.PARAMETER Script
|
||||
The script to run.
|
||||
#>
|
||||
function Invoke-ConfigScript {
|
||||
param(
|
||||
[string] $Script
|
||||
)
|
||||
|
||||
$scriptPath = "$PSScriptRoot/../../Common/Scripts/config.fish";
|
||||
|
||||
if ($env:CONFIG_NAME -or ($Script -eq "getProfiles")) {
|
||||
$output = & {
|
||||
if (-not $IsWindows) {
|
||||
$escapedPath = (fish -c 'string escape $argv' "$scriptPath");
|
||||
fish -c ". $escapedPath; $Script";
|
||||
} else {
|
||||
$cleanup = { };
|
||||
$projectRoot = "$PSScriptRoot/../../..";
|
||||
$archisoDir = "$projectRoot/archiso";
|
||||
|
||||
function fish {
|
||||
wsl --shell-type login -- nix --extra-experimental-features "nix-command flakes" run nixpkgs`#fish -- $args
|
||||
}
|
||||
|
||||
if (Test-Path -PathType Container "$archisoDir") {
|
||||
$git = {
|
||||
git -C "$projectRoot" -c safe.directory="$("$(Resolve-Path $projectRoot)".Replace("\", "/"))" @args;
|
||||
};
|
||||
|
||||
& $git rm -r --cached "$archisoDir" *> $null;
|
||||
$cleanup = { & $git restore --staged "$archisoDir" };
|
||||
}
|
||||
|
||||
$output = fish -c ". $(ConvertTo-LinuxPath $scriptPath); $Script";
|
||||
|
||||
if (-not $?) {
|
||||
Write-Error "The configuration could not be retrieved!";
|
||||
} else {
|
||||
$output;
|
||||
}
|
||||
|
||||
& $cleanup *> $null;
|
||||
}
|
||||
}
|
||||
|
||||
if (-not ($output -and ($output | Test-Json))) {
|
||||
Write-Error "The value ``$output`` is not valid JSON.";
|
||||
} else {
|
||||
$output | ConvertFrom-Json;
|
||||
}
|
||||
} else {
|
||||
$null;
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets a configuration option.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the option to get.
|
||||
#>
|
||||
function Get-Config {
|
||||
param(
|
||||
[string] $Name,
|
||||
[Parameter(ValueFromRemainingArguments)]
|
||||
[string[]] $ArgumentList
|
||||
)
|
||||
|
||||
Invoke-ConfigScript "getConfig $Name --json $ArgumentList";
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the name of the config root.
|
||||
#>
|
||||
function Get-ConfigRootName {
|
||||
return "valhalla.$($IsWindows ? "windows" : "linux")";
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the name of the user root.
|
||||
#>
|
||||
function Get-UserRootName {
|
||||
return "$(Get-ConfigRootName).$($IsWindows ? "winUsers" : "users")";
|
||||
};
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets a user configuration.
|
||||
|
||||
.PARAMETER UserName
|
||||
The name of the user to get the configuration for.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the configuration to get.
|
||||
#>
|
||||
function Get-UserConfig {
|
||||
param(
|
||||
[string] $UserName = ($IsWindows ? $env:UserName : $env:USER),
|
||||
[Parameter(Mandatory, Position = 0)]
|
||||
[string] $Name
|
||||
)
|
||||
|
||||
if ((Get-Users) -contains $UserName) {
|
||||
Get-Config "$(Get-UserRootName).$UserName.$Name";
|
||||
} else {
|
||||
return $null;
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the attributes of a configuration object.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the configuration to get the attributes of.
|
||||
#>
|
||||
function Get-Attributes {
|
||||
param(
|
||||
[string] $Name
|
||||
)
|
||||
|
||||
Invoke-ConfigScript "getAttributes $Name";
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the names of the users to create.
|
||||
#>
|
||||
function Get-Users {
|
||||
[OutputType([string[]])]
|
||||
param()
|
||||
Get-Attributes "$(Get-UserRootName)";
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the name of the setup user.
|
||||
#>
|
||||
function Get-SetupUser {
|
||||
[OutputType([string])]
|
||||
param()
|
||||
Get-Config "$(Get-ConfigRootName).setupUser.name";
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the value of an option related to the setup.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the option value to get.
|
||||
#>
|
||||
function Get-SetupOption {
|
||||
param(
|
||||
[string] $Name
|
||||
)
|
||||
|
||||
$key = Get-SetupConfigKey;
|
||||
|
||||
if ($key.GetValueNames().Contains($Name)) {
|
||||
return $key.GetValue($Name);
|
||||
} else {
|
||||
return $null;
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sets the value of an option related to the setup.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the option to set.
|
||||
|
||||
.PARAMETER Value
|
||||
The value to set the option to.
|
||||
#>
|
||||
function Set-SetupOption {
|
||||
param(
|
||||
[string] $Name,
|
||||
$Value
|
||||
)
|
||||
|
||||
$key = Get-SetupConfigKey;
|
||||
$null = Set-ItemProperty ($key.PSPath) -Name $Name -Value $Value;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the name of the current stage of the Windows install script action.
|
||||
#>
|
||||
function Get-Stage {
|
||||
$stage = Get-SetupOption $stageOption;
|
||||
|
||||
if ($null -ne $stage) {
|
||||
$stage = [WindowsInstallerStage]$stage;
|
||||
}
|
||||
|
||||
return $stage;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sets the name of the current stage of the Windows install script action.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the stage to set.
|
||||
#>
|
||||
function Set-Stage {
|
||||
param(
|
||||
$Name
|
||||
)
|
||||
|
||||
if (-not (($null -eq $Name) -or ($Name -is [string]))) {
|
||||
$Name = ([WindowsInstallerStage]$Name).ToString();
|
||||
}
|
||||
|
||||
$null = Set-SetupOption $stageOption $Name;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the name of the current setup stage.
|
||||
#>
|
||||
function Get-SetupStage {
|
||||
$stage = Get-SetupOption $setupStageOption;
|
||||
|
||||
if ($null -ne $stage) {
|
||||
$stage = [SetupStage]$stage;
|
||||
}
|
||||
|
||||
return $stage;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sets the current stage.
|
||||
|
||||
.PARAMETER Name
|
||||
The name to set the current stage to.
|
||||
#>
|
||||
function Set-SetupStage {
|
||||
param(
|
||||
$Name
|
||||
)
|
||||
|
||||
if (-not (($null -eq $Name) -or ($Name -is [string]))) {
|
||||
$Name = ([SetupStage]$Name).ToString();
|
||||
}
|
||||
|
||||
$null = Set-SetupOption $setupStageOption $Name;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the name of the current stage of the backup.
|
||||
#>
|
||||
function Get-BackupStage {
|
||||
$stage = Get-SetupOption $backupStageOption;
|
||||
|
||||
if ($null -ne $stage) {
|
||||
$stage = [BackupStage]$stage;
|
||||
}
|
||||
|
||||
return $stage;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sets the current stage of the backup.
|
||||
|
||||
.PARAMETER Name
|
||||
The name to set the current stage to.
|
||||
#>
|
||||
function Set-BackupStage {
|
||||
param(
|
||||
$Name
|
||||
)
|
||||
|
||||
if (-not (($null -eq $Name) -or ($Name -is [string]))) {
|
||||
$Name = ([BackupStage]$Name).ToString();
|
||||
}
|
||||
|
||||
$null = Set-SetupOption $backupStageOption $Name;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the current user to set up.
|
||||
#>
|
||||
function Get-CurrentUser {
|
||||
return (Get-SetupOption $userOption) ?? 0;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sets the index of the current user to set up.
|
||||
|
||||
.PARAMETER Value
|
||||
The index of the user to set up.
|
||||
#>
|
||||
function Set-CurrentUser {
|
||||
param(
|
||||
[int] $Value
|
||||
)
|
||||
|
||||
Set-SetupOption $userOption $value;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the name of the current stage of the user setup.
|
||||
#>
|
||||
function Get-UserStage {
|
||||
$stage = Get-SetupOption $userStageOption;
|
||||
|
||||
if ($null -ne $stage) {
|
||||
$stage = [UserStage]$stage;
|
||||
}
|
||||
|
||||
return $stage;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sets the current stage of the user setup.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the stage to set.
|
||||
#>
|
||||
function Set-UserStage {
|
||||
param(
|
||||
$Name
|
||||
)
|
||||
|
||||
if (-not (($null -eq $Name) -or ($Name -is [string]))) {
|
||||
$Name = ([UserStage]$Name).ToString();
|
||||
}
|
||||
|
||||
$null = Set-SetupOption $userStageOption $Name;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the name of the microsoft account to create.
|
||||
#>
|
||||
function Get-MSAccountName {
|
||||
return Get-SetupOption $accountOption;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sets the name of the microsoft account to create.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the microsoft account to create.
|
||||
#>
|
||||
function Set-MSAccountName {
|
||||
param(
|
||||
[string] $Name
|
||||
)
|
||||
|
||||
Set-SetupOption $accountOption $Name;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets a value indicating whether the setup has finished.
|
||||
#>
|
||||
function Get-IsFinished {
|
||||
return [bool](Get-SetupOption $finishedOption);
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Sets a value indicating whether the setup has finished.
|
||||
#>
|
||||
function Set-IsFinished {
|
||||
param(
|
||||
$Value
|
||||
)
|
||||
|
||||
Set-SetupOption $finishedOption $true;
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Checks whether the running system is a QEMU virtual machine.
|
||||
#>
|
||||
function Test-Qemu {
|
||||
((Get-WmiObject win32_computersystem).Manufacturer) -eq "QEMU";
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Checks whether the current user is the setup user.
|
||||
#>
|
||||
function Test-SetupUser {
|
||||
($IsWindows ? $env:UserName : $env:USER) -eq (Get-SetupUser);
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Checks whether the active session is executed with admin rights.
|
||||
#>
|
||||
function Test-Admin {
|
||||
net session 2> $null | Out-Null;
|
||||
return $?;
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue