warding 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +7 -7
- data/debug/{install.sh → debug.sh} +11 -9
- data/debug/quick-install.sh +7 -5
- data/lib/warding.rb +268 -283
- data/lib/warding/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b01d39b579dc6b923df3efb9e24b577cfa395a5b0c8af10132a6ef57f4f36316
|
4
|
+
data.tar.gz: 874ad35327459572601cfab840a1c56697ae800288752764fa031ea4bf916136
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02b9d08406cc56ebf1c7475bfe7a99bc1957d07344c7881f194fb77fa3e83d15bd36b1e6af481c0277fe8b9cabab0ee9b140930f9ea4b554c19c923ef3693918
|
7
|
+
data.tar.gz: f0f3b24627977fa16f82f3e0b6773e4062e755f1f13eee13f9a44f5e9451574a0955e899de682a64b66f6f56bf744dd3411ab02dadd9b53af585f25afa175c2c
|
data/README.md
CHANGED
@@ -13,9 +13,7 @@ gem install warding
|
|
13
13
|
Or use the quick install method:
|
14
14
|
|
15
15
|
```bash
|
16
|
-
wget -qO- https://raw.githubusercontent/marlospomin/warding/master/debug/quick-install.sh
|
17
|
-
export PATH="`ruby -e 'puts Gem.user_dir'`/bin:$PATH"
|
18
|
-
warding
|
16
|
+
wget -qO- https://raw.githubusercontent.com/marlospomin/warding/master/debug/quick-install.sh | sh
|
19
17
|
```
|
20
18
|
|
21
19
|
## Usage
|
@@ -26,11 +24,13 @@ warding
|
|
26
24
|
4. Run the binary executable `warding` and fill in the prompts.
|
27
25
|
5. Enjoy.
|
28
26
|
|
29
|
-
##
|
27
|
+
## Debug
|
30
28
|
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
To install the latest version (debug) of warding follow the steps below:
|
30
|
+
|
31
|
+
```bash
|
32
|
+
wget -qO- https://raw.githubusercontent.com/marlospomin/warding/master/debug/debug.sh | sh
|
33
|
+
```
|
34
34
|
|
35
35
|
## Contributing
|
36
36
|
|
@@ -1,9 +1,11 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
pacman -
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
bundle
|
8
|
-
|
9
|
-
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
pacman -S git ruby glibc libxcrypt --noconfirm
|
4
|
+
git clone https://github.com/marlospomin/warding
|
5
|
+
cd warding
|
6
|
+
pacman -R man-pages --noconfirm
|
7
|
+
gem install bundle rake
|
8
|
+
export PATH="`ruby -e 'puts Gem.user_dir'`/bin:$PATH"
|
9
|
+
bundle
|
10
|
+
rake install
|
11
|
+
warding
|
data/debug/quick-install.sh
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
pacman -R man-pages --noconfirm
|
4
|
-
pacman -Syy ruby glibc libxcrypt --noconfirm
|
5
|
-
gem install warding
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
pacman -R man-pages --noconfirm
|
4
|
+
pacman -Syy ruby glibc libxcrypt --noconfirm
|
5
|
+
gem install warding
|
6
|
+
export PATH="`ruby -e 'puts Gem.user_dir'`/bin:$PATH"
|
7
|
+
warding
|
data/lib/warding.rb
CHANGED
@@ -1,283 +1,268 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "warding/version"
|
4
|
-
require "tty-prompt"
|
5
|
-
|
6
|
-
module Warding
|
7
|
-
class Error < StandardError; end
|
8
|
-
|
9
|
-
class Installer
|
10
|
-
@@prompt = TTY::Prompt.new
|
11
|
-
|
12
|
-
def banner
|
13
|
-
puts <<~'EOF'
|
14
|
-
|
15
|
-
( ( (
|
16
|
-
)\))( ' ) ( )\ ) ( ( (
|
17
|
-
((_)()\ ) ( /( )( (()/( )\ ( )\))(
|
18
|
-
_(())\_)() )(_)) (()\ ((_)) ((_) )\ ) ((_))\
|
19
|
-
\ \((_)/ /((_)_ ((_) _| | (_) _(_/( (()(_)
|
20
|
-
\ \/\/ / / _` | | '_| / _` | | | | ' \)) / _` |
|
21
|
-
\_/\_/ \__,_| |_| \__,_| |_| |_||_| \__, |
|
22
|
-
|___/
|
23
|
-
|
24
|
-
EOF
|
25
|
-
end
|
26
|
-
|
27
|
-
def check
|
28
|
-
unless `uname -a`.include?("archiso")
|
29
|
-
@@prompt.error("Exiting...")
|
30
|
-
@@prompt.warn("Warding can only be installed from within the live ISO context!")
|
31
|
-
exit!
|
32
|
-
end
|
33
|
-
|
34
|
-
unless `[ -d /sys/firmware/efi ] && echo true`.include?("true")
|
35
|
-
@@prompt.error("UEFI/EFI must be enabled to install warding")
|
36
|
-
exit!
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def gather
|
41
|
-
locales_list = %w[en_US es_ES pt_BR ru_RU fr_FR it_IT de_DE ja_JP ko_KR zh_CN]
|
42
|
-
keymaps_list = %w[us uk br en fr de zh ru it es]
|
43
|
-
|
44
|
-
parsed_input = @@prompt.collect do
|
45
|
-
key(:update_mirrors).yes?("Update mirrorlist?")
|
46
|
-
key(:system_language).select("Pick the desired system language:", locales_list)
|
47
|
-
key(:keyboard_keymap).select("Pick your keyboard layout:", keymaps_list)
|
48
|
-
|
49
|
-
unless @@prompt.yes?("Set timezone automatically?", default: true)
|
50
|
-
key(:update_timezone).ask("Enter timezone:", required: true)
|
51
|
-
end
|
52
|
-
|
53
|
-
key(:root_password).mask("Insert new root password:",
|
54
|
-
|
55
|
-
key(:system_settings) do
|
56
|
-
key(:boot_size).slider("Boot drive partition size (MiB):", min: 512, max: 4096, default: 1024, step: 128)
|
57
|
-
key(:swap_size).slider("Swap partition size (MiB):", min: 1024, max: 8192, default: 2048, step: 256)
|
58
|
-
|
59
|
-
if key(:encrypted).yes?("Enable encryption?", default: false)
|
60
|
-
key(:encryption_settings) do
|
61
|
-
key(:encryption_key).mask("Insert the encryption key:", required: true)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
key(:desktop_environment).select("Select your desktop environment:", %w[plasma gnome none])
|
67
|
-
end
|
68
|
-
|
69
|
-
parsed_input
|
70
|
-
end
|
71
|
-
|
72
|
-
def install(data, encrypted=false)
|
73
|
-
if @@prompt.yes?("Confirm settings and continue?")
|
74
|
-
|
75
|
-
@@prompt.say("Installing, please wait...")
|
76
|
-
|
77
|
-
def setup_mirrors
|
78
|
-
# update mirrorlist
|
79
|
-
`reflector --latest
|
80
|
-
end
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
# set
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
`timedatectl set-timezone
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
# create
|
114
|
-
`
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
#
|
128
|
-
`
|
129
|
-
`
|
130
|
-
|
131
|
-
|
132
|
-
`
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
#
|
138
|
-
`
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
#
|
152
|
-
`
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
#
|
161
|
-
`
|
162
|
-
# update
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
#
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
end
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
#
|
197
|
-
`arch-chroot /mnt
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
# install
|
242
|
-
`arch-chroot /mnt pacman -S
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
end
|
270
|
-
|
271
|
-
setup_visuals(data[:desktop_environment])
|
272
|
-
|
273
|
-
def finish
|
274
|
-
# end
|
275
|
-
`umount -R /mnt`
|
276
|
-
`reboot`
|
277
|
-
end
|
278
|
-
|
279
|
-
finish
|
280
|
-
end
|
281
|
-
end
|
282
|
-
end
|
283
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "warding/version"
|
4
|
+
require "tty-prompt"
|
5
|
+
|
6
|
+
module Warding
|
7
|
+
class Error < StandardError; end
|
8
|
+
|
9
|
+
class Installer
|
10
|
+
@@prompt = TTY::Prompt.new
|
11
|
+
|
12
|
+
def banner
|
13
|
+
puts <<~'EOF'
|
14
|
+
|
15
|
+
( ( (
|
16
|
+
)\))( ' ) ( )\ ) ( ( (
|
17
|
+
((_)()\ ) ( /( )( (()/( )\ ( )\))(
|
18
|
+
_(())\_)() )(_)) (()\ ((_)) ((_) )\ ) ((_))\
|
19
|
+
\ \((_)/ /((_)_ ((_) _| | (_) _(_/( (()(_)
|
20
|
+
\ \/\/ / / _` | | '_| / _` | | | | ' \)) / _` |
|
21
|
+
\_/\_/ \__,_| |_| \__,_| |_| |_||_| \__, |
|
22
|
+
|___/
|
23
|
+
|
24
|
+
EOF
|
25
|
+
end
|
26
|
+
|
27
|
+
def check
|
28
|
+
unless `uname -a`.include?("archiso")
|
29
|
+
@@prompt.error("Exiting...")
|
30
|
+
@@prompt.warn("Warding can only be installed from within the live ISO context!")
|
31
|
+
exit!
|
32
|
+
end
|
33
|
+
|
34
|
+
unless `[ -d /sys/firmware/efi ] && echo true`.include?("true")
|
35
|
+
@@prompt.error("UEFI/EFI must be enabled to install warding.")
|
36
|
+
exit!
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def gather
|
41
|
+
locales_list = %w[en_US es_ES pt_BR ru_RU fr_FR it_IT de_DE ja_JP ko_KR zh_CN]
|
42
|
+
keymaps_list = %w[us uk br en fr de zh ru it es]
|
43
|
+
|
44
|
+
parsed_input = @@prompt.collect do
|
45
|
+
key(:update_mirrors).yes?("Update mirrorlist?")
|
46
|
+
key(:system_language).select("Pick the desired system language:", locales_list)
|
47
|
+
key(:keyboard_keymap).select("Pick your keyboard layout:", keymaps_list)
|
48
|
+
|
49
|
+
unless @@prompt.yes?("Set timezone automatically?", default: true)
|
50
|
+
key(:update_timezone).ask("Enter timezone:", required: true)
|
51
|
+
end
|
52
|
+
|
53
|
+
key(:root_password).mask("Insert new root password:", default: "warding")
|
54
|
+
|
55
|
+
key(:system_settings) do
|
56
|
+
key(:boot_size).slider("Boot drive partition size (MiB):", min: 512, max: 4096, default: 1024, step: 128)
|
57
|
+
key(:swap_size).slider("Swap partition size (MiB):", min: 1024, max: 8192, default: 2048, step: 256)
|
58
|
+
|
59
|
+
if key(:encrypted).yes?("Enable encryption?", default: false)
|
60
|
+
key(:encryption_settings) do
|
61
|
+
key(:encryption_key).mask("Insert the encryption key:", required: true)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
key(:desktop_environment).select("Select your desktop environment:", %w[plasma gnome i3 none])
|
67
|
+
end
|
68
|
+
|
69
|
+
parsed_input
|
70
|
+
end
|
71
|
+
|
72
|
+
def install(data, encrypted = false)
|
73
|
+
if @@prompt.yes?("Confirm settings and continue?")
|
74
|
+
|
75
|
+
@@prompt.say("Installing, please wait...")
|
76
|
+
|
77
|
+
def setup_mirrors
|
78
|
+
# update mirrorlist
|
79
|
+
`reflector --latest 100 --sort rate --save /etc/pacman.d/mirrorlist`
|
80
|
+
end
|
81
|
+
|
82
|
+
def setup_timezone(timezone = false)
|
83
|
+
# set clock
|
84
|
+
`timedatectl set-ntp true`
|
85
|
+
# set timezone
|
86
|
+
if timezone
|
87
|
+
`timedatectl set-timezone #{timezone}`
|
88
|
+
else
|
89
|
+
`timedatectl set-timezone "$(curl -s https://ipapi.co/timezone)"`
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def setup_partitions(boot_size)
|
94
|
+
# create partitions
|
95
|
+
`parted -s -a optimal /dev/sda \
|
96
|
+
mklabel gpt \
|
97
|
+
mkpart primary fat32 0% #{boot_size}Mib \
|
98
|
+
set 1 esp on \
|
99
|
+
mkpart primary ext4 #{boot_size}Mib 100% \
|
100
|
+
set 2 lvm on
|
101
|
+
`
|
102
|
+
end
|
103
|
+
|
104
|
+
def setup_lvm(swap_size, key = false)
|
105
|
+
# setup encryption
|
106
|
+
if key
|
107
|
+
# create an encrypted volume
|
108
|
+
`echo "#{key}" | cryptsetup -q luksFormat --type luks2 --cipher aes-xts-plain64 --key-size 512 /dev/sda2`
|
109
|
+
# open the volume
|
110
|
+
`echo "#{key}" | cryptsetup open /dev/sda2 cryptlvm -`
|
111
|
+
# setup lvm
|
112
|
+
`pvcreate /dev/mapper/cryptlvm`
|
113
|
+
# create virtual group
|
114
|
+
`vgcreate vg0 /dev/mapper/cryptlvm`
|
115
|
+
else
|
116
|
+
# create physical volume
|
117
|
+
`pvcreate /dev/sda2`
|
118
|
+
# create virtual group
|
119
|
+
`vgcreate vg0 /dev/sda2`
|
120
|
+
end
|
121
|
+
# create logical volumes
|
122
|
+
`lvcreate -L #{swap_size}Mib vg0 -n swap`
|
123
|
+
`lvcreate -l 100%FREE vg0 -n root`
|
124
|
+
# make and mount rootfs
|
125
|
+
`mkfs.ext4 -q /dev/vg0/root`
|
126
|
+
`mount /dev/vg0/root /mnt`
|
127
|
+
# make and mount boot partition
|
128
|
+
`mkfs.fat -F32 /dev/sda1`
|
129
|
+
`mkdir /mnt/boot`
|
130
|
+
`mount /dev/sda1 /mnt/boot`
|
131
|
+
# setup swap
|
132
|
+
`mkswap /dev/vg0/swap`
|
133
|
+
`swapon /dev/vg0/swap`
|
134
|
+
end
|
135
|
+
|
136
|
+
def setup_packages
|
137
|
+
# update packages list
|
138
|
+
`pacman -Syy`
|
139
|
+
# install base system
|
140
|
+
`pacstrap /mnt base base-devel linux linux-firmware linux-headers lvm2 mkinitcpio dmidecode smbclient reflector networkmanager go cronie man-db nano vi fuse wget openbsd-netcat dhcpcd samba openssh openvpn unzip vim git zsh`
|
141
|
+
# generate fstab
|
142
|
+
`genfstab -U /mnt >> /mnt/etc/fstab`
|
143
|
+
end
|
144
|
+
|
145
|
+
def setup_chroot(lang, keymap, password = "warding", encrypted = false)
|
146
|
+
# set timezone
|
147
|
+
`arch-chroot /mnt ln -sf /usr/share/zoneinfo/"$(curl -s https://ipapi.co/timezone)" /etc/localtime`
|
148
|
+
# update clock
|
149
|
+
`arch-chroot /mnt hwclock --systohc`
|
150
|
+
# set locale
|
151
|
+
`echo "#{lang}.UTF-8 UTF-8" > /mnt/etc/locale.gen`
|
152
|
+
`arch-chroot /mnt locale-gen`
|
153
|
+
`echo "LANG=#{lang}.UTF-8" > /mnt/etc/locale.conf`
|
154
|
+
# set keymap
|
155
|
+
`echo "KEYMAP=#{keymap}" > /mnt/etc/vconsole.conf`
|
156
|
+
# update hostname
|
157
|
+
`echo "warding" > /mnt/etc/hostname`
|
158
|
+
# update hosts
|
159
|
+
`echo "127.0.0.1 localhost\n::1 localhost\n127.0.1.1 warding.localdomain warding" > /mnt/etc/hosts`
|
160
|
+
# update root password
|
161
|
+
`echo -e "#{password}\n#{password}" | arch-chroot /mnt passwd`
|
162
|
+
# update hooks
|
163
|
+
if encrypted
|
164
|
+
`sed -i "/^HOOK/s/modconf/keyboard keymap modconf/" /mnt/etc/mkinitcpio.conf`
|
165
|
+
`sed -i "/^HOOK/s/filesystems/encrypt lvm2 filesystems/" /mnt/etc/mkinitcpio.conf`
|
166
|
+
else
|
167
|
+
`sed -i "/^HOOK/s/filesystems/lvm2 filesystems/" /mnt/etc/mkinitcpio.conf`
|
168
|
+
end
|
169
|
+
# recompile initramfs
|
170
|
+
`arch-chroot /mnt mkinitcpio -P`
|
171
|
+
# add intel microcode
|
172
|
+
`arch-chroot /mnt pacman -S amd-ucode --noconfirm`
|
173
|
+
end
|
174
|
+
|
175
|
+
def setup_bootloader(encrypted = false)
|
176
|
+
# setup systemd-boot
|
177
|
+
`arch-chroot /mnt bootctl install`
|
178
|
+
`echo "title Warding Linux
|
179
|
+
linux /vmlinuz-linux
|
180
|
+
initrd /amd-ucode.img
|
181
|
+
initrd /initramfs-linux.img" > /mnt/boot/loader/entries/warding.conf`
|
182
|
+
if encrypted
|
183
|
+
`echo "options cryptdevice=UUID=$(blkid -s UUID -o value /dev/sda2):cryptlvm:allow-discards root=/dev/vg0/root quiet rw" >> /mnt/boot/loader/entries/warding.conf`
|
184
|
+
else
|
185
|
+
`echo "options root=/dev/vg0/root rw" >> /mnt/boot/loader/entries/warding.conf`
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
def setup_usability
|
190
|
+
# enable internet
|
191
|
+
`arch-chroot /mnt systemctl -q enable NetworkManager`
|
192
|
+
# add cron jobs
|
193
|
+
`echo "#!/bin/bash\nreflector --latest 100 --sort rate --save /etc/pacman.d/mirrorlist" > /mnt/etc/cron.weekly/mirrorlist; chmod +x /mnt/etc/cron.weekly/mirrorlist`
|
194
|
+
`echo "#!/bin/bash\npacman -Sy" > /mnt/etc/cron.weekly/pacman-sync; chmod +x /mnt/etc/cron.weekly/pacman-sync`
|
195
|
+
`echo "#!/bin/bash\npacman -Syu --noconfirm" > /mnt/etc/cron.monthly/system-upgrade; chmod +x /mnt/etc/cron.monthly/system-upgrade`
|
196
|
+
# enable cron jobs
|
197
|
+
`arch-chroot /mnt systemctl -q enable cronie`
|
198
|
+
# change default shell
|
199
|
+
`arch-chroot /mnt chsh -s /usr/bin/zsh`
|
200
|
+
# setup wordlists
|
201
|
+
`arch-chroot /mnt mkdir -p /usr/share/wordlists`
|
202
|
+
`arch-chroot /mnt curl -s https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/raft-large-directories-lowercase.txt -O --output-dir /usr/share/wordlists`
|
203
|
+
`arch-chroot /mnt curl -s https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/common.txt -O --output-dir /usr/share/wordlists`
|
204
|
+
`arch-chroot /mnt curl -s https://github.com/danielmiessler/SecLists/raw/master/Passwords/Leaked-Databases/rockyou.txt.tar.gz -O --output-dir /usr/share/wordlists`
|
205
|
+
# setup drivers
|
206
|
+
`arch-chroot /mnt pacman -S alsa-utils alsa-plugins alsa-lib --noc`
|
207
|
+
# update package list
|
208
|
+
`arch-chroot /mnt pacman -Syy`
|
209
|
+
# user creation --fix
|
210
|
+
`arch-chroot /mnt useradd -m -g wheel -s /bin/zsh ward`
|
211
|
+
`sed -i '85 s/# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' /mnt/etc/sudoers`
|
212
|
+
`arch-chroot /mnt sudo -u ward sh -c "cd /home/ward; git clone https://aur.archlinux.org/yay.git; cd yay; makepkg -si --noconfirm"`
|
213
|
+
`arch-chroot /mnt sudo -u ward sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended`
|
214
|
+
# check if on VM
|
215
|
+
if `arch-chroot /mnt dmidecode -s system-manufacturer`.include?("VMware, Inc.")
|
216
|
+
# install and enable VMware utils
|
217
|
+
`arch-chroot /mnt pacman -S open-vm-tools --noconfirm`
|
218
|
+
`arch-chroot /mnt systemctl -q enable vmtoolsd`
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
def setup_visuals(theme)
|
223
|
+
case theme
|
224
|
+
when "plasma"
|
225
|
+
# install packages
|
226
|
+
`arch-chroot /mnt pacman -S xorg-server plasma-meta gtkmm konsole sddm kvantum-qt5 --noc -q`
|
227
|
+
# create conf dir
|
228
|
+
`mkdir -p /mnt/etc/sddm.conf.d`
|
229
|
+
# fix theme
|
230
|
+
`echo "[Theme]\nCurrent=breeze" > /mnt/etc/sddm.conf.d/theme.conf`
|
231
|
+
# enable autologin
|
232
|
+
`echo "[Autologin]\nUser=ward\nSession=plasma" > /mnt/etc/sddm.conf.d/autologin.conf`
|
233
|
+
# enable sddm
|
234
|
+
`arch-chroot /mnt systemctl -q enable sddm`
|
235
|
+
when "gnome"
|
236
|
+
# install packages
|
237
|
+
`arch-chroot /mnt pacman -S xf86-video-intel gtkmm gnome --noc`
|
238
|
+
# enable gdm
|
239
|
+
`arch-chroot /mnt systemctl -q enable gdm`
|
240
|
+
when "i3"
|
241
|
+
# install packages
|
242
|
+
`arch-chroot /mnt pacman -S lightdm lightdm-gtk-greeter xorg-server xorg-apps xorg-xinit i3-wm --noc`
|
243
|
+
# enable lightdm
|
244
|
+
`arch-chroot /mnt systemctl -q enable lightdm`
|
245
|
+
else
|
246
|
+
nil
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
def finish
|
251
|
+
`umount -R /mnt`
|
252
|
+
`reboot`
|
253
|
+
end
|
254
|
+
|
255
|
+
setup_mirrors if data[:update_mirrors]
|
256
|
+
data[:update_timezone] ? setup_timezone(data[:update_timezone]) : setup_timezone
|
257
|
+
setup_partitions(data[:system_settings][:boot_size])
|
258
|
+
data[:system_settings][:encrypted] ? setup_lvm(data[:system_settings][:swap_size], data[:system_settings][:encryption_settings][:encryption_key]) : setup_lvm(data[:system_settings][:swap_size])
|
259
|
+
setup_packages
|
260
|
+
data[:system_settings][:encrypted] ? setup_chroot(data[:system_language], data[:keyboard_keymap], data[:root_password], true) : setup_chroot(data[:system_language], data[:keyboard_keymap], data[:root_password])
|
261
|
+
data[:system_settings][:encrypted] ? setup_bootloader(true) : setup_bootloader
|
262
|
+
setup_usability
|
263
|
+
setup_visuals(data[:desktop_environment])
|
264
|
+
finish
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
data/lib/warding/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warding
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marlos Pomin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-prompt
|
@@ -41,7 +41,7 @@ files:
|
|
41
41
|
- README.md
|
42
42
|
- Rakefile
|
43
43
|
- bin/warding
|
44
|
-
- debug/
|
44
|
+
- debug/debug.sh
|
45
45
|
- debug/quick-install.sh
|
46
46
|
- lib/warding.rb
|
47
47
|
- lib/warding/version.rb
|
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
requirements: []
|
71
|
-
rubygems_version: 3.
|
71
|
+
rubygems_version: 3.1.2
|
72
72
|
signing_key:
|
73
73
|
specification_version: 4
|
74
74
|
summary: Warding Linux installer.
|