fleshed out install script even further, adding ability to choose partition sizes and desktop/laptop configuration separately. Also re-enabled sddm
This commit is contained in:
@@ -1,42 +1,40 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
config,
|
imports =
|
||||||
lib,
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
modulesPath,
|
];
|
||||||
username,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "uas" "sd_mod"];
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = ["kvm-amd"];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" =
|
||||||
device = "/dev/disk/by-uuid/a687e4e2-8665-43f1-9d62-3e3f21423579";
|
{ device = "/dev/disk/by-uuid/91413e4e-538c-4266-8a4d-bf60ec83e7b9";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/nix" =
|
||||||
device = "/dev/disk/by-uuid/6EAD-2C48";
|
{ device = "/dev/disk/by-uuid/aad759e2-6c39-4350-89b9-07f2bc6eb3cc";
|
||||||
fsType = "vfat";
|
fsType = "ext4";
|
||||||
options = ["fmask=0022" "dmask=0022"];
|
};
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/home" = {
|
fileSystems."/boot" =
|
||||||
device = "/dev/nvme0n1p5";
|
{ device = "/dev/disk/by-uuid/F529-2C16";
|
||||||
fsType = "ext4";
|
fsType = "vfat";
|
||||||
};
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/home/${username}/steamlib" = {
|
fileSystems."/home" =
|
||||||
device = "/dev/nvme0n1p1";
|
{ device = "/dev/disk/by-uuid/7edc690b-7e30-49d7-afbe-78354d0f7497";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [];
|
swapDevices = [ ];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
@@ -47,16 +45,5 @@
|
|||||||
# networking.interfaces.wlp15s0.useDHCP = lib.mkDefault true;
|
# networking.interfaces.wlp15s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware = {
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
keyboard.uhk.enable = true;
|
|
||||||
amdgpu.amdvlk = {
|
|
||||||
enable = false;
|
|
||||||
support32Bit.enable = true;
|
|
||||||
};
|
|
||||||
bluetooth = {
|
|
||||||
enable = true;
|
|
||||||
powerOnBoot = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,71 +3,7 @@
|
|||||||
let
|
let
|
||||||
nvim = inputs.nvim.packages."x86_64-linux".default;
|
nvim = inputs.nvim.packages."x86_64-linux".default;
|
||||||
toilet = inputs.toilet.packages."x86_64-linux".default;
|
toilet = inputs.toilet.packages."x86_64-linux".default;
|
||||||
install-script = pkgs.writeShellScriptBin "movcfg-install" ''
|
install-script = pkgs.writeShellScriptBin "movcfg-install" (builtins.readFile ./movcfg-install.sh);
|
||||||
#!/run/current-system/sw/bin/bash
|
|
||||||
set -e
|
|
||||||
trap 'echo "Aborting installation."; exit 1' INT
|
|
||||||
|
|
||||||
# set up working directory
|
|
||||||
mkdir -p /tmp/install_pwd && cd /tmp/install_pwd
|
|
||||||
rm -rf ./*
|
|
||||||
|
|
||||||
# download disko.nix file for defining partitions
|
|
||||||
echo -n "Downloading partition plan..."
|
|
||||||
curl -s https://raw.githubusercontent.com/pagedMov/pagedmov-nix-cfg/refs/heads/master/hosts/installer/disko-ext4-singledisk.nix > disko.nix
|
|
||||||
echo "Done!"
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "This script is about to format and partition a hard drive."
|
|
||||||
sleep 2.5
|
|
||||||
echo -e "\033[4;31mThis process is irreversible and will destroy all data on the drive.\033[0m"
|
|
||||||
sleep 2.5
|
|
||||||
echo "Make absolutely sure that you know which drive you are choosing."
|
|
||||||
sleep 2.5
|
|
||||||
echo
|
|
||||||
lsblk -d -o NAME,SIZE
|
|
||||||
echo
|
|
||||||
echo -n "Which drive do you wish to sacrifice? "
|
|
||||||
read -r drive
|
|
||||||
|
|
||||||
size=$(lsblk -b -d -o NAME,SIZE | grep "$drive" | awk '{ printf "%.0f\n", $2 / 1024 / 1024 / 1024 }')
|
|
||||||
root_size=$(echo "scale=0;$size * 0.10 / 1" | bc)
|
|
||||||
nix_size=$(echo "scale=0;$size * 0.35 / 1" | bc)
|
|
||||||
|
|
||||||
# commence formatting
|
|
||||||
nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/install_pwd/disko.nix --arg device "\"/dev/$drive\"" --arg root_size "\"$root_size\G\"" --arg nix_size "\"$nix_size\G\""
|
|
||||||
|
|
||||||
mount /dev/disk/by-partlabel/disk-main-root /mnt
|
|
||||||
mkdir -p /mnt/nix && mount /dev/disk/by-partlabel/disk-main-nix /mnt/nix
|
|
||||||
mkdir -p /mnt/boot && mount /dev/disk/by-partlabel/disk-main-ESP /mnt/boot
|
|
||||||
mkdir -p /mnt/home && mount /dev/disk/by-partlabel/disk-main-home /mnt/home
|
|
||||||
|
|
||||||
mkdir -p /mnt/etc
|
|
||||||
cd /mnt/etc/
|
|
||||||
git clone https://github.com/pagedMov/pagedmov-nix-cfg.git ./nixos
|
|
||||||
|
|
||||||
nixos-install --root /mnt --flake /mnt/etc/nixos#mercury --no-root-password
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Preliminary installation successful!"
|
|
||||||
echo "Adapting config to your setup..."
|
|
||||||
echo
|
|
||||||
|
|
||||||
cp -r /mnt/etc/nixos /mnt/home/pagedmov/.sysflake
|
|
||||||
rm -rf /mnt/etc/nixos
|
|
||||||
ln -s /mnt/home/pagedmov/.sysflake /etc/nixos
|
|
||||||
|
|
||||||
nixos-enter <<-HEREDOC
|
|
||||||
chown -R pagedmov /home/pagedmov/.sysflake
|
|
||||||
nixos-generate-config --show-hardware-config > /home/pagedmov/.sysflake/hosts/laptop/hardware.nix
|
|
||||||
NIXOS_SWITCH_USE_DIRTY_ENV=1 nixos-rebuild boot --flake /home/pagedmov/.sysflake#mercury
|
|
||||||
HEREDOC
|
|
||||||
|
|
||||||
echo "INSTALLATION COMPLETE ! !" | toilet -f 3d -w 120 | lolcat -a -s 180
|
|
||||||
echo "You can now reboot into your new system."
|
|
||||||
echo "The system configuration flake will be found in your home folder under .sysflake"
|
|
||||||
echo "/etc/nixos is a symlink leading to the .sysflake folder"
|
|
||||||
'';
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -87,7 +23,6 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
nvim
|
|
||||||
nix-output-monitor
|
nix-output-monitor
|
||||||
nh
|
nh
|
||||||
nvd
|
nvd
|
||||||
@@ -108,6 +43,7 @@ in
|
|||||||
usbutils
|
usbutils
|
||||||
toilet
|
toilet
|
||||||
install-script
|
install-script
|
||||||
|
nvim
|
||||||
];
|
];
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
|||||||
152
hosts/installer/movcfg-install.sh
Normal file
152
hosts/installer/movcfg-install.sh
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
#!/run/current-system/sw/bin/bash
|
||||||
|
set -e
|
||||||
|
trap 'echo "Aborting installation."; exit 1' INT
|
||||||
|
|
||||||
|
# set up working directory
|
||||||
|
mkdir -p /tmp/install_pwd && cd /tmp/install_pwd
|
||||||
|
rm -rf ./*
|
||||||
|
|
||||||
|
# download disko.nix file for defining partitions
|
||||||
|
echo -n "Downloading partition plan..."
|
||||||
|
curl -s https://raw.githubusercontent.com/pagedMov/pagedmov-nix-cfg/refs/heads/master/hosts/installer/disko-ext4-singledisk.nix > disko.nix
|
||||||
|
echo "Done!"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "This script is about to format and partition a hard drive."
|
||||||
|
sleep 2.5
|
||||||
|
echo -e "\033[4;31mThis process is irreversible and will destroy all data on the drive.\033[0m"
|
||||||
|
sleep 2.5
|
||||||
|
echo "Make absolutely sure that you know which drive you are choosing."
|
||||||
|
sleep 2.5
|
||||||
|
echo
|
||||||
|
lsblk -d -o NAME,SIZE
|
||||||
|
echo
|
||||||
|
echo -n "Which drive do you wish to sacrifice? "
|
||||||
|
read -r drive
|
||||||
|
|
||||||
|
size=$(lsblk -b -d -o NAME,SIZE | grep "$drive" | awk '{ printf "%.0f\n", $2 / 1024 / 1024 / 1024 }')
|
||||||
|
size=$((size-1))
|
||||||
|
root_size_default=$(echo "scale=0;$size * 0.10 / 1" | bc)
|
||||||
|
nix_size_default=$(echo "scale=0;$size * 0.35 / 1" | bc)
|
||||||
|
|
||||||
|
for part in "root" "nix"; do
|
||||||
|
echo "You have $size GB remaining to work with on this drive. How big do you want your $part partition?"
|
||||||
|
|
||||||
|
if [ "$part" = "root" ]; then
|
||||||
|
echo "Default value is 10% of hard drive space ($root_size_default GB)"
|
||||||
|
else
|
||||||
|
echo "Default value is 35% of hard drive space ($nix_size_default GB)"
|
||||||
|
fi
|
||||||
|
echo "Give a positive integer or leave blank to use default value"
|
||||||
|
deciding=true
|
||||||
|
|
||||||
|
while $deciding; do
|
||||||
|
echo -n "> "
|
||||||
|
read -r size_choice
|
||||||
|
|
||||||
|
case "$size_choice" in
|
||||||
|
'')
|
||||||
|
deciding=false
|
||||||
|
;;
|
||||||
|
*[!0-9]*) # Matches non-numeric input
|
||||||
|
echo "Invalid input. Please enter a valid positive number."
|
||||||
|
;;
|
||||||
|
0) # Matches zero
|
||||||
|
echo "Please enter a positive number greater than zero."
|
||||||
|
;;
|
||||||
|
*) # Matches positive numbers
|
||||||
|
if (( size_choice > size - 50 )); then
|
||||||
|
echo "You need to leave more room for the other partitions."
|
||||||
|
elif (( size_choice < 5 )); then
|
||||||
|
echo "Partition size is too small."
|
||||||
|
else
|
||||||
|
echo "Valid input: $size_choice"
|
||||||
|
deciding=false # Exit the loop on valid input
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
case "$part" in
|
||||||
|
"root" )
|
||||||
|
if [ -z "$size_choice" ]; then root_size=$root_size_default; else root_size=$size_choice; fi
|
||||||
|
size=$((size - root_size))
|
||||||
|
;;
|
||||||
|
"nix" )
|
||||||
|
if [ -z "$size_choice" ]; then nix_size=$nix_size_default; else nix_size=$size_choice; fi
|
||||||
|
size=$((size - nix_size))
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Final partition sizes:"
|
||||||
|
echo "root: $root_size GB"
|
||||||
|
echo "nix: $nix_size GB"
|
||||||
|
echo "home: $size GB"
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# commence formatting
|
||||||
|
echo "Commencing formatting/partitioning..." && sleep 0.5
|
||||||
|
nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/install_pwd/disko.nix --arg device "\"/dev/$drive\"" --arg root_size "\"$root_size\G\"" --arg nix_size "\"$nix_size\G\""
|
||||||
|
|
||||||
|
mount /dev/disk/by-partlabel/disk-main-root /mnt
|
||||||
|
mkdir -p /mnt/nix && mount /dev/disk/by-partlabel/disk-main-nix /mnt/nix
|
||||||
|
mkdir -p /mnt/boot && mount /dev/disk/by-partlabel/disk-main-ESP /mnt/boot
|
||||||
|
mkdir -p /mnt/home && mount /dev/disk/by-partlabel/disk-main-home /mnt/home
|
||||||
|
|
||||||
|
mkdir -p /mnt/etc
|
||||||
|
cd /mnt/etc/
|
||||||
|
[ -d /mnt/etc/nixos ] && rm -rf /mnt/etc/nixos
|
||||||
|
git clone https://github.com/pagedMov/pagedmov-nix-cfg.git ./nixos
|
||||||
|
|
||||||
|
echo "Do you want to install the light or heavy configuration?"
|
||||||
|
echo "Light configuration does not include gaming or virtualization features; intended for laptops, etc."
|
||||||
|
echo "Heavy config includes gaming and virtualization features; intended for performant desktop environments."
|
||||||
|
select config in "Heavy" "Light" "Quit"; do
|
||||||
|
case $config in
|
||||||
|
"Desktop")
|
||||||
|
echo "Installing heavy configuration \`Oganesson\`"
|
||||||
|
config="oganesson"
|
||||||
|
sleep 0.5
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
"Laptop")
|
||||||
|
echo "Installing light configuration \`Mercury\`"
|
||||||
|
config="mercury"
|
||||||
|
sleep 0.5
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
"Quit")
|
||||||
|
echo "Exiting installation..."
|
||||||
|
sleep 0.5
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid option."
|
||||||
|
sleep 0.5
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
nixos-install --root /mnt --flake /mnt/etc/nixos#"$config" --no-root-password
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Preliminary installation successful!"
|
||||||
|
echo "Adapting config to your setup..."
|
||||||
|
echo
|
||||||
|
|
||||||
|
cp -r /mnt/etc/nixos /mnt/home/pagedmov/.sysflake
|
||||||
|
rm -rf /mnt/etc/nixos
|
||||||
|
ln -s /mnt/home/pagedmov/.sysflake /etc/nixos
|
||||||
|
|
||||||
|
nixos-enter <<-HEREDOC
|
||||||
|
chown -R pagedmov /home/pagedmov/.sysflake
|
||||||
|
nixos-generate-config --show-hardware-config > /home/pagedmov/.sysflake/hosts/laptop/hardware.nix
|
||||||
|
NIXOS_SWITCH_USE_DIRTY_ENV=1 nixos-rebuild boot --flake /home/pagedmov/.sysflake#mercury
|
||||||
|
HEREDOC
|
||||||
|
|
||||||
|
echo "INSTALLATION COMPLETE ! !" | toilet -f 3d -w 120 | lolcat -a -s 180
|
||||||
|
echo "You can now reboot into your new system."
|
||||||
|
echo "The system configuration flake will be found in your home folder under .sysflake"
|
||||||
|
echo "/etc/nixos is a symlink leading to the .sysflake folder"
|
||||||
@@ -1,43 +1,49 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
config,
|
imports =
|
||||||
lib,
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
pkgs,
|
];
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "sd_mod" "rtsx_pci_sdmmc"];
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = ["kvm-intel"];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" =
|
||||||
device = "/dev/disk/by-uuid/334f742b-460f-43f8-b819-33086adfa9fb";
|
{ device = "/dev/disk/by-uuid/91413e4e-538c-4266-8a4d-bf60ec83e7b9";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/nix" =
|
||||||
device = "/dev/disk/by-uuid/ECD9-F43B";
|
{ device = "/dev/disk/by-uuid/aad759e2-6c39-4350-89b9-07f2bc6eb3cc";
|
||||||
fsType = "vfat";
|
fsType = "ext4";
|
||||||
options = ["fmask=0022" "dmask=0022"];
|
};
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [];
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/F529-2C16";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" =
|
||||||
|
{ device = "/dev/disk/by-uuid/7edc690b-7e30-49d7-afbe-78354d0f7497";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.enp0s25.useDHCP = lib.mkDefault true;
|
# networking.interfaces.enp14s0.useDHCP = lib.mkDefault true;
|
||||||
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
|
# networking.interfaces.wlp15s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
)
|
)
|
||||||
];
|
];
|
||||||
services.displayManager.sddm = {
|
services.displayManager.sddm = {
|
||||||
enable = false;
|
enable = true;
|
||||||
wayland.enable = true;
|
wayland.enable = true;
|
||||||
theme = "catppuccin-mocha";
|
theme = "catppuccin-mocha";
|
||||||
package = pkgs.kdePackages.sddm;
|
package = pkgs.kdePackages.sddm;
|
||||||
|
|||||||
@@ -41,10 +41,10 @@ in {
|
|||||||
users = {
|
users = {
|
||||||
groups.persist = {};
|
groups.persist = {};
|
||||||
users = {
|
users = {
|
||||||
root.hashedPassword = "$y$j9T$/eZO.0cE2EcsF4od78laE/$A3kqgNhr6LkUZHI/0MXAhk.SSKk7QsCIwH/l6xeryy8";
|
root.initialPassword = "1234";
|
||||||
${username} = {
|
${username} = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
initialPassword = "1111";
|
initialPassword = "1234";
|
||||||
shell = pkgs.zsh;
|
shell = pkgs.zsh;
|
||||||
extraGroups = ["wheel" "persist" "libvirtd"];
|
extraGroups = ["wheel" "persist" "libvirtd"];
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user