Compare commits

..

348 commits
v1.0.0 ... main

Author SHA1 Message Date
Aaron Honeycutt
0d32bf0d6e fix release upload 2025-04-24 13:26:01 -06:00
Aaron Honeycutt
40d1209d75 hotfix with nix file creation 2025-04-24 13:16:45 -06:00
Aaron Honeycutt
58b2337efa run when a tag is manually created 2025-04-24 13:12:27 -06:00
Aaron Honeycutt
c56acc8a33 fix issue with data directory 2025-04-24 12:56:56 -06:00
Aaron Honeycutt
6aa6d925f1 add version number to release 2025-04-24 12:47:12 -06:00
Aaron Honeycutt
22eaee4866 more testing 2025-04-24 08:25:02 -06:00
Aaron Honeycutt
010858d4c5 remove upload 2025-04-24 08:08:01 -06:00
Aaron Honeycutt
a5475d76da fix upload 2025-04-24 07:57:30 -06:00
Aaron Honeycutt
fa5953931e Merge branch 'deploy' into 'main'
testing upload and release

See merge request ahoneybun/nyxi-installer!25
2025-04-24 07:52:19 -06:00
Aaron Honeycutt
dfaba208d8 add script for release 2025-04-24 07:48:11 -06:00
Aaron Honeycutt
462939f70b fix tag-name 2025-04-24 07:46:42 -06:00
Aaron Honeycutt
129ef355c8 fix tag-name 2025-04-24 07:39:38 -06:00
Aaron Honeycutt
45cedd2dc1 fix tag-name 2025-04-24 07:34:08 -06:00
Aaron Honeycutt
55d0ea77d9 fix tag-name 2025-04-24 07:25:19 -06:00
Aaron Honeycutt
e6475f738c add missing tag-name 2025-04-24 07:19:09 -06:00
Aaron Honeycutt
1a0de19932 fix chmod 2025-04-24 07:11:43 -06:00
Aaron Honeycutt
a6941102a4 testing upload and release 2025-04-24 07:06:20 -06:00
Aaron Honeycutt
2ce9080350 Merge branch 'ci' into 'main'
Feat: Enable CI builds

See merge request ahoneybun/nyxi-installer!24
2025-04-23 20:35:38 -06:00
Aaron Honeycutt
aaeb2136a9 chmod the build 2025-04-23 20:30:46 -06:00
Aaron Honeycutt
285faf6051 Merge branch 'main' into 'ci'
# Conflicts:
#   .gitlab-ci.yml
2025-04-23 20:28:29 -06:00
Aaron Honeycutt
562f0dac53 building release version and upload 2025-04-23 20:20:45 -06:00
Aaron Honeycutt
99aca9a464 testing artifacts 2025-04-23 20:14:48 -06:00
Aaron Honeycutt
bef700b7fc remove deploy and testing artifacts 2025-04-23 20:11:03 -06:00
Aaron Honeycutt
563cfda91d remove deploy and testing artifacts 2025-04-23 20:08:48 -06:00
Aaron Honeycutt
3537cce31d fix 2025-04-23 20:00:35 -06:00
Aaron Honeycutt
469d3820e2 fix 2025-04-23 19:59:58 -06:00
Aaron Honeycutt
c2d803c553 CI work 2025-04-23 19:57:34 -06:00
Aaron Honeycutt
1631730a88 add fdisk for docker 2025-04-23 19:19:11 -06:00
Aaron Honeycutt
e54dba7840 add fdisk for docker 2025-04-23 19:16:47 -06:00
Aaron Honeycutt
ef2be5c559 mario 2025-04-23 19:10:43 -06:00
Aaron Honeycutt
93e76db0eb testing ci 2025-04-23 19:05:10 -06:00
Aaron Honeycutt
62f1c96f5b testing ci 2025-04-23 19:02:56 -06:00
Aaron Honeycutt
3f0a2b1702 testing ci 2025-04-23 18:52:08 -06:00
Aaron Honeycutt
526f906266 comment out variable to fix warning 2025-04-23 18:43:39 -06:00
Aaron Honeycutt
24a4636816 Merge branch 'rust-rewrite' into 'main'
First Rust rewrite release! 🎉

See merge request ahoneybun/nyxi-installer!23
2025-04-23 18:39:19 -06:00
Aaron Honeycutt
aebb38df61 First Rust rewrite release! 🎉 2025-04-23 18:39:19 -06:00
Aaron Honeycutt
14b8ada912 add Pixel Slate to installer 2025-03-12 15:39:08 -06:00
Aaron Honeycutt
743ca7f3dd removes debugging lsblk command 2025-02-18 20:02:40 +00:00
Aaron Honeycutt
be1e5c8e6b Merge branch 'interface' into 'main'
Interface

See merge request ahoneybun/nyxi-installer!21
2025-02-18 20:02:01 +00:00
Aaron Honeycutt
6c8f35c39f Interface 2025-02-18 20:02:01 +00:00
Aaron Honeycutt
31cce1d998 Edit install.sh 2025-02-17 20:01:04 +00:00
Aaron Honeycutt
0e9001e6bf fix numbering for the list 2025-02-16 06:14:50 +00:00
ebd81d3780 swap lemp13 for garrus 2025-01-27 12:26:36 -07:00
Aaron Honeycutt
99683499bf add lemp13 2025-01-07 14:28:19 +00:00
Aaron Honeycutt
bb2f3f53d3 Rename EDI to edi 2024-11-04 15:39:14 -07:00
Aaron Honeycutt
7541a7a9ad fix typo 2024-11-01 15:55:41 -06:00
Aaron Honeycutt
6c0a6cc602 finish adding EDI 2024-10-25 22:19:29 +00:00
Aaron Honeycutt
8167654727 add EDI back 2024-10-25 22:18:55 +00:00
Aaron Honeycutt
0db2dedde1 Update install.sh 2024-10-15 21:33:15 +00:00
Aaron Honeycutt
7730df30af add drack 2024-10-15 19:56:19 +00:00
Aaron Honeycutt
b6bd57a20f fix vm path 2024-09-19 19:18:01 -06:00
Aaron Honeycutt
0f1f29e716 Remove jaal (pinebook-pro) 2024-09-09 17:24:20 -06:00
Aaron Honeycutt
c02b8f0ca3 Update install.sh 2024-09-05 14:09:33 +00:00
Aaron Honeycutt
1186e2bd94 Merge branch 'release-24.05' into 'main'
Support 24.05

See merge request ahoneybun/nyxi-installer!20
2024-08-13 19:00:44 +00:00
Aaron Honeycutt
56369f0679 Point to main now and remove unsupported devices 2024-08-09 11:30:34 -06:00
b3825d935b start work on move to 24.05 2024-06-25 16:03:46 -06:00
Aaron Honeycutt
d89f6afc21 add: macbook 2024-03-01 22:21:32 +00:00
Aaron Honeycutt
85087fe358 Update install.sh 2024-02-29 16:28:38 +00:00
Aaron Honeycutt
cbe6bcc93e Nebula49 -> nebula49 2024-02-22 18:14:15 +00:00
Aaron Honeycutt
cec220bb71 Update README.md 2024-02-22 18:10:29 +00:00
Aaron Honeycutt
3037df6b3e change: edi -> EDI 2024-02-15 17:02:05 -07:00
Aaron Honeycutt
1704dd58a7 add: EDI 2024-02-15 16:35:26 -07:00
Aaron Honeycutt
b09dbc091b remove: work systems like Thelio and HP Dev One 2024-02-13 06:49:17 -07:00
Aaron Honeycutt
92c6e47c19 update README 2024-02-09 16:15:08 -07:00
Aaron Honeycutt
46df8d1860 Merge branch 'pbp' into 'main'
Add Pinebook Pro

See merge request ahoneybun/nyxi-installer!19
2024-02-09 20:04:53 +00:00
Aaron Honeycutt
0cce412a56 match the installer 2024-02-09 08:37:03 -07:00
Aaron Honeycutt
cfa9051d9e change: rename pinebook-pro file 2024-02-09 08:33:12 -07:00
Aaron Honeycutt
4720940db1 fix: update links for correct branch for jaal testing 2024-02-09 07:56:12 -07:00
Aaron Honeycutt
e6006b70ec add: Jaal 2024-02-09 06:53:38 -07:00
Aaron Honeycutt
beb42a25e9 add omen and reorder hosts 2024-02-01 23:58:29 +00:00
Aaron Honeycutt
2704e92aea chore: reorder and add comments to make code cleaner 2024-02-01 10:32:34 -07:00
Aaron Honeycutt
eea3b738ec change: use hosts instead of systems 2024-01-31 08:02:31 -07:00
Aaron Honeycutt
8e91b6cc04 Update install.sh 2024-01-30 23:54:24 +00:00
Aaron Honeycutt
46517ae8c8 add shepard to options 2024-01-30 16:01:24 -07:00
Aaron Honeycutt
c67b546b01 Update README.md 2024-01-30 22:27:18 +00:00
Aaron Honeycutt
9e353184de Update README.md 2024-01-30 17:43:17 +00:00
Aaron Honeycutt
c827e9e30e Merge branch 'flake' into 'main'
Move to using flakes

See merge request ahoneybun/nyxi-installer!18
2024-01-30 17:42:19 +00:00
Aaron Honeycutt
50744893ff Change from flake to main branch now that nix-configs change has been merged. 2024-01-30 17:42:06 +00:00
Aaron Honeycutt
dc1aa54f75 GNOME download for Thelio B1 and Galago 3B 2024-01-25 23:59:37 +00:00
Aaron Honeycutt
999acc5296 Add galp3b 2024-01-25 22:54:51 +00:00
Aaron Honeycutt
4933f6d0e6 Add thelio-b1 2024-01-23 20:06:48 +00:00
Aaron Honeycutt
a58e322a5b Add thelio-b1 2024-01-19 13:38:59 +00:00
Aaron Honeycutt
c3ae7e37dd Update install.sh 2024-01-18 16:51:13 +00:00
Aaron Honeycutt
d355c4ec3e Add generic option from the flake 2024-01-18 15:46:32 +00:00
Aaron Honeycutt
09a5f24185 Move fi over to make the code look cleaner 2024-01-18 14:24:26 +00:00
Aaron Honeycutt
6fe8c907b2 Add example of drive path 2024-01-18 14:23:43 +00:00
Aaron Honeycutt
82791c73b1 Import vm configuration file 2024-01-18 14:20:22 +00:00
Aaron Honeycutt
7a6c1f5104 Remove custom VM line 2024-01-18 14:02:57 +00:00
Aaron Honeycutt
b637d3bfe2 Update install.sh 2024-01-18 13:58:07 +00:00
Aaron Honeycutt
054635f1fc Update install.sh 2024-01-17 13:17:08 +00:00
Aaron Honeycutt
5cacafbea4 Update VM setup 2024-01-16 19:53:00 +00:00
Aaron Honeycutt
1d5a54e841 remove other devices for now. 2024-01-16 18:03:15 +00:00
Aaron Honeycutt
9ff54a0864 Update install.sh 2024-01-16 17:47:02 +00:00
Aaron Honeycutt
553650b883 Update paths for dev-one and nixos generic 2024-01-16 17:39:34 +00:00
Aaron Honeycutt
8063942f61 Add Dev One, remove desktops for now. 2024-01-16 17:35:02 +00:00
Aaron Honeycutt
8d26d86a5d Download home-manager file 2024-01-16 16:23:22 +00:00
Aaron Honeycutt
1641a786f0 Clean up comments in the code to make it more readable hopefully 2024-01-11 18:56:30 +00:00
Aaron Honeycutt
fb7de0dbe8 Remove unneeded VM config.nix file 2024-01-09 20:02:19 +00:00
Aaron Honeycutt
b5f977e403 Update messaging 2024-01-09 19:56:10 +00:00
Aaron Honeycutt
3ed0d05b05 Revert change but swap configuration.nix to flake.nix 2024-01-09 19:55:22 +00:00
Aaron Honeycutt
490a412795 Switch other systems to the generic flake and remove extra line at the end of the script 2024-01-09 19:49:47 +00:00
Aaron Honeycutt
14b72a9dcd Fix new option 2024-01-09 14:35:42 +00:00
Aaron Honeycutt
6390329d06 Add generic flake option 2024-01-09 14:35:17 +00:00
Aaron Honeycutt
928af8b3d7 You do need to set the system name in the nixos-install command for it to work 2024-01-08 18:31:29 +00:00
Aaron Honeycutt
d947ea93b2 Test new nixos-install 2024-01-08 18:27:35 +00:00
Aaron Honeycutt
ff818891e4 Add if/then 2024-01-08 17:14:33 +00:00
Aaron Honeycutt
1e37870e70 Disable downloading the configuration.nix for now 2024-01-08 16:48:10 +00:00
Aaron Honeycutt
be6f524998 Fix flake path for VM 2024-01-08 16:44:14 +00:00
Aaron Honeycutt
cd4523a6aa fix path 2024-01-08 16:43:26 +00:00
Aaron Honeycutt
a11e58c93b Update install.sh 2024-01-08 16:42:17 +00:00
Aaron Honeycutt
e05760dde3 Edit VM options to use flake file and use nixos-install flake option 2024-01-08 14:59:17 +00:00
Aaron Honeycutt
95292b8a8c Merge branch 'disko' into 'main'
Move to disko

See merge request ahoneybun/nyxi-installer!17
2024-01-02 17:55:59 +00:00
Aaron Honeycutt
97a2594eb9 Update install.sh 2024-01-02 17:42:25 +00:00
Aaron Honeycutt
3643da7063 Update install.sh 2023-12-29 21:07:56 +00:00
Aaron Honeycutt
a6297052a7 Update install.sh 2023-12-29 20:21:30 +00:00
Aaron Honeycutt
ccc91857a3 Update thelio-b1 build 2023-12-29 20:05:56 +00:00
Aaron Honeycutt
a41e7a7824 Update install.sh 2023-12-29 18:28:56 +00:00
Aaron Honeycutt
451de45b43 swap in LUKS BTRFS subvol file 2023-12-29 17:32:11 +00:00
Aaron Honeycutt
5efb2d8ee7 Update both ECHO options to EOF instead 2023-12-29 17:01:33 +00:00
Aaron Honeycutt
9192cd819c Update install.sh 2023-12-29 16:51:19 +00:00
Aaron Honeycutt
045469eec0 Update install.sh 2023-12-29 16:50:49 +00:00
Aaron Honeycutt
5823acbed7 Update install.sh 2023-12-29 16:50:25 +00:00
Aaron Honeycutt
9311549eea Update install.sh 2023-12-29 16:46:48 +00:00
Aaron Honeycutt
a34e71876b Update install.sh 2023-12-29 16:24:52 +00:00
Aaron Honeycutt
28293c042e Update install.sh 2023-12-29 16:15:58 +00:00
Aaron Honeycutt
3ed3d5d869 Update install.sh 2023-12-29 16:14:13 +00:00
Aaron Honeycutt
2777ed0654 Update install.sh 2023-12-29 16:11:29 +00:00
Aaron Honeycutt
6617b81c47 Update install.sh 2023-12-29 16:10:50 +00:00
Aaron Honeycutt
c770791c8e Update install.sh 2023-12-29 15:49:13 +00:00
Aaron Honeycutt
818737c53a Update install.sh 2023-12-29 15:33:25 +00:00
Aaron Honeycutt
34ce1bdffb Update install.sh 2023-12-29 15:28:28 +00:00
Aaron Honeycutt
0ccf221ea0 Update install.sh 2023-12-29 15:24:02 +00:00
Aaron Honeycutt
bdebc5b8f0 Update install.sh 2023-12-28 21:18:48 +00:00
Aaron Honeycutt
3f76648923 Reorder and add hostnames 2023-10-31 23:22:53 +00:00
Aaron Honeycutt
bfb2d07d25 Update README.md 2023-10-31 23:15:07 +00:00
Aaron Honeycutt
afd45c2d20 Update install.sh 2023-10-27 16:20:43 +00:00
Aaron Honeycutt
9bbca1ab8f Update install.sh 2023-08-11 14:25:09 +00:00
Aaron Honeycutt
2eca86dfbe Merge branch 'luks' into 'main'
BTRFS+subvolumes with LUKS

See merge request ahoneybun/nyxi-installer!16
2023-07-06 17:15:51 +00:00
Aaron Honeycutt
092b7cc4f4 Update install.sh 2023-06-06 16:54:43 +00:00
Aaron Honeycutt
b1905abcba Update install.sh 2023-06-02 22:16:47 +00:00
Aaron Honeycutt
33c309eb8d Update README.md 2023-04-19 00:21:07 +00:00
Aaron Honeycutt
fbe2438d64 Update install.sh 2023-04-17 22:06:26 +00:00
Aaron Honeycutt
3263d94099 Update install.sh 2023-04-17 22:00:16 +00:00
Aaron Honeycutt
b315982033 Fix partitioning 2023-04-17 20:43:13 +00:00
Aaron Honeycutt
7caeae09f6 Move boot.kernelPackages option 2023-04-17 20:32:39 +00:00
Aaron Honeycutt
5ad2080f97 Update install.sh 2023-04-17 20:24:29 +00:00
Aaron Honeycutt
d987e56383 Update install.sh 2023-04-17 20:05:28 +00:00
Aaron Honeycutt
66e9be884a Update install.sh 2023-04-17 19:21:56 +00:00
Aaron Honeycutt
0622599486 Update install.sh 2023-04-17 19:10:32 +00:00
Aaron Honeycutt
a1beec96af Update install.sh 2023-04-17 19:09:49 +00:00
Aaron Honeycutt
cd5e8ec98c Update install.sh 2023-04-17 19:08:18 +00:00
Aaron Honeycutt
fd766280d5 Update install.sh 2023-04-17 18:58:36 +00:00
Aaron Honeycutt
b8fefcdfb8 Update install.sh 2023-04-17 18:50:06 +00:00
Aaron Honeycutt
3652e3663b debugging 2023-04-17 18:47:05 +00:00
Aaron Honeycutt
c447fbc67f Update install.sh 2023-04-17 18:45:54 +00:00
Aaron Honeycutt
8c46a23503 Update install.sh 2023-04-17 18:39:54 +00:00
Aaron Honeycutt
2596d54e28 Update install.sh 2023-04-17 18:38:43 +00:00
Aaron Honeycutt
6f4ae4be9d Test if statement 2023-04-17 18:03:44 +00:00
Aaron Honeycutt
8060b0f4f2 Update install.sh 2023-04-17 17:37:07 +00:00
Aaron Honeycutt
6dcc21244a Add Thelio with NVIDIA sed option 2023-04-17 17:33:30 +00:00
Aaron Honeycutt
123f0e32b5 Update install.sh 2023-04-17 13:22:25 +00:00
Aaron Honeycutt
b9d5261c20 Update install.sh 2023-04-12 16:26:12 +00:00
Aaron Honeycutt
266b04f631 Update install.sh 2023-04-12 16:19:53 +00:00
Aaron Honeycutt
3dc06836bf Update install.sh 2023-04-01 23:46:57 +00:00
Aaron Honeycutt
6fb781a078 Update install.sh 2023-03-31 16:02:21 +00:00
Aaron Honeycutt
4e3857b2e2 Update install.sh 2023-03-31 15:57:41 +00:00
Aaron Honeycutt
99df74fc41 Update install.sh 2023-03-31 15:56:50 +00:00
Aaron Honeycutt
6fca38d2f2 Update install.sh 2023-03-31 15:48:46 +00:00
Aaron Honeycutt
e4241b0c58 Update install.sh 2023-03-31 15:43:09 +00:00
Aaron Honeycutt
766177340b Update install.sh 2023-03-31 15:40:15 +00:00
Aaron Honeycutt
3b411028aa Update install.sh 2023-03-31 15:36:27 +00:00
Aaron Honeycutt
99f366132e Update install.sh 2023-03-31 15:30:35 +00:00
Aaron Honeycutt
084993248e Update install.sh 2023-03-31 15:21:49 +00:00
Aaron Honeycutt
c477296da5 Add Sway 2023-03-29 14:23:13 +00:00
Aaron Honeycutt
950e2ef11a Update @ subvol name 2023-03-29 14:18:13 +00:00
Aaron Honeycutt
ccade8a217 Update rootName 2023-03-28 19:08:50 +00:00
Aaron Honeycutt
df9711b88b Add sudo 2023-03-28 19:04:12 +00:00
Aaron Honeycutt
967bf36bde Update install.sh 2023-03-28 19:02:08 +00:00
Aaron Honeycutt
eb1e50acea Update install.sh 2023-03-28 18:52:55 +00:00
Aaron Honeycutt
0b9ff8eafc Update install.sh 2023-01-30 19:43:14 +00:00
Aaron Honeycutt
7ed4fe5918 Update install.sh 2023-01-30 19:17:59 +00:00
Aaron Honeycutt
a1fe95bb83 Update install.sh 2023-01-29 22:41:43 +00:00
Aaron Honeycutt
a08a2f6610 Update install.sh 2023-01-26 17:17:31 +00:00
Aaron Honeycutt
58fc585129 Update install.sh 2023-01-26 17:10:33 +00:00
Aaron Honeycutt
77d0feb8f0 Update install.sh 2023-01-25 20:11:33 +00:00
Aaron Honeycutt
3343730482 Update install.sh 2023-01-25 19:39:06 +00:00
Aaron Honeycutt
061e3f57a7 Update install.sh 2023-01-25 18:27:39 +00:00
Aaron Honeycutt
381d729d46 Update README.md 2023-01-25 18:24:12 +00:00
Aaron Honeycutt
06749e0a58 Update install.sh 2023-01-25 18:13:23 +00:00
Aaron Honeycutt
684d03e2f5 Merge branch 'main-pbp' into 'main'
Main pbp

See merge request ahoneybun/nyxi-installer!14
2023-01-25 18:12:09 +00:00
Aaron Honeycutt
83b2ac8792 Merge branch 'main' into 'main-pbp'
# Conflicts:
#   README.md
#   install.sh
2023-01-25 18:11:51 +00:00
Aaron Honeycutt
64aaa67037 Update install.sh 2023-01-25 18:09:29 +00:00
Aaron Honeycutt
4f9cfac607 Update install.sh 2023-01-25 17:52:47 +00:00
Aaron Honeycutt
74909e63e4 Update install.sh 2023-01-25 17:29:27 +00:00
Aaron Honeycutt
8da4b82c81 Update install.sh 2023-01-25 17:21:25 +00:00
Aaron Honeycutt
7e5eb4f228 Update install.sh 2023-01-25 17:16:26 +00:00
Aaron Honeycutt
cd61733b7b Update install.sh 2023-01-25 17:15:13 +00:00
Aaron Honeycutt
bf04a0badc Update install.sh 2023-01-25 17:13:55 +00:00
Aaron Honeycutt
68c4914d01 Update install.sh 2023-01-25 17:11:55 +00:00
Aaron Honeycutt
aedc3fee8c Update install.sh 2023-01-23 20:51:39 +00:00
Aaron Honeycutt
160d5135d0 Update README.md 2023-01-17 22:17:47 +00:00
Aaron Honeycutt
8dfea142a6 Update README.md 2023-01-17 22:17:30 +00:00
Aaron Honeycutt
a4d929ac82 Update README.md 2023-01-17 22:16:37 +00:00
Aaron Honeycutt
21d8276320 Update README.md 2023-01-17 22:16:27 +00:00
Aaron Honeycutt
0ec8fb9fad Update README.md 2023-01-17 22:15:38 +00:00
Aaron Honeycutt
b9f6020df8 Update README.md 2023-01-17 22:15:36 +00:00
Aaron Honeycutt
709a11d8bf Update and clean up README 2023-01-16 13:38:48 -07:00
Aaron Honeycutt
8104975a06 Updater README 2023-01-16 13:34:57 -07:00
Aaron Honeycutt
8f00b0ccf3 Update README.md 2023-01-16 20:07:41 +00:00
Aaron Honeycutt
b6c7ca713c Upload New File 2023-01-16 19:57:59 +00:00
Aaron Honeycutt
0b4e2b1129 Update install.sh 2023-01-16 19:44:34 +00:00
Aaron Honeycutt
f84b30afd0 Update install.sh 2023-01-16 19:11:16 +00:00
Aaron Honeycutt
7ba677837c Update install.sh 2023-01-15 14:57:34 +00:00
Aaron Honeycutt
089c621c8e Update README.md 2023-01-12 23:48:54 +00:00
Aaron Honeycutt
5a68df458b Upload New File 2023-01-12 23:48:09 +00:00
Aaron Honeycutt
18447da4d4 Update README.md 2023-01-12 23:42:10 +00:00
Aaron Honeycutt
5a5305f750 Update path with new filename 2023-01-12 10:31:35 -07:00
Aaron Honeycutt
b795982d26 Fix order 2023-01-12 09:06:43 -07:00
Aaron Honeycutt
bcc6965ca7 Update README.md 2023-01-11 18:26:29 +00:00
Aaron Honeycutt
8b86ef5e9d Update README.md 2023-01-08 07:24:06 +00:00
Aaron Honeycutt
1123ee169b Upload New File 2023-01-08 07:22:10 +00:00
Aaron Honeycutt
87649df8a2 Add new directory 2023-01-08 07:20:21 +00:00
Aaron Honeycutt
362e9e706f Update install.sh 2023-01-04 00:57:51 +00:00
Aaron Honeycutt
c5ffb0ed63 Update install.sh 2023-01-03 21:06:34 +00:00
Aaron Honeycutt
c220cd7a54 Update install.sh 2023-01-03 20:52:06 +00:00
Aaron Honeycutt
d7f9fb1917 Update install.sh 2023-01-03 20:45:33 +00:00
Aaron Honeycutt
8bd99cc405 Update install.sh 2022-12-06 16:37:45 +00:00
Aaron Honeycutt
8850925b7e Update install.sh 2022-12-05 21:28:41 +00:00
Aaron Honeycutt
a45782b7c8 Update install.sh 2022-12-05 20:58:53 +00:00
Aaron Honeycutt
bd1745d03c Update install.sh 2022-12-05 20:11:23 +00:00
Aaron Honeycutt
e01bc41ff5 Update install.sh 2022-12-05 20:10:00 +00:00
Aaron Honeycutt
72c9ad3690 Update install.sh 2022-12-05 20:08:26 +00:00
Aaron Honeycutt
340e47060b Update install.sh 2022-12-05 20:05:10 +00:00
Aaron Honeycutt
2c6cde2ef7 Update install.sh 2022-12-05 19:51:10 +00:00
Aaron Honeycutt
53ed09cae6 No need to remove the file 2022-09-09 17:13:07 +00:00
Aaron Honeycutt
062f1f9ab5 Merge branch 'esp' into 'main'
ESP

