Compare commits

...

242 commits
v1.2.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
16 changed files with 1514 additions and 190 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:
- prepare
- test
sast:
- 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"

View file

@ -4,55 +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
- 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`)
- Installs Plasma (`plasma.nix`)
- Installs needed packages (`programs.nix`)
nix files are from [this repo](https://gitlab.com/ahoneybun/nix-configs/) but that can be changed as needed.
Tested on the following drives:
- SATA
- NVMe
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/nyxi-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 if requested.
- Create a root partition in the LVM.
- Install systemd-boot.
```bash
sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh)
```
## Roadmap
# Development
- [ ]
# 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

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,155 +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 ""
echo "Do you want Hibernation?"
echo "1) Yes"
echo "2) No"
read hibState
# 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
if [ $hibState = 1 ]; then
sudo lvcreate -L "$ramTotal"G -n swap lvm
## Generate Nix configuration
sudo nixos-generate-config --no-filesystems --root /mnt
else
## Copies over the disko file for running `nixos-install`
sudo mv /tmp/disko-config.nix /mnt/etc/nixos
if [ $hibState = 2 ]; then
sudo lvcreate -L 4G -n swap lvm
## 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/
fi
fi
sudo lvcreate -l '100%FREE' -n root lvm
# sudo btrfs filesystem label $rootName luks
# sudo cryptsetup config $rootName --label luks
sudo mkswap /dev/lvm/swap # swap partition
sudo mkfs.btrfs -L root /dev/lvm/root # /root partition
# 0. Mount the filesystems.
sudo swapon /dev/lvm/swap
sudo mount /dev/lvm/root /mnt
# Create Subvolumes
sudo btrfs subvolume create /mnt/@
sudo btrfs subvolume create /mnt/@home
# Unmount root
sudo umount /mnt
# Mount the subvolumes.
sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@ /dev/lvm/root /mnt
sudo mkdir /mnt/home/
sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@home /dev/lvm/root /mnt/home
# Mount the EFI partition.
sudo mkdir /mnt/boot/
sudo mount $efiName /mnt/boot
# Generate Nix configuration
sudo nixos-generate-config --root /mnt
# Copy my nix configs over
## 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/programs.nix > programs.nix; sudo mv -f programs.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/
# Step 3: Choosing a predefined system flake file to use
cat << EOF
Which device are you installing to?
1) Virtual Machine
2) Lemur Pro 13 (Garrus)
3) Pixel Slate
4) nebula49 (Shepard)
0) Generic
EOF
echo ""
echo "Which Desktop Environment do you want?"
echo "1) Plasma"
echo "2) GNOME"
read desktopChoice
if [ $desktopChoice = 1 ]; then
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/
sudo sed -i "10 i \ ./plasma.nix" /mnt/etc/nixos/configuration.nix
else
if [ $desktopChoice = 2 ]; then
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/gnome.nix > gnome.nix; sudo mv -f gnome.nix /mnt/etc/nixos/
sudo sed -i "10 i \ ./gnome.nix" /mnt/etc/nixos/configuration.nix
fi
fi
read -p "Enter your device choice: " hostChoice
echo ""
echo "Which device are you installing to?"
echo "1) Oryx Pro (oryp6)"
echo "2) HP Omen (15-dh0015nr)"
read device
if [ $device = 1 ]; then
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/oryp6.nix > oryp6.nix; sudo mv -f oryp6.nix /mnt/etc/nixos/
sudo sed -i "10 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix
else
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
if [ $device = 2 ]; then
curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/hp-omen.nix > hp-omen.nix; sudo mv -f hp-omen.nix /mnt/etc/nixos/
sudo sed -i "11 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix
fi
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
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
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
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
fi
# Replace LUKS device with correct partition
sudo sed -i "s|/dev/disk/by-label/luks|$rootName|g" /mnt/etc/nixos/configuration.nix
# Install
sudo nixos-install
# Removed install script.
rm install.sh

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."),
}
}
}