getch 0.1.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (161) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +75 -35
  4. data/assets/network-stack.conf +63 -0
  5. data/assets/system.conf +38 -0
  6. data/bin/getch +14 -4
  7. data/lib/clean.rb +149 -0
  8. data/lib/cmdline.rb +128 -0
  9. data/lib/cryptsetup.rb +132 -0
  10. data/lib/devs.rb +199 -0
  11. data/lib/dracut/encrypt.rb +36 -0
  12. data/lib/dracut/hybrid.rb +15 -0
  13. data/lib/dracut/lvm.rb +14 -0
  14. data/lib/dracut/minimal.rb +11 -0
  15. data/lib/dracut/root.rb +45 -0
  16. data/lib/dracut/zfs.rb +35 -0
  17. data/lib/dracut.rb +11 -0
  18. data/lib/fstab/encrypt.rb +44 -0
  19. data/lib/fstab/hybrid.rb +34 -0
  20. data/lib/fstab/lvm.rb +25 -0
  21. data/lib/fstab/minimal.rb +6 -0
  22. data/lib/fstab/root.rb +93 -0
  23. data/lib/fstab/zfs.rb +23 -0
  24. data/lib/fstab.rb +11 -0
  25. data/lib/getch/assembly.rb +150 -0
  26. data/lib/getch/command.rb +94 -124
  27. data/lib/getch/config/account.rb +39 -0
  28. data/lib/getch/config/dhcp.rb +104 -0
  29. data/lib/getch/config/grub.rb +42 -0
  30. data/lib/getch/config/iwd.rb +60 -0
  31. data/lib/getch/config/keymap.rb +78 -0
  32. data/lib/getch/config/locale.rb +96 -0
  33. data/lib/getch/config/portage.rb +90 -0
  34. data/lib/getch/config/pre_network.rb +37 -0
  35. data/lib/getch/config/timezone.rb +52 -0
  36. data/lib/getch/config/void.rb +11 -0
  37. data/lib/getch/config.rb +19 -53
  38. data/lib/getch/device.rb +67 -0
  39. data/lib/getch/filesystem/ext4/encrypt/config.rb +11 -68
  40. data/lib/getch/filesystem/ext4/encrypt/deps.rb +17 -25
  41. data/lib/getch/filesystem/ext4/encrypt/device.rb +13 -5
  42. data/lib/getch/filesystem/ext4/encrypt/format.rb +8 -15
  43. data/lib/getch/filesystem/ext4/encrypt/mount.rb +9 -13
  44. data/lib/getch/filesystem/ext4/encrypt/partition.rb +10 -82
  45. data/lib/getch/filesystem/ext4/encrypt/void.rb +63 -0
  46. data/lib/getch/filesystem/ext4/encrypt.rb +4 -0
  47. data/lib/getch/filesystem/ext4/hybrid/config.rb +27 -0
  48. data/lib/getch/filesystem/ext4/hybrid/deps.rb +55 -0
  49. data/lib/getch/filesystem/ext4/hybrid/device.rb +24 -0
  50. data/lib/getch/filesystem/ext4/hybrid/format.rb +23 -0
  51. data/lib/getch/filesystem/ext4/hybrid/mount.rb +21 -0
  52. data/lib/getch/filesystem/ext4/hybrid/partition.rb +27 -0
  53. data/lib/getch/filesystem/ext4/hybrid/void.rb +62 -0
  54. data/lib/getch/filesystem/ext4/hybrid.rb +19 -0
  55. data/lib/getch/filesystem/ext4/lvm/config.rb +25 -0
  56. data/lib/getch/filesystem/ext4/lvm/deps.rb +56 -0
  57. data/lib/getch/filesystem/ext4/lvm/device.rb +28 -0
  58. data/lib/getch/filesystem/ext4/lvm/format.rb +21 -0
  59. data/lib/getch/filesystem/ext4/lvm/mount.rb +21 -0
  60. data/lib/getch/filesystem/ext4/lvm/partition.rb +28 -0
  61. data/lib/getch/filesystem/{lvm.rb → ext4/lvm.rb} +8 -3
  62. data/lib/getch/filesystem/ext4/minimal/config.rb +25 -0
  63. data/lib/getch/filesystem/ext4/{device.rb → minimal/deps.rb} +4 -3
  64. data/lib/getch/filesystem/ext4/minimal/device.rb +22 -0
  65. data/lib/getch/filesystem/ext4/minimal/format.rb +23 -0
  66. data/lib/getch/filesystem/ext4/minimal/mount.rb +21 -0
  67. data/lib/getch/filesystem/ext4/minimal/partition.rb +28 -0
  68. data/lib/getch/filesystem/ext4/minimal.rb +19 -0
  69. data/lib/getch/filesystem/ext4.rb +9 -6
  70. data/lib/getch/filesystem/zfs/encrypt/config.rb +12 -57
  71. data/lib/getch/filesystem/zfs/encrypt/deps.rb +7 -86
  72. data/lib/getch/filesystem/zfs/encrypt/device.rb +9 -45
  73. data/lib/getch/filesystem/zfs/encrypt/format.rb +8 -90
  74. data/lib/getch/filesystem/zfs/encrypt/mount.rb +16 -34
  75. data/lib/getch/filesystem/zfs/encrypt/partition.rb +8 -50
  76. data/lib/getch/filesystem/zfs/encrypt.rb +4 -0
  77. data/lib/getch/filesystem/zfs/minimal/config.rb +37 -0
  78. data/lib/getch/filesystem/zfs/minimal/deps.rb +126 -0
  79. data/lib/getch/filesystem/zfs/minimal/device.rb +24 -0
  80. data/lib/getch/filesystem/zfs/minimal/format.rb +23 -0
  81. data/lib/getch/filesystem/zfs/minimal/mount.rb +23 -0
  82. data/lib/getch/filesystem/zfs/minimal/partition.rb +23 -0
  83. data/lib/getch/filesystem/zfs/minimal.rb +19 -0
  84. data/lib/getch/filesystem/zfs.rb +3 -6
  85. data/lib/getch/filesystem.rb +2 -6
  86. data/lib/getch/gentoo/bootloader.rb +47 -0
  87. data/lib/getch/gentoo/finalize.rb +25 -0
  88. data/lib/getch/gentoo/post_config.rb +75 -0
  89. data/lib/getch/gentoo/pre_config.rb +37 -0
  90. data/lib/getch/gentoo/services.rb +18 -0
  91. data/lib/getch/gentoo/sources.rb +82 -52
  92. data/lib/getch/gentoo/tarball.rb +91 -0
  93. data/lib/getch/gentoo/terraform.rb +34 -0
  94. data/lib/getch/gentoo/update.rb +54 -0
  95. data/lib/getch/gentoo/use.rb +11 -12
  96. data/lib/getch/gentoo/use_flag.rb +74 -52
  97. data/lib/getch/gentoo.rb +11 -63
  98. data/lib/getch/guard.rb +71 -0
  99. data/lib/getch/helpers.rb +128 -48
  100. data/lib/getch/log.rb +91 -26
  101. data/lib/getch/options.rb +79 -40
  102. data/lib/getch/states.rb +37 -10
  103. data/lib/getch/tree.rb +56 -0
  104. data/lib/getch/version.rb +1 -1
  105. data/lib/getch/void/bootloader.rb +18 -0
  106. data/lib/getch/void/finalize.rb +31 -0
  107. data/lib/getch/void/post_config.rb +19 -0
  108. data/lib/getch/void/pre_config.rb +18 -0
  109. data/lib/getch/void/services.rb +18 -0
  110. data/lib/getch/void/tarball.rb +89 -0
  111. data/lib/getch/void/terraform.rb +28 -0
  112. data/lib/getch/void/update.rb +33 -0
  113. data/lib/getch/void.rb +15 -0
  114. data/lib/getch.rb +104 -92
  115. data/lib/luks.rb +239 -0
  116. data/lib/lvm2.rb +112 -0
  117. data/lib/mkfs/zfs.rb +167 -0
  118. data/lib/mkfs.rb +140 -0
  119. data/lib/mountfs.rb +154 -0
  120. data/lib/nito.rb +131 -0
  121. data/lib/sgdisk.rb +160 -0
  122. data.tar.gz.sig +0 -0
  123. metadata +96 -45
  124. metadata.gz.sig +0 -0
  125. data/.gitignore +0 -2
  126. data/CHANGELOG.md +0 -90
  127. data/Rakefile +0 -21
  128. data/bin/setup.sh +0 -90
  129. data/getch.gemspec +0 -25
  130. data/lib/getch/filesystem/clean.rb +0 -51
  131. data/lib/getch/filesystem/device.rb +0 -61
  132. data/lib/getch/filesystem/ext4/config.rb +0 -58
  133. data/lib/getch/filesystem/ext4/deps.rb +0 -22
  134. data/lib/getch/filesystem/ext4/format.rb +0 -28
  135. data/lib/getch/filesystem/ext4/mount.rb +0 -23
  136. data/lib/getch/filesystem/ext4/partition.rb +0 -52
  137. data/lib/getch/filesystem/lvm/config.rb +0 -59
  138. data/lib/getch/filesystem/lvm/deps.rb +0 -42
  139. data/lib/getch/filesystem/lvm/device.rb +0 -43
  140. data/lib/getch/filesystem/lvm/encrypt/config.rb +0 -71
  141. data/lib/getch/filesystem/lvm/encrypt/deps.rb +0 -46
  142. data/lib/getch/filesystem/lvm/encrypt/device.rb +0 -46
  143. data/lib/getch/filesystem/lvm/encrypt/format.rb +0 -32
  144. data/lib/getch/filesystem/lvm/encrypt/mount.rb +0 -25
  145. data/lib/getch/filesystem/lvm/encrypt/partition.rb +0 -80
  146. data/lib/getch/filesystem/lvm/encrypt.rb +0 -15
  147. data/lib/getch/filesystem/lvm/format.rb +0 -29
  148. data/lib/getch/filesystem/lvm/mount.rb +0 -23
  149. data/lib/getch/filesystem/lvm/partition.rb +0 -69
  150. data/lib/getch/filesystem/mount.rb +0 -56
  151. data/lib/getch/filesystem/partition.rb +0 -77
  152. data/lib/getch/filesystem/zfs/config.rb +0 -57
  153. data/lib/getch/filesystem/zfs/deps.rb +0 -95
  154. data/lib/getch/filesystem/zfs/device.rb +0 -58
  155. data/lib/getch/filesystem/zfs/format.rb +0 -114
  156. data/lib/getch/filesystem/zfs/mount.rb +0 -48
  157. data/lib/getch/filesystem/zfs/partition.rb +0 -64
  158. data/lib/getch/gentoo/boot.rb +0 -109
  159. data/lib/getch/gentoo/chroot.rb +0 -77
  160. data/lib/getch/gentoo/config.rb +0 -129
  161. data/lib/getch/gentoo/stage.rb +0 -74
data/lib/sgdisk.rb ADDED
@@ -0,0 +1,160 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'getch/command'
4
+ require 'getch/helpers'
5
+
6
+ module Sgdisk
7
+ class Root
8
+ def initialize(devs)
9
+ @gpt = devs[:gpt] ||= nil
10
+ @efi = devs[:efi] ||= nil
11
+ @boot = devs[:boot] ||= nil
12
+ @swap = devs[:swap] ||= nil
13
+ @root = devs[:root] ||= nil
14
+ @home = devs[:home] ||= nil
15
+ load_codes
16
+ x
17
+ end
18
+
19
+ protected
20
+
21
+ def x
22
+ make_gpt
23
+ make_efi
24
+ make_boot
25
+ make_swap
26
+ make_root
27
+ make_home
28
+ end
29
+
30
+ def make_gpt
31
+ @gpt || return
32
+
33
+ partition @gpt, @gpt_code, '1MiB:+1MiB'
34
+ end
35
+
36
+ def make_efi
37
+ @efi || return
38
+
39
+ partition @efi, @efi_code, '1M:+260M'
40
+ end
41
+
42
+ def make_boot
43
+ @boot || return
44
+
45
+ partition @boot, @boot_code, '0:+256MiB'
46
+ end
47
+
48
+ def make_swap
49
+ @swap || return
50
+
51
+ mem = Getch::Helpers.get_memory
52
+ partition @swap, @swap_code, "0:+#{mem}"
53
+ end
54
+
55
+ # Align the end
56
+ # https://unix.stackexchange.com/questions/588930/sgdisk-force-alignment-of-end-sector
57
+ # https://gitlab.com/cryptsetup/cryptsetup/-/issues/585
58
+ def make_root
59
+ @root || return
60
+
61
+ return unless @root =~ /[0-9]/
62
+
63
+ finish = end_sector @root
64
+ partition @root, @root_code, "0:#{finish}"
65
+ end
66
+
67
+ def make_home
68
+ @home || return
69
+
70
+ return unless @home =~ /[0-9]/
71
+
72
+ finish = end_sector @home
73
+ partition @home, @home_code, "0:#{finish}"
74
+ end
75
+
76
+ private
77
+
78
+ # sgdisk -L
79
+ def load_codes
80
+ @gpt_code = 'ef02'
81
+ @efi_code = 'ef00'
82
+ @boot_code = '8300'
83
+ @swap_code = '8200'
84
+ @root_code = '8304'
85
+ @home_code = '8302'
86
+ end
87
+
88
+ # e.g: partition sda1, 'ef02', '1Mib:+1MiB'
89
+ def partition(disk, code, sectors)
90
+ d = disk[/^[a-z]+/]
91
+ p = disk[/[0-9]{1}$/]
92
+ args = "-n#{p}:#{sectors} -t#{p}:#{code} /dev/#{d}"
93
+
94
+ Getch::Command.new('sgdisk', args)
95
+ end
96
+
97
+ def end_sector(dev)
98
+ disk = dev[/^[a-z]+/]
99
+ cmd = Getch::Command.new("sgdisk -E /dev/#{disk}")
100
+ end_position = cmd.res.to_i
101
+ ( end_position - ( end_position + 1 ) % 2048 )
102
+ end
103
+ end
104
+
105
+ class Ext4 < Root
106
+ end
107
+
108
+ class Lvm < Root
109
+ def load_codes
110
+ super
111
+ @root_code = '8e00'
112
+ @home_code = '8e00'
113
+ end
114
+ end
115
+
116
+ class Encrypt < Root
117
+ def load_codes
118
+ super
119
+ @boot_code = '8309'
120
+ @root_code = '8309'
121
+ @home_code = '8309'
122
+ end
123
+ end
124
+
125
+ class Zfs < Root
126
+ def load_codes
127
+ super
128
+ @boot_code = 'be00'
129
+ @root_code = 'bf00'
130
+ @home_code = 'bf05'
131
+ @zlog_code = 'bf07'
132
+ @zcache_code = 'bf08'
133
+ end
134
+
135
+ def make_boot
136
+ @boot || return
137
+
138
+ partition @boot, @boot_code, '0:+2G'
139
+ end
140
+
141
+ def make_swap
142
+ mem = Getch::Helpers.get_memory
143
+ partition @swap, @swap_code, "0:+#{mem}"
144
+ add_zlog
145
+ add_zcache
146
+ end
147
+
148
+ def add_zlog
149
+ @zlog || return
150
+
151
+ partition @zlog, @zlog_code, '0:+4G'
152
+ end
153
+
154
+ def add_zcache
155
+ @zcache || return
156
+
157
+ partition @zcache, @zcache_code, '0:0'
158
+ end
159
+ end
160
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: getch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - szorfein
@@ -35,7 +35,7 @@ cert_chain:
35
35
  F9Dl4EPzjBJOgQWf+NxzxNuNKI46Lp5Q8AI+xtDUHAPbSswHa40BA6ChFehP+j0L
36
36
  fg==
37
37
  -----END CERTIFICATE-----
38
- date: 2021-05-17 00:00:00.000000000 Z
38
+ date: 2022-02-17 00:00:00.000000000 Z
39
39
  dependencies: []
40
40
  description:
41
41
  email:
@@ -43,25 +43,48 @@ email:
43
43
  executables:
44
44
  - getch
45
45
  extensions: []
46
- extra_rdoc_files: []
46
+ extra_rdoc_files:
47
+ - README.md
47
48
  files:
48
- - ".gitignore"
49
- - CHANGELOG.md
50
49
  - README.md
51
- - Rakefile
50
+ - assets/network-stack.conf
51
+ - assets/system.conf
52
52
  - bin/getch
53
- - bin/setup.sh
54
- - getch.gemspec
53
+ - lib/clean.rb
54
+ - lib/cmdline.rb
55
+ - lib/cryptsetup.rb
56
+ - lib/devs.rb
57
+ - lib/dracut.rb
58
+ - lib/dracut/encrypt.rb
59
+ - lib/dracut/hybrid.rb
60
+ - lib/dracut/lvm.rb
61
+ - lib/dracut/minimal.rb
62
+ - lib/dracut/root.rb
63
+ - lib/dracut/zfs.rb
64
+ - lib/fstab.rb
65
+ - lib/fstab/encrypt.rb
66
+ - lib/fstab/hybrid.rb
67
+ - lib/fstab/lvm.rb
68
+ - lib/fstab/minimal.rb
69
+ - lib/fstab/root.rb
70
+ - lib/fstab/zfs.rb
55
71
  - lib/getch.rb
72
+ - lib/getch/assembly.rb
56
73
  - lib/getch/command.rb
57
74
  - lib/getch/config.rb
75
+ - lib/getch/config/account.rb
76
+ - lib/getch/config/dhcp.rb
77
+ - lib/getch/config/grub.rb
78
+ - lib/getch/config/iwd.rb
79
+ - lib/getch/config/keymap.rb
80
+ - lib/getch/config/locale.rb
81
+ - lib/getch/config/portage.rb
82
+ - lib/getch/config/pre_network.rb
83
+ - lib/getch/config/timezone.rb
84
+ - lib/getch/config/void.rb
85
+ - lib/getch/device.rb
58
86
  - lib/getch/filesystem.rb
59
- - lib/getch/filesystem/clean.rb
60
- - lib/getch/filesystem/device.rb
61
87
  - lib/getch/filesystem/ext4.rb
62
- - lib/getch/filesystem/ext4/config.rb
63
- - lib/getch/filesystem/ext4/deps.rb
64
- - lib/getch/filesystem/ext4/device.rb
65
88
  - lib/getch/filesystem/ext4/encrypt.rb
66
89
  - lib/getch/filesystem/ext4/encrypt/config.rb
67
90
  - lib/getch/filesystem/ext4/encrypt/deps.rb
@@ -69,29 +92,30 @@ files:
69
92
  - lib/getch/filesystem/ext4/encrypt/format.rb
70
93
  - lib/getch/filesystem/ext4/encrypt/mount.rb
71
94
  - lib/getch/filesystem/ext4/encrypt/partition.rb
72
- - lib/getch/filesystem/ext4/format.rb
73
- - lib/getch/filesystem/ext4/mount.rb
74
- - lib/getch/filesystem/ext4/partition.rb
75
- - lib/getch/filesystem/lvm.rb
76
- - lib/getch/filesystem/lvm/config.rb
77
- - lib/getch/filesystem/lvm/deps.rb
78
- - lib/getch/filesystem/lvm/device.rb
79
- - lib/getch/filesystem/lvm/encrypt.rb
80
- - lib/getch/filesystem/lvm/encrypt/config.rb
81
- - lib/getch/filesystem/lvm/encrypt/deps.rb
82
- - lib/getch/filesystem/lvm/encrypt/device.rb
83
- - lib/getch/filesystem/lvm/encrypt/format.rb
84
- - lib/getch/filesystem/lvm/encrypt/mount.rb
85
- - lib/getch/filesystem/lvm/encrypt/partition.rb
86
- - lib/getch/filesystem/lvm/format.rb
87
- - lib/getch/filesystem/lvm/mount.rb
88
- - lib/getch/filesystem/lvm/partition.rb
89
- - lib/getch/filesystem/mount.rb
90
- - lib/getch/filesystem/partition.rb
95
+ - lib/getch/filesystem/ext4/encrypt/void.rb
96
+ - lib/getch/filesystem/ext4/hybrid.rb
97
+ - lib/getch/filesystem/ext4/hybrid/config.rb
98
+ - lib/getch/filesystem/ext4/hybrid/deps.rb
99
+ - lib/getch/filesystem/ext4/hybrid/device.rb
100
+ - lib/getch/filesystem/ext4/hybrid/format.rb
101
+ - lib/getch/filesystem/ext4/hybrid/mount.rb
102
+ - lib/getch/filesystem/ext4/hybrid/partition.rb
103
+ - lib/getch/filesystem/ext4/hybrid/void.rb
104
+ - lib/getch/filesystem/ext4/lvm.rb
105
+ - lib/getch/filesystem/ext4/lvm/config.rb
106
+ - lib/getch/filesystem/ext4/lvm/deps.rb
107
+ - lib/getch/filesystem/ext4/lvm/device.rb
108
+ - lib/getch/filesystem/ext4/lvm/format.rb
109
+ - lib/getch/filesystem/ext4/lvm/mount.rb
110
+ - lib/getch/filesystem/ext4/lvm/partition.rb
111
+ - lib/getch/filesystem/ext4/minimal.rb
112
+ - lib/getch/filesystem/ext4/minimal/config.rb
113
+ - lib/getch/filesystem/ext4/minimal/deps.rb
114
+ - lib/getch/filesystem/ext4/minimal/device.rb
115
+ - lib/getch/filesystem/ext4/minimal/format.rb
116
+ - lib/getch/filesystem/ext4/minimal/mount.rb
117
+ - lib/getch/filesystem/ext4/minimal/partition.rb
91
118
  - lib/getch/filesystem/zfs.rb
92
- - lib/getch/filesystem/zfs/config.rb
93
- - lib/getch/filesystem/zfs/deps.rb
94
- - lib/getch/filesystem/zfs/device.rb
95
119
  - lib/getch/filesystem/zfs/encrypt.rb
96
120
  - lib/getch/filesystem/zfs/encrypt/config.rb
97
121
  - lib/getch/filesystem/zfs/encrypt/deps.rb
@@ -99,26 +123,53 @@ files:
99
123
  - lib/getch/filesystem/zfs/encrypt/format.rb
100
124
  - lib/getch/filesystem/zfs/encrypt/mount.rb
101
125
  - lib/getch/filesystem/zfs/encrypt/partition.rb
102
- - lib/getch/filesystem/zfs/format.rb
103
- - lib/getch/filesystem/zfs/mount.rb
104
- - lib/getch/filesystem/zfs/partition.rb
126
+ - lib/getch/filesystem/zfs/minimal.rb
127
+ - lib/getch/filesystem/zfs/minimal/config.rb
128
+ - lib/getch/filesystem/zfs/minimal/deps.rb
129
+ - lib/getch/filesystem/zfs/minimal/device.rb
130
+ - lib/getch/filesystem/zfs/minimal/format.rb
131
+ - lib/getch/filesystem/zfs/minimal/mount.rb
132
+ - lib/getch/filesystem/zfs/minimal/partition.rb
105
133
  - lib/getch/gentoo.rb
106
- - lib/getch/gentoo/boot.rb
107
- - lib/getch/gentoo/chroot.rb
108
- - lib/getch/gentoo/config.rb
134
+ - lib/getch/gentoo/bootloader.rb
135
+ - lib/getch/gentoo/finalize.rb
136
+ - lib/getch/gentoo/post_config.rb
137
+ - lib/getch/gentoo/pre_config.rb
138
+ - lib/getch/gentoo/services.rb
109
139
  - lib/getch/gentoo/sources.rb
110
- - lib/getch/gentoo/stage.rb
140
+ - lib/getch/gentoo/tarball.rb
141
+ - lib/getch/gentoo/terraform.rb
142
+ - lib/getch/gentoo/update.rb
111
143
  - lib/getch/gentoo/use.rb
112
144
  - lib/getch/gentoo/use_flag.rb
145
+ - lib/getch/guard.rb
113
146
  - lib/getch/helpers.rb
114
147
  - lib/getch/log.rb
115
148
  - lib/getch/options.rb
116
149
  - lib/getch/states.rb
150
+ - lib/getch/tree.rb
117
151
  - lib/getch/version.rb
152
+ - lib/getch/void.rb
153
+ - lib/getch/void/bootloader.rb
154
+ - lib/getch/void/finalize.rb
155
+ - lib/getch/void/post_config.rb
156
+ - lib/getch/void/pre_config.rb
157
+ - lib/getch/void/services.rb
158
+ - lib/getch/void/tarball.rb
159
+ - lib/getch/void/terraform.rb
160
+ - lib/getch/void/update.rb
161
+ - lib/luks.rb
162
+ - lib/lvm2.rb
163
+ - lib/mkfs.rb
164
+ - lib/mkfs/zfs.rb
165
+ - lib/mountfs.rb
166
+ - lib/nito.rb
167
+ - lib/sgdisk.rb
118
168
  homepage: https://github.com/szorfein/getch
119
169
  licenses:
120
170
  - MIT
121
171
  metadata:
172
+ source_code_uri: https://github.com/szorfein/getch
122
173
  changelog_uri: https://github.com/szorfein/getch/blob/master/CHANGELOG.md
123
174
  bug_tracker_uri: https://github.com/szorfein/getch/issues
124
175
  wiki_uri: https://github.com/szorfein/getch
@@ -130,15 +181,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
181
  requirements:
131
182
  - - ">="
132
183
  - !ruby/object:Gem::Version
133
- version: '2.5'
184
+ version: 2.5.0
134
185
  required_rubygems_version: !ruby/object:Gem::Requirement
135
186
  requirements:
136
187
  - - ">="
137
188
  - !ruby/object:Gem::Version
138
189
  version: '0'
139
190
  requirements: []
140
- rubygems_version: 3.0.9
191
+ rubygems_version: 3.2.32
141
192
  signing_key:
142
193
  specification_version: 4
143
- summary: A CLI tool to install Gentoo
194
+ summary: A CLI tool to install Gentoo or VoidLinux.
144
195
  test_files: []
metadata.gz.sig CHANGED
Binary file
data/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- *.gem
2
- *.swp
data/CHANGELOG.md DELETED
@@ -1,90 +0,0 @@
1
- ## 0.1.3, release 2021-05-17
2
- * LVM use the format /dev/vg_name/lv_name for mount/format/fstab.
3
- * Stop using `euse` from `gentoolkit`, use native Ruby code here.
4
- * Optimization on package installation, they shouln't be installed more than once.
5
- * Regroup use flags under Getch::Gentoo::UseFlag.
6
- * Upd Bask v0.5 (zstd compression, better support for wifi...)
7
- * Config for systemd-resolved, enable DNS over TLS with Quad9 (9.9.9.9)
8
- * Add configs for systemd-network with DHCP for wifi and ethernet.
9
- * Correct permissions (/home/[user] and /etc/portage)
10
-
11
- ## 0.1.2, release 2021-05-12
12
- * DOCS update.
13
- * Keep Nano for those who need :)
14
- * ZFS use the last version >=2.0 with kernel stable =5.10
15
- * ZFS create a Log device and Cache device if getch is used with `--separate-cache`.
16
- * GRUB or Systemd-boot can now be installed on separate disk with `--separate-boot`.
17
- * Adding flag for ZFS `-o autotrim=on` (used with `zpool create`).
18
- * Encrypted swap use: `cipher=aes-xts-plain64:sha256,size=512` by default.
19
- * In the make.conf: add `-fomit-frame-pointer`, designed to reduce generated code size.
20
-
21
- ## 0.1.1, release 2020-11-01
22
- * Change mountpoint for the esp at /efi rather than /boot/efi
23
- * Replace Garden by Bask https://github.com/szorfein/bask
24
- * Correct option --username USERNAME, do not create a new partition.
25
- * New set of options --separate-{boot,cache,home} to install them on another disk
26
- * Refactor codes
27
- * Add cpu name to COMMON_FLAGS
28
- * Add cpuflags with app-portage/cpuid2cpuflags
29
- + Use the whole disk space available for / when option --username is unset
30
-
31
- ## 0.1.0, release 2020-10-15
32
- * Add the (Zeta) filesystem ZFS
33
- * `emerge --depclean` to save space.
34
- * Add a message when getch have finish, keep /mnt/gentoo if you need to add something.
35
- * Use systemd-detect-virt to detect a Virtual Guest.
36
-
37
- ## 0.0.9, release 2020-10-03
38
- * Add encryption on ext4 and lvm (BIOS,UEFI)
39
- * Correct KEYMAP="yes" with genkernel
40
- * Renaming option keyboard with keymap
41
- * GPG verification for ebuild
42
-
43
- ## 0.0.8, release 2020-09-30
44
- * Adding LVM via the option fs, `--fs lvm`.
45
- * Systemd-boot use the value of PARTUUID without initramfs.
46
- * Include lib logger.
47
- * Enhance functions to call program system Emerge, Make, ...
48
-
49
- ## 0.0.7, release 2020-09-22
50
- * Correct fstab.
51
- * Repair GRUB/fstab for BIOS system, add secure cmdline.
52
- * Create a swap volume equal to the memory installed.
53
- * Add vim and sudo
54
-
55
- ## 0.0.6, release 2020-09-19
56
- * Add support for QEMU guest with KVM and Virtio driver
57
- * Kernel compilation, initialize a config file with `make localyesconfig`.
58
- * More modular codes to start with encryption and other filesystems.
59
- * Add the new option --verbose to display output of compilation, etc...
60
-
61
- ## 0.0.5, release 2020-09-17
62
- * Generate a hostname
63
- * Configure systemd-boot for UEFI system
64
-
65
- ## 0.0.4, release 2020-09-16
66
- * Boot on a BIOS system with VirtualBox
67
- * Install Grub
68
- * Create user
69
- * Create passwd for root and user
70
- * Check lsmod to install deps (like wpa_supplicant) and patch the kernel
71
-
72
- ## 0.0.3, release 2020-09-14
73
- * Add dhcpcd, gentoo-sources, linux-firmware
74
- * Kernel build by using https://github.com/szorfein/garden
75
- * Populate /etc/portage (/etc/portage/package.{use,unmask,accept_keywords}/zzz_via_autounmask)
76
- * Download all the lastest ebuild via emerge-webrsync
77
- * Update gentoo via emerge -uDN @world
78
-
79
- ## 0.0.2, release 2020-09-12
80
- * Getch genere a file /tmp/install_gentoo to avoid to remake same task over and over
81
- * Support for ext4
82
- * Mount partition on /mnt/gentoo during the install
83
- * Download, verify the checksum and decompress the last stage3-amd64-systemd
84
-
85
- ## 0.0.1, release 2020-09-10
86
- * Partition disk (at least 15G required) with sgdisk (create /boot, /, /home, and swap)
87
- * Support for one disk with -d|--disk
88
- * Add few options for the CLI
89
- * Add bin/setup.sh to install ruby when boot on a ISO file
90
- * Init project
data/Rakefile DELETED
@@ -1,21 +0,0 @@
1
- # https://github.com/seattlerb/minitest#running-your-tests-
2
- require "rake/testtask"
3
- require File.dirname(__FILE__) + "/lib/getch/version"
4
-
5
- Rake::TestTask.new(:test) do |t|
6
- t.libs << "test"
7
- t.libs << "lib"
8
- t.test_files = FileList["test/test_*.rb"]
9
- end
10
-
11
- # Usage: rake gem:build
12
- namespace :gem do
13
- desc "build the gem"
14
- task :build do
15
- Dir["getch*.gem"].each {|f| File.unlink(f) }
16
- system("gem build getch.gemspec")
17
- system("gem install getch-#{Getch::VERSION}.gem -P HighSecurity")
18
- end
19
- end
20
-
21
- task :default => :test
data/bin/setup.sh DELETED
@@ -1,90 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- set -o errexit -o nounset
4
-
5
- DIR=/tmp/getch-master
6
- PATH=${PATH}:/tmp/ruby/bin
7
-
8
- # last snapshot https://www.ruby-lang.org/en/downloads/
9
- compile_ruby() {
10
- PN=ruby
11
- PV=2.7
12
- [ -f /tmp/$PN_$PV.tar.gz ] || curl -s -L -o /tmp/$PN_$PV.tar.gz https://cache.ruby-lang.org/pub/ruby/snapshot/snapshot-$PN_$PV.tar.gz
13
- [ -d /tmp/snapshot-$PN_$PV ] || {
14
- cd /tmp
15
- tar xvf $PN_$PV.tar.gz
16
- }
17
- cd snapshot-$PN_$PV
18
- ./configure --prefix=/tmp/$PN
19
- make
20
- make install
21
- }
22
-
23
- search_ruby() {
24
- if hash ruby 2>/dev/null ; then
25
- echo "Ruby $(ruby -v | awk '{print $2}') found"
26
- else
27
- echo "Install ruby"
28
- if hash pacman 2>/dev/null ; then
29
- pacman -Syy --noconfirm libyaml ruby ruby-irb ruby-reline rubygems
30
- elif hash emerge 2>/dev/null ; then
31
- emerge -av dev-lang/ruby
32
- elif hash apt-get 2>/dev/null ; then
33
- apt-get install ruby
34
- else
35
- compile_ruby
36
- fi
37
- fi
38
- }
39
-
40
- install_with_gem() {
41
- gem install getch
42
- getch -h
43
- }
44
-
45
- dll_test_version() {
46
- echo "Downloading the test version..."
47
- cd /tmp
48
- [ -f ./getch.tar.gz ] && rm ./getch.tar.gz
49
- [ -d ./getch-master ] && rm -rf ./getch-master
50
-
51
- curl -s -L -o getch.tar.gz https://github.com/szorfein/getch/archive/master.tar.gz
52
- tar xzf getch.tar.gz \
53
- && cd $DIR \
54
- && ruby -I lib bin/getch -h
55
- }
56
-
57
- get_getch() {
58
- if hash gem 2>/dev/null ; then
59
- printf "Which version? [1] stable , [2] test (no recommended) " ; read -r
60
- if echo "$REPLY" | grep -qP "2" ; then
61
- dll_test_version
62
- else
63
- install_with_gem
64
- fi
65
- else
66
- dll_test_version
67
- fi
68
- }
69
-
70
- set_shell() {
71
- your_shell=~/.bashrc
72
- [ -f ~/.zshrc ] && your_shell=~/.zshrc
73
-
74
- [ -f "$your_shell" ] && {
75
- if ! grep -q "ruby" "$your_shell" ; then
76
- echo "export PATH=\$PATH:$(ruby -e 'puts Gem.user_dir')/bin" >> "$your_shell"
77
- fi
78
- if $(. "$your_shell") ; then
79
- echo "Shell loaded"
80
- fi
81
- }
82
- }
83
-
84
- main() {
85
- search_ruby
86
- set_shell
87
- get_getch
88
- }
89
-
90
- main "$@"
data/getch.gemspec DELETED
@@ -1,25 +0,0 @@
1
- require File.dirname(__FILE__) + "/lib/getch/version"
2
-
3
- Gem::Specification.new do |s|
4
- s.name = "getch"
5
- s.version = Getch::VERSION
6
- s.summary = "A CLI tool to install Gentoo"
7
- s.authors = ["szorfein"]
8
- s.email = ["szorfein@protonmail.com"]
9
- s.homepage = 'https://github.com/szorfein/getch'
10
- s.metadata = {
11
- "changelog_uri" => "https://github.com/szorfein/getch/blob/master/CHANGELOG.md",
12
- "bug_tracker_uri" => "https://github.com/szorfein/getch/issues",
13
- "wiki_uri" => "https://github.com/szorfein/getch"
14
- }
15
- s.license = "MIT"
16
- s.required_ruby_version = '>=2.5'
17
-
18
- s.files = `git ls-files`.split(" ")
19
- s.files.reject! { |fn| fn.include? "certs" }
20
-
21
- s.executables = [ 'getch' ]
22
-
23
- s.cert_chain = ['certs/szorfein.pem']
24
- s.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
25
- end
@@ -1,51 +0,0 @@
1
- module Getch
2
- module FileSystem
3
- module Clean
4
- def self.clean_hdd(disk)
5
- return if ! disk
6
- raise ArgumentError, "Disk #{disk} is no found." if ! File.exist? "/dev/#{disk}"
7
- puts
8
- print "Cleaning data on #{disk}, can be long, avoid this on Flash Memory (SSD,USB,...) ? [y,N] "
9
- case gets.chomp
10
- when /^y|^Y/
11
- bloc=`blockdev --getbsz /dev/#{disk}`.chomp
12
- Helpers::sys("dd if=/dev/urandom of=/dev/#{disk} bs=#{bloc} status=progress")
13
- else
14
- return
15
- end
16
- end
17
-
18
- def self.clean_struct(disk)
19
- return if ! disk
20
- raise ArgumentError, "Disk #{disk} is no found." if ! File.exist? "/dev/#{disk}"
21
- Helpers::sys("sgdisk -Z /dev/#{disk}")
22
- Helpers::sys("wipefs -a /dev/#{disk}")
23
- end
24
-
25
- def self.hdd(*disks)
26
- disks.each { |d| clean_hdd(d) }
27
- end
28
- # See https://wiki.archlinux.org/index.php/Solid_state_drive/Memory_cell_clearing
29
- # for SSD
30
- def self.sdd
31
- end
32
-
33
- def self.struct(*disks)
34
- disks.each { |d| clean_struct(d) }
35
- end
36
-
37
- def self.old_vg(disk, vg)
38
- oldvg = `vgdisplay | grep #{vg}`.chomp
39
- Helpers::sys("vgremove -f #{vg}") if oldvg != ''
40
- Helpers::sys("pvremove -f #{disk}") if oldvg != '' and File.exist? disk
41
- end
42
-
43
- def self.old_zpool
44
- oldzpool = `zpool status | grep pool:`.gsub(/pool: /, '').delete(' ').split("\n")
45
- if oldzpool[0] != "" and $?.success?
46
- oldzpool.each { |p| Helpers::sys("zpool destroy #{p}") if p }
47
- end
48
- end
49
- end
50
- end
51
- end