See merge request ahoneybun/nyxi-installer!13
2022-09-09 16:27:27 +00:00
Aaron Honeycutt
33bac9a6b6 ESP 2022-09-09 16:27:27 +00:00
Aaron Honeycutt
2b91f8b7df Update README.md 2022-09-09 15:43:51 +00:00
Aaron Honeycutt
df65ab97b2 Update README.md 2022-09-06 00:16:09 +00:00
Aaron Honeycutt
b6a612519d Update install.sh 2022-09-03 01:02:02 +00:00
Aaron Honeycutt
ad1945b093 Merge branch 'documentation-updates' into 'main'
Documentation updates

See merge request ahoneybun/nyxi-installer!12
2022-09-01 16:38:25 +00:00
Aaron Honeycutt
102a336554 Documentation updates 2022-09-01 16:38:24 +00:00
Aaron Honeycutt
963bcf8ebd Update install.sh 2022-08-31 18:13:59 +00:00
Aaron Honeycutt
92b15a9f9b Update install.sh 2022-08-31 15:53:00 +00:00
Aaron Honeycutt
617aa15e52 Update install.sh 2022-08-31 15:47:09 +00:00
Aaron Honeycutt
b5290d3a35 Update install.sh 2022-08-31 15:44:19 +00:00
Aaron Honeycutt
e9afbf2cc9 Update install.sh 2022-08-23 16:03:17 +00:00
Aaron Honeycutt
95fd3ae7fe Update install.sh 2022-08-23 13:51:31 +00:00
0a346b32e9 Add devices 2022-08-22 18:21:32 -06:00
f599ad153e Update configuration to be generic 2022-08-22 17:55:22 -06:00
0a150560dd Add DE choice, GNOME and Plasma for now 2022-08-22 17:25:15 -06:00
262663bf3b Update README to link to new nix-configs repo 2022-08-21 17:39:52 -06:00
57829ec18e Update README and move sections to correct repos 2022-08-21 17:38:30 -06:00
3d72ac98e2 Remove old files for new location 2022-08-21 17:35:17 -06:00
bbe802c1c9 Update paths to new repo 2022-08-21 17:34:28 -06:00
57c1b7055d Moved to https://gitlab.com/ahoneybun/dot-files repo 2022-08-21 17:30:56 -06:00
Aaron Honeycutt
f719eb4aa8 Update configuration-pi4b.nix 2022-08-21 03:38:49 +00:00
Aaron Honeycutt
ddee886e48 Update configuration-pi4b.nix 2022-08-21 03:11:19 +00:00
Aaron Honeycutt
afc764ba6e Add new file 2022-08-21 03:09:30 +00:00
Aaron Honeycutt
0ce421de45 Add description for user 2022-08-12 14:56:21 +00:00
Aaron Honeycutt
b03dd951fc Update README.md 2022-06-18 15:12:49 +00:00
Aaron Honeycutt
0897390f7e Update README.md 2022-06-18 14:51:13 +00:00
Aaron Honeycutt
5edcc12af5 Move files into a sub folder to clean up a bit 2022-06-18 08:50:28 -06:00
Aaron Honeycutt
8d629a40c6 Move lemp.nix to nix-configs repo 2022-06-18 08:48:11 -06:00
Aaron Honeycutt
00fef136c2 Remove setup.sh as it is not needed 2022-06-15 17:33:21 +00:00
Aaron Honeycutt
ab30f02a5a Rename file 2022-06-14 20:53:06 +00:00
Aaron Honeycutt
d6fdfedd00 Add init nix file 2022-06-14 20:52:42 +00:00
Aaron Honeycutt
717ff6b424 Update README.md 2022-06-14 12:54:16 +00:00
Aaron Honeycutt
c1d3078634 Update README.md 2022-06-12 16:54:09 +00:00
Aaron Honeycutt
9e9cf0410e Add VS Code 2022-06-12 16:44:26 +00:00
Aaron Honeycutt
86c271bfc0 Merge branch 'wayland' into 'main'
Wayland

See merge request ahoneybun/nyxi-installer!11
2022-06-12 16:18:23 +00:00
Aaron Honeycutt
cd5b2a7c1a Wayland 2022-06-12 16:18:23 +00:00
Aaron Honeycutt
23ab83e177 Add ProtonVPN GUI package 2022-06-12 14:56:23 +00:00
Aaron Honeycutt
ac0794483c Upload New File 2022-06-12 14:54:21 +00:00
Aaron Honeycutt
c57d699083 Upload New File 2022-06-12 14:36:51 +00:00
Aaron Honeycutt
40d8c2dafc Uncomment label command as it may be causing issues. 2022-06-12 13:58:07 +00:00
Aaron Honeycutt
cf930bef19 Add LICENSE 2022-06-12 13:46:26 +00:00
Aaron Honeycutt
0e8edcf035 Adds unstable file for testing. 2022-06-11 19:30:47 +00:00
Aaron Honeycutt
ce50b9011e Add framework 2022-06-11 16:41:13 +00:00
Aaron Honeycutt
163b15a554 Add LibreOffice Fresh 2022-06-11 16:05:59 +00:00
Aaron Honeycutt
a1d2985091 Set fish by default 2022-06-08 21:36:02 +00:00
Aaron Honeycutt
136b1e284d Update README.md 2022-06-08 21:32:28 +00:00
Aaron Honeycutt
396e8a1832 Update README.md 2022-06-08 21:28:44 +00:00
Aaron Honeycutt
47827cfaec Add user to adm group for firmware-manager software 2022-06-08 17:35:04 +00:00
Aaron Honeycutt
0800cba6b0 Update lemp.nix 2022-06-08 14:57:37 +00:00
Aaron Honeycutt
4f9cc2cda3 LEMP starting file, just has working nginx so far. 2022-06-08 14:45:38 +00:00
Aaron Honeycutt
d386d2cde2 Update README.md 2022-06-08 00:48:50 +00:00
Aaron Honeycutt
cdfd830bd6 Add config files for Plasma 2022-06-07 17:41:46 -06:00
Aaron Honeycutt
b0af609fd5 Update README.md 2022-06-07 16:20:43 +00:00
Aaron Honeycutt
4a77aa9a87 Add programs.nix file 2022-06-07 00:02:31 +00:00
Aaron Honeycutt
9d893bca22 Add programs.nix file 2022-06-07 00:02:19 +00:00
Aaron Honeycutt
33776fcc17 Update configuration.nix 2022-06-06 23:57:38 +00:00
Aaron Honeycutt
7814bcaaf1 Add wget 2022-06-06 23:55:23 +00:00
Aaron Honeycutt
bb017d07b8 Add restic 2022-06-06 22:52:48 +00:00
Aaron Honeycutt
395387d13d Update README.md 2022-06-06 22:42:13 +00:00
Aaron Honeycutt
9e2997b17f Add Kalendar 2022-06-06 22:16:00 +00:00
Aaron Honeycutt
d0722306ed Update install.sh 2022-06-06 19:44:20 +00:00
Aaron Honeycutt
eca76dce9d Update install.sh 2022-06-06 19:38:07 +00:00
Aaron Honeycutt
e5961603f0 Update install.sh 2022-06-06 18:36:11 +00:00
Aaron Honeycutt
de6891e2ea Not fixing the issue. 2022-06-06 17:43:41 +00:00
Aaron Honeycutt
413ebdd22a Update install.sh 2022-06-06 17:22:03 +00:00
Aaron Honeycutt
7e06c2f66b Update install.sh 2022-06-06 17:15:27 +00:00
Aaron Honeycutt
2a155bba1a Update install.sh 2022-06-06 17:15:01 +00:00
Aaron Honeycutt
ca926a6da5 Update install.sh 2022-06-06 15:46:44 +00:00
Aaron Honeycutt
ea0c67f58f Update install.sh 2022-06-06 15:27:39 +00:00
Aaron Honeycutt
173157f316 Merge branch 'revert-7c4c8dc1' into 'main'
Revert "Update install.sh"

See merge request ahoneybun/nyxi-installer!10
2022-06-05 22:23:56 +00:00
Aaron Honeycutt
2d5f9e8abd Revert "Update install.sh"
This reverts commit 7c4c8dc1e4
2022-06-05 22:23:48 +00:00
Aaron Honeycutt
7c4c8dc1e4 Update install.sh 2022-06-05 22:18:12 +00:00
Aaron Honeycutt
bda7ed2fe6 Merge branch 'revert-122765f9' into 'main'
Revert "Update install.sh"

See merge request ahoneybun/nyxi-installer!9
2022-06-05 21:58:51 +00:00
Aaron Honeycutt
42483ab941 Revert "Update install.sh"
This reverts commit 122765f95a
2022-06-05 21:58:37 +00:00
Aaron Honeycutt
122765f95a Update install.sh 2022-06-05 21:50:51 +00:00
Aaron Honeycutt
d2442d7a87 Merge branch 'swap-option' into 'main'
Adds Swap options

See merge request ahoneybun/nyxi-installer!8
2022-06-05 18:23:04 +00:00
Aaron Honeycutt
aa3e009add Update install.sh 2022-06-05 18:05:49 +00:00
Aaron Honeycutt
1c50c98b2c Add Ark 2022-06-03 12:57:30 +00:00
Aaron Honeycutt
e577abd4f4 Add Discord and Slack 2022-06-03 01:53:58 +00:00
Aaron Honeycutt
1b27207134 Add KDE Connect 2022-06-03 01:51:01 +00:00
Aaron Honeycutt
ba80b66a22 Update plasma.nix 2022-06-02 19:38:00 +00:00
Aaron Honeycutt
6732eebab2 Add new file 2022-06-02 18:54:54 +00:00
Aaron Honeycutt
02686646fe Add Unfree 2022-06-02 18:33:30 +00:00
Aaron Honeycutt
cd4a630525 Move unfree 2022-06-02 18:33:09 +00:00
Aaron Honeycutt
170880ff44 Add Kate 2022-06-02 15:04:35 +00:00
Aaron Honeycutt
f6f03b75da Update install.sh 2022-05-31 17:27:30 +00:00
Aaron Honeycutt
37a5cffc39 Merge branch 'split-config' into 'main'
Split config

See merge request ahoneybun/nyxi-installer!6
2022-05-31 16:54:39 +00:00
Aaron Honeycutt
be9b8ecdaf Update configuration.nix 2022-05-31 15:34:28 +00:00
Aaron Honeycutt
43b8ccf893 Update configuration.nix 2022-05-31 15:34:05 +00:00
Aaron Honeycutt
659730d4fa Delete config.nix 2022-05-31 13:58:09 +00:00
Aaron Honeycutt
7617906a17 Update install.sh 2022-05-31 13:48:06 +00:00
Aaron Honeycutt
26692591e9 Update install.sh 2022-05-31 13:44:56 +00:00
Aaron Honeycutt
c28bcfb2bb Update install.sh 2022-05-31 13:35:36 +00:00
Aaron Honeycutt
cd6e1a571a Update plasma.nix 2022-05-31 13:34:50 +00:00
Aaron Honeycutt
b8a6ae7684 Update configuration.nix 2022-05-31 13:34:30 +00:00
Aaron Honeycutt
e8e084d1d9 Update plasma.nix 2022-05-31 13:33:52 +00:00
Aaron Honeycutt
f4ec76840d Add new file 2022-05-31 13:29:29 +00:00
Aaron Honeycutt
669a096167 Add new file 2022-05-31 13:27:32 +00:00
Aaron Honeycutt
d724ef8874 Simplify custom configuration file 2022-05-31 13:26:01 +00:00
Aaron Honeycutt
8fdbfb2971 removing custom username 2022-05-31 13:23:21 +00:00
Aaron Honeycutt
ba86573473 Update install.sh 2022-05-24 23:14:49 +00:00
Aaron Honeycutt
d45b4da6de Update install.sh 2022-05-24 23:03:35 +00:00
Aaron Honeycutt
740a02648c Merge branch 'custom-username' into 'main'
Custom username

See merge request ahoneybun/nyxi-installer!5
2022-05-23 14:28:40 +00:00
Aaron Honeycutt
8500a002c1 Update install.sh 2022-05-23 14:00:30 +00:00
Aaron Honeycutt
e12717f2f3 Update install.sh 2022-05-23 01:38:37 +00:00
Aaron Honeycutt
476c35a560 Update install.sh 2022-05-23 01:32:25 +00:00
Aaron Honeycutt
523e854cc8 Update install.sh 2022-05-22 04:08:54 +00:00
Aaron Honeycutt
1b799fc5a6 Update install.sh 2022-05-22 04:08:04 +00:00
Aaron Honeycutt
b6504ab7b6 Update config.nix 2022-05-22 03:55:20 +00:00
Aaron Honeycutt
ff72f6fac8 Update install.sh 2022-05-22 03:53:18 +00:00
Aaron Honeycutt
53b223bfa5 Update install.sh 2022-05-22 03:50:07 +00:00
Aaron Honeycutt
02ff6cc4a7 Update install.sh 2022-05-22 03:47:34 +00:00
18 changed files with 1854 additions and 259 deletions

8
.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
# Rust/Carge
/target
# Nix
result
# Main nix files
/data

View file

@ -1,12 +1,81 @@
# You can override the included template(s) by including variable overrides
# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
# Dependency Scanning customization: https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings
# Note that environment variables can be set in several places
# See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
sast:
- prepare
- test
- build
- release
prepare-job:
stage: prepare
image: rust
rules:
- if: $CI_COMMIT_TAG
when: never # Do not run this job when a tag is created manually
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch
script:
- echo "======== PREPARE JOB ========"
- echo "PKG_VERSION=$(awk -F ' = ' '$1 ~ /version/ { gsub(/["]/, "", $2); printf("%s",$2) }' Cargo.toml)" >> variables.env
- echo "PKG_REGISTRY_URL=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic" >> variables.env
- echo $PKG_VERSION
artifacts:
reports:
dotenv: variables.env
test-job:
stage: test
include:
- template: Security/SAST.gitlab-ci.yml
image: rust:latest
script:
- echo "======== TESTS JOB ========"
- apt update -m
- apt install -y libfdisk-dev libclang-19-dev
- cargo test --verbose
build-job:
stage: build
image: rust:latest
script:
- echo "======== BUILD JOB ========"
- apt update -m
- apt install -y libfdisk-dev libclang-19-dev
- cargo build --release
- mkdir bin
- mv /builds/ahoneybun/nyxi-installer/target/release/nyxi-installer bin/nyxi-installer-v${PKG_VERSION}
artifacts:
paths:
- bin/
release-job:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
needs:
- job: prepare-job
artifacts: true
- job: build-job
script:
- echo "======== RELEASE JOB ========"
rules:
- if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch
release:
tag_name: "v$PKG_VERSION"
description: "NixOS installer in Rust : v$PKG_VERSION"
ref: "$CI_COMMIT_SHA" # The tag is created from the pipeline SHA.
assets:
links:
- name: "v$PKG_VERSION"
url: "${PKG_REGISTRY_URL}/x86_64-unknown-linux-gnu/v${PKG_VERSION}/nyxi-installer"
upload-job:
stage: release
image: curlimages/curl:latest
needs:
- job: prepare-job
artifacts: true
- job: build-job
artifacts: true
rules:
- if: $CI_COMMIT_TAG
when: never # Do not run this job when a tag is created manually
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch
script:
- echo "======== UPLOAD JOB ========"
- ls -la bin/
- 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/nyxi-installer-v${PKG_VERSION} ${PKG_REGISTRY_URL}/x86_64-unknown-linux-gnu/v${PKG_VERSION}/nyxi-installer'

758
Cargo.lock generated Normal file
View file

@ -0,0 +1,758 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "aho-corasick"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"memchr",
]
[[package]]
name = "base64"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
[[package]]
name = "bindgen"
version = "0.66.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
dependencies = [
"bitflags",
"cexpr",
"clang-sys",
"lazy_static",
"lazycell",
"log",
"peeking_take_while",
"prettyplease",
"proc-macro2",
"quote",
"regex",
"rustc-hash",
"shlex",
"syn 2.0.100",
"which",
]
[[package]]
name = "bitflags"
version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
[[package]]
name = "cc"
version = "1.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a"
dependencies = [
"shlex",
]
[[package]]
name = "cexpr"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
dependencies = [
"nom",
]
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "cfg_aliases"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]]
name = "clang-sys"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
dependencies = [
"glob",
"libc",
"libloading",
]
[[package]]
name = "core-foundation-sys"
version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
[[package]]
name = "curl"
version = "0.4.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9fb4d13a1be2b58f14d60adba57c9834b78c62fd86c3e76a148f732686e9265"
dependencies = [
"curl-sys",
"libc",
"openssl-probe",
"openssl-sys",
"schannel",
"socket2",
"windows-sys 0.52.0",
]
[[package]]
name = "curl-sys"
version = "0.4.80+curl-8.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55f7df2eac63200c3ab25bde3b2268ef2ee56af3d238e76d61f01c3c49bff734"
dependencies = [
"cc",
"libc",
"libz-sys",
"openssl-sys",
"pkg-config",
"vcpkg",
"windows-sys 0.52.0",
]
[[package]]
name = "either"
version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]]
name = "embed-doc-image"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af36f591236d9d822425cb6896595658fa558fcebf5ee8accac1d4b92c47166e"
dependencies = [
"base64",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "enum-iterator"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c280b9e6b3ae19e152d8e31cf47f18389781e119d4013a2a2bb0180e5facc635"
dependencies = [
"enum-iterator-derive",
]
[[package]]
name = "enum-iterator-derive"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.100",
]
[[package]]
name = "equivalent"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "errno"
version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
dependencies = [
"libc",
"windows-sys 0.59.0",
]
[[package]]
name = "glob"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
[[package]]
name = "hashbrown"
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
[[package]]
name = "home"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf"
dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "indexmap"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058"
dependencies = [
"equivalent",
"hashbrown",
]
[[package]]
name = "io-kit-sys"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b2d4429acc1deff0fbdece0325b4997bdb02b2c245ab7023fd5deca0f6348de"
dependencies = [
"core-foundation-sys",
"mach2",
]
[[package]]
name = "lazy_static"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "lazycell"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]]
name = "libc"
version = "0.2.171"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
[[package]]
name = "libloading"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
dependencies = [
"cfg-if",
"windows-targets",
]
[[package]]
name = "libz-sys"
version = "1.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "linux-raw-sys"
version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]]
name = "log"
version = "0.4.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
[[package]]
name = "mach"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
dependencies = [
"libc",
]
[[package]]
name = "mach2"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
dependencies = [
"libc",
]
[[package]]
name = "memchr"
version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "minimal-lexical"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "nix"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
"bitflags",
"cfg-if",
"cfg_aliases",
"libc",
]
[[package]]
name = "nom"
version = "7.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
dependencies = [
"memchr",
"minimal-lexical",
]
[[package]]
name = "num_enum"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179"
dependencies = [
"num_enum_derive",
]
[[package]]
name = "num_enum_derive"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.100",
]
[[package]]
name = "nyxi-installer"
version = "2.0.0"
dependencies = [
"curl",
"nix",
"rsfdisk",
"sys_metrics",
]
[[package]]
name = "once_cell"
version = "1.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc"
[[package]]
name = "openssl-probe"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
[[package]]
name = "openssl-sys"
version = "0.9.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "peeking_take_while"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
[[package]]
name = "pkg-config"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]]
name = "prettyplease"
version = "0.2.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5316f57387668042f561aae71480de936257848f9c43ce528e311d89a07cadeb"
dependencies = [
"proc-macro2",
"syn 2.0.100",
]
[[package]]
name = "proc-macro-crate"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35"
dependencies = [
"toml_edit",
]
[[package]]
name = "proc-macro2"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
[[package]]
name = "regex"
version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata",
"regex-syntax",
]
[[package]]
name = "regex-automata"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "rsfdisk"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23b3cacc1af2ca434035b8c885b1ef4d64a663581df95134653feba07fccae0c"
dependencies = [
"embed-doc-image",
"enum-iterator",
"libc",
"log",
"num_enum",
"once_cell",
"pkg-config",
"rsfdisk-sys",
"thiserror",
"typed-builder",
]
[[package]]
name = "rsfdisk-sys"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b39b186475d9df76290bba3de5196eeed64b95e77861095ea8b244f962f47575"
dependencies = [
"bindgen",
"cc",
"pkg-config",
]
[[package]]
name = "rustc-hash"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
name = "rustix"
version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
"bitflags",
"errno",
"libc",
"linux-raw-sys",
"windows-sys 0.59.0",
]
[[package]]
name = "schannel"
version = "0.1.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "serde"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.100",
]
[[package]]
name = "shlex"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "socket2"
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef"
dependencies = [
"libc",
"windows-sys 0.52.0",
]
[[package]]
name = "syn"
version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "syn"
version = "2.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "sys_metrics"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9b266b80f59f86e2e1e0a4938e316e32c3730d94a749f236305152279f77484"
dependencies = [
"core-foundation-sys",
"glob",
"io-kit-sys",
"lazy_static",
"libc",
"mach",
"serde",
]
[[package]]
name = "thiserror"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.100",
]
[[package]]
name = "toml_datetime"
version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
[[package]]
name = "toml_edit"
version = "0.22.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474"
dependencies = [
"indexmap",
"toml_datetime",
"winnow",
]
[[package]]
name = "typed-builder"
version = "0.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd9d30e3a08026c78f246b173243cf07b3696d274debd26680773b6773c2afc7"
dependencies = [
"typed-builder-macro",
]
[[package]]
name = "typed-builder-macro"
version = "0.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c36781cc0e46a83726d9879608e4cf6c2505237e263a8eb8c24502989cfdb28"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.100",
]
[[package]]
name = "unicode-ident"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "which"
version = "4.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
dependencies = [
"either",
"home",
"once_cell",
"rustix",
]
[[package]]
name = "windows-sys"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-sys"
version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_gnullvm",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36"
dependencies = [
"memchr",
]

10
Cargo.toml Normal file
View file

@ -0,0 +1,10 @@
[package]
name = "nyxi-installer"
version = "2.0.2"
edition = "2021"
[dependencies]
curl = "0.4.47"
nix = { version = "0.29.0", features = ["mount"] }
rsfdisk = "0.1.0"
sys_metrics = "0.2.7"

339
LICENSE Normal file
View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Nyxi Installer
Copyright (C) 2022 Aaron Honeycutt
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View file

@ -4,57 +4,34 @@ This installer is named after my doggo Onyxia.
At the core of this installer it does the following:
- Partition the drive of your choice
- Installs a base of NixOS
- Installs Plasma
- Installs needed packages
- Partition the drive of your choice using the `rsfdisk` crate.
- Uses `flake.nix` to set certain modules depending on the system like nixos-hardware for the Pinebook Pro
- Installs a base of NixOS (`configuration.nix`)
Tested on the following drives:
- SATA
- NVMe
nix files are from [this repo](https://gitlab.com/ahoneybun/nix-configs/) but that can be changed as needed.
This sets the hashedPassword to my own so you will need to update it to match your own as well as the username. I created the hash with this command:
```
sudo mkpasswd -m sha-512
```bash
mkpasswd -m sha-512
```
## Get Started
# Usage
Prerequisites:
1. Boot from a live disk of NixOS (ideally the minimal image)
2. Connect to network
3. Download from the releases page using curl
- Prepare an installation medium.
- Boot the live environment.
- Connect to internet.
## Connect to internet
https://nixos.org/manual/nixos/stable/index.html#sec-installation-booting-networking
## Start the installer
```
curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/install.sh > install.sh; sh install.sh
```bash
curl $PATH
```
The following will happen:
## Older Bash installer
- Clear partition table for `/dev/***`.
- Creates a GPT partition table for `/dev/***`.
- Create a +512M EFI partiton at `/dev/***1`.
- Create a encrypted LVM at `/dev/***2`.
- Create a swap partition in the LVM and sets it as the same size as the RAM for hibernation.
- Create a root partition in the LVM.
- Install systemd-boot.
```bash
sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh)
```
## After Installation ...
# Development
...
## Roadmap
- [ ]
# Possible Ideas
- [ ]
![docs/development](https://gitlab.com/ahoneybun/nyxi-installer/-/blob/rust-rewrite/docs/development.md)

0
Screenshots/.gitkeep Normal file
View file

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

View file

@ -1,111 +0,0 @@
{ config, pkgs, ... }:
{
# Import other configuration modules
# (hardware-configuration.nix is autogenerated upon installation)
# paths in nix expressions are always relative the file which defines them
imports =
[
./hardware-configuration.nix
];
boot.loader = {
systemd-boot.enable = true;
};
boot.initrd.luks.devices = {
crypt-root = {
device = "/dev/disk/by-label/luks";
preLVM = true;
};
};
# Allow Unfree
nixpkgs.config.allowUnfree = true;
# Enable 32 Bit libraries for applications like Steam
hardware.opengl.driSupport32Bit = true;
# Name your host machine
networking.hostName = "NixOS";
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/Denver";
# Enter keyboard layout
services.xserver.layout = "us";
# Enable Flatpak
xdg = {
portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-wlr
xdg-desktop-portal-kde
];
};
};
services.flatpak.enable = true;
# Enable fwupd
services.fwupd.enable = true;
# Define user accounts
users.extraUsers =
{
aaronh =
{
home = "/home/aaronh";
extraGroups = [ "wheel" "networkmanager" ];
isNormalUser = true;
hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx.";
};
};
# Install some packages
environment.systemPackages =
with pkgs;
[
firefox
fish
flatpak
git
libsForQt5.bismuth
libsForQt5.kde-gtk-config
libsForQt5.plasma-nm
libsForQt5.plasma-pa
libsForQt5.sddm
steam
thunderbird
];
# Enable the OpenSSH daemon
services.openssh.enable = true;
# Plasma
services.xserver.enable = true;
services.xserver.displayManager.sddm.enable = true;
services.xserver.desktopManager.plasma5.enable = true;
# Enable Pipewire
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Enable Bluetooth
hardware.bluetooth.enable = true;
# Enable CUPS
services.printing.enable = true;
# System
system.autoUpgrade.enable = true;
system.autoUpgrade.allowReboot = true;
}

47
docs/development.md Normal file
View file

@ -0,0 +1,47 @@
# Development
## Clone the repository
```bash
git clone https://gitlab.com/ahoneybun/nyxi-installer.git
```
## Enter the repository that you just cloned
```bash
cd nyxi-installer
```
## Enter nix-shell
This is if you are already running NixOS or using the `nix` packagemanager on your system where development will take place. This will install the needed system packages, set environment variables and such for development.
```bash
nix-shell
```
## Flakes
If you have flakes enabled you can use `nix develop` instead.
```bash
nix develop
```
## Ubuntu
Install these packages for developing using `apt`.
```bash
sudo apt install build-essential pkg-config libcurl4-openssl-dev libfdisk-dev
```
## Building and testing
You can use normal `cargo` commands like:
- `cargo test`
- `cargo build`
- `cargo run`
**NOTE:** you will need to build the program and run it with `sudo` currently so `cargo run` is not the best for testing.

96
flake.lock generated Normal file
View file

@ -0,0 +1,96 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"naersk": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1743800763,
"narHash": "sha256-YFKV+fxEpMgP5VsUcM6Il28lI0NlpM7+oB1XxbBAYCw=",
"owner": "nix-community",
"repo": "naersk",
"rev": "ed0232117731a4c19d3ee93aa0c382a8fe754b01",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"naersk": "naersk",
"nixpkgs": "nixpkgs_2"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

40
flake.nix Normal file
View file

@ -0,0 +1,40 @@
{
description = "Flake to build and develop Nyxi";
inputs = {
flake-utils.url = "github:numtide/flake-utils";
naersk.url = "github:nix-community/naersk";
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
};
outputs = { self, flake-utils, naersk, nixpkgs }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = (import nixpkgs) {
inherit system;
};
naersk' = pkgs.callPackage naersk {};
# Setting variables that everything uses
LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib";
CLANG_PATH = "${pkgs.llvmPackages.clang}/bin/clang";
in rec {
# For `nix build` & `nix run`:
defaultPackage = naersk'.buildPackage {
inherit LIBCLANG_PATH CLANG_PATH;
buildInputs = with pkgs; [ pkg-config openssl ];
nativeBuildInputs = with pkgs; [ util-linux.dev ];
src = ./.;
};
# For `nix develop` (optional, can be skipped):
devShell = pkgs.mkShell {
inherit LIBCLANG_PATH CLANG_PATH;
buildInputs = with pkgs; [ pkg-config openssl ];
nativeBuildInputs = with pkgs; [ rustc cargo util-linux.dev ];
};
}
);
}

View file

@ -1,110 +1,80 @@
# Figure out how much RAM the system has an set a variable
ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'})
# Step 1: Choosing the drive for the installation
# Detect and list the drives.
## Detect and list the drives.
lsblk -f
# Choice the drive to use :
# 1.
## Choice the drive to use :
echo "----------"
echo ""
echo "Which drive do we want to use for this installation?"
read driveName
(
echo g # Create new GPT partition table
echo n # Create new partition (for EFI).
echo # Set default partition number.
echo # Set default first sector.
echo +512M # Set +512M as last sector.
echo n # Create new partition (for root).
echo # Set default partition number.
echo # Set default first sector.
echo n # Create new partition (for swap).
echo # Set default partition number.
echo # Set default first sector.
echo # Set default last sector (rest of the disk).
echo t # Change partition type.
echo 1 # Pick first partition.
echo 1 # Change first partition to EFI system.
echo w # write changes.
) | sudo fdisk $driveName -w always -W always
# List the new partitions.
lsblk -f
# Format the partitions :
echo "----------"
echo ""
echo "Which is the EFI partition?"
read efiName
echo "For example /dev/sda or /dev/nvme0n1"
echo ""
echo "Which is the root partition?"
read rootName
read -p "Enter your drive choice: " driveName
echo ""
# Create EFI partition
sudo mkfs.fat -F32 -n EFI $efiName
## Download Disko file
cd /tmp
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/partitions/luks-btrfs-subvolumes.nix -o /tmp/disko-config.nix
# Encrypt the root partition
sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName
## Replace drive in Disko file
sudo sed -i "s#/dev/sda#$driveName#g" /tmp/disko-config.nix
# Open the encrypted root partition
sudo cryptsetup luksOpen $rootName crypt-root
# Step 2: Partitioning the drive used for the installation
sudo pvcreate /dev/mapper/crypt-root
sudo vgcreate lvm /dev/mapper/crypt-root
## Run Disko to partition the disk
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount /tmp/disko-config.nix --yes-wipe-all-disks
sudo lvcreate -L "$ramTotal"G -n swap lvm
sudo lvcreate -l '100%FREE' -n root lvm
## Generate Nix configuration
sudo nixos-generate-config --no-filesystems --root /mnt
sudo cryptsetup config $rootName --label luks
## Copies over the disko file for running `nixos-install`
sudo mv /tmp/disko-config.nix /mnt/etc/nixos
sudo mkswap /dev/lvm/swap # swap partition
sudo mkfs.btrfs -L root /dev/lvm/root # /root partition
## Downloads and places the predefinded generic flake to use
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/
# 0. Mount the filesystems.
sudo swapon /dev/lvm/swap
sudo mount /dev/lvm/root /mnt
## Downloads and places the predefinded generic configuration and home files to use
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/
# Create Subvolumes
sudo btrfs subvolume create /mnt/@
sudo btrfs subvolume create /mnt/@home
# Step 3: Choosing a predefined system flake file to use
# Unmount root
sudo umount /mnt
cat << EOF
# Mount the subvolumes.
sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt
Which device are you installing to?
1) Virtual Machine
2) Lemur Pro 13 (Garrus)
3) Pixel Slate
4) nebula49 (Shepard)
0) Generic
EOF
sudo mkdir /mnt/home/
sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home /dev/lvm/root /mnt/home
echo ""
read -p "Enter your device choice: " hostChoice
echo ""
# Mount the EFI partition.
sudo mkdir /mnt/boot/
sudo mount $efiName /mnt/boot
if [ $hostChoice = 1 ]; then
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/vm/configuration.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/
sudo nixos-install --flake /mnt/etc/nixos#vm
# Generate Nix configuration
sudo nixos-generate-config --root /mnt
elif [ $hostChoice = 2 ]; then
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/garrus/configuration.nix > garrus.nix; sudo mv -f garrus.nix /mnt/etc/nixos/
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/gnome.nix > gnome.nix; sudo mv -f gnome.nix /mnt/etc/nixos/
sudo nixos-install --flake /mnt/etc/nixos#garrus
curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/
elif [ $hostChoice = 3 ]; then
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/pixel-slate.nix > pixel-slate.nix; sudo mv -f pixel-slate.nix /mnt/etc/nixos/
#curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/lomiri.nix > gnome.nix; sudo mv -f gnome.nix /mnt/etc/nixos/
sudo nixos-install --flake /mnt/etc/nixos#pixel-slate
# Install
sudo nixos-install
elif [ $hostChoice = 4 ]; then
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/shepard/configuration.nix > shepard.nix; sudo mv -f shepard.nix /mnt/etc/nixos/
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/gnome.nix > gnome.nix; sudo mv -f gnome.nix /mnt/etc/nixos/
sudo nixos-install --flake /mnt/etc/nixos#shepard
# Start Setup section
# sudo -i
# curl https://gitlab.com/ahoneybun/nynx-installer/-/raw/main/setup.sh > /mnt/setup.sh
elif [ $hostChoice = 0 ]; then
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/gnome.nix > gnome.nix; sudo mv -f gnome.nix /mnt/etc/nixos/
sudo nixos-install --flake /mnt/etc/nixos#nixos
# # Enter into installed OS
# mount -o bind /dev /mnt/dev
# mount -o bind /proc /mnt/proc
# mount -o bind /sys /mnt/sys
# chroot /mnt /nix/var/nix/profiles/system/activate
# chroot /mnt /run/current-system/sw/bin/sh setup.sh
# Removed install script.
rm install.sh
# Remove setup script
# rm setup.sh
fi

View file

@ -1,12 +0,0 @@
# Set user password
echo "----------"
echo ""
echo "Which is the username?"
read userName
sudo passwd $userName
# Create Directories
mkdir /home/$userName/Projects
exit

29
shell.nix Normal file
View file

@ -0,0 +1,29 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = with pkgs; [
# Rust
cargo
rustc
# Compiler
gnumake
clang
llvmPackages.libclang
llvmPackages.clang
# System
btrfs-progs
e2fsprogs
openssl
pkg-config
util-linux
];
shellHook = ''
export LIBCLANG_PATH="${pkgs.llvmPackages.libclang.lib}/lib"
export CLANG_PATH="${pkgs.llvmPackages.clang}/bin/clang"
export RUST_BACKTRACE=1
echo "We're ready to make some Rust!"
'';
}

375
src/main.rs Normal file
View file

@ -0,0 +1,375 @@
use rsfdisk::core::partition::{Guid, Partition, PartitionKind};
use rsfdisk::core::partition_table::PartitionTableKind;
use rsfdisk::fdisk::Fdisk;
use std::fs::File;
use std::io;
use std::io::Write;
use std::path::Path;
use std::process::{Command, Stdio};
use sys_metrics::disks;
use curl::easy::Easy;
use nix::mount::{mount, MsFlags};
fn format_drive(drive_name: &str) -> rsfdisk::Result<()> {
let mut disk = Fdisk::builder()
.assign_device(drive_name)
.enable_read_write()
.wipe_device_metadata()
.build()?;
disk.partition_table_create(PartitionTableKind::GPT)?;
let partition_type = PartitionKind::builder().guid(Guid::EfiSystem).build()?;
let boot = Partition::builder()
.partition_type(partition_type)
.name("EFI")
//Assuming 512 bytes per sector, 2_097_152 sectors <=> 1 GiB.
.size_in_sectors(2_097_152)
.build()?;
let _ = disk.partition_add(boot)?;
let partition_type = PartitionKind::builder()
.guid(Guid::LinuxRootx86_64)
.build()?;
let root = Partition::builder()
.partition_type(partition_type)
.name("Root")
.build()?;
let _ = disk.partition_add(root)?;
disk.partition_table_write_to_disk()?;
Ok(())
}
fn format_partitions(drive_name: &str) {
let efi_path = format!("{}p1", drive_name);
let root_path = format!("{}p2", drive_name);
let _efi_partition = Command::new("mkfs.fat")
.arg("-F32")
.arg("-n")
.arg("EFI")
.arg(&efi_path)
.output()
.expect("Failed to format boot partition as FAT32");
let _root_partition = Command::new("mkfs.ext4")
.arg(&root_path)
.output()
.expect("Failed to format root partition as ext4");
}
fn mount_partitions(drive_name: &str) {
let efi_path = format!("{}p1", drive_name);
let root_path = format!("{}p2", drive_name);
let root_source = Some(Path::new(&root_path));
let root_target = Path::new("/mnt");
mount(
root_source,
root_target,
Some("ext4"),
MsFlags::empty(),
None::<&[u8]>,
)
.expect("Failed to mount root partition");
// Creates the boot directory in /mnt/boot
let _create_boot_directory = Command::new("mkdir")
.arg("-p")
.arg("/mnt/boot")
.output()
.expect("Failed to create boot directory");
//let boot_source = Some(Path::new(&efi_path));
//let boot_target = Path::new("/mnt/boot");
let _mount_boot = Command::new("mount")
.args(["-t", "vfat"])
.args(["-o", "umask=0077"])
.arg(&efi_path)
.arg("/mnt/boot")
.output()
.expect("Failed to mount boot partition");
// mount(
// boot_source,
// boot_target,
// Some("vfat"),
// MsFlags::empty(),
// None::<&[u8]>,
// )
// .expect("Failed to mount boot partition");
}
fn grab_flake() {
let mut easy = Easy::new();
easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/flake.nix")
.unwrap();
let mut file = File::create("flake.nix").unwrap();
{
let mut transfer = easy.transfer();
transfer
.write_function(|data| {
file.write_all(data).unwrap();
Ok(data.len())
})
.unwrap();
transfer.perform().unwrap();
}
}
fn grab_config() {
let mut easy = Easy::new();
easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/configuration.nix")
.unwrap();
let mut file = File::create("configuration.nix").unwrap();
{
let mut transfer = easy.transfer();
transfer
.write_function(|data| {
file.write_all(data).unwrap();
Ok(data.len())
})
.unwrap();
transfer.perform().unwrap();
}
}
fn grab_home() {
let mut easy = Easy::new();
easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/home.nix")
.unwrap();
let mut file = File::create("home.nix").unwrap();
{
let mut transfer = easy.transfer();
transfer
.write_function(|data| {
file.write_all(data).unwrap();
Ok(data.len())
})
.unwrap();
transfer.perform().unwrap();
}
}
fn grab_gnome() {
let mut gnome_config = Easy::new();
gnome_config
.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/gnome.nix")
.unwrap();
let mut config_file = File::create("gnome.nix").unwrap();
{
let mut transfer = gnome_config.transfer();
transfer
.write_function(|data| {
config_file.write_all(data).unwrap();
Ok(data.len())
})
.unwrap();
transfer.perform().unwrap();
}
}
fn main() {
println!("--------------------------------------");
println!("| Welcome to the Nyxi Installer 2.0! |");
println!("--------------------------------------");
println!("");
println!("Availble disks for installation:");
println!("---------------------------------");
println!("");
match disks::get_physical_ioblocks() {
Ok(disk_list) => {
for disk in disk_list {
println!("Disk: {}", disk.device_name);
}
}
Err(_e) => println!("{}", _e),
}
let mut drive_name = String::new();
println!("");
println!("Use the full drive path such as /dev/nvme0n1 or /dev/sda");
println!("");
println!(
"Which drive do we want to use for this installation?: {}",
drive_name
);
io::stdin()
.read_line(&mut drive_name)
.expect("Failed to read line");
let drive_name = drive_name.trim();
// Download nix files
grab_flake();
grab_config();
grab_home();
grab_gnome();
// Partitioning the selected drive
let _ = format_drive(drive_name);
// Formatting the partitions
format_partitions(drive_name);
// Mounting the partitions
mount_partitions(drive_name);
// Creates the init nix config in /mnt/etc/nixos
let _nixos_gen_config = Command::new("nixos-generate-config")
.arg("--root")
.arg("/mnt")
.output()
.expect("Failed to execute command");
// Copies the nix files to /mnt/etc/nixos/
let _nix_move = Command::new("mv")
.args(["-f", "flake.nix", "configuration.nix", "home.nix"])
.arg("/mnt/etc/nixos")
.output()
.expect("Failed to move nix files over");
// Fixes a security issue with boot
let _boot_fix = Command::new("sed")
.arg("-i")
.arg(
r#"/fsType = "vfat"/ {
n
s/\(options = \[.*\)\]/\1"umask=0077 "]/
}"#,
)
.arg("/mnt/etc/nixos/hardware-configuration.nix")
.output()
.expect("Failed to apply boot fix");
// Host selection
loop {
println!("");
println!("Host selection:");
println!("---------------");
println!("");
println!("1. Lemur Pro 13 (Garrus)");
println!("2. Virtual Machine");
println!("3. Generic");
println!("");
println!("Enter your host for installation:");
let mut choice = String::new();
io::stdin().read_line(&mut choice).unwrap();
match choice.trim() {
"1" => {
let mut garrus_config = Easy::new();
garrus_config.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/garrus/configuration.nix").unwrap();
let mut config_file = File::create("garrus.nix").unwrap();
{
let mut transfer = garrus_config.transfer();
transfer
.write_function(|data| {
config_file.write_all(data).unwrap();
Ok(data.len())
})
.unwrap();
transfer.perform().unwrap();
}
// Copies the system nix files to /mnt/etc/nixos/
let _garrus_nix_copy = Command::new("mv")
.args(["garrus.nix", "gnome.nix", "/mnt/etc/nixos"])
.output()
.expect("Failed to copy nix files over");
let mut nixos_install = Command::new("nixos-install")
.arg("--flake")
.arg("/mnt/etc/nixos#garrus")
.arg("--no-root-passwd")
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.spawn()
.unwrap();
let install_status = nixos_install.wait();
println!("Exited with status {:?}", install_status);
break;
}
"2" => {
let mut vm_config = Easy::new();
vm_config.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/vm/configuration.nix").unwrap();
let mut config_file = File::create("vm.nix").unwrap();
{
let mut transfer = vm_config.transfer();
transfer
.write_function(|data| {
config_file.write_all(data).unwrap();
Ok(data.len())
})
.unwrap();
transfer.perform().unwrap();
}
// Copies the system nix files to /mnt/etc/nixos/
let _garrus_nix_copy = Command::new("mv")
.args(["vm.nix", "/mnt/etc/nixos"])
.output()
.expect("Failed to copy nix files over");
let mut nixos_install = Command::new("nixos-install")
.arg("--flake")
.arg("/mnt/etc/nixos#vm")
.arg("--no-root-passwd")
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.spawn()
.unwrap();
let install_status = nixos_install.wait();
println!("Exited with status {:?}", install_status);
break;
}
"3" => {
let mut nixos_install = Command::new("nixos-install")
.arg("--flake")
.arg("/mnt/etc/nixos#nixos")
.arg("--no-root-passwd")
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.spawn()
.unwrap();
let install_status = nixos_install.wait();
println!("Exited with status {:?}", install_status);
break;
}
_ => println!("Invalid choice, try again."),
}
}
}