mirror of
https://github.com/mitchell/dotfiles.git
synced 2025-12-17 12:27:22 +00:00
defiant
This commit is contained in:
parent
44780e9a9e
commit
06ecb8cf28
15 changed files with 783 additions and 196 deletions
85
install_arch
85
install_arch
|
|
@ -4,39 +4,44 @@ function main
|
|||
log 'Enter your configuration'
|
||||
read -P 'Timezone: ' -l timezone
|
||||
read -P 'Hostname: ' -l new_host_name
|
||||
read -P 'Network interface: ' -l net_interface
|
||||
read -P 'Username: ' -l username
|
||||
read -P 'Network client (NM/networkd):' -l network
|
||||
read -P 'Boot mode (BIOS/uefi): ' -l boot_mode
|
||||
read -P 'Grub target: ' -l device
|
||||
read -P 'Is your disk encrypted? (y/N) ' -l is_encrypt
|
||||
|
||||
set -l encrypted_uuid ''
|
||||
if test "$is_encrypt" = 'y'; or test "$is_encrypt" = 'Y'
|
||||
if test "$is_encrypt" = y; or test "$is_encrypt" = Y
|
||||
read -P 'Encrypted device UUID: ' encrypted_uuid
|
||||
end
|
||||
|
||||
read -P 'Boot mode (bios/uefi): ' -l boot_mode
|
||||
read -P 'Grub target: ' -l device
|
||||
|
||||
set_timezone $timezone
|
||||
|
||||
set_locale
|
||||
|
||||
set_hostname $new_host_name
|
||||
|
||||
configure_wired_network $net_interface
|
||||
|
||||
if test "$is_encrypt" = 'y'; or test "$is_encrypt" = 'Y'
|
||||
add_lvm2_mkinitcpio_hook true
|
||||
if test "$network" = networkd
|
||||
configure_systemd_networkd
|
||||
else
|
||||
add_lvm2_mkinitcpio_hook
|
||||
configure_network_manager
|
||||
end
|
||||
|
||||
if test "$is_encrypt" = y; or test "$is_encrypt" = Y
|
||||
add_lvm2_mkinitcpio_hook true
|
||||
end
|
||||
|
||||
mkinitcpio -P
|
||||
|
||||
configure_sudo
|
||||
|
||||
create_admin_user $username
|
||||
|
||||
install_grub $boot_mode $device $encrypted_uuid
|
||||
|
||||
install_openssh
|
||||
|
||||
install_zram
|
||||
|
||||
install_grub $boot_mode $device $encrypted_uuid
|
||||
end
|
||||
|
||||
function install
|
||||
|
|
@ -56,7 +61,6 @@ function set_timezone -a timezone
|
|||
hwclock --systohc
|
||||
end
|
||||
|
||||
|
||||
function set_locale
|
||||
log 'Setting locale to en_US.UTF-8 and generating it'
|
||||
sed -i 's/#en_US.UTF-8/en_US.UTF-8/' /etc/locale.gen
|
||||
|
|
@ -64,7 +68,6 @@ function set_locale
|
|||
echo 'LANG=en_US.UTF-8' >/etc/locale.conf
|
||||
end
|
||||
|
||||
|
||||
function set_hostname -a new_hostname
|
||||
log "Setting hostname to $new_hostname"
|
||||
echo $new_hostname >/etc/hostname
|
||||
|
|
@ -74,12 +77,11 @@ function set_hostname -a new_hostname
|
|||
127.0.1.1 $new_hostname.local $new_hostname" >>/etc/hosts
|
||||
end
|
||||
|
||||
|
||||
function configure_wired_network -a interface
|
||||
log "Configuring DHCP managed wired interface $interface"
|
||||
function configure_systemd_networkd
|
||||
log "Configuring systemd-resolved wired interface"
|
||||
echo "
|
||||
[Match]
|
||||
Name=$interface
|
||||
Name=en*
|
||||
|
||||
[Network]
|
||||
DHCP=yes
|
||||
|
|
@ -88,19 +90,25 @@ IPv6PrivacyExtensions=yes" >/etc/systemd/network/20-wired.network
|
|||
log 'Enabling systemd networkd and resolved services'
|
||||
systemctl enable systemd-networkd.service
|
||||
systemctl enable systemd-resolved.service
|
||||
systemctl start systemd-networkd.service
|
||||
systemctl start systemd-resolved.service
|
||||
|
||||
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
||||
end
|
||||
|
||||
function configure_network_manager
|
||||
log "Configuring NetworkManager wired interface"
|
||||
install networkmanager
|
||||
|
||||
log 'Enabling systemd networkd and resolved services'
|
||||
systemctl enable NetworkManager.service
|
||||
systemctl enable systemd-resolved.service
|
||||
end
|
||||
|
||||
function add_lvm2_mkinitcpio_hook -a is_encrypt
|
||||
log 'Adding lvm2 mkinitcpio hook'
|
||||
|
||||
set -l hooks 'lvm2'
|
||||
set -l hooks lvm2
|
||||
if test -n "$is_encrypt"
|
||||
set hooks 'encrypt' $hooks
|
||||
set hooks encrypt $hooks
|
||||
end
|
||||
|
||||
sed -i "s/modconf block filesystems/modconf block $hooks filesystems/" /etc/mkinitcpio.conf
|
||||
|
|
@ -109,33 +117,28 @@ function add_lvm2_mkinitcpio_hook -a is_encrypt
|
|||
install lvm2
|
||||
end
|
||||
|
||||
|
||||
function configure_sudo
|
||||
log 'Adding and configuring sudo group'
|
||||
log 'Adding and configuring wheel group'
|
||||
install sudo
|
||||
groupadd sudo
|
||||
|
||||
echo "# Enable sudo group
|
||||
%sudo ALL=(ALL) ALL" | sudo tee /etc/sudoers.d/sudo_group
|
||||
sed -i 's/# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
|
||||
end
|
||||
|
||||
function create_admin_user -a username
|
||||
log "Creating user $username and adding to sudo group"
|
||||
useradd -m $username
|
||||
log "Creating user $username and adding to wheel group"
|
||||
useradd -m -G wheel -s /usr/bin/fish $username
|
||||
passwd $username
|
||||
gpasswd -a $username sudo
|
||||
passwd -l root
|
||||
end
|
||||
|
||||
function install_grub -a boot_mode target encrypted_uuid
|
||||
log "Installing grub to target $target"
|
||||
|
||||
switch $boot_mode
|
||||
case bios
|
||||
install grub
|
||||
grub-install --target=i386-pc $target
|
||||
case uefi
|
||||
install grub efibootmgr
|
||||
grub-install --target=x86_64-efi --efi-directory=$target --bootloader-id=GRUB
|
||||
if test "$boot_mode" = uefi
|
||||
install grub efibootmgr
|
||||
grub-install --target=x86_64-efi --efi-directory=$target --bootloader-id=GRUB
|
||||
else
|
||||
install grub
|
||||
grub-install --target=i386-pc $target
|
||||
end
|
||||
|
||||
if test -n "$encrypted_uuid"
|
||||
|
|
@ -145,6 +148,12 @@ function install_grub -a boot_mode target encrypted_uuid
|
|||
grub-mkconfig -o /boot/grub/grub.cfg
|
||||
end
|
||||
|
||||
function install_zram
|
||||
log "Installing and configuring zram-generator"
|
||||
install zram-generator
|
||||
echo '[zram0]' >/etc/systemd/zram-generator.conf
|
||||
end
|
||||
|
||||
function install_openssh
|
||||
log 'Installing openssh'
|
||||
install openssh
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue