From 522545fc177c9915ff930f403de6c60c3278b24e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 18:45:35 +0000 Subject: [PATCH 001/507] Initial commit --- README.md | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..ca2a682 --- /dev/null +++ b/README.md @@ -0,0 +1,93 @@ +# NixOS CLI Installer + + + +## Getting started + +To make it easy for you to get started with GitLab, here's a list of recommended next steps. + +Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! + +## Add your files + +- [ ] [Create](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files +- [ ] [Add files using the command line](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: + +``` +cd existing_repo +git remote add origin https://gitlab.com/ahoneybun/nixos-cli-installer.git +git branch -M main +git push -uf origin main +``` + +## Integrate with your tools + +- [ ] [Set up project integrations](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://gitlab.com/ahoneybun/nixos-cli-installer/-/settings/integrations) + +## Collaborate with your team + +- [ ] [Invite team members and collaborators](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/members/) +- [ ] [Create a new merge request](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) +- [ ] [Automatically close issues from merge requests](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) +- [ ] [Enable merge request approvals](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) +- [ ] [Automatically merge when pipeline succeeds](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) + +## Test and Deploy + +Use the built-in continuous integration in GitLab. + +- [ ] [Get started with GitLab CI/CD](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/ci/quick_start/index.html) +- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/application_security/sast/) +- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/topics/autodevops/requirements.html) +- [ ] [Use pull-based deployments for improved Kubernetes management](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/clusters/agent/) +- [ ] [Set up protected environments](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/ci/environments/protected_environments.html) + +*** + +# Editing this README + +When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://www.makeareadme.com/) for this template. + +## Suggestions for a good README +Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. + +## Name +Choose a self-explaining name for your project. + +## Description +Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. + +## Badges +On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. + +## Visuals +Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. + +## Installation +Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. + +## Usage +Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. + +## Support +Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. + +## Roadmap +If you have ideas for releases in the future, it is a good idea to list them in the README. + +## Contributing +State if you are open to contributions and what your requirements are for accepting them. + +For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. + +You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. + +## Authors and acknowledgment +Show your appreciation to those who have contributed to the project. + +## License +For open source projects, say how it is licensed. + +## Project status +If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. + From 3c5a14877e186933904dffcc13851f48dae767e3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 18:45:36 +0000 Subject: [PATCH 002/507] Configure SAST in `.gitlab-ci.yml`, creating this file if it does not already exist --- .gitlab-ci.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..776bc61 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,12 @@ +# 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: +- test +sast: + stage: test +include: +- template: Security/SAST.gitlab-ci.yml From 14fda20e885f60cba019f76f7fc81cbe29d8a07b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 18:46:32 +0000 Subject: [PATCH 003/507] Update README.md --- README.md | 106 +++++++++++++++++------------------------------------- 1 file changed, 32 insertions(+), 74 deletions(-) diff --git a/README.md b/README.md index ca2a682..61e731e 100644 --- a/README.md +++ b/README.md @@ -1,93 +1,51 @@ -# NixOS CLI Installer +# The NixOS Installer +This installer does the following at it's core: +- Partition the drive of your choice +- Encrypts the installation +- Installs a base of NixOS -## Getting started +Tested on the following drives: +- SATA +- M.2 NVMe -To make it easy for you to get started with GitLab, here's a list of recommended next steps. +## Get Started -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! +Prerequisites: -## Add your files +- Prepare an installation medium. +- Boot the live environment. +- Connect to internet. -- [ ] [Create](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: +## Connect to internet + +https://nixos.org/manual/nixos/stable/index.html#sec-installation-booting-networking + +## Start the installer ``` -cd existing_repo -git remote add origin https://gitlab.com/ahoneybun/nixos-cli-installer.git -git branch -M main -git push -uf origin main +curl https://gitlab.com/ahoneybun/arch-itect/-/raw/nix-os-/install.sh > install.sh; sh install.sh ``` -## Integrate with your tools +The following will happen: -- [ ] [Set up project integrations](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://gitlab.com/ahoneybun/nixos-cli-installer/-/settings/integrations) +- Clear partition table for `/dev/***`. +- Creates a GPT partition table for `/dev/***`. +- Create a +512M EFI partiton at `/dev/***1`. +- Create a root partition at `/dev/***2`. +- Create a swap partition at `/dev/***3` with the choice to set it as the same size as the RAM. +- Install systemd-boot. -## Collaborate with your team +## After Installation ... -- [ ] [Invite team members and collaborators](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Automatically merge when pipeline succeeds](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) - -## Test and Deploy - -Use the built-in continuous integration in GitLab. - -- [ ] [Get started with GitLab CI/CD](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://docs.gitlab.com/ee/ci/environments/protected_environments.html) - -*** - -# Editing this README - -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://gitlab.com/-/experiment/new_project_readme_content:fdb8ce84ba3d1c82d0444dd41c5c798d?https://www.makeareadme.com/) for this template. - -## Suggestions for a good README -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. - -## Name -Choose a self-explaining name for your project. - -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. - -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. +... ## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. -## Contributing -State if you are open to contributions and what your requirements are for accepting them. +- [ ] +- [ ] -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. - -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. - -## License -For open source projects, say how it is licensed. - -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. +# Possible Ideas +- [ ] From 4ed3eb52fdc81fbef33fb8766bcef5b37f29ab6f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 18:47:19 +0000 Subject: [PATCH 004/507] Upload New File --- install.sh | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 install.sh diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..914be2d --- /dev/null +++ b/install.sh @@ -0,0 +1,160 @@ +# This file is used to partition, mount and install arch linux on UEFI systems. + +# Default keyboard layout is US. +# To change layout : +# 1. Use `localectl list-keymaps` to display liste of keymaps. +# 2. Use `loadkeys [keymap]` to set keyboard layout. +# ex : `loadkeys de-latin1` to set a german keyboard layout. + +# Check if system is booted in UEFI mode. +if [ ! -d "/sys/firmware/efi/efivars" ] +then + # If not, then exit installer. + echo "[Error!] System is not booted in UEFI mode. Please boot in UEFI mode & try again." + exit 9999 +fi + +# Figure out how much RAM the system has an set a variable +# ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') +ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) + +# Update system clock. +# timedatectl set-ntp true + +# Load kernel modules +# modprobe dm-crypt +# modprobe dm-mod + +# Detect and list the drives. +lsblk -f + +# Choice the drive to use : +# 1. +echo "----------" +echo "" +echo "Which drive do we want to use for this installation?" +read driveName + +echo "----------" +echo "" +echo "Enable Hibernation?" +echo "1) Yes" +echo "2) No" +echo -n "Enter choice: "; read hibState + +case "$hibState" in + +1) + +( +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 "-$ramTotal"G # Set Max RAM as last sector. +# echo -4096M # Set -4096 as last 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 t # Change partition type. +echo 3 # Pick third partition. +echo 19 # Change third partition to Linux swap. +echo w # write changes. +) | sudo fdisk $driveName -w always -W always +;; + +2) + +( +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 -4096M # Set -4096 as last 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 t # Change partition type. +echo 3 # Pick third partition. +echo 19 # Change third partition to Linux swap. +echo w # write changes. +) | sudo fdisk $driveName -w always -W always +;; + +esac + +# List the new partitions. +lsblk -f + +# Format the partitions : +echo "----------" +echo "" +echo "Which is the EFI partition?" +read efiName + +echo "" +echo "Which is the root partition?" +read rootName + +echo "" +echo "Which is the swap partition?" +read swapName + +# Encrypt the root partition +# sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName + +# Open the encrypted root partition +# sudo cryptsetup luksOpen $rootName crypt-root + +sudo mkfs.fat -F32 -n EFI $efiName # EFI partition +sudo mkfs.ext4 -L root $rootName # / partition +sudo mkswap -L swap $swapName # swap partition + +# 0. Mount the filesystems. +sudo mount $rootName /mnt +sudo swapon $swapName + +# 1. Create directory to mount EFI partition. +sudo mkdir /mnt/boot/ + +# 2.Mount the EFI partition. +sudo mount $efiName /mnt/boot + +# Generate Nix configuration +sudo nixos-generate-config --root /mnt + +# Generate fstab file. +# genfstab -U /mnt >> /mnt/etc/fstab + +# Install +sudo nixos-install + +# Fetch script for `arch-chroot`. +# curl https://gitlab.com/ahoneybun/arch-itect/-/raw/main/setup.sh > /mnt/setup.sh + +# Change root into the new system & run script. +#arch-chroot /mnt sh setup.sh + +# Removed downloaded script. +rm install.sh + +# Unmount all filesystems & reboot. +# umount -a +# reboot + From 4a590cad08190d8abd8551d3054f3b1a74742897 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 18:48:39 +0000 Subject: [PATCH 005/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 61e731e..aa21550 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ https://nixos.org/manual/nixos/stable/index.html#sec-installation-booting-networ ## Start the installer ``` -curl https://gitlab.com/ahoneybun/arch-itect/-/raw/nix-os-/install.sh > install.sh; sh install.sh +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/install.sh > install.sh; sh install.sh ``` The following will happen: From d8e716a401051c473720bfe7c211d903ca18e64d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 12:25:04 -0700 Subject: [PATCH 006/507] remove hibernation and fix timezone --- install.sh | 43 +++---------------------------------------- 1 file changed, 3 insertions(+), 40 deletions(-) diff --git a/install.sh b/install.sh index 914be2d..40e8ef2 100644 --- a/install.sh +++ b/install.sh @@ -35,17 +35,6 @@ echo "" echo "Which drive do we want to use for this installation?" read driveName -echo "----------" -echo "" -echo "Enable Hibernation?" -echo "1) Yes" -echo "2) No" -echo -n "Enter choice: "; read hibState - -case "$hibState" in - -1) - ( echo g # Create new GPT partition table echo n # Create new partition (for EFI). @@ -69,35 +58,6 @@ echo 3 # Pick third partition. echo 19 # Change third partition to Linux swap. echo w # write changes. ) | sudo fdisk $driveName -w always -W always -;; - -2) - -( -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 -4096M # Set -4096 as last 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 t # Change partition type. -echo 3 # Pick third partition. -echo 19 # Change third partition to Linux swap. -echo w # write changes. -) | sudo fdisk $driveName -w always -W always -;; - -esac # List the new partitions. lsblk -f @@ -139,6 +99,9 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt +# Edit Language and Time Zone +sed -i 's/# time.timeZone = "Europe/Amsterdam"/time.timeZone = "America/Denver"/g' /mnt/etc/nixos/configuration.nix + # Generate fstab file. # genfstab -U /mnt >> /mnt/etc/fstab From 37d4ca5cc8fe69f2f9fbe9edd9674cc85f38757c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 12:27:48 -0700 Subject: [PATCH 007/507] test config changes --- install.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.sh b/install.sh index 40e8ef2..086126c 100644 --- a/install.sh +++ b/install.sh @@ -101,6 +101,10 @@ sudo nixos-generate-config --root /mnt # Edit Language and Time Zone sed -i 's/# time.timeZone = "Europe/Amsterdam"/time.timeZone = "America/Denver"/g' /mnt/etc/nixos/configuration.nix +sed -i 's/# i18n.defaultLocalte = "en_US.UTF=8"/i18n.defaultLocalte = "en_US.UTF=8"/g' /mnt/etc/nixos/configuration.nix +sed -i 's/# console = {/console = {/g' /mnt/etc/nixos/configuration.nix +sed -i 's/# font = "Lat2-Terminus16";/font = "Lat2-Terminus16";/g' /mnt/etc/nixos/configuration.nix +sed -i 's/# keyMap/keyMap = {/g' /mnt/etc/nixos/configuration.nix # Generate fstab file. # genfstab -U /mnt >> /mnt/etc/fstab From 2242f961c9acc820fc3d11f19be381f7718a4f67 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 12:37:52 -0700 Subject: [PATCH 008/507] fix permissions --- install.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index 086126c..4c9b20c 100644 --- a/install.sh +++ b/install.sh @@ -100,11 +100,11 @@ sudo mount $efiName /mnt/boot sudo nixos-generate-config --root /mnt # Edit Language and Time Zone -sed -i 's/# time.timeZone = "Europe/Amsterdam"/time.timeZone = "America/Denver"/g' /mnt/etc/nixos/configuration.nix -sed -i 's/# i18n.defaultLocalte = "en_US.UTF=8"/i18n.defaultLocalte = "en_US.UTF=8"/g' /mnt/etc/nixos/configuration.nix -sed -i 's/# console = {/console = {/g' /mnt/etc/nixos/configuration.nix -sed -i 's/# font = "Lat2-Terminus16";/font = "Lat2-Terminus16";/g' /mnt/etc/nixos/configuration.nix -sed -i 's/# keyMap/keyMap = {/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# time.timeZone = "Europe/Amsterdam"/time.timeZone = "America/Denver"/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# i18n.defaultLocalte = "en_US.UTF=8"/i18n.defaultLocalte = "en_US.UTF=8"/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# console = {/console = {/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# font = "Lat2-Terminus16";/font = "Lat2-Terminus16";/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# keyMap/keyMap = {/g' /mnt/etc/nixos/configuration.nix # Generate fstab file. # genfstab -U /mnt >> /mnt/etc/fstab From 0c41294404e13e65ef52b3b55ea33d972e5680bf Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 12:44:40 -0700 Subject: [PATCH 009/507] fix syntax --- install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 4c9b20c..6b9121d 100644 --- a/install.sh +++ b/install.sh @@ -100,11 +100,12 @@ sudo mount $efiName /mnt/boot sudo nixos-generate-config --root /mnt # Edit Language and Time Zone -sudo sed -i 's/# time.timeZone = "Europe/Amsterdam"/time.timeZone = "America/Denver"/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# time.timeZone = "Europe/Amsterdam";/time.timeZone = "America/Denver";/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# i18n.defaultLocalte = "en_US.UTF=8"/i18n.defaultLocalte = "en_US.UTF=8"/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# console = {/console = {/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# font = "Lat2-Terminus16";/font = "Lat2-Terminus16";/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# keyMap/keyMap = {/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# };/};/g' /mnt/etc/nixos/configuration.nix # Generate fstab file. # genfstab -U /mnt >> /mnt/etc/fstab From 7513f65887d805267500bac7421fc69a3fbcb910 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 12:46:31 -0700 Subject: [PATCH 010/507] fix syntax/2 --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 6b9121d..77dd361 100644 --- a/install.sh +++ b/install.sh @@ -101,7 +101,7 @@ sudo nixos-generate-config --root /mnt # Edit Language and Time Zone sudo sed -i 's/# time.timeZone = "Europe/Amsterdam";/time.timeZone = "America/Denver";/g' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# i18n.defaultLocalte = "en_US.UTF=8"/i18n.defaultLocalte = "en_US.UTF=8"/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# i18n.defaultLocale = "en_US.UTF=8"/i18n.defaultLocale = "en_US.UTF=8"/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# console = {/console = {/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# font = "Lat2-Terminus16";/font = "Lat2-Terminus16";/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# keyMap/keyMap = {/g' /mnt/etc/nixos/configuration.nix From 924ec95483e10754d38b7800594bd9554633f3c4 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 12:48:28 -0700 Subject: [PATCH 011/507] fix syntax/3 --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index 77dd361..daecabd 100644 --- a/install.sh +++ b/install.sh @@ -102,10 +102,10 @@ sudo nixos-generate-config --root /mnt # Edit Language and Time Zone sudo sed -i 's/# time.timeZone = "Europe/Amsterdam";/time.timeZone = "America/Denver";/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# i18n.defaultLocale = "en_US.UTF=8"/i18n.defaultLocale = "en_US.UTF=8"/g' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# console = {/console = {/g' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# font = "Lat2-Terminus16";/font = "Lat2-Terminus16";/g' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# keyMap/keyMap = {/g' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# };/};/g' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# console = {/console = {/g' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# font = "Lat2-Terminus16";/font = "Lat2-Terminus16";/g' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# keyMap/keyMap = {/g' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# };/};/g' /mnt/etc/nixos/configuration.nix # Generate fstab file. # genfstab -U /mnt >> /mnt/etc/fstab From fd64f22a13c7b0ce02185266d742109f1f79e084 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 12:51:04 -0700 Subject: [PATCH 012/507] enable audio --- install.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.sh b/install.sh index daecabd..f71a22a 100644 --- a/install.sh +++ b/install.sh @@ -107,6 +107,10 @@ sudo sed -i 's/# i18n.defaultLocale = "en_US.UTF=8"/i18n.defaultLocale = "en_US. # sudo sed -i 's/# keyMap/keyMap = {/g' /mnt/etc/nixos/configuration.nix # sudo sed -i 's/# };/};/g' /mnt/etc/nixos/configuration.nix +# Enable Audio +sudo sed -i 's/# sound.enable/sound.enable/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/g' /mnt/etc/nixos/configuration.nix + # Generate fstab file. # genfstab -U /mnt >> /mnt/etc/fstab From 73cb244e6abd7772ceea7e45e774ae4d45c3e0e1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 13:12:19 -0700 Subject: [PATCH 013/507] fix sed command --- install.sh | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/install.sh b/install.sh index f71a22a..3648ce0 100644 --- a/install.sh +++ b/install.sh @@ -99,9 +99,11 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -# Edit Language and Time Zone -sudo sed -i 's/# time.timeZone = "Europe/Amsterdam";/time.timeZone = "America/Denver";/g' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# i18n.defaultLocale = "en_US.UTF=8"/i18n.defaultLocale = "en_US.UTF=8"/g' /mnt/etc/nixos/configuration.nix +# Edit Time Zone +sudo sed -i 's/# time.timeZone/time.timeZone/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/"Europe/Amsterdam"/"America/Denver"/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/g' /mnt/etc/nixos/configuration.nix + # sudo sed -i 's/# console = {/console = {/g' /mnt/etc/nixos/configuration.nix # sudo sed -i 's/# font = "Lat2-Terminus16";/font = "Lat2-Terminus16";/g' /mnt/etc/nixos/configuration.nix # sudo sed -i 's/# keyMap/keyMap = {/g' /mnt/etc/nixos/configuration.nix @@ -111,18 +113,12 @@ sudo sed -i 's/# i18n.defaultLocale = "en_US.UTF=8"/i18n.defaultLocale = "en_US. sudo sed -i 's/# sound.enable/sound.enable/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/g' /mnt/etc/nixos/configuration.nix -# Generate fstab file. -# genfstab -U /mnt >> /mnt/etc/fstab - # Install sudo nixos-install # Fetch script for `arch-chroot`. # curl https://gitlab.com/ahoneybun/arch-itect/-/raw/main/setup.sh > /mnt/setup.sh -# Change root into the new system & run script. -#arch-chroot /mnt sh setup.sh - # Removed downloaded script. rm install.sh From 97537c6af4fc0500d9138488153d90a35ae6b25d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 13:32:26 -0700 Subject: [PATCH 014/507] sample config --- new-config-nix.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 new-config-nix.txt diff --git a/new-config-nix.txt b/new-config-nix.txt new file mode 100644 index 0000000..0617c81 --- /dev/null +++ b/new-config-nix.txt @@ -0,0 +1,3 @@ +environment.systemPackages = with pkgs; [ + tilix +] \ No newline at end of file From 8fd06c7222f68781eb96ab8f1591276d7f68b4bd Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 13:46:32 -0700 Subject: [PATCH 015/507] trying something --- config.sed | 10 ++++++++++ install.sh | 7 ++----- 2 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 config.sed diff --git a/config.sed b/config.sed new file mode 100644 index 0000000..2e987a7 --- /dev/null +++ b/config.sed @@ -0,0 +1,10 @@ +/# console = {/ { + p; + n; + /# font = "Lat2-Terminus16";/ { + s/# font/font/; + p; + d; + } +} +p; \ No newline at end of file diff --git a/install.sh b/install.sh index 3648ce0..2b63d86 100644 --- a/install.sh +++ b/install.sh @@ -104,15 +104,12 @@ sudo sed -i 's/# time.timeZone/time.timeZone/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/"Europe/Amsterdam"/"America/Denver"/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/g' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/# console = {/console = {/g' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/# font = "Lat2-Terminus16";/font = "Lat2-Terminus16";/g' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/# keyMap/keyMap = {/g' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/# };/};/g' /mnt/etc/nixos/configuration.nix - # Enable Audio sudo sed -i 's/# sound.enable/sound.enable/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/g' /mnt/etc/nixos/configuration.nix +sed -n -f config.sed /mnt/etc/nixos/configuration.nix + # Install sudo nixos-install From 31667cd21a4461f4ff36de3cbba7f9a43d2503fc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 13:48:28 -0700 Subject: [PATCH 016/507] download missing file --- install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install.sh b/install.sh index 2b63d86..e879e2b 100644 --- a/install.sh +++ b/install.sh @@ -99,6 +99,8 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt +wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config.sed + # Edit Time Zone sudo sed -i 's/# time.timeZone/time.timeZone/g' /mnt/etc/nixos/configuration.nix sudo sed -i 's/"Europe/Amsterdam"/"America/Denver"/g' /mnt/etc/nixos/configuration.nix From e111f8213b314b926599abefee0b95f3bc0d8e83 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 14:36:23 -0700 Subject: [PATCH 017/507] comment out wget --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index e879e2b..4d34be6 100644 --- a/install.sh +++ b/install.sh @@ -99,7 +99,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config.sed +# wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config.sed # Edit Time Zone sudo sed -i 's/# time.timeZone/time.timeZone/g' /mnt/etc/nixos/configuration.nix From df6b3c3de401bd7e52a3d8a18fcd6b307c21b0af Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 14:52:49 -0700 Subject: [PATCH 018/507] comment out command --- install.sh | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index 4d34be6..9d95387 100644 --- a/install.sh +++ b/install.sh @@ -102,15 +102,21 @@ sudo nixos-generate-config --root /mnt # wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config.sed # Edit Time Zone -sudo sed -i 's/# time.timeZone/time.timeZone/g' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/"Europe/Amsterdam"/"America/Denver"/g' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# time.timeZone/time.timeZone/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/"Europe/Amsterdam"/"America/Denver"/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/' /mnt/etc/nixos/configuration.nix # Enable Audio -sudo sed -i 's/# sound.enable/sound.enable/g' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# sound.enable/sound.enable/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/' /mnt/etc/nixos/configuration.nix -sed -n -f config.sed /mnt/etc/nixos/configuration.nix +# Add user +sudo sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's//' + +# sed -n -f config.sed /mnt/etc/nixos/configuration.nix # Install sudo nixos-install From 7f34e4b72bbc1b0fb3573bcdfb453ed44607919a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 14:54:01 -0700 Subject: [PATCH 019/507] comment out command --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 9d95387..f36b055 100644 --- a/install.sh +++ b/install.sh @@ -111,9 +111,9 @@ sudo sed -i 's/# sound.enable/sound.enable/' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/' /mnt/etc/nixos/configuration.nix # Add user -sudo sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix # sudo sed -i 's//' # sed -n -f config.sed /mnt/etc/nixos/configuration.nix From 930d4a0e839b8d058edb15e175744851db864294 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Dec 2021 15:15:12 -0700 Subject: [PATCH 020/507] testing --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index f36b055..e2c3ba9 100644 --- a/install.sh +++ b/install.sh @@ -111,10 +111,10 @@ sudo sed -i 's/# sound.enable/sound.enable/' /mnt/etc/nixos/configuration.nix sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/' /mnt/etc/nixos/configuration.nix # Add user -# sudo sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's//' +sudo sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's//' # sed -n -f config.sed /mnt/etc/nixos/configuration.nix From 3bee227fc7af69a6a526fd8d2a98f0dbd60e857c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 1 Jan 2022 19:36:07 -0700 Subject: [PATCH 021/507] fix sudo commands --- install.sh | 49 ++++++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/install.sh b/install.sh index e2c3ba9..013fccb 100644 --- a/install.sh +++ b/install.sh @@ -6,14 +6,6 @@ # 2. Use `loadkeys [keymap]` to set keyboard layout. # ex : `loadkeys de-latin1` to set a german keyboard layout. -# Check if system is booted in UEFI mode. -if [ ! -d "/sys/firmware/efi/efivars" ] -then - # If not, then exit installer. - echo "[Error!] System is not booted in UEFI mode. Please boot in UEFI mode & try again." - exit 9999 -fi - # Figure out how much RAM the system has an set a variable # ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) @@ -25,6 +17,9 @@ ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) # modprobe dm-crypt # modprobe dm-mod +# Switch to root +sudo -i + # Detect and list the drives. lsblk -f @@ -57,7 +52,7 @@ echo t # Change partition type. echo 3 # Pick third partition. echo 19 # Change third partition to Linux swap. echo w # write changes. -) | sudo fdisk $driveName -w always -W always +) | fdisk $driveName -w always -W always # List the new partitions. lsblk -f @@ -82,44 +77,44 @@ read swapName # Open the encrypted root partition # sudo cryptsetup luksOpen $rootName crypt-root -sudo mkfs.fat -F32 -n EFI $efiName # EFI partition -sudo mkfs.ext4 -L root $rootName # / partition -sudo mkswap -L swap $swapName # swap partition +mkfs.fat -F32 -n EFI $efiName # EFI partition +mkfs.ext4 -L root $rootName # / partition +mkswap -L swap $swapName # swap partition # 0. Mount the filesystems. -sudo mount $rootName /mnt -sudo swapon $swapName +mount $rootName /mnt +swapon $swapName # 1. Create directory to mount EFI partition. -sudo mkdir /mnt/boot/ +mkdir /mnt/boot/ # 2.Mount the EFI partition. -sudo mount $efiName /mnt/boot +mount $efiName /mnt/boot # Generate Nix configuration -sudo nixos-generate-config --root /mnt +nixos-generate-config --root /mnt # wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config.sed # Edit Time Zone -sudo sed -i 's/# time.timeZone/time.timeZone/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/"Europe/Amsterdam"/"America/Denver"/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/' /mnt/etc/nixos/configuration.nix +sed -i 's/# time.timeZone/time.timeZone/' /mnt/etc/nixos/configuration.nix +sed -i 's/"Europe/Amsterdam"/"America/Denver"/' /mnt/etc/nixos/configuration.nix +sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/' /mnt/etc/nixos/configuration.nix # Enable Audio -sudo sed -i 's/# sound.enable/sound.enable/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/' /mnt/etc/nixos/configuration.nix +sed -i 's/# sound.enable/sound.enable/' /mnt/etc/nixos/configuration.nix +sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/' /mnt/etc/nixos/configuration.nix # Add user -sudo sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's//' +sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix +sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix +sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix +sed -i 's//' # sed -n -f config.sed /mnt/etc/nixos/configuration.nix # Install -sudo nixos-install +nixos-install # Fetch script for `arch-chroot`. # curl https://gitlab.com/ahoneybun/arch-itect/-/raw/main/setup.sh > /mnt/setup.sh From fcfbd45f9033215c46f7d4286e31fbbcfa8afe54 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 1 Jan 2022 19:38:54 -0700 Subject: [PATCH 022/507] revert fix sudo commands --- install.sh | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/install.sh b/install.sh index 013fccb..b9fc49f 100644 --- a/install.sh +++ b/install.sh @@ -18,7 +18,7 @@ ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) # modprobe dm-mod # Switch to root -sudo -i +# sudo -i # Detect and list the drives. lsblk -f @@ -52,7 +52,7 @@ echo t # Change partition type. echo 3 # Pick third partition. echo 19 # Change third partition to Linux swap. echo w # write changes. -) | fdisk $driveName -w always -W always +) | sudo fdisk $driveName -w always -W always # List the new partitions. lsblk -f @@ -77,44 +77,44 @@ read swapName # Open the encrypted root partition # sudo cryptsetup luksOpen $rootName crypt-root -mkfs.fat -F32 -n EFI $efiName # EFI partition -mkfs.ext4 -L root $rootName # / partition -mkswap -L swap $swapName # swap partition +sudo mkfs.fat -F32 -n EFI $efiName # EFI partition +sudo mkfs.ext4 -L root $rootName # / partition +sudo mkswap -L swap $swapName # swap partition # 0. Mount the filesystems. -mount $rootName /mnt -swapon $swapName +sudo mount $rootName /mnt +sudo swapon $swapName # 1. Create directory to mount EFI partition. -mkdir /mnt/boot/ +sudo mkdir /mnt/boot/ # 2.Mount the EFI partition. -mount $efiName /mnt/boot +sudo mount $efiName /mnt/boot # Generate Nix configuration -nixos-generate-config --root /mnt +sudo nixos-generate-config --root /mnt # wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config.sed # Edit Time Zone -sed -i 's/# time.timeZone/time.timeZone/' /mnt/etc/nixos/configuration.nix -sed -i 's/"Europe/Amsterdam"/"America/Denver"/' /mnt/etc/nixos/configuration.nix -sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# time.timeZone/time.timeZone/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/"Europe/Amsterdam"/"America/Denver"/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/' /mnt/etc/nixos/configuration.nix # Enable Audio -sed -i 's/# sound.enable/sound.enable/' /mnt/etc/nixos/configuration.nix -sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# sound.enable/sound.enable/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/' /mnt/etc/nixos/configuration.nix # Add user -sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix -sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix -sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix -sed -i 's//' +sudo sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix +sudo sed -i 's//' # sed -n -f config.sed /mnt/etc/nixos/configuration.nix # Install -nixos-install +sudo nixos-install # Fetch script for `arch-chroot`. # curl https://gitlab.com/ahoneybun/arch-itect/-/raw/main/setup.sh > /mnt/setup.sh From b655fb81a1e864ec891e07569b5e8d096ac20bea Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 16:54:14 +0000 Subject: [PATCH 023/507] Add new file --- configuration.nix | 190 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 configuration.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..a824eb9 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,190 @@ +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + boot = { + blacklistedKernelModules = [ "snd_pcsp" ]; + kernelPackages = pkgs.linuxPackages_latest; + cleanTmpDir = true; + + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + + supportedFilesystems = [ + "exfat" + ]; + }; + + networking = { + firewall = { + enable = true; + allowedTCPPorts = []; + allowedUDPPorts = []; + }; + hostName = "aya"; + networkmanager.enable = true; + + }; + + # Select internationalisation properties. + i18n = { + consoleKeyMap = "dvp"; + defaultLocale = "en_US.UTF-8"; + }; + + # nVidia driver + hardware.opengl.driSupport32Bit = true; + hardware.bluetooth.enable = true; + hardware.pulseaudio = { + enable = true; + package = pkgs.pulseaudioFull; + }; + + services = { + + openssh.enable = true; + + redshift = { + enable = true; + latitude = "35"; + longitude = "139"; + }; + + ntp.enable = true; + nscd.enable = false; + + xserver = { + videoDrivers = [ "nvidia" ]; + enable = true; + layout = "us"; + + xkbOptions = "compose:caps"; + xkbVariant = "dvp"; + + synaptics.enable = true; + + windowManager.xmonad.enable = true; + windowManager.xmonad.extraPackages = self: [ self.xmonad-contrib ]; + windowManager.xmonad.haskellPackages = pkgs.haskell.packages.ghc822; + windowManager.default = "xmonad"; + desktopManager.default = "none"; + + displayManager.lightdm = { + enable = true; + extraSeatDefaults = '' + greeter-show-manual-login=true + greeter-hide-users=true + allow-guest=false + ''; + }; + + displayManager.sessionCommands = '' + ${pkgs.xlibs.xsetroot}/bin/xsetroot -cursor_name left_ptr + ${pkgs.xscreensaver}/bin/xscreensaver -no-splash & + ''; + }; + }; + + users.extraGroups.vboxusers.members = [ "shana" ]; + + programs.ssh.startAgent = true; + programs.bash.enableCompletion = true; + + # Don't blind me + systemd.services.redshift.restartIfChanged = false; + + time.timeZone = "America/Denver"; + + # Users + users.Users.aaronh = { + createHome = true; + home = "/home/aaronh"; + description = "Mateusz Kowalczyk"; + extraGroups = [ "wheel" "audio" "video" "networkmanager" "docker" ]; + useDefaultShell = true; + }; + + nixpkgs.system = "x86_64-linux"; + nixpkgs.config = { + virtualbox.enableExtensionPack = true; + pulseaudio = true; + allowUnfree = true; + }; + + environment.systemPackages = with pkgs; + [ cacert + cloc + elfutils + file + firefox-devedition-bin + fish + git + glib + glxinfo + gnupg + gnutls + # haskellPackages.apply-refact + # haskellPackages.hasktags + # haskellPackages.hlint + htop + jq + mpv + mupdf + nano + networkmanager + nitrogen + nmap + openssl + p7zip + pavucontrol + # pythonPackages.youtube-dl + # rtorrent + rxvt_unicode + scrot + sxiv + unzip + wget + xlibs.xsetroot + xscreensaver + xsel + zip + ]; + + fonts = { + fontconfig.enable = true; + enableFontDir = true; + enableGhostscriptFonts = true; + fonts = with pkgs; [ + corefonts + dejavu_fonts + inconsolata + source-han-sans-japanese + source-han-sans-korean + source-han-sans-simplified-chinese + source-han-sans-traditional-chinese + ubuntu_font_family + ]; + }; + + security.sudo.enable = true; + + nix = { + package = pkgs.nixUnstable; + trustedBinaryCaches = [ + "http://cache.nixos.org" + ]; + + binaryCaches = [ + "http://cache.nixos.org" + ]; + + gc.automatic = false; + maxJobs = pkgs.stdenv.lib.mkForce 6; + }; +} From 8e7976711158693f2edec0b3b97d00170ea348a4 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 16:55:43 +0000 Subject: [PATCH 024/507] Update install.sh --- install.sh | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/install.sh b/install.sh index b9fc49f..2c60be3 100644 --- a/install.sh +++ b/install.sh @@ -94,24 +94,23 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -# wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config.sed +wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/configuration.nix +sudo mv configuration.nix /mnt/etc/nixos/ -# Edit Time Zone -sudo sed -i 's/# time.timeZone/time.timeZone/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/"Europe/Amsterdam"/"America/Denver"/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/' /mnt/etc/nixos/configuration.nix +# # Edit Time Zone +# sudo sed -i 's/# time.timeZone/time.timeZone/' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/"Europe/Amsterdam"/"America/Denver"/' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/' /mnt/etc/nixos/configuration.nix -# Enable Audio -sudo sed -i 's/# sound.enable/sound.enable/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/' /mnt/etc/nixos/configuration.nix +# # Enable Audio +# sudo sed -i 's/# sound.enable/sound.enable/' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/' /mnt/etc/nixos/configuration.nix -# Add user -sudo sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix -sudo sed -i 's//' - -# sed -n -f config.sed /mnt/etc/nixos/configuration.nix +# # Add user +# sudo sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix +# sudo sed -i 's//' # Install sudo nixos-install From 8a7a6b698816cf2eeb1f4ccd9b868cbe3e8029ca Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:01:35 +0000 Subject: [PATCH 025/507] Update install.sh --- install.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 2c60be3..fa1b49c 100644 --- a/install.sh +++ b/install.sh @@ -94,8 +94,10 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/configuration.nix -sudo mv configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv configuration.nix /mnt/etc/nixos/ + +# wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/configuration.nix +# sudo mv configuration.nix /mnt/etc/nixos/ # # Edit Time Zone # sudo sed -i 's/# time.timeZone/time.timeZone/' /mnt/etc/nixos/configuration.nix From bc1ca7cdec80b915253629b80b5f8fc0aced26af Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:02:44 +0000 Subject: [PATCH 026/507] Update configuration.nix --- configuration.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configuration.nix b/configuration.nix index a824eb9..9bc80c5 100644 --- a/configuration.nix +++ b/configuration.nix @@ -102,10 +102,10 @@ time.timeZone = "America/Denver"; # Users - users.Users.aaronh = { + users.users.aaronh = { createHome = true; home = "/home/aaronh"; - description = "Mateusz Kowalczyk"; + description = "Aaron Honeycutt"; extraGroups = [ "wheel" "audio" "video" "networkmanager" "docker" ]; useDefaultShell = true; }; From 0fb15f51221df2dfff520049029fdcf2349bed9a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:13:08 +0000 Subject: [PATCH 027/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index fa1b49c..39cb079 100644 --- a/install.sh +++ b/install.sh @@ -94,7 +94,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/configuration.nix # sudo mv configuration.nix /mnt/etc/nixos/ From 383d61e1fbf4f7e3afd7caf2aa942e3c740f2fb2 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:15:36 +0000 Subject: [PATCH 028/507] Update configuration.nix --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 9bc80c5..89b0593 100644 --- a/configuration.nix +++ b/configuration.nix @@ -185,6 +185,6 @@ ]; gc.automatic = false; - maxJobs = pkgs.stdenv.lib.mkForce 6; + maxJobs = pkgs.lib.mkForce 6; }; } From ee9446662af5d5f3c3a300d9a1cfe7450c46fd2c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:22:12 +0000 Subject: [PATCH 029/507] Update configuration.nix --- configuration.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configuration.nix b/configuration.nix index 89b0593..a74ea1b 100644 --- a/configuration.nix +++ b/configuration.nix @@ -102,11 +102,11 @@ time.timeZone = "America/Denver"; # Users - users.users.aaronh = { + users.ExtraUsers.aaronh = { createHome = true; home = "/home/aaronh"; description = "Aaron Honeycutt"; - extraGroups = [ "wheel" "audio" "video" "networkmanager" "docker" ]; + ExtraGroups = [ "wheel" "audio" "video" "networkmanager" "docker" ]; useDefaultShell = true; }; From c26bf0bcc3695d206c58610b1ef6e79ab3de0b8e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:27:07 +0000 Subject: [PATCH 030/507] Update configuration.nix --- configuration.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/configuration.nix b/configuration.nix index a74ea1b..3589a98 100644 --- a/configuration.nix +++ b/configuration.nix @@ -108,6 +108,7 @@ description = "Aaron Honeycutt"; ExtraGroups = [ "wheel" "audio" "video" "networkmanager" "docker" ]; useDefaultShell = true; + isNormalUser = true; }; nixpkgs.system = "x86_64-linux"; From 6318b1295814d56261cd1288a47de8bb995107a5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:27:51 +0000 Subject: [PATCH 031/507] Update configuration.nix --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 3589a98..8c66a2f 100644 --- a/configuration.nix +++ b/configuration.nix @@ -102,7 +102,7 @@ time.timeZone = "America/Denver"; # Users - users.ExtraUsers.aaronh = { + users.extraUsers.aaronh = { createHome = true; home = "/home/aaronh"; description = "Aaron Honeycutt"; From c7fe71c59c21abea02ad8c4837a1d6c2bf5c5332 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:29:42 +0000 Subject: [PATCH 032/507] Update configuration.nix --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 8c66a2f..8cfb526 100644 --- a/configuration.nix +++ b/configuration.nix @@ -106,7 +106,7 @@ createHome = true; home = "/home/aaronh"; description = "Aaron Honeycutt"; - ExtraGroups = [ "wheel" "audio" "video" "networkmanager" "docker" ]; + extraGroups = [ "wheel" "audio" "video" "networkmanager" "docker" ]; useDefaultShell = true; isNormalUser = true; }; From 72e964d146e9916d8f16bba310b4677302bf053d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:36:29 +0000 Subject: [PATCH 033/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aa21550..4a428f1 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ The following will happen: ## Roadmap -- [ ] +- [ ] Use my own configuration.nix file - [ ] # Possible Ideas From 926d6264911ae9287d21dba0e02ca60c3be56fd8 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:38:51 +0000 Subject: [PATCH 034/507] Update configuration.nix --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 8cfb526..e9e0238 100644 --- a/configuration.nix +++ b/configuration.nix @@ -102,7 +102,7 @@ time.timeZone = "America/Denver"; # Users - users.extraUsers.aaronh = { + users.users.aaronh = { createHome = true; home = "/home/aaronh"; description = "Aaron Honeycutt"; From 50b9fde230bbaec5e1cef769d9845cccca9702d0 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 21 Feb 2022 17:42:39 +0000 Subject: [PATCH 035/507] Update configuration.nix --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index e9e0238..6a8995b 100644 --- a/configuration.nix +++ b/configuration.nix @@ -57,7 +57,7 @@ }; ntp.enable = true; - nscd.enable = false; + nscd.enable = true; xserver = { videoDrivers = [ "nvidia" ]; From 0d86f205a3093bca5823c18238d0499698816cd6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:14:59 +0000 Subject: [PATCH 036/507] Update to match standards --- configuration.nix | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/configuration.nix b/configuration.nix index 6a8995b..14de702 100644 --- a/configuration.nix +++ b/configuration.nix @@ -33,8 +33,8 @@ }; # Select internationalisation properties. - i18n = { - consoleKeyMap = "dvp"; + console = { + KeyMap = "dvp"; defaultLocale = "en_US.UTF-8"; }; @@ -50,7 +50,7 @@ openssh.enable = true; - redshift = { + location = { enable = true; latitude = "35"; longitude = "139"; @@ -72,8 +72,7 @@ windowManager.xmonad.enable = true; windowManager.xmonad.extraPackages = self: [ self.xmonad-contrib ]; windowManager.xmonad.haskellPackages = pkgs.haskell.packages.ghc822; - windowManager.default = "xmonad"; - desktopManager.default = "none"; + displayManager.defaultSession = "none+xmonad"; displayManager.lightdm = { enable = true; @@ -159,7 +158,7 @@ fonts = { fontconfig.enable = true; - enableFontDir = true; + fontDir = enable; enableGhostscriptFonts = true; fonts = with pkgs; [ corefonts From 75eaa3e83927c54ade23347e7108a2e2433818bb Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:19:13 +0000 Subject: [PATCH 037/507] Update configuration.nix --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 14de702..cc905b7 100644 --- a/configuration.nix +++ b/configuration.nix @@ -158,7 +158,7 @@ fonts = { fontconfig.enable = true; - fontDir = enable; + fontDir.enable = true; enableGhostscriptFonts = true; fonts = with pkgs; [ corefonts From a5ebb4ef170386639680d13a61dce848fa562d96 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:23:11 +0000 Subject: [PATCH 038/507] Update configuration.nix --- configuration.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index cc905b7..007b779 100644 --- a/configuration.nix +++ b/configuration.nix @@ -34,7 +34,6 @@ # Select internationalisation properties. console = { - KeyMap = "dvp"; defaultLocale = "en_US.UTF-8"; }; From 615ebffa6d40a2ef707ef0729485eb4935c8d358 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:23:41 +0000 Subject: [PATCH 039/507] Update configuration.nix --- configuration.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/configuration.nix b/configuration.nix index 007b779..5e42442 100644 --- a/configuration.nix +++ b/configuration.nix @@ -32,11 +32,6 @@ }; - # Select internationalisation properties. - console = { - defaultLocale = "en_US.UTF-8"; - }; - # nVidia driver hardware.opengl.driSupport32Bit = true; hardware.bluetooth.enable = true; From 2e3cb62fc87c3c38b216b984dea68d0df9d4067e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:24:52 +0000 Subject: [PATCH 040/507] Update configuration.nix --- configuration.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/configuration.nix b/configuration.nix index 5e42442..4011714 100644 --- a/configuration.nix +++ b/configuration.nix @@ -32,6 +32,11 @@ }; + # Select internationalisation properties. + console = { + defaultLocale = "en_US.UTF-8"; + }; + # nVidia driver hardware.opengl.driSupport32Bit = true; hardware.bluetooth.enable = true; From f7ba731f2f77344c4c87d3b23f341cedcf361b3f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:25:58 +0000 Subject: [PATCH 041/507] Update configuration.nix --- configuration.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/configuration.nix b/configuration.nix index 4011714..37d65c1 100644 --- a/configuration.nix +++ b/configuration.nix @@ -32,11 +32,12 @@ }; - # Select internationalisation properties. - console = { + i18n = { + consoleFont = "Lat2-Terminus16"; + consoleKeyMap = "us"; defaultLocale = "en_US.UTF-8"; }; - + # nVidia driver hardware.opengl.driSupport32Bit = true; hardware.bluetooth.enable = true; From 432dcb21ef14e5c6b1a3f80d1c8b7b1d02bee23b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:27:07 +0000 Subject: [PATCH 042/507] Update configuration.nix --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 37d65c1..5a3072f 100644 --- a/configuration.nix +++ b/configuration.nix @@ -50,7 +50,7 @@ openssh.enable = true; - location = { + locate = { enable = true; latitude = "35"; longitude = "139"; From 978327191ac2f0129c855df143df8e63a08626a9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:28:17 +0000 Subject: [PATCH 043/507] Update configuration.nix --- configuration.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/configuration.nix b/configuration.nix index 5a3072f..c79ba35 100644 --- a/configuration.nix +++ b/configuration.nix @@ -50,12 +50,6 @@ openssh.enable = true; - locate = { - enable = true; - latitude = "35"; - longitude = "139"; - }; - ntp.enable = true; nscd.enable = true; From e1916c73047a397864b1ad53d83f51b69d54909c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:30:24 +0000 Subject: [PATCH 044/507] Update configuration.nix --- configuration.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configuration.nix b/configuration.nix index c79ba35..dee3783 100644 --- a/configuration.nix +++ b/configuration.nix @@ -32,9 +32,9 @@ }; - i18n = { - consoleFont = "Lat2-Terminus16"; - consoleKeyMap = "us"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; defaultLocale = "en_US.UTF-8"; }; From e04ae25b8f9dff2914dd68d487f79168e705658e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:32:52 +0000 Subject: [PATCH 045/507] Update configuration.nix --- configuration.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index dee3783..83648f0 100644 --- a/configuration.nix +++ b/configuration.nix @@ -35,8 +35,11 @@ console = { font = "Lat2-Terminus16"; keyMap = "us"; - defaultLocale = "en_US.UTF-8"; }; + + i18n = { + defaultLocale = "en_US.UTF-8"; + } # nVidia driver hardware.opengl.driSupport32Bit = true; From 986b881dac8121708a16cf2a807370d9a83e4251 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:34:02 +0000 Subject: [PATCH 046/507] Update configuration.nix --- configuration.nix | 8 -------- 1 file changed, 8 deletions(-) diff --git a/configuration.nix b/configuration.nix index 83648f0..7cbeb75 100644 --- a/configuration.nix +++ b/configuration.nix @@ -40,14 +40,6 @@ i18n = { defaultLocale = "en_US.UTF-8"; } - - # nVidia driver - hardware.opengl.driSupport32Bit = true; - hardware.bluetooth.enable = true; - hardware.pulseaudio = { - enable = true; - package = pkgs.pulseaudioFull; - }; services = { From d856f81af0a4bae9746141c9150ea08d7a0b8778 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:34:55 +0000 Subject: [PATCH 047/507] Update configuration.nix --- configuration.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/configuration.nix b/configuration.nix index 7cbeb75..f739b39 100644 --- a/configuration.nix +++ b/configuration.nix @@ -42,9 +42,7 @@ } services = { - openssh.enable = true; - ntp.enable = true; nscd.enable = true; From 69a3c62075a5981e1f31f26756d1ba7c7f80bcf1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:35:40 +0000 Subject: [PATCH 048/507] Update configuration.nix --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index f739b39..f81b99b 100644 --- a/configuration.nix +++ b/configuration.nix @@ -45,7 +45,7 @@ openssh.enable = true; ntp.enable = true; nscd.enable = true; - + } xserver = { videoDrivers = [ "nvidia" ]; enable = true; From 828d963297c9ac6ef739cea44b701dd9d02d8d09 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:38:01 +0000 Subject: [PATCH 049/507] Add new file --- config.nix | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 config.nix diff --git a/config.nix b/config.nix new file mode 100644 index 0000000..5dda599 --- /dev/null +++ b/config.nix @@ -0,0 +1,46 @@ +{ config, pkgs, ... }: + +{ + # Import other configuration modules + # (hardware-configuration.nix is autogenerated upon installation) + # paths in nix expressions are always relative the file which defines them + imports = + [ + ./hardware-configuration.nix + ./my-dev-tools.nix + ./my-desktop-env.nix + ./etc.nix + ]; + + # Name your host machine + networking.hostName = "NixOS-VM"; + + # Set your time zone. + time.timeZone = "America/Denver"; + + # Enter keyboard layout + services.xserver.layout = "us"; + + # Define user accounts + users.extraUsers = + { + myuser = + { + extraGroups = [ "wheel" "networkmanager" ]; + isNormalUser = true; + }; + }; + + # Install some packages + environment.systemPackages = + with pkgs; + [ + ddate + testdisk + zsh + ]; + + # Enable the OpenSSH daemon + services.openssh.enable = true; + +} From 4182e639e44d640d0f08ecb29b09124513aa4414 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:38:20 +0000 Subject: [PATCH 050/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 39cb079..bf89927 100644 --- a/install.sh +++ b/install.sh @@ -94,7 +94,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/configuration.nix # sudo mv configuration.nix /mnt/etc/nixos/ From 66f745a7679f2b0271e5ce39675bac8e8f987f9b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 10:39:46 -0600 Subject: [PATCH 051/507] Remove custom nix files --- config.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/config.nix b/config.nix index 5dda599..568a4f1 100644 --- a/config.nix +++ b/config.nix @@ -7,9 +7,6 @@ imports = [ ./hardware-configuration.nix - ./my-dev-tools.nix - ./my-desktop-env.nix - ./etc.nix ]; # Name your host machine From 2f773f84b7a9c7a807848f0913fc0c1ad8753a61 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:43:22 +0000 Subject: [PATCH 052/507] Update config.nix --- config.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/config.nix b/config.nix index 568a4f1..88e48e4 100644 --- a/config.nix +++ b/config.nix @@ -9,6 +9,15 @@ ./hardware-configuration.nix ]; + boot.loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot/efi"; # ← use the same mount point here. + systemd-boot.enable = true; + }; + }; +}; + # Name your host machine networking.hostName = "NixOS-VM"; From 64b82be0a43232ffa73a586273fb96cdc31e3a4b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:43:49 +0000 Subject: [PATCH 053/507] Update config.nix --- config.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/config.nix b/config.nix index 88e48e4..e1502fc 100644 --- a/config.nix +++ b/config.nix @@ -16,7 +16,6 @@ systemd-boot.enable = true; }; }; -}; # Name your host machine networking.hostName = "NixOS-VM"; From 692da46cabaeb9255a24b29c71574935e384585e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 17:10:41 +0000 Subject: [PATCH 054/507] Update config.nix --- config.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/config.nix b/config.nix index e1502fc..6624c4c 100644 --- a/config.nix +++ b/config.nix @@ -10,9 +10,6 @@ ]; boot.loader = { - efi = { - canTouchEfiVariables = true; - efiSysMountPoint = "/boot/efi"; # ← use the same mount point here. systemd-boot.enable = true; }; }; From e8f252f4312cbaed2794483601646b8b9373e251 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 17:14:06 +0000 Subject: [PATCH 055/507] Update config.nix --- config.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/config.nix b/config.nix index 6624c4c..7435a72 100644 --- a/config.nix +++ b/config.nix @@ -12,7 +12,6 @@ boot.loader = { systemd-boot.enable = true; }; - }; # Name your host machine networking.hostName = "NixOS-VM"; From da521fc91c2a22a261518c9315cd562fc38dedcd Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 17:16:21 +0000 Subject: [PATCH 056/507] Update install.sh --- install.sh | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/install.sh b/install.sh index bf89927..759b477 100644 --- a/install.sh +++ b/install.sh @@ -96,24 +96,6 @@ sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ -# wget https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/configuration.nix -# sudo mv configuration.nix /mnt/etc/nixos/ - -# # Edit Time Zone -# sudo sed -i 's/# time.timeZone/time.timeZone/' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/"Europe/Amsterdam"/"America/Denver"/' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/# i18n.defaultLocale/i18n.defaultLocale/' /mnt/etc/nixos/configuration.nix - -# # Enable Audio -# sudo sed -i 's/# sound.enable/sound.enable/' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/# hardware.pulseaudio.enable/hardware.pulseaudio.enable/' /mnt/etc/nixos/configuration.nix - -# # Add user -# sudo sed -i 's/# users.users.jane/users.users.aaron/' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/# isNormalUses/isNormalUser/' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's/# extraGroups/extraGroups/' /mnt/etc/nixos/configuration.nix -# sudo sed -i 's//' - # Install sudo nixos-install From c29cb5c31df7ad680b867090f6d7fc8a1d0b5751 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 17:19:56 +0000 Subject: [PATCH 057/507] Update config.nix --- config.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.nix b/config.nix index 7435a72..656af37 100644 --- a/config.nix +++ b/config.nix @@ -25,7 +25,7 @@ # Define user accounts users.extraUsers = { - myuser = + aaronh = { extraGroups = [ "wheel" "networkmanager" ]; isNormalUser = true; @@ -38,7 +38,7 @@ [ ddate testdisk - zsh + fish ]; # Enable the OpenSSH daemon From 5f1e1a64d5eb2f68f208bca3c92cb604501759aa Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 17:22:58 +0000 Subject: [PATCH 058/507] Add new file --- config-gnome.nix | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 config-gnome.nix diff --git a/config-gnome.nix b/config-gnome.nix new file mode 100644 index 0000000..497c643 --- /dev/null +++ b/config-gnome.nix @@ -0,0 +1,51 @@ +{ config, pkgs, ... }: + +{ + # Import other configuration modules + # (hardware-configuration.nix is autogenerated upon installation) + # paths in nix expressions are always relative the file which defines them + imports = + [ + ./hardware-configuration.nix + ]; + + boot.loader = { + systemd-boot.enable = true; + }; + + # Name your host machine + networking.hostName = "NixOS-VM"; + + # Set your time zone. + time.timeZone = "America/Denver"; + + # Enter keyboard layout + services.xserver.layout = "us"; + + # Define user accounts + users.extraUsers = + { + aaronh = + { + extraGroups = [ "wheel" "networkmanager" ]; + isNormalUser = true; + }; + }; + + # Install some packages + environment.systemPackages = + with pkgs; + [ + ddate + testdisk + fish + ]; + + # Enable the OpenSSH daemon + services.openssh.enable = true; + + # GNOME + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + +} From 2ad68d72ce56e2e0bd37f4456afbebd186d5afd3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 17:24:07 +0000 Subject: [PATCH 059/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 759b477..9aa633c 100644 --- a/install.sh +++ b/install.sh @@ -94,7 +94,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-gnome.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From 70160a8da502d16690bd89fcb53beaefb40258ff Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 17:38:02 +0000 Subject: [PATCH 060/507] Update config-gnome.nix --- config-gnome.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config-gnome.nix b/config-gnome.nix index 497c643..8727256 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -45,6 +45,7 @@ services.openssh.enable = true; # GNOME + services.xserver.enable = true; services.xserver.displayManager.gdm.enable = true; services.xserver.desktopManager.gnome.enable = true; From 69af2c28f08b851e0b695e310a60d4f944c7bb12 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 17:47:01 +0000 Subject: [PATCH 061/507] Update config-gnome.nix --- config-gnome.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config-gnome.nix b/config-gnome.nix index 8727256..5bf84f4 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -36,8 +36,8 @@ environment.systemPackages = with pkgs; [ - ddate - testdisk + thunderbird + firefox fish ]; From 1a465a01302723e86ae975742e448cf1974a9b4a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 18:04:51 +0000 Subject: [PATCH 062/507] Delete config.sed --- config.sed | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 config.sed diff --git a/config.sed b/config.sed deleted file mode 100644 index 2e987a7..0000000 --- a/config.sed +++ /dev/null @@ -1,10 +0,0 @@ -/# console = {/ { - p; - n; - /# font = "Lat2-Terminus16";/ { - s/# font/font/; - p; - d; - } -} -p; \ No newline at end of file From 63e0e7ab8b349a74abef9f2be56b1bb7cd5edcfc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 18:04:57 +0000 Subject: [PATCH 063/507] Delete new-config-nix.txt --- new-config-nix.txt | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 new-config-nix.txt diff --git a/new-config-nix.txt b/new-config-nix.txt deleted file mode 100644 index 0617c81..0000000 --- a/new-config-nix.txt +++ /dev/null @@ -1,3 +0,0 @@ -environment.systemPackages = with pkgs; [ - tilix -] \ No newline at end of file From d0e6f43735779a73ba18b6b26813e19d2474225d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 18:06:31 +0000 Subject: [PATCH 064/507] Update config-gnome.nix --- config-gnome.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config-gnome.nix b/config-gnome.nix index 5bf84f4..66534c2 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -27,6 +27,7 @@ { aaronh = { + home = "/home/aaronh"; extraGroups = [ "wheel" "networkmanager" ]; isNormalUser = true; }; From 21da291e0ab30a9007490736299635d12780bc88 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 18:07:02 +0000 Subject: [PATCH 065/507] Update install.sh --- install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/install.sh b/install.sh index 9aa633c..00b104c 100644 --- a/install.sh +++ b/install.sh @@ -99,9 +99,6 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-gnome.ni # Install sudo nixos-install -# Fetch script for `arch-chroot`. -# curl https://gitlab.com/ahoneybun/arch-itect/-/raw/main/setup.sh > /mnt/setup.sh - # Removed downloaded script. rm install.sh From 740a0d701ffea250d64877898c9c41f12adb497a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 18:18:16 +0000 Subject: [PATCH 066/507] Add new file --- config-pantheon.nix | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 config-pantheon.nix diff --git a/config-pantheon.nix b/config-pantheon.nix new file mode 100644 index 0000000..0f86f02 --- /dev/null +++ b/config-pantheon.nix @@ -0,0 +1,53 @@ +{ config, pkgs, ... }: + +{ + # Import other configuration modules + # (hardware-configuration.nix is autogenerated upon installation) + # paths in nix expressions are always relative the file which defines them + imports = + [ + ./hardware-configuration.nix + ]; + + boot.loader = { + systemd-boot.enable = true; + }; + + # Name your host machine + networking.hostName = "NixOS-VM"; + + # Set your time zone. + time.timeZone = "America/Denver"; + + # Enter keyboard layout + services.xserver.layout = "us"; + + # Define user accounts + users.extraUsers = + { + aaronh = + { + home = "/home/aaronh"; + extraGroups = [ "wheel" "networkmanager" ]; + isNormalUser = true; + }; + }; + + # Install some packages + environment.systemPackages = + with pkgs; + [ + thunderbird + firefox + fish + ]; + + # Enable the OpenSSH daemon + services.openssh.enable = true; + + # Pantheon + services.xserver.enable = true; + services.xserver.desktopManager.pantheon.enable = true; + + +} From 77040a81faa8e676764282a25f02ac81fd1a31e0 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 18:43:19 +0000 Subject: [PATCH 067/507] Update config-gnome.nix --- config-gnome.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config-gnome.nix b/config-gnome.nix index 66534c2..2932a33 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -50,4 +50,8 @@ services.xserver.displayManager.gdm.enable = true; services.xserver.desktopManager.gnome.enable = true; + # System + system.autoUpgrade.enable = true; + system.autoUpgrade.allowReboot = true; + } From a4a866fa1eab36c76c5b54cea2f74409483fd3a2 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 18:52:55 +0000 Subject: [PATCH 068/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a428f1..7e9db67 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ The following will happen: ## Roadmap -- [ ] Use my own configuration.nix file +- [ ] Encrypt /root - [ ] # Possible Ideas From 9ebb3ddc4932864ef80b0d17612fc137e6a2316a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 12:55:32 -0600 Subject: [PATCH 069/507] clean up code a bit --- install.sh | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/install.sh b/install.sh index 00b104c..f5a0543 100644 --- a/install.sh +++ b/install.sh @@ -1,24 +1,6 @@ -# This file is used to partition, mount and install arch linux on UEFI systems. - -# Default keyboard layout is US. -# To change layout : -# 1. Use `localectl list-keymaps` to display liste of keymaps. -# 2. Use `loadkeys [keymap]` to set keyboard layout. -# ex : `loadkeys de-latin1` to set a german keyboard layout. - -# Figure out how much RAM the system has an set a variable -# ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') -ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) - -# Update system clock. -# timedatectl set-ntp true - # Load kernel modules -# modprobe dm-crypt -# modprobe dm-mod - -# Switch to root -# sudo -i +modprobe dm-crypt +modprobe dm-mod # Detect and list the drives. lsblk -f @@ -72,10 +54,10 @@ echo "Which is the swap partition?" read swapName # Encrypt the root partition -# sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName +sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName # Open the encrypted root partition -# sudo cryptsetup luksOpen $rootName crypt-root +sudo cryptsetup luksOpen $rootName crypt-root sudo mkfs.fat -F32 -n EFI $efiName # EFI partition sudo mkfs.ext4 -L root $rootName # / partition From 30492245752bfa353997a84b6fb267a8117f717e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 19:03:13 +0000 Subject: [PATCH 070/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index f5a0543..54de424 100644 --- a/install.sh +++ b/install.sh @@ -64,7 +64,7 @@ sudo mkfs.ext4 -L root $rootName # / partition sudo mkswap -L swap $swapName # swap partition # 0. Mount the filesystems. -sudo mount $rootName /mnt +mount /dev/mapper/crypt-root /mnt sudo swapon $swapName # 1. Create directory to mount EFI partition. From e06d5289890afbec87a568e27130aade0e42ff22 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 19:05:24 +0000 Subject: [PATCH 071/507] Update install.sh --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 54de424..99c931b 100644 --- a/install.sh +++ b/install.sh @@ -59,9 +59,9 @@ sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName # Open the encrypted root partition sudo cryptsetup luksOpen $rootName crypt-root -sudo mkfs.fat -F32 -n EFI $efiName # EFI partition -sudo mkfs.ext4 -L root $rootName # / partition -sudo mkswap -L swap $swapName # swap partition +sudo mkfs.fat -F32 -n EFI $efiName # EFI partition +sudo mkfs.ext4 -L root /dev/mapper/crypt-root # / partition +sudo mkswap -L swap $swapName # swap partition # 0. Mount the filesystems. mount /dev/mapper/crypt-root /mnt From d13995dafcd5f028f96487396ebefc8be6a86e1c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 19:07:39 +0000 Subject: [PATCH 072/507] Update config-gnome.nix --- config-gnome.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config-gnome.nix b/config-gnome.nix index 2932a33..5e6b377 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -13,6 +13,9 @@ systemd-boot.enable = true; }; + boot.initrd.luks.devices.crypted.device = "/dev/vda2"; + fileSystems."/".device = "/dev/mapper/crypt-root"; + # Name your host machine networking.hostName = "NixOS-VM"; From 4cbff13ba9a4ca79da050527395d6efee3419003 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 19:12:15 +0000 Subject: [PATCH 073/507] Update config-gnome.nix --- config-gnome.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-gnome.nix b/config-gnome.nix index 5e6b377..ec09a07 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -13,7 +13,7 @@ systemd-boot.enable = true; }; - boot.initrd.luks.devices.crypted.device = "/dev/vda2"; + boot.initrd.luks.devices.crypt-root.device = "/dev/vda2"; fileSystems."/".device = "/dev/mapper/crypt-root"; # Name your host machine From 49a12b0a8246da6e26d289ba137df3c7b7deec93 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 19:16:11 +0000 Subject: [PATCH 074/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 99c931b..a7ce3e7 100644 --- a/install.sh +++ b/install.sh @@ -64,7 +64,7 @@ sudo mkfs.ext4 -L root /dev/mapper/crypt-root # / partition sudo mkswap -L swap $swapName # swap partition # 0. Mount the filesystems. -mount /dev/mapper/crypt-root /mnt +sudo mount /dev/disk/by-label/nixos /mnt sudo swapon $swapName # 1. Create directory to mount EFI partition. From 9bcc89633ed4a7d1fff0468540392142cb772bda Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 19:17:12 +0000 Subject: [PATCH 075/507] Update config-gnome.nix --- config-gnome.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/config-gnome.nix b/config-gnome.nix index ec09a07..5922301 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -13,8 +13,12 @@ systemd-boot.enable = true; }; - boot.initrd.luks.devices.crypt-root.device = "/dev/vda2"; - fileSystems."/".device = "/dev/mapper/crypt-root"; + boot.initrd.luks.devices = { + crypted = { + device = "/dev/disk/by-label/root>"; + preLVM = true; + }; + }; # Name your host machine networking.hostName = "NixOS-VM"; From 48dadd42b34b55f9af972050d191935cb5cbcbab Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 19:21:39 +0000 Subject: [PATCH 076/507] Update config-gnome.nix --- config-gnome.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-gnome.nix b/config-gnome.nix index 5922301..e2989e2 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -14,7 +14,7 @@ }; boot.initrd.luks.devices = { - crypted = { + crypt-root = { device = "/dev/disk/by-label/root>"; preLVM = true; }; From 6e3a9257dd2b8aa0092fe892d6f3f09ea2b51d1e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 19:48:29 +0000 Subject: [PATCH 077/507] Update config-gnome.nix --- config-gnome.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/config-gnome.nix b/config-gnome.nix index e2989e2..bd6f866 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -15,11 +15,16 @@ boot.initrd.luks.devices = { crypt-root = { - device = "/dev/disk/by-label/root>"; + device = "/dev/disk/by-label/root"; preLVM = true; }; }; + fileSystems."/" = + { device = "/dev/disk/by-label/root"; + fsType = "ext4"; + }; + # Name your host machine networking.hostName = "NixOS-VM"; From 4f2917fe23afccd32798aa51c8052ede11e706cb Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 19:51:38 +0000 Subject: [PATCH 078/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index a7ce3e7..a041766 100644 --- a/install.sh +++ b/install.sh @@ -1,6 +1,6 @@ # Load kernel modules -modprobe dm-crypt -modprobe dm-mod +sudo modprobe dm-crypt +sudo modprobe dm-mod # Detect and list the drives. lsblk -f From 75c859f33eeb65f2bfeb7b2d54476189fd338922 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 19:52:53 +0000 Subject: [PATCH 079/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index a041766..3bc0821 100644 --- a/install.sh +++ b/install.sh @@ -64,7 +64,7 @@ sudo mkfs.ext4 -L root /dev/mapper/crypt-root # / partition sudo mkswap -L swap $swapName # swap partition # 0. Mount the filesystems. -sudo mount /dev/disk/by-label/nixos /mnt +sudo mount /dev/disk/by-label/root /mnt sudo swapon $swapName # 1. Create directory to mount EFI partition. From 2beb36e84d7de23ae3fa19bf779c36f7d4b568bc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 20:44:30 +0000 Subject: [PATCH 080/507] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7e9db67..1343ba0 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ This installer does the following at it's core: - Partition the drive of your choice -- Encrypts the installation - Installs a base of NixOS Tested on the following drives: From 53bcbe5f86a0d5e1fc6b7b93ce6dd4da84e6dce5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 21:45:21 +0000 Subject: [PATCH 081/507] Update config-gnome.nix --- config-gnome.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config-gnome.nix b/config-gnome.nix index 2932a33..4f60b4e 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -40,6 +40,7 @@ thunderbird firefox fish + tilix ]; # Enable the OpenSSH daemon @@ -50,6 +51,9 @@ services.xserver.displayManager.gdm.enable = true; services.xserver.desktopManager.gnome.enable = true; + # Disable GNOME applications + environment.gnome.excludePackages = [ pkgs.gnome.cheese pkgs.gnome-photos pkgs.gnome.gnome-music pkgs.gnome.gnome-terminal pkgs.gnome.gedit pkgs.epiphany pkgs.evince pkgs.gnome.gnome-characters pkgs.gnome.totem pkgs.gnome.tali pkgs.gnome.iagno pkgs.gnome.hitori pkgs.gnome.atomix pkgs.gnome-tour pkgs.gnome.geary ]; + # System system.autoUpgrade.enable = true; system.autoUpgrade.allowReboot = true; From 55f3f12eec7a57fd4ccd1501053ae620ddb9013c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 15:48:28 -0600 Subject: [PATCH 082/507] Fix ramTotal value --- install.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.sh b/install.sh index 3bc0821..8f7859b 100644 --- a/install.sh +++ b/install.sh @@ -2,6 +2,10 @@ sudo modprobe dm-crypt sudo modprobe dm-mod +# Figure out how much RAM the system has an set a variable +# ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') +ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) + # Detect and list the drives. lsblk -f From 37a6541331eb2e6c83a4d8119a4656a24c9abe32 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 15:51:31 -0600 Subject: [PATCH 083/507] Clean up code --- install.sh | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/install.sh b/install.sh index 00b104c..5424f5e 100644 --- a/install.sh +++ b/install.sh @@ -1,25 +1,12 @@ -# This file is used to partition, mount and install arch linux on UEFI systems. - -# Default keyboard layout is US. -# To change layout : -# 1. Use `localectl list-keymaps` to display liste of keymaps. -# 2. Use `loadkeys [keymap]` to set keyboard layout. -# ex : `loadkeys de-latin1` to set a german keyboard layout. # Figure out how much RAM the system has an set a variable # ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) -# Update system clock. -# timedatectl set-ntp true - # Load kernel modules # modprobe dm-crypt # modprobe dm-mod -# Switch to root -# sudo -i - # Detect and list the drives. lsblk -f From f797e1eed3b4926bd3b7c304c2f93d179af0a1f8 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:12:44 -0600 Subject: [PATCH 084/507] test removing modprobe commands --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 8f7859b..71020c0 100644 --- a/install.sh +++ b/install.sh @@ -1,6 +1,6 @@ # Load kernel modules -sudo modprobe dm-crypt -sudo modprobe dm-mod +# sudo modprobe dm-crypt +# sudo modprobe dm-mod # Figure out how much RAM the system has an set a variable # ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') From 13d37693cd615e6adf4429d9679842073e27c3e4 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 16:23:13 -0600 Subject: [PATCH 085/507] Remove unneeded commands --- install.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/install.sh b/install.sh index 71020c0..4c41da7 100644 --- a/install.sh +++ b/install.sh @@ -1,7 +1,3 @@ -# Load kernel modules -# sudo modprobe dm-crypt -# sudo modprobe dm-mod - # Figure out how much RAM the system has an set a variable # ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) From ad4a2d0dd5f0f9b7298c134e4375213934754741 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 22:24:09 +0000 Subject: [PATCH 086/507] Update install.sh --- install.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/install.sh b/install.sh index 4c41da7..e5b263a 100644 --- a/install.sh +++ b/install.sh @@ -81,6 +81,16 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-gnome.ni # Install sudo nixos-install +# Enter into installed OS +mount -o bind /dev /mnt/dev +mount -o bind /proc /mnt/proc +mount -o bind /sys /mnt/sys +chroot /mnt /nix/var/nix/profiles/system/activate +chroot /mnt /run/current-system/sw/bin/bash + +# Set password for user +passwd aaronh + # Removed downloaded script. rm install.sh From 1ed0bd2ff9dd400b4bbbfd055e6aba7d90d54e0a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 22:24:36 +0000 Subject: [PATCH 087/507] Update install.sh --- install.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index e5b263a..63220ce 100644 --- a/install.sh +++ b/install.sh @@ -91,10 +91,13 @@ chroot /mnt /run/current-system/sw/bin/bash # Set password for user passwd aaronh +# Exit chroot +exit + # Removed downloaded script. rm install.sh # Unmount all filesystems & reboot. -# umount -a -# reboot +umount -a +reboot From df5417adbec5f8b2f5fb149cd6a9fe3656199f24 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 22:35:10 +0000 Subject: [PATCH 088/507] Update install.sh --- install.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index 63220ce..2979a18 100644 --- a/install.sh +++ b/install.sh @@ -82,11 +82,11 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-gnome.ni sudo nixos-install # Enter into installed OS -mount -o bind /dev /mnt/dev -mount -o bind /proc /mnt/proc -mount -o bind /sys /mnt/sys -chroot /mnt /nix/var/nix/profiles/system/activate -chroot /mnt /run/current-system/sw/bin/bash +sudo mount -o bind /dev /mnt/dev +sudo mount -o bind /proc /mnt/proc +sudo mount -o bind /sys /mnt/sys +sudo chroot /mnt /nix/var/nix/profiles/system/activate +sudo chroot /mnt /run/current-system/sw/bin/bash # Set password for user passwd aaronh From 1b60b871cc9da962b4758cfb930ab1808dddec68 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 22:41:54 +0000 Subject: [PATCH 089/507] Update install.sh --- install.sh | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/install.sh b/install.sh index 2979a18..595243f 100644 --- a/install.sh +++ b/install.sh @@ -82,17 +82,11 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-gnome.ni sudo nixos-install # Enter into installed OS -sudo mount -o bind /dev /mnt/dev -sudo mount -o bind /proc /mnt/proc -sudo mount -o bind /sys /mnt/sys -sudo chroot /mnt /nix/var/nix/profiles/system/activate -sudo chroot /mnt /run/current-system/sw/bin/bash - -# Set password for user -passwd aaronh - -# Exit chroot -exit +# sudo mount -o bind /dev /mnt/dev +# sudo mount -o bind /proc /mnt/proc +# sudo mount -o bind /sys /mnt/sys +# sudo chroot /mnt /nix/var/nix/profiles/system/activate +# sudo chroot /mnt /run/current-system/sw/bin/bash # Removed downloaded script. rm install.sh From 0bd77e926ed0512c7f8e2eab32aa94368887966c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 23:07:10 +0000 Subject: [PATCH 090/507] Update config-gnome.nix --- config-gnome.nix | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/config-gnome.nix b/config-gnome.nix index bd6f866..6d12a03 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -13,17 +13,17 @@ systemd-boot.enable = true; }; - boot.initrd.luks.devices = { - crypt-root = { - device = "/dev/disk/by-label/root"; - preLVM = true; - }; - }; +# boot.initrd.luks.devices = { +# crypt-root = { +# device = "/dev/disk/by-label/root"; +# preLVM = true; +# }; +# }; - fileSystems."/" = - { device = "/dev/disk/by-label/root"; - fsType = "ext4"; - }; +# fileSystems."/" = +# { device = "/dev/disk/by-label/root"; +# fsType = "ext4"; +# }; # Name your host machine networking.hostName = "NixOS-VM"; From 98cda079bf2c689f6065ce621763f9499e0dde58 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 23:20:50 +0000 Subject: [PATCH 091/507] Update install.sh --- install.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/install.sh b/install.sh index 595243f..725f9ed 100644 --- a/install.sh +++ b/install.sh @@ -90,8 +90,3 @@ sudo nixos-install # Removed downloaded script. rm install.sh - -# Unmount all filesystems & reboot. -umount -a -reboot - From 1527601c3073443ba2a390c303a399ccf5db56ac Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 23:22:10 +0000 Subject: [PATCH 092/507] Update config-gnome.nix --- config-gnome.nix | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/config-gnome.nix b/config-gnome.nix index 6d12a03..2932a33 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -13,18 +13,6 @@ systemd-boot.enable = true; }; -# boot.initrd.luks.devices = { -# crypt-root = { -# device = "/dev/disk/by-label/root"; -# preLVM = true; -# }; -# }; - -# fileSystems."/" = -# { device = "/dev/disk/by-label/root"; -# fsType = "ext4"; -# }; - # Name your host machine networking.hostName = "NixOS-VM"; From 4709c2477b3ffa050a2080febb648a0a90e0b62c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 17:49:37 -0600 Subject: [PATCH 093/507] Update README about what the installer does --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 1343ba0..218140c 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ The following will happen: - Clear partition table for `/dev/***`. - Creates a GPT partition table for `/dev/***`. - Create a +512M EFI partiton at `/dev/***1`. -- Create a root partition at `/dev/***2`. +- Create a encryted root partition at `/dev/***2`. - Create a swap partition at `/dev/***3` with the choice to set it as the same size as the RAM. - Install systemd-boot. @@ -42,7 +42,6 @@ The following will happen: ## Roadmap -- [ ] Encrypt /root - [ ] # Possible Ideas From 695702d86e6cee0096cdff4031c2f24ee98cc65b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 6 May 2022 23:50:26 +0000 Subject: [PATCH 094/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 218140c..3e5c300 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ The following will happen: - Clear partition table for `/dev/***`. - Creates a GPT partition table for `/dev/***`. - Create a +512M EFI partiton at `/dev/***1`. -- Create a encryted root partition at `/dev/***2`. +- Create a encrypted root partition at `/dev/***2`. - Create a swap partition at `/dev/***3` with the choice to set it as the same size as the RAM. - Install systemd-boot. From ecd6180813f8c7fd0f89a6dfcd1dc1a0fd422271 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 14:42:21 -0600 Subject: [PATCH 095/507] first commit --- config-plasma.nix | 57 +++++++++++++++++++++++++++++++++++++++++++++++ install.sh | 17 ++++++++++---- 2 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 config-plasma.nix diff --git a/config-plasma.nix b/config-plasma.nix new file mode 100644 index 0000000..bbd6398 --- /dev/null +++ b/config-plasma.nix @@ -0,0 +1,57 @@ +{ config, pkgs, ... }: + +{ + # Import other configuration modules + # (hardware-configuration.nix is autogenerated upon installation) + # paths in nix expressions are always relative the file which defines them + imports = + [ + ./hardware-configuration.nix + ]; + + boot.loader = { + systemd-boot.enable = true; + }; + + # Name your host machine + networking.hostName = "NixOS-VM"; + + # Set your time zone. + time.timeZone = "America/Denver"; + + # Enter keyboard layout + services.xserver.layout = "us"; + + # Define user accounts + users.extraUsers = + { + aaronh = + { + home = "/home/aaronh"; + extraGroups = [ "wheel" "networkmanager" ]; + isNormalUser = true; + }; + }; + + # Install some packages + environment.systemPackages = + with pkgs; + [ + thunderbird + firefox + fish + tilix + ]; + + # Enable the OpenSSH daemon + services.openssh.enable = true; + + # Plasma + services.xserver.enable = true; + services.xserver.desktopManager.plasma5.enable = true; + + # System + system.autoUpgrade.enable = true; + system.autoUpgrade.allowReboot = true; + +} diff --git a/install.sh b/install.sh index 725f9ed..48417af 100644 --- a/install.sh +++ b/install.sh @@ -60,17 +60,26 @@ sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName sudo cryptsetup luksOpen $rootName crypt-root sudo mkfs.fat -F32 -n EFI $efiName # EFI partition -sudo mkfs.ext4 -L root /dev/mapper/crypt-root # / partition +mkfs.btrfs -L root /dev/mapper/crypt-root # /root partition sudo mkswap -L swap $swapName # swap partition # 0. Mount the filesystems. sudo mount /dev/disk/by-label/root /mnt sudo swapon $swapName -# 1. Create directory to mount EFI partition. -sudo mkdir /mnt/boot/ +# Create Subvolumes +btrfs subvolume create /mnt/@ +btrfs subvolume create /mnt/@home -# 2.Mount the EFI partition. +# 1. Create directory to mount partitions and subvolume +mkdir /mnt/boot/ +mkdir /mnt/home/ + +# 2. Mount the subvolumes. +mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ $rootName /mnt +mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home $rootName /mnt/home + +# 3. Mount the EFI partition. sudo mount $efiName /mnt/boot # Generate Nix configuration From 9c5496e43279c1d8ee6b1b9917f04cfe7677220f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 14:46:40 -0600 Subject: [PATCH 096/507] fix permission issue --- install.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/install.sh b/install.sh index 48417af..1341a87 100644 --- a/install.sh +++ b/install.sh @@ -60,7 +60,7 @@ sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName sudo cryptsetup luksOpen $rootName crypt-root sudo mkfs.fat -F32 -n EFI $efiName # EFI partition -mkfs.btrfs -L root /dev/mapper/crypt-root # /root partition +sudo mkfs.btrfs -L root /dev/mapper/crypt-root # /root partition sudo mkswap -L swap $swapName # swap partition # 0. Mount the filesystems. @@ -68,16 +68,16 @@ sudo mount /dev/disk/by-label/root /mnt sudo swapon $swapName # Create Subvolumes -btrfs subvolume create /mnt/@ -btrfs subvolume create /mnt/@home +sudo btrfs subvolume create /mnt/@ +sudo btrfs subvolume create /mnt/@home # 1. Create directory to mount partitions and subvolume -mkdir /mnt/boot/ -mkdir /mnt/home/ +sudo mkdir /mnt/boot/ +sudo mkdir /mnt/home/ # 2. Mount the subvolumes. -mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ $rootName /mnt -mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home $rootName /mnt/home +sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ $rootName /mnt +sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home $rootName /mnt/home # 3. Mount the EFI partition. sudo mount $efiName /mnt/boot From a492cb0234925bb4552048c9526c44e04712feb4 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 21:02:01 +0000 Subject: [PATCH 097/507] Update install.sh --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 1341a87..7fcf81f 100644 --- a/install.sh +++ b/install.sh @@ -69,15 +69,15 @@ sudo swapon $swapName # Create Subvolumes sudo btrfs subvolume create /mnt/@ -sudo btrfs subvolume create /mnt/@home +# sudo btrfs subvolume create /mnt/@home # 1. Create directory to mount partitions and subvolume sudo mkdir /mnt/boot/ -sudo mkdir /mnt/home/ +# sudo mkdir /mnt/home/ # 2. Mount the subvolumes. sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ $rootName /mnt -sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home $rootName /mnt/home +# sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home $rootName /mnt/home # 3. Mount the EFI partition. sudo mount $efiName /mnt/boot From 39d79e0510dc5867c38f882d42264e0070bd1df6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 21:02:21 +0000 Subject: [PATCH 098/507] Update config-plasma.nix --- config-plasma.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/config-plasma.nix b/config-plasma.nix index bbd6398..53ecd5f 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -13,6 +13,19 @@ systemd-boot.enable = true; }; + { + fileSystems."/" = + { device = "/dev/disk/by-label/root" ; + fsType = "btrfs"; + options = [ "subvol=nixos" "compress=zstd" "autodefrag" "noatime" ]; + }; + + boot.initrd.luks.devices."crypt-root" = { + device = "/dev/disk/by-label/root" ; + preLVM = true; + }; + } + # Name your host machine networking.hostName = "NixOS-VM"; From 9005ce240dd8e20e4442f20d74cf5eb13683331b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 21:11:31 +0000 Subject: [PATCH 099/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 7fcf81f..089bfbd 100644 --- a/install.sh +++ b/install.sh @@ -85,7 +85,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-gnome.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From 4a02d4b1e6bf28a72fb05bd49bef3c60e2a7b798 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 21:15:07 +0000 Subject: [PATCH 100/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 089bfbd..2245aee 100644 --- a/install.sh +++ b/install.sh @@ -85,7 +85,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From 3d5b28b79f1f25178ad4ba9497b158d703392583 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 21:24:01 +0000 Subject: [PATCH 101/507] Update config-plasma.nix --- config-plasma.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index 53ecd5f..fb28741 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -13,7 +13,6 @@ systemd-boot.enable = true; }; - { fileSystems."/" = { device = "/dev/disk/by-label/root" ; fsType = "btrfs"; @@ -24,7 +23,6 @@ device = "/dev/disk/by-label/root" ; preLVM = true; }; - } # Name your host machine networking.hostName = "NixOS-VM"; From e23a790434eafb2b5a5c03e2a95d44f0b13740e8 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 21:25:02 +0000 Subject: [PATCH 102/507] Update config-plasma.nix --- config-plasma.nix | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index fb28741..91cbe84 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -13,16 +13,10 @@ systemd-boot.enable = true; }; - fileSystems."/" = - { device = "/dev/disk/by-label/root" ; - fsType = "btrfs"; - options = [ "subvol=nixos" "compress=zstd" "autodefrag" "noatime" ]; - }; - - boot.initrd.luks.devices."crypt-root" = { - device = "/dev/disk/by-label/root" ; - preLVM = true; - }; + boot.initrd.luks.devices."crypt-root" = { + device = "/dev/disk/by-label/root" ; + preLVM = true; + }; # Name your host machine networking.hostName = "NixOS-VM"; From 78823f9515ea5f10725c774560e2ccf072274216 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 21:28:20 +0000 Subject: [PATCH 103/507] Update config-plasma.nix --- config-plasma.nix | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index 91cbe84..8a4ba3f 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -12,12 +12,7 @@ boot.loader = { systemd-boot.enable = true; }; - - boot.initrd.luks.devices."crypt-root" = { - device = "/dev/disk/by-label/root" ; - preLVM = true; - }; - + # Name your host machine networking.hostName = "NixOS-VM"; From c4e8d5c46d2ab669f74e3889e483ea27d65993e3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 21:51:47 +0000 Subject: [PATCH 104/507] Update install.sh --- install.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 2245aee..b15aaa5 100644 --- a/install.sh +++ b/install.sh @@ -69,15 +69,18 @@ sudo swapon $swapName # Create Subvolumes sudo btrfs subvolume create /mnt/@ -# sudo btrfs subvolume create /mnt/@home +sudo btrfs subvolume create /mnt/@home + +# Unmount root +sudo umount /mnt # 1. Create directory to mount partitions and subvolume sudo mkdir /mnt/boot/ -# sudo mkdir /mnt/home/ +sudo mkdir /mnt/home/ # 2. Mount the subvolumes. sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ $rootName /mnt -# sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home $rootName /mnt/home +sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home $rootName /mnt/home # 3. Mount the EFI partition. sudo mount $efiName /mnt/boot From c1b8d87a13dd1ec18fac376419d0519f5299fcb9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 21:59:00 +0000 Subject: [PATCH 105/507] Update install.sh --- install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index b15aaa5..ad65c9b 100644 --- a/install.sh +++ b/install.sh @@ -79,8 +79,9 @@ sudo mkdir /mnt/boot/ sudo mkdir /mnt/home/ # 2. Mount the subvolumes. -sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ $rootName /mnt -sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home $rootName /mnt/home +sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/disk/by-label/root /mnt +# sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ $rootName /mnt +# sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home $rootName /mnt/home # 3. Mount the EFI partition. sudo mount $efiName /mnt/boot From 008cf4e0997adc0945747d483fa850330804868a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 22:15:19 +0000 Subject: [PATCH 106/507] Update install.sh --- install.sh | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/install.sh b/install.sh index ad65c9b..d7a022c 100644 --- a/install.sh +++ b/install.sh @@ -21,8 +21,6 @@ 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 "-$ramTotal"G # Set Max RAM as last sector. -# echo -4096M # Set -4096 as last sector. echo n # Create new partition (for swap). echo # Set default partition number. echo # Set default first sector. @@ -30,9 +28,6 @@ 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 t # Change partition type. -echo 3 # Pick third partition. -echo 19 # Change third partition to Linux swap. echo w # write changes. ) | sudo fdisk $driveName -w always -W always @@ -49,9 +44,8 @@ echo "" echo "Which is the root partition?" read rootName -echo "" -echo "Which is the swap partition?" -read swapName +# Create EFI partition +sudo mkfs.fat -F32 -n EFI $efiName # Encrypt the root partition sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName @@ -59,13 +53,18 @@ sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName # Open the encrypted root partition sudo cryptsetup luksOpen $rootName crypt-root -sudo mkfs.fat -F32 -n EFI $efiName # EFI partition -sudo mkfs.btrfs -L root /dev/mapper/crypt-root # /root partition -sudo mkswap -L swap $swapName # swap partition +sudo pvcreate /dev/mapper/crypt-root +sudo vgcreate lvm /dev/mapper/crypt-root + +sudo lvcreate --size $ramTotal --name swap lvm +sudo lvcreate --extents 100%FREE --name root lvm + +sudo mkswap /dev/lvm/swap # swap partition +sudo mkfs.btrfs /dev/lvm/root # /root partition # 0. Mount the filesystems. -sudo mount /dev/disk/by-label/root /mnt -sudo swapon $swapName +sudo swapon /dev/lvm/swap +sudo mount /dev/lvm/root /mnt # Create Subvolumes sudo btrfs subvolume create /mnt/@ @@ -74,16 +73,14 @@ sudo btrfs subvolume create /mnt/@home # Unmount root sudo umount /mnt -# 1. Create directory to mount partitions and subvolume -sudo mkdir /mnt/boot/ +# Mount the subvolumes. +sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt + sudo mkdir /mnt/home/ +sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home /dev/lvm/root /mnt/home -# 2. Mount the subvolumes. -sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/disk/by-label/root /mnt -# sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ $rootName /mnt -# sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home $rootName /mnt/home - -# 3. Mount the EFI partition. +# Mount the EFI partition. +sudo mkdir /mnt/boot/ sudo mount $efiName /mnt/boot # Generate Nix configuration From a7190c7e0d5db8c15f2c0689557a3151f9d5e66d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 22:27:16 +0000 Subject: [PATCH 107/507] Update config-plasma.nix --- config-plasma.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/config-plasma.nix b/config-plasma.nix index 8a4ba3f..9fd1a1c 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -13,6 +13,18 @@ systemd-boot.enable = true; }; + fileSystems."/" = + { device = "/dev/lvm/root"; + fsType = "btrfs"; + options = [ "subvol=root" "compress=zstd" "noatime" ]; + }; + + fileSystems."/home" = + { device = "/dev/lvm/root"; + fsType = "btrfs"; + options = [ "subvol=home" "compress=zstd" "noatime" ]; + }; + # Name your host machine networking.hostName = "NixOS-VM"; From ba1d1ed501f859eb582b70a441ec132b9f7fede7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 22:30:50 +0000 Subject: [PATCH 108/507] Update config-plasma.nix --- config-plasma.nix | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index 9fd1a1c..bbd6398 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -12,18 +12,6 @@ boot.loader = { systemd-boot.enable = true; }; - - fileSystems."/" = - { device = "/dev/lvm/root"; - fsType = "btrfs"; - options = [ "subvol=root" "compress=zstd" "noatime" ]; - }; - - fileSystems."/home" = - { device = "/dev/lvm/root"; - fsType = "btrfs"; - options = [ "subvol=home" "compress=zstd" "noatime" ]; - }; # Name your host machine networking.hostName = "NixOS-VM"; From fddf4aeb5309f3f6c1dbbb4f998cfd7b33d0e8b7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 23:49:36 +0000 Subject: [PATCH 109/507] Update config-plasma.nix --- config-plasma.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/config-plasma.nix b/config-plasma.nix index bbd6398..1f16356 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -13,6 +13,15 @@ systemd-boot.enable = true; }; + + boot.initrd.luks.devices = [ + { + name = "root"; + device = "/dev/disk/by-label/root"; + preLVM = true; + allowDiscards = true; + } + ]; # Name your host machine networking.hostName = "NixOS-VM"; From 484b513f598a6f7bbe026d2337853e8b9f24b80a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 7 May 2022 23:59:12 +0000 Subject: [PATCH 110/507] Update config-plasma.nix --- config-plasma.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index 1f16356..d7b728c 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -13,15 +13,13 @@ systemd-boot.enable = true; }; - - boot.initrd.luks.devices = [ - { + boot.initrd.luks.devices = { name = "root"; device = "/dev/disk/by-label/root"; preLVM = true; allowDiscards = true; } - ]; + # Name your host machine networking.hostName = "NixOS-VM"; From 14afed7093b617a6d538381f38e33dbc1ddca1a1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 00:01:18 +0000 Subject: [PATCH 111/507] Update config-plasma.nix --- config-plasma.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-plasma.nix b/config-plasma.nix index d7b728c..037a92e 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -18,7 +18,7 @@ device = "/dev/disk/by-label/root"; preLVM = true; allowDiscards = true; - } + }; # Name your host machine networking.hostName = "NixOS-VM"; From 0e62a183a10cb038bb798ee77def1d9d697759fc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 00:02:27 +0000 Subject: [PATCH 112/507] Update config-plasma.nix --- config-plasma.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/config-plasma.nix b/config-plasma.nix index 037a92e..e5afc1a 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -17,7 +17,6 @@ name = "root"; device = "/dev/disk/by-label/root"; preLVM = true; - allowDiscards = true; }; # Name your host machine From 553d46da6eb677222bbab9577a039599f7652f40 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 00:09:42 +0000 Subject: [PATCH 113/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index d7a022c..e4be7c5 100644 --- a/install.sh +++ b/install.sh @@ -59,8 +59,8 @@ sudo vgcreate lvm /dev/mapper/crypt-root sudo lvcreate --size $ramTotal --name swap lvm sudo lvcreate --extents 100%FREE --name root lvm -sudo mkswap /dev/lvm/swap # swap partition -sudo mkfs.btrfs /dev/lvm/root # /root partition +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 From 2a3beb67389ac6e837160aeda66d8969c0df6703 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 00:11:41 +0000 Subject: [PATCH 114/507] Update config-plasma.nix --- config-plasma.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index e5afc1a..ca33d7c 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -14,8 +14,8 @@ }; boot.initrd.luks.devices = { - name = "root"; - device = "/dev/disk/by-label/root"; + name = "dm-name-crypt-root"; + device = "/dev/disk/by-id/dm-name-crypt-root"; preLVM = true; }; From 968b6461f2b7b5461829b52975a5a5ae6f84d6bf Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 13:48:58 +0000 Subject: [PATCH 115/507] Update install.sh --- install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install.sh b/install.sh index e4be7c5..2752598 100644 --- a/install.sh +++ b/install.sh @@ -59,6 +59,8 @@ sudo vgcreate lvm /dev/mapper/crypt-root sudo lvcreate --size $ramTotal --name swap lvm sudo lvcreate --extents 100%FREE --name root lvm +sudo cryptsetup config $rootName --label root + sudo mkswap /dev/lvm/swap # swap partition sudo mkfs.btrfs -L root /dev/lvm/root # /root partition From 5d3894fbf1060944323d9e43bc8a407f3d48f61b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 13:49:25 +0000 Subject: [PATCH 116/507] Update config-plasma.nix --- config-plasma.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index ca33d7c..e5afc1a 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -14,8 +14,8 @@ }; boot.initrd.luks.devices = { - name = "dm-name-crypt-root"; - device = "/dev/disk/by-id/dm-name-crypt-root"; + name = "root"; + device = "/dev/disk/by-label/root"; preLVM = true; }; From 243d03e809f70325cc617696b2a008b082329fbb Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 13:50:27 +0000 Subject: [PATCH 117/507] Delete config-pantheon.nix --- config-pantheon.nix | 53 --------------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 config-pantheon.nix diff --git a/config-pantheon.nix b/config-pantheon.nix deleted file mode 100644 index 0f86f02..0000000 --- a/config-pantheon.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ config, pkgs, ... }: - -{ - # Import other configuration modules - # (hardware-configuration.nix is autogenerated upon installation) - # paths in nix expressions are always relative the file which defines them - imports = - [ - ./hardware-configuration.nix - ]; - - boot.loader = { - systemd-boot.enable = true; - }; - - # Name your host machine - networking.hostName = "NixOS-VM"; - - # Set your time zone. - time.timeZone = "America/Denver"; - - # Enter keyboard layout - services.xserver.layout = "us"; - - # Define user accounts - users.extraUsers = - { - aaronh = - { - home = "/home/aaronh"; - extraGroups = [ "wheel" "networkmanager" ]; - isNormalUser = true; - }; - }; - - # Install some packages - environment.systemPackages = - with pkgs; - [ - thunderbird - firefox - fish - ]; - - # Enable the OpenSSH daemon - services.openssh.enable = true; - - # Pantheon - services.xserver.enable = true; - services.xserver.desktopManager.pantheon.enable = true; - - -} From d73eafd7cde9a9fcbad1fa2bd9ad378d19370d5a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 14:10:32 +0000 Subject: [PATCH 118/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 2752598..57529fc 100644 --- a/install.sh +++ b/install.sh @@ -59,7 +59,7 @@ sudo vgcreate lvm /dev/mapper/crypt-root sudo lvcreate --size $ramTotal --name swap lvm sudo lvcreate --extents 100%FREE --name root lvm -sudo cryptsetup config $rootName --label root +sudo cryptsetup config $rootName --label luks sudo mkswap /dev/lvm/swap # swap partition sudo mkfs.btrfs -L root /dev/lvm/root # /root partition From f5c243c788f19c7e766e30d4a08ba7278b8ed8c5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 14:16:19 +0000 Subject: [PATCH 119/507] Update config-plasma.nix --- config-plasma.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index e5afc1a..7651bce 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -14,10 +14,11 @@ }; boot.initrd.luks.devices = { - name = "root"; - device = "/dev/disk/by-label/root"; - preLVM = true; - }; + crypt-root = { + device = "/dev/disk/by-label/luks"; + preLVM = true; + }; + }; # Name your host machine networking.hostName = "NixOS-VM"; From 09fc5efb9a6d5dea067852262a297be128feb43b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 14:44:36 +0000 Subject: [PATCH 120/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3e5c300..2cf50eb 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ https://nixos.org/manual/nixos/stable/index.html#sec-installation-booting-networ ## Start the installer ``` -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/install.sh > install.sh; sh install.sh +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/install.sh > install.sh; sh install.sh ``` The following will happen: From 43ff67addb4f3b365ac0eb0001d91f6c0b7c30c6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 15:53:24 +0000 Subject: [PATCH 121/507] Update config-plasma.nix --- config-plasma.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config-plasma.nix b/config-plasma.nix index 7651bce..25a8df4 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -23,6 +23,8 @@ # Name your host machine networking.hostName = "NixOS-VM"; + networking.networkmanager.enable = true; + # Set your time zone. time.timeZone = "America/Denver"; From a19e36f5b940844c4126ba803e870bf69effa6c6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 15:58:12 +0000 Subject: [PATCH 122/507] Update config-plasma.nix --- config-plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config-plasma.nix b/config-plasma.nix index 25a8df4..5f8fbdf 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -46,6 +46,7 @@ environment.systemPackages = with pkgs; [ + libsForQt5.plasma-nm thunderbird firefox fish From 2ed295f2c419d28a8928e4850f45e18d3d36d68d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 17:10:44 +0000 Subject: [PATCH 123/507] Update install.sh --- install.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index 57529fc..7960be1 100644 --- a/install.sh +++ b/install.sh @@ -94,11 +94,19 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/conf sudo nixos-install # Enter into installed OS -# sudo mount -o bind /dev /mnt/dev -# sudo mount -o bind /proc /mnt/proc -# sudo mount -o bind /sys /mnt/sys -# sudo chroot /mnt /nix/var/nix/profiles/system/activate -# sudo chroot /mnt /run/current-system/sw/bin/bash +sudo mount -o bind /dev /mnt/dev +sudo mount -o bind /proc /mnt/proc +sudo mount -o bind /sys /mnt/sys +sudo chroot /mnt /nix/var/nix/profiles/system/activate +sudo chroot /mnt /run/current-system/sw/bin/bash + +# Set user password +echo "----------" +echo "" +echo "Which is the username?" +read userName + +sudo passwd $userName # Removed downloaded script. rm install.sh From fa3172128f6980ebb6a56618ab557cb318bcb9a3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 17:22:18 +0000 Subject: [PATCH 124/507] Update config-plasma.nix --- config-plasma.nix | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index 5f8fbdf..c9bb2c6 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -31,6 +31,15 @@ # Enter keyboard layout services.xserver.layout = "us"; + # Enable flatpak + services.flatpak.enable = true; + + # Enable PackageKit for Discover + services.packagekit.enable = true; + + # Enable fwupd + services.fwupd.enable = true; + # Define user accounts users.extraUsers = { @@ -46,10 +55,12 @@ environment.systemPackages = with pkgs; [ - libsForQt5.plasma-nm - thunderbird firefox fish + flatpak + libsForQt5.plasma-nm + libsForQt5.discover + thunderbird tilix ]; From 677a22883607b23e6561ca0f9bffd715bf0ead8c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 17:31:08 +0000 Subject: [PATCH 125/507] Update install.sh --- install.sh | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/install.sh b/install.sh index 7960be1..97d0fb0 100644 --- a/install.sh +++ b/install.sh @@ -93,20 +93,18 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/conf # Install sudo nixos-install +# Start Setup section +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mnt/setup.sh + # Enter into installed OS sudo mount -o bind /dev /mnt/dev sudo mount -o bind /proc /mnt/proc sudo mount -o bind /sys /mnt/sys sudo chroot /mnt /nix/var/nix/profiles/system/activate -sudo chroot /mnt /run/current-system/sw/bin/bash +sudo chroot /mnt /run/current-system/sw/bin/bash setup.sh -# Set user password -echo "----------" -echo "" -echo "Which is the username?" -read userName - -sudo passwd $userName - -# Removed downloaded script. +# Removed install script. rm install.sh + +# Remove setup script +rm setup.sh From 792c649dda2deb6d16147ce3f35ad146a7d98288 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 17:31:09 +0000 Subject: [PATCH 126/507] Add new file --- setup.sh | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 setup.sh diff --git a/setup.sh b/setup.sh new file mode 100644 index 0000000..d33731b --- /dev/null +++ b/setup.sh @@ -0,0 +1,9 @@ +# Set user password +echo "----------" +echo "" +echo "Which is the username?" +read userName + +sudo passwd $userName + +exit From 30104b0cba4c53168943181ea048a219af2fc2dc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 17:39:14 +0000 Subject: [PATCH 127/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 97d0fb0..a02468b 100644 --- a/install.sh +++ b/install.sh @@ -94,7 +94,7 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/conf sudo nixos-install # Start Setup section -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mnt/setup.sh +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > setup.sh # Enter into installed OS sudo mount -o bind /dev /mnt/dev From 91346ea31a41979c8f370a6d57c0e18de85704c7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 17:39:26 +0000 Subject: [PATCH 128/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index a02468b..10ddebb 100644 --- a/install.sh +++ b/install.sh @@ -94,7 +94,7 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/conf sudo nixos-install # Start Setup section -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > setup.sh +sudo curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mntsetup.sh # Enter into installed OS sudo mount -o bind /dev /mnt/dev From d1960d36ac0d23b05a3d385c7ed7730a04c4baba Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 17:42:24 +0000 Subject: [PATCH 129/507] Update install.sh --- install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 10ddebb..ca15c6e 100644 --- a/install.sh +++ b/install.sh @@ -94,7 +94,8 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/conf sudo nixos-install # Start Setup section -sudo curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mntsetup.sh +sudo -i +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mntsetup.sh # Enter into installed OS sudo mount -o bind /dev /mnt/dev From 4b779638a2d86f75e0fd012866b3f71241d64c3d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 17:47:01 +0000 Subject: [PATCH 130/507] Update install.sh --- install.sh | 58 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/install.sh b/install.sh index ca15c6e..e056ed9 100644 --- a/install.sh +++ b/install.sh @@ -31,6 +31,9 @@ echo 1 # Change first partition to EFI system. echo w # write changes. ) | sudo fdisk $driveName -w always -W always +# Move to root +sudo -i + # List the new partitions. lsblk -f @@ -45,64 +48,63 @@ echo "Which is the root partition?" read rootName # Create EFI partition -sudo mkfs.fat -F32 -n EFI $efiName +mkfs.fat -F32 -n EFI $efiName # Encrypt the root partition -sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName +cryptsetup luksFormat -v -s 512 -h sha512 $rootName # Open the encrypted root partition -sudo cryptsetup luksOpen $rootName crypt-root +cryptsetup luksOpen $rootName crypt-root -sudo pvcreate /dev/mapper/crypt-root -sudo vgcreate lvm /dev/mapper/crypt-root +pvcreate /dev/mapper/crypt-root +vgcreate lvm /dev/mapper/crypt-root -sudo lvcreate --size $ramTotal --name swap lvm -sudo lvcreate --extents 100%FREE --name root lvm +lvcreate --size $ramTotal --name swap lvm +lvcreate --extents 100%FREE --name root lvm -sudo cryptsetup config $rootName --label luks +cryptsetup config $rootName --label luks -sudo mkswap /dev/lvm/swap # swap partition -sudo mkfs.btrfs -L root /dev/lvm/root # /root partition +mkswap /dev/lvm/swap # swap partition +mkfs.btrfs -L root /dev/lvm/root # /root partition # 0. Mount the filesystems. -sudo swapon /dev/lvm/swap -sudo mount /dev/lvm/root /mnt +swapon /dev/lvm/swap +mount /dev/lvm/root /mnt # Create Subvolumes -sudo btrfs subvolume create /mnt/@ -sudo btrfs subvolume create /mnt/@home +btrfs subvolume create /mnt/@ +btrfs subvolume create /mnt/@home # Unmount root -sudo umount /mnt +umount /mnt # Mount the subvolumes. -sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt +mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt -sudo mkdir /mnt/home/ -sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home /dev/lvm/root /mnt/home +mkdir /mnt/home/ +mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home /dev/lvm/root /mnt/home # Mount the EFI partition. -sudo mkdir /mnt/boot/ -sudo mount $efiName /mnt/boot +mkdir /mnt/boot/ +mount $efiName /mnt/boot # Generate Nix configuration -sudo nixos-generate-config --root /mnt +nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install -sudo nixos-install +nixos-install # Start Setup section -sudo -i curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mntsetup.sh # Enter into installed OS -sudo mount -o bind /dev /mnt/dev -sudo mount -o bind /proc /mnt/proc -sudo mount -o bind /sys /mnt/sys -sudo chroot /mnt /nix/var/nix/profiles/system/activate -sudo chroot /mnt /run/current-system/sw/bin/bash setup.sh +mount -o bind /dev /mnt/dev +mount -o bind /proc /mnt/proc +mount -o bind /sys /mnt/sys +chroot /mnt /nix/var/nix/profiles/system/activate +chroot /mnt /run/current-system/sw/bin/bash setup.sh # Removed install script. rm install.sh From d1c89984bd1b22def3c674240cf73be1f5277e40 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 17:49:24 +0000 Subject: [PATCH 131/507] Revert "Update install.sh" This reverts commit 4b779638a2d86f75e0fd012866b3f71241d64c3d --- install.sh | 58 ++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/install.sh b/install.sh index e056ed9..ca15c6e 100644 --- a/install.sh +++ b/install.sh @@ -31,9 +31,6 @@ echo 1 # Change first partition to EFI system. echo w # write changes. ) | sudo fdisk $driveName -w always -W always -# Move to root -sudo -i - # List the new partitions. lsblk -f @@ -48,63 +45,64 @@ echo "Which is the root partition?" read rootName # Create EFI partition -mkfs.fat -F32 -n EFI $efiName +sudo mkfs.fat -F32 -n EFI $efiName # Encrypt the root partition -cryptsetup luksFormat -v -s 512 -h sha512 $rootName +sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName # Open the encrypted root partition -cryptsetup luksOpen $rootName crypt-root +sudo cryptsetup luksOpen $rootName crypt-root -pvcreate /dev/mapper/crypt-root -vgcreate lvm /dev/mapper/crypt-root +sudo pvcreate /dev/mapper/crypt-root +sudo vgcreate lvm /dev/mapper/crypt-root -lvcreate --size $ramTotal --name swap lvm -lvcreate --extents 100%FREE --name root lvm +sudo lvcreate --size $ramTotal --name swap lvm +sudo lvcreate --extents 100%FREE --name root lvm -cryptsetup config $rootName --label luks +sudo cryptsetup config $rootName --label luks -mkswap /dev/lvm/swap # swap partition -mkfs.btrfs -L root /dev/lvm/root # /root partition +sudo mkswap /dev/lvm/swap # swap partition +sudo mkfs.btrfs -L root /dev/lvm/root # /root partition # 0. Mount the filesystems. -swapon /dev/lvm/swap -mount /dev/lvm/root /mnt +sudo swapon /dev/lvm/swap +sudo mount /dev/lvm/root /mnt # Create Subvolumes -btrfs subvolume create /mnt/@ -btrfs subvolume create /mnt/@home +sudo btrfs subvolume create /mnt/@ +sudo btrfs subvolume create /mnt/@home # Unmount root -umount /mnt +sudo umount /mnt # Mount the subvolumes. -mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt +sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt -mkdir /mnt/home/ -mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home /dev/lvm/root /mnt/home +sudo mkdir /mnt/home/ +sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home /dev/lvm/root /mnt/home # Mount the EFI partition. -mkdir /mnt/boot/ -mount $efiName /mnt/boot +sudo mkdir /mnt/boot/ +sudo mount $efiName /mnt/boot # Generate Nix configuration -nixos-generate-config --root /mnt +sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install -nixos-install +sudo nixos-install # Start Setup section +sudo -i curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mntsetup.sh # Enter into installed OS -mount -o bind /dev /mnt/dev -mount -o bind /proc /mnt/proc -mount -o bind /sys /mnt/sys -chroot /mnt /nix/var/nix/profiles/system/activate -chroot /mnt /run/current-system/sw/bin/bash setup.sh +sudo mount -o bind /dev /mnt/dev +sudo mount -o bind /proc /mnt/proc +sudo mount -o bind /sys /mnt/sys +sudo chroot /mnt /nix/var/nix/profiles/system/activate +sudo chroot /mnt /run/current-system/sw/bin/bash setup.sh # Removed install script. rm install.sh From 43513e266e8c3f200923e9e1f24baafc870ad5ad Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 18:03:08 +0000 Subject: [PATCH 132/507] Update config-plasma.nix --- config-plasma.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/config-plasma.nix b/config-plasma.nix index c9bb2c6..8eae37e 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -59,6 +59,7 @@ fish flatpak libsForQt5.plasma-nm + libsForQt5.plasma-pa libsForQt5.discover thunderbird tilix @@ -71,6 +72,15 @@ services.xserver.enable = true; services.xserver.desktopManager.plasma5.enable = true; + # Enable Pipewire + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + # System system.autoUpgrade.enable = true; system.autoUpgrade.allowReboot = true; From 1f9925821d60e57e50a6f81d30d03c8a90785ec2 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 20:06:42 +0000 Subject: [PATCH 133/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index ca15c6e..b22337d 100644 --- a/install.sh +++ b/install.sh @@ -56,7 +56,7 @@ sudo cryptsetup luksOpen $rootName crypt-root sudo pvcreate /dev/mapper/crypt-root sudo vgcreate lvm /dev/mapper/crypt-root -sudo lvcreate --size $ramTotal --name swap lvm +sudo lvcreate --size "$ramTotal"GB --name swap lvm sudo lvcreate --extents 100%FREE --name root lvm sudo cryptsetup config $rootName --label luks From 15c1d6bc1c619d4603280d5666f73674b8a124d6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 20:08:31 +0000 Subject: [PATCH 134/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index b22337d..9eb30f7 100644 --- a/install.sh +++ b/install.sh @@ -56,7 +56,7 @@ sudo cryptsetup luksOpen $rootName crypt-root sudo pvcreate /dev/mapper/crypt-root sudo vgcreate lvm /dev/mapper/crypt-root -sudo lvcreate --size "$ramTotal"GB --name swap lvm +sudo lvcreate --size "$ramTotal"G --name swap lvm sudo lvcreate --extents 100%FREE --name root lvm sudo cryptsetup config $rootName --label luks From c7e70d1c06071048fa628f7ca8abd4415d0bee4d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 20:41:57 +0000 Subject: [PATCH 135/507] Update config-plasma.nix --- config-plasma.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config-plasma.nix b/config-plasma.nix index 8eae37e..5490ffc 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -61,6 +61,7 @@ libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.discover + libsForQt5.sddm thunderbird tilix ]; @@ -70,6 +71,7 @@ # Plasma services.xserver.enable = true; + services.xserver.displayManager.sddm.enable = true; services.xserver.desktopManager.plasma5.enable = true; # Enable Pipewire From 450ec66f9412ad96d3a70cde761ff22327f5f44b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 21:30:27 +0000 Subject: [PATCH 136/507] Update config-plasma.nix --- config-plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config-plasma.nix b/config-plasma.nix index 5490ffc..6c9e7b3 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -58,6 +58,7 @@ firefox fish flatpak + git libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.discover From 6d3ac07511b848c847083ab6351f83f4c1dbe182 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 May 2022 21:32:08 +0000 Subject: [PATCH 137/507] Update README.md --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2cf50eb..638a9ca 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ This installer does the following at it's core: - Partition the drive of your choice - Installs a base of NixOS +- Installs Plasma +- Installs needed packages Tested on the following drives: - SATA @@ -32,8 +34,9 @@ The following will happen: - Clear partition table for `/dev/***`. - Creates a GPT partition table for `/dev/***`. - Create a +512M EFI partiton at `/dev/***1`. -- Create a encrypted root partition at `/dev/***2`. -- Create a swap partition at `/dev/***3` with the choice to set it as the same size as the RAM. +- Create a encrypted LVM at `/dev/***2`. +- Create a swap partition in the LVM with the choice to set it as the same size as the RAM. +- Create a root partition in the LVM. - Install systemd-boot. ## After Installation ... From 90d36e04c8ba6c1087cfd1448a92cb3591340878 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 11:48:48 +0000 Subject: [PATCH 138/507] Delete configuration.nix --- configuration.nix | 177 ---------------------------------------------- 1 file changed, 177 deletions(-) delete mode 100644 configuration.nix diff --git a/configuration.nix b/configuration.nix deleted file mode 100644 index f81b99b..0000000 --- a/configuration.nix +++ /dev/null @@ -1,177 +0,0 @@ -{ config, pkgs, ... }: - -{ - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ]; - - boot = { - blacklistedKernelModules = [ "snd_pcsp" ]; - kernelPackages = pkgs.linuxPackages_latest; - cleanTmpDir = true; - - loader = { - systemd-boot.enable = true; - efi.canTouchEfiVariables = true; - }; - - supportedFilesystems = [ - "exfat" - ]; - }; - - networking = { - firewall = { - enable = true; - allowedTCPPorts = []; - allowedUDPPorts = []; - }; - hostName = "aya"; - networkmanager.enable = true; - - }; - - console = { - font = "Lat2-Terminus16"; - keyMap = "us"; - }; - - i18n = { - defaultLocale = "en_US.UTF-8"; - } - - services = { - openssh.enable = true; - ntp.enable = true; - nscd.enable = true; - } - xserver = { - videoDrivers = [ "nvidia" ]; - enable = true; - layout = "us"; - - xkbOptions = "compose:caps"; - xkbVariant = "dvp"; - - synaptics.enable = true; - - windowManager.xmonad.enable = true; - windowManager.xmonad.extraPackages = self: [ self.xmonad-contrib ]; - windowManager.xmonad.haskellPackages = pkgs.haskell.packages.ghc822; - displayManager.defaultSession = "none+xmonad"; - - displayManager.lightdm = { - enable = true; - extraSeatDefaults = '' - greeter-show-manual-login=true - greeter-hide-users=true - allow-guest=false - ''; - }; - - displayManager.sessionCommands = '' - ${pkgs.xlibs.xsetroot}/bin/xsetroot -cursor_name left_ptr - ${pkgs.xscreensaver}/bin/xscreensaver -no-splash & - ''; - }; - }; - - users.extraGroups.vboxusers.members = [ "shana" ]; - - programs.ssh.startAgent = true; - programs.bash.enableCompletion = true; - - # Don't blind me - systemd.services.redshift.restartIfChanged = false; - - time.timeZone = "America/Denver"; - - # Users - users.users.aaronh = { - createHome = true; - home = "/home/aaronh"; - description = "Aaron Honeycutt"; - extraGroups = [ "wheel" "audio" "video" "networkmanager" "docker" ]; - useDefaultShell = true; - isNormalUser = true; - }; - - nixpkgs.system = "x86_64-linux"; - nixpkgs.config = { - virtualbox.enableExtensionPack = true; - pulseaudio = true; - allowUnfree = true; - }; - - environment.systemPackages = with pkgs; - [ cacert - cloc - elfutils - file - firefox-devedition-bin - fish - git - glib - glxinfo - gnupg - gnutls - # haskellPackages.apply-refact - # haskellPackages.hasktags - # haskellPackages.hlint - htop - jq - mpv - mupdf - nano - networkmanager - nitrogen - nmap - openssl - p7zip - pavucontrol - # pythonPackages.youtube-dl - # rtorrent - rxvt_unicode - scrot - sxiv - unzip - wget - xlibs.xsetroot - xscreensaver - xsel - zip - ]; - - fonts = { - fontconfig.enable = true; - fontDir.enable = true; - enableGhostscriptFonts = true; - fonts = with pkgs; [ - corefonts - dejavu_fonts - inconsolata - source-han-sans-japanese - source-han-sans-korean - source-han-sans-simplified-chinese - source-han-sans-traditional-chinese - ubuntu_font_family - ]; - }; - - security.sudo.enable = true; - - nix = { - package = pkgs.nixUnstable; - trustedBinaryCaches = [ - "http://cache.nixos.org" - ]; - - binaryCaches = [ - "http://cache.nixos.org" - ]; - - gc.automatic = false; - maxJobs = pkgs.lib.mkForce 6; - }; -} From 9ec63cda84e3f994c35cc69226588a7986113d8f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 11:49:03 +0000 Subject: [PATCH 139/507] Delete config.nix --- config.nix | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 config.nix diff --git a/config.nix b/config.nix deleted file mode 100644 index 656af37..0000000 --- a/config.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ config, pkgs, ... }: - -{ - # Import other configuration modules - # (hardware-configuration.nix is autogenerated upon installation) - # paths in nix expressions are always relative the file which defines them - imports = - [ - ./hardware-configuration.nix - ]; - - boot.loader = { - systemd-boot.enable = true; - }; - - # Name your host machine - networking.hostName = "NixOS-VM"; - - # Set your time zone. - time.timeZone = "America/Denver"; - - # Enter keyboard layout - services.xserver.layout = "us"; - - # Define user accounts - users.extraUsers = - { - aaronh = - { - extraGroups = [ "wheel" "networkmanager" ]; - isNormalUser = true; - }; - }; - - # Install some packages - environment.systemPackages = - with pkgs; - [ - ddate - testdisk - fish - ]; - - # Enable the OpenSSH daemon - services.openssh.enable = true; - -} From 020d90f38f7e6a22074622b5b3dcc9da9475466a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 14:19:14 +0000 Subject: [PATCH 140/507] Update config-plasma.nix --- config-plasma.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config-plasma.nix b/config-plasma.nix index 6c9e7b3..bd8ea95 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -20,6 +20,9 @@ }; }; + # Enable 32 Bit libraries for applications like Steam + hardware.opengl.driSupport32Bit = true; + # Name your host machine networking.hostName = "NixOS-VM"; From 3c9f52d1491fbc82b09896db1d24f5806070a846 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 15:32:20 +0000 Subject: [PATCH 141/507] Delete config-pantheon.nix --- config-pantheon.nix | 53 --------------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 config-pantheon.nix diff --git a/config-pantheon.nix b/config-pantheon.nix deleted file mode 100644 index 0f86f02..0000000 --- a/config-pantheon.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ config, pkgs, ... }: - -{ - # Import other configuration modules - # (hardware-configuration.nix is autogenerated upon installation) - # paths in nix expressions are always relative the file which defines them - imports = - [ - ./hardware-configuration.nix - ]; - - boot.loader = { - systemd-boot.enable = true; - }; - - # Name your host machine - networking.hostName = "NixOS-VM"; - - # Set your time zone. - time.timeZone = "America/Denver"; - - # Enter keyboard layout - services.xserver.layout = "us"; - - # Define user accounts - users.extraUsers = - { - aaronh = - { - home = "/home/aaronh"; - extraGroups = [ "wheel" "networkmanager" ]; - isNormalUser = true; - }; - }; - - # Install some packages - environment.systemPackages = - with pkgs; - [ - thunderbird - firefox - fish - ]; - - # Enable the OpenSSH daemon - services.openssh.enable = true; - - # Pantheon - services.xserver.enable = true; - services.xserver.desktopManager.pantheon.enable = true; - - -} From e7e3cb1812a387215c55476a59f37ede99b35ad6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 15:32:25 +0000 Subject: [PATCH 142/507] Delete configuration.nix --- configuration.nix | 177 ---------------------------------------------- 1 file changed, 177 deletions(-) delete mode 100644 configuration.nix diff --git a/configuration.nix b/configuration.nix deleted file mode 100644 index f81b99b..0000000 --- a/configuration.nix +++ /dev/null @@ -1,177 +0,0 @@ -{ config, pkgs, ... }: - -{ - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ]; - - boot = { - blacklistedKernelModules = [ "snd_pcsp" ]; - kernelPackages = pkgs.linuxPackages_latest; - cleanTmpDir = true; - - loader = { - systemd-boot.enable = true; - efi.canTouchEfiVariables = true; - }; - - supportedFilesystems = [ - "exfat" - ]; - }; - - networking = { - firewall = { - enable = true; - allowedTCPPorts = []; - allowedUDPPorts = []; - }; - hostName = "aya"; - networkmanager.enable = true; - - }; - - console = { - font = "Lat2-Terminus16"; - keyMap = "us"; - }; - - i18n = { - defaultLocale = "en_US.UTF-8"; - } - - services = { - openssh.enable = true; - ntp.enable = true; - nscd.enable = true; - } - xserver = { - videoDrivers = [ "nvidia" ]; - enable = true; - layout = "us"; - - xkbOptions = "compose:caps"; - xkbVariant = "dvp"; - - synaptics.enable = true; - - windowManager.xmonad.enable = true; - windowManager.xmonad.extraPackages = self: [ self.xmonad-contrib ]; - windowManager.xmonad.haskellPackages = pkgs.haskell.packages.ghc822; - displayManager.defaultSession = "none+xmonad"; - - displayManager.lightdm = { - enable = true; - extraSeatDefaults = '' - greeter-show-manual-login=true - greeter-hide-users=true - allow-guest=false - ''; - }; - - displayManager.sessionCommands = '' - ${pkgs.xlibs.xsetroot}/bin/xsetroot -cursor_name left_ptr - ${pkgs.xscreensaver}/bin/xscreensaver -no-splash & - ''; - }; - }; - - users.extraGroups.vboxusers.members = [ "shana" ]; - - programs.ssh.startAgent = true; - programs.bash.enableCompletion = true; - - # Don't blind me - systemd.services.redshift.restartIfChanged = false; - - time.timeZone = "America/Denver"; - - # Users - users.users.aaronh = { - createHome = true; - home = "/home/aaronh"; - description = "Aaron Honeycutt"; - extraGroups = [ "wheel" "audio" "video" "networkmanager" "docker" ]; - useDefaultShell = true; - isNormalUser = true; - }; - - nixpkgs.system = "x86_64-linux"; - nixpkgs.config = { - virtualbox.enableExtensionPack = true; - pulseaudio = true; - allowUnfree = true; - }; - - environment.systemPackages = with pkgs; - [ cacert - cloc - elfutils - file - firefox-devedition-bin - fish - git - glib - glxinfo - gnupg - gnutls - # haskellPackages.apply-refact - # haskellPackages.hasktags - # haskellPackages.hlint - htop - jq - mpv - mupdf - nano - networkmanager - nitrogen - nmap - openssl - p7zip - pavucontrol - # pythonPackages.youtube-dl - # rtorrent - rxvt_unicode - scrot - sxiv - unzip - wget - xlibs.xsetroot - xscreensaver - xsel - zip - ]; - - fonts = { - fontconfig.enable = true; - fontDir.enable = true; - enableGhostscriptFonts = true; - fonts = with pkgs; [ - corefonts - dejavu_fonts - inconsolata - source-han-sans-japanese - source-han-sans-korean - source-han-sans-simplified-chinese - source-han-sans-traditional-chinese - ubuntu_font_family - ]; - }; - - security.sudo.enable = true; - - nix = { - package = pkgs.nixUnstable; - trustedBinaryCaches = [ - "http://cache.nixos.org" - ]; - - binaryCaches = [ - "http://cache.nixos.org" - ]; - - gc.automatic = false; - maxJobs = pkgs.lib.mkForce 6; - }; -} From 7ce29233d4d5c5c760d48820ec8a9602857f25ce Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 15:32:34 +0000 Subject: [PATCH 143/507] Delete config.nix --- config.nix | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 config.nix diff --git a/config.nix b/config.nix deleted file mode 100644 index 656af37..0000000 --- a/config.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ config, pkgs, ... }: - -{ - # Import other configuration modules - # (hardware-configuration.nix is autogenerated upon installation) - # paths in nix expressions are always relative the file which defines them - imports = - [ - ./hardware-configuration.nix - ]; - - boot.loader = { - systemd-boot.enable = true; - }; - - # Name your host machine - networking.hostName = "NixOS-VM"; - - # Set your time zone. - time.timeZone = "America/Denver"; - - # Enter keyboard layout - services.xserver.layout = "us"; - - # Define user accounts - users.extraUsers = - { - aaronh = - { - extraGroups = [ "wheel" "networkmanager" ]; - isNormalUser = true; - }; - }; - - # Install some packages - environment.systemPackages = - with pkgs; - [ - ddate - testdisk - fish - ]; - - # Enable the OpenSSH daemon - services.openssh.enable = true; - -} From 173214093c3ed950a33c745b155d831faa4c4ade Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 15:34:34 +0000 Subject: [PATCH 144/507] Update config-gnome.nix --- config-gnome.nix | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/config-gnome.nix b/config-gnome.nix index 4f60b4e..b93d1a7 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -13,8 +13,18 @@ systemd-boot.enable = true; }; + boot.initrd.luks.devices = { + crypt-root = { + device = "/dev/disk/by-label/luks"; + preLVM = true; + }; + }; + + # Enable 32 Bit libraries for applications like Steam + hardware.opengl.driSupport32Bit = true; + # Name your host machine - networking.hostName = "NixOS-VM"; + networking.hostName = "NixOS"; # Set your time zone. time.timeZone = "America/Denver"; @@ -22,6 +32,15 @@ # Enter keyboard layout services.xserver.layout = "us"; + # Enable flatpak + services.flatpak.enable = true; + + # Enable PackageKit for Discover + services.packagekit.enable = true; + + # Enable fwupd + services.fwupd.enable = true; + # Define user accounts users.extraUsers = { @@ -37,15 +56,26 @@ environment.systemPackages = with pkgs; [ - thunderbird firefox fish + flatpak + git + thunderbird tilix ]; # Enable the OpenSSH daemon services.openssh.enable = true; + # Enable Pipewire + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + # GNOME services.xserver.enable = true; services.xserver.displayManager.gdm.enable = true; From edc0e8afa0cd4f41652724fce6fbf09942d5263f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 15:38:09 +0000 Subject: [PATCH 145/507] Update setup.sh --- setup.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/setup.sh b/setup.sh index d33731b..a135bd2 100644 --- a/setup.sh +++ b/setup.sh @@ -6,4 +6,8 @@ read userName sudo passwd $userName +# Create Directories +mkdir /home/$userName/Projects +chmod $userName:$userName /home/aaronh/Projects + exit From 7d9fa62fb65f02f5306a25d20464aa2a3e0d7475 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 15:38:34 +0000 Subject: [PATCH 146/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 9eb30f7..ce04fb7 100644 --- a/install.sh +++ b/install.sh @@ -95,7 +95,7 @@ sudo nixos-install # Start Setup section sudo -i -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mntsetup.sh +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mnt/setup.sh # Enter into installed OS sudo mount -o bind /dev /mnt/dev From c93fc353ca8f9319321b29f2ca3e876cc5d84d1d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 15:39:07 +0000 Subject: [PATCH 147/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index ce04fb7..d0595de 100644 --- a/install.sh +++ b/install.sh @@ -102,7 +102,7 @@ sudo mount -o bind /dev /mnt/dev sudo mount -o bind /proc /mnt/proc sudo mount -o bind /sys /mnt/sys sudo chroot /mnt /nix/var/nix/profiles/system/activate -sudo chroot /mnt /run/current-system/sw/bin/bash setup.sh +sudo chroot /mnt /run/current-system/sw/bin/sh setup.sh # Removed install script. rm install.sh From c6650b3ba4d9d5e7075e6eb6ecdb0d03237915d7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 22:36:44 +0000 Subject: [PATCH 148/507] Update config-plasma.nix --- config-plasma.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index bd8ea95..a486015 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -37,7 +37,7 @@ # Enable flatpak services.flatpak.enable = true; - # Enable PackageKit for Discover + # Enable PackageKit services.packagekit.enable = true; # Enable fwupd @@ -64,7 +64,6 @@ git libsForQt5.plasma-nm libsForQt5.plasma-pa - libsForQt5.discover libsForQt5.sddm thunderbird tilix From a73864479bb7aa5bbedb293a12cbaf2763862686 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 22:38:24 +0000 Subject: [PATCH 149/507] Update install.sh --- install.sh | 62 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/install.sh b/install.sh index d0595de..bed4a58 100644 --- a/install.sh +++ b/install.sh @@ -2,6 +2,9 @@ # ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) +# Become Root +sudo -i + # Detect and list the drives. lsblk -f @@ -29,7 +32,7 @@ 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 +) | fdisk $driveName -w always -W always # List the new partitions. lsblk -f @@ -45,64 +48,63 @@ echo "Which is the root partition?" read rootName # Create EFI partition -sudo mkfs.fat -F32 -n EFI $efiName +mkfs.fat -F32 -n EFI $efiName # Encrypt the root partition -sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName +cryptsetup luksFormat -v -s 512 -h sha512 $rootName # Open the encrypted root partition -sudo cryptsetup luksOpen $rootName crypt-root +cryptsetup luksOpen $rootName crypt-root -sudo pvcreate /dev/mapper/crypt-root -sudo vgcreate lvm /dev/mapper/crypt-root +pvcreate /dev/mapper/crypt-root +vgcreate lvm /dev/mapper/crypt-root -sudo lvcreate --size "$ramTotal"G --name swap lvm -sudo lvcreate --extents 100%FREE --name root lvm +lvcreate --size "$ramTotal"G --name swap lvm +lvcreate --extents 100%FREE --name root lvm -sudo cryptsetup config $rootName --label luks +cryptsetup config $rootName --label luks -sudo mkswap /dev/lvm/swap # swap partition -sudo mkfs.btrfs -L root /dev/lvm/root # /root partition +mkswap /dev/lvm/swap # swap partition +mkfs.btrfs -L root /dev/lvm/root # /root partition -# 0. Mount the filesystems. -sudo swapon /dev/lvm/swap -sudo mount /dev/lvm/root /mnt +# Mount the filesystems. +swapon /dev/lvm/swap +mount /dev/lvm/root /mnt # Create Subvolumes -sudo btrfs subvolume create /mnt/@ -sudo btrfs subvolume create /mnt/@home +btrfs subvolume create /mnt/@ +btrfs subvolume create /mnt/@home # Unmount root -sudo umount /mnt +umount /mnt # Mount the subvolumes. -sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt +mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt -sudo mkdir /mnt/home/ -sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home /dev/lvm/root /mnt/home +mkdir /mnt/home/ +mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home /dev/lvm/root /mnt/home # Mount the EFI partition. -sudo mkdir /mnt/boot/ -sudo mount $efiName /mnt/boot +mkdir /mnt/boot/ +mount $efiName /mnt/boot # Generate Nix configuration -sudo nixos-generate-config --root /mnt +nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install -sudo nixos-install +nixos-install # Start Setup section -sudo -i curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mnt/setup.sh # Enter into installed OS -sudo mount -o bind /dev /mnt/dev -sudo mount -o bind /proc /mnt/proc -sudo mount -o bind /sys /mnt/sys -sudo chroot /mnt /nix/var/nix/profiles/system/activate -sudo chroot /mnt /run/current-system/sw/bin/sh setup.sh +mount -o bind /dev /mnt/dev +mount -o bind /proc /mnt/proc +mount -o bind /sys /mnt/sys +chroot /mnt /nix/var/nix/profiles/system/activate +chroot /mnt /run/current-system/sw/bin/sh setup.sh # Removed install script. rm install.sh From 0dfe4b5d6df364abd4e839898b73cee2cf01da3c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 22:47:48 +0000 Subject: [PATCH 150/507] Update install.sh --- install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/install.sh b/install.sh index bed4a58..f9a5a8e 100644 --- a/install.sh +++ b/install.sh @@ -2,9 +2,6 @@ # ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) -# Become Root -sudo -i - # Detect and list the drives. lsblk -f From 30260a1e36580f2f496cb579d90c4bbac8efa536 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 22:48:36 +0000 Subject: [PATCH 151/507] Revert "Update install.sh" This reverts commit a73864479bb7aa5bbedb293a12cbaf2763862686 --- install.sh | 59 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/install.sh b/install.sh index f9a5a8e..d0595de 100644 --- a/install.sh +++ b/install.sh @@ -29,7 +29,7 @@ echo t # Change partition type. echo 1 # Pick first partition. echo 1 # Change first partition to EFI system. echo w # write changes. -) | fdisk $driveName -w always -W always +) | sudo fdisk $driveName -w always -W always # List the new partitions. lsblk -f @@ -45,63 +45,64 @@ echo "Which is the root partition?" read rootName # Create EFI partition -mkfs.fat -F32 -n EFI $efiName +sudo mkfs.fat -F32 -n EFI $efiName # Encrypt the root partition -cryptsetup luksFormat -v -s 512 -h sha512 $rootName +sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName # Open the encrypted root partition -cryptsetup luksOpen $rootName crypt-root +sudo cryptsetup luksOpen $rootName crypt-root -pvcreate /dev/mapper/crypt-root -vgcreate lvm /dev/mapper/crypt-root +sudo pvcreate /dev/mapper/crypt-root +sudo vgcreate lvm /dev/mapper/crypt-root -lvcreate --size "$ramTotal"G --name swap lvm -lvcreate --extents 100%FREE --name root lvm +sudo lvcreate --size "$ramTotal"G --name swap lvm +sudo lvcreate --extents 100%FREE --name root lvm -cryptsetup config $rootName --label luks +sudo cryptsetup config $rootName --label luks -mkswap /dev/lvm/swap # swap partition -mkfs.btrfs -L root /dev/lvm/root # /root partition +sudo mkswap /dev/lvm/swap # swap partition +sudo mkfs.btrfs -L root /dev/lvm/root # /root partition -# Mount the filesystems. -swapon /dev/lvm/swap -mount /dev/lvm/root /mnt +# 0. Mount the filesystems. +sudo swapon /dev/lvm/swap +sudo mount /dev/lvm/root /mnt # Create Subvolumes -btrfs subvolume create /mnt/@ -btrfs subvolume create /mnt/@home +sudo btrfs subvolume create /mnt/@ +sudo btrfs subvolume create /mnt/@home # Unmount root -umount /mnt +sudo umount /mnt # Mount the subvolumes. -mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt +sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt -mkdir /mnt/home/ -mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home /dev/lvm/root /mnt/home +sudo mkdir /mnt/home/ +sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@home /dev/lvm/root /mnt/home # Mount the EFI partition. -mkdir /mnt/boot/ -mount $efiName /mnt/boot +sudo mkdir /mnt/boot/ +sudo mount $efiName /mnt/boot # Generate Nix configuration -nixos-generate-config --root /mnt +sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install -nixos-install +sudo nixos-install # Start Setup section +sudo -i curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mnt/setup.sh # Enter into installed OS -mount -o bind /dev /mnt/dev -mount -o bind /proc /mnt/proc -mount -o bind /sys /mnt/sys -chroot /mnt /nix/var/nix/profiles/system/activate -chroot /mnt /run/current-system/sw/bin/sh setup.sh +sudo mount -o bind /dev /mnt/dev +sudo mount -o bind /proc /mnt/proc +sudo mount -o bind /sys /mnt/sys +sudo chroot /mnt /nix/var/nix/profiles/system/activate +sudo chroot /mnt /run/current-system/sw/bin/sh setup.sh # Removed install script. rm install.sh From c6eb72cb020de901c290d26e3038220c3d0f191c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 22:54:55 +0000 Subject: [PATCH 152/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 638a9ca..03f68d6 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ https://nixos.org/manual/nixos/stable/index.html#sec-installation-booting-networ ## Start the installer ``` -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/install.sh > install.sh; sh install.sh +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/install.sh > install.sh; sh install.sh ``` The following will happen: From b299ea6e7e4a18e234b2cad9805dc8384ae64c9d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 22:55:40 +0000 Subject: [PATCH 153/507] Update install.sh --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index d0595de..579f40b 100644 --- a/install.sh +++ b/install.sh @@ -88,14 +88,14 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install # Start Setup section -sudo -i -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mnt/setup.sh +# sudo -i +# curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mnt/setup.sh # Enter into installed OS sudo mount -o bind /dev /mnt/dev From 4f7716c767024c6b01c6ab2fee7f554b54a455b3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 22:55:50 +0000 Subject: [PATCH 154/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 579f40b..a826582 100644 --- a/install.sh +++ b/install.sh @@ -95,7 +95,7 @@ sudo nixos-install # Start Setup section # sudo -i -# curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/setup.sh > /mnt/setup.sh +# curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/setup.sh > /mnt/setup.sh # Enter into installed OS sudo mount -o bind /dev /mnt/dev From 5d658788023b5a4e7455eaca42b5878ab590bc82 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 23:22:01 +0000 Subject: [PATCH 155/507] Revert "Update config-plasma.nix" This reverts commit c6650b3ba4d9d5e7075e6eb6ecdb0d03237915d7 --- config-plasma.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config-plasma.nix b/config-plasma.nix index a486015..bd8ea95 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -37,7 +37,7 @@ # Enable flatpak services.flatpak.enable = true; - # Enable PackageKit + # Enable PackageKit for Discover services.packagekit.enable = true; # Enable fwupd @@ -64,6 +64,7 @@ git libsForQt5.plasma-nm libsForQt5.plasma-pa + libsForQt5.discover libsForQt5.sddm thunderbird tilix From c15582048fa1453cfe6b445fe17fca345ed31cb3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 23:30:13 +0000 Subject: [PATCH 156/507] Update config-plasma.nix --- config-plasma.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config-plasma.nix b/config-plasma.nix index bd8ea95..0e595ee 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -87,6 +87,9 @@ pulse.enable = true; }; + # Enable CUPS + services.printing.enable = true; + # System system.autoUpgrade.enable = true; system.autoUpgrade.allowReboot = true; From 1b0c2952c1c273769365cebdfc6f22f07dbf95e1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 23:31:41 +0000 Subject: [PATCH 157/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index a826582..31e1479 100644 --- a/install.sh +++ b/install.sh @@ -88,7 +88,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-gnome.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From a865fa5b35aafe74754f35dcace2f13558e985b5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 23:32:44 +0000 Subject: [PATCH 158/507] Update config-plasma.nix --- config-plasma.nix | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index 0e595ee..a982e0e 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -24,9 +24,7 @@ hardware.opengl.driSupport32Bit = true; # Name your host machine - networking.hostName = "NixOS-VM"; - - networking.networkmanager.enable = true; + networking.hostName = "NixOS"; # Set your time zone. time.timeZone = "America/Denver"; @@ -62,10 +60,6 @@ fish flatpak git - libsForQt5.plasma-nm - libsForQt5.plasma-pa - libsForQt5.discover - libsForQt5.sddm thunderbird tilix ]; @@ -73,11 +67,6 @@ # Enable the OpenSSH daemon services.openssh.enable = true; - # Plasma - services.xserver.enable = true; - services.xserver.displayManager.sddm.enable = true; - services.xserver.desktopManager.plasma5.enable = true; - # Enable Pipewire security.rtkit.enable = true; services.pipewire = { From 9985b0e52f59db8e00456cb30bd288a94775fbac Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 23:38:05 +0000 Subject: [PATCH 159/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 31e1479..0069b4f 100644 --- a/install.sh +++ b/install.sh @@ -88,7 +88,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-gnome.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From 78376d61f47e7dfbaa5fcca57ed4e7d8c2863530 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 23:41:40 +0000 Subject: [PATCH 160/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 0069b4f..a826582 100644 --- a/install.sh +++ b/install.sh @@ -88,7 +88,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/nathaniel-btrfs/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From 833b5926466f1e0e2840cdbbae09967aa018ac74 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 23:51:36 +0000 Subject: [PATCH 161/507] Update config-plasma.nix --- config-plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config-plasma.nix b/config-plasma.nix index a982e0e..347a83e 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -34,6 +34,7 @@ # Enable flatpak services.flatpak.enable = true; + xdg.portal.enable = true; # Enable PackageKit for Discover services.packagekit.enable = true; From a2a567c3423e2f53e42096a37a9794e309713a59 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 23:54:47 +0000 Subject: [PATCH 162/507] Update config-plasma.nix --- config-plasma.nix | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index 347a83e..deae509 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -32,9 +32,17 @@ # Enter keyboard layout services.xserver.layout = "us"; - # Enable flatpak - services.flatpak.enable = true; - xdg.portal.enable = true; + # Enable Flatpak + xdg = { + portal = { + enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-wlr + xdg-desktop-portal-kde + ]; + qtUsePortal = true; + }; + }; # Enable PackageKit for Discover services.packagekit.enable = true; From 55a6f4be4f09b50b34094c935007a7d10ae896c3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 May 2022 23:56:55 +0000 Subject: [PATCH 163/507] Update config-plasma.nix --- config-plasma.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/config-plasma.nix b/config-plasma.nix index deae509..d3c00f9 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -40,7 +40,6 @@ xdg-desktop-portal-wlr xdg-desktop-portal-kde ]; - qtUsePortal = true; }; }; From fd4e67b87fcf3408fbdde7232d957b3911b7b818 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 10 May 2022 00:05:30 +0000 Subject: [PATCH 164/507] Update install.sh --- install.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index a826582..f30f4cb 100644 --- a/install.sh +++ b/install.sh @@ -98,11 +98,11 @@ sudo nixos-install # curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/setup.sh > /mnt/setup.sh # Enter into installed OS -sudo mount -o bind /dev /mnt/dev -sudo mount -o bind /proc /mnt/proc -sudo mount -o bind /sys /mnt/sys -sudo chroot /mnt /nix/var/nix/profiles/system/activate -sudo chroot /mnt /run/current-system/sw/bin/sh setup.sh +# sudo mount -o bind /dev /mnt/dev +# sudo mount -o bind /proc /mnt/proc +# sudo mount -o bind /sys /mnt/sys +# sudo chroot /mnt /nix/var/nix/profiles/system/activate +# sudo chroot /mnt /run/current-system/sw/bin/sh setup.sh # Removed install script. rm install.sh From 670721671ea043fd2cd9d59173acf5c36e1c922f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 10 May 2022 00:07:37 +0000 Subject: [PATCH 165/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index f30f4cb..008c15a 100644 --- a/install.sh +++ b/install.sh @@ -88,7 +88,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-gnome.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From 7d025385107b87619d9fffc4b5b80c9265612504 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 10 May 2022 00:10:22 +0000 Subject: [PATCH 166/507] Update config-gnome.nix --- config-gnome.nix | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/config-gnome.nix b/config-gnome.nix index b93d1a7..68b25f4 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -32,9 +32,6 @@ # Enter keyboard layout services.xserver.layout = "us"; - # Enable flatpak - services.flatpak.enable = true; - # Enable PackageKit for Discover services.packagekit.enable = true; @@ -58,7 +55,6 @@ [ firefox fish - flatpak git thunderbird tilix @@ -73,7 +69,7 @@ enable = true; alsa.enable = true; alsa.support32Bit = true; - pulse.enable = true; + pulse.enable = false; }; # GNOME From ca7fed74e04a20b35353d7f24a930c8c33fb2257 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 10 May 2022 00:17:57 +0000 Subject: [PATCH 167/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 008c15a..08f35da 100644 --- a/install.sh +++ b/install.sh @@ -88,7 +88,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-gnome.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install @@ -108,4 +108,4 @@ sudo nixos-install rm install.sh # Remove setup script -rm setup.sh +# rm setup.sh From 34e178246b6b278554271abd0a03a20abe45c240 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 10 May 2022 12:38:16 +0000 Subject: [PATCH 168/507] Update config-plasma.nix --- config-plasma.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/config-plasma.nix b/config-plasma.nix index d3c00f9..72dc9f0 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -68,6 +68,9 @@ fish flatpak git + libsForQt5.plasma-nm + libsForQt5.plasma-pa + libsForQt5.sddm thunderbird tilix ]; @@ -75,6 +78,12 @@ # Enable the OpenSSH daemon services.openssh.enable = true; + # Plasma + services.xserver.enable = true; + services.xserver.displayManager.sddm.enable = true; + services.xserver.desktopManager.plasma5.enable = true; + + # Enable Pipewire security.rtkit.enable = true; services.pipewire = { From 22a601724d01cfa8842a3ae57580889f8f3537f4 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 10 May 2022 12:40:23 +0000 Subject: [PATCH 169/507] Update config-plasma.nix --- config-plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config-plasma.nix b/config-plasma.nix index 72dc9f0..76047c9 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -68,6 +68,7 @@ fish flatpak git + libsForQt5.discover libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.sddm From 17437f09c17be2a1305c15dd5d5d1c1e88c388ee Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 10 May 2022 12:41:05 +0000 Subject: [PATCH 170/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 03f68d6..c916952 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ The following will happen: - 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 with the choice to set it as the same size as the RAM. +- Create a swap partition in the LVM and sets it as the same size as the RAM for hibernation. - Create a root partition in the LVM. - Install systemd-boot. From 25a09802fc3eb2e352ccf03f11400c24d844256e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 11 May 2022 14:51:08 +0000 Subject: [PATCH 171/507] Update config-plasma.nix --- config-plasma.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config-plasma.nix b/config-plasma.nix index 76047c9..6a6438c 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -25,6 +25,7 @@ # Name your host machine networking.hostName = "NixOS"; + networking.networkmanager.enable = true; # Set your time zone. time.timeZone = "America/Denver"; @@ -84,7 +85,6 @@ services.xserver.displayManager.sddm.enable = true; services.xserver.desktopManager.plasma5.enable = true; - # Enable Pipewire security.rtkit.enable = true; services.pipewire = { @@ -94,6 +94,9 @@ pulse.enable = true; }; + # Enable Bluetooth + hardware.bluetooth.enable = true; + # Enable CUPS services.printing.enable = true; From 53c065cf92da5143ec8b91f75cf9d2491f754cbb Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 11 May 2022 17:13:41 +0000 Subject: [PATCH 172/507] Update config-plasma.nix --- config-plasma.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config-plasma.nix b/config-plasma.nix index 6a6438c..1d954a4 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -44,6 +44,8 @@ }; }; + services.flatpak.enable = true; + # Enable PackageKit for Discover services.packagekit.enable = true; From a115a1a3af86abfdad484e0ac1af6f81979606c3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 11 May 2022 19:43:47 +0000 Subject: [PATCH 173/507] Update config-gnome.nix --- config-gnome.nix | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/config-gnome.nix b/config-gnome.nix index 68b25f4..b7aa709 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -25,6 +25,7 @@ # Name your host machine networking.hostName = "NixOS"; + networking.networkmanager.enable = true; # Set your time zone. time.timeZone = "America/Denver"; @@ -32,6 +33,19 @@ # Enter keyboard layout services.xserver.layout = "us"; + # Enable Flatpak + xdg = { + portal = { + enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-wlr + xdg-desktop-portal-kde + ]; + }; + }; + + services.flatpak.enable = true; + # Enable PackageKit for Discover services.packagekit.enable = true; @@ -55,7 +69,12 @@ [ firefox fish + flatpak git + libsForQt5.discover + libsForQt5.plasma-nm + libsForQt5.plasma-pa + libsForQt5.sddm thunderbird tilix ]; @@ -63,15 +82,6 @@ # Enable the OpenSSH daemon services.openssh.enable = true; - # Enable Pipewire - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = false; - }; - # GNOME services.xserver.enable = true; services.xserver.displayManager.gdm.enable = true; @@ -80,6 +90,21 @@ # Disable GNOME applications environment.gnome.excludePackages = [ pkgs.gnome.cheese pkgs.gnome-photos pkgs.gnome.gnome-music pkgs.gnome.gnome-terminal pkgs.gnome.gedit pkgs.epiphany pkgs.evince pkgs.gnome.gnome-characters pkgs.gnome.totem pkgs.gnome.tali pkgs.gnome.iagno pkgs.gnome.hitori pkgs.gnome.atomix pkgs.gnome-tour pkgs.gnome.geary ]; + # Enable Pipewire + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + # Enable Bluetooth + hardware.bluetooth.enable = true; + + # Enable CUPS + services.printing.enable = true; + # System system.autoUpgrade.enable = true; system.autoUpgrade.allowReboot = true; From 6073798ba144f4e195ed6c1cbcee2ceb964799e9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 12 May 2022 00:32:04 +0000 Subject: [PATCH 174/507] Update config-gnome.nix --- config-gnome.nix | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config-gnome.nix b/config-gnome.nix index b7aa709..7185e45 100644 --- a/config-gnome.nix +++ b/config-gnome.nix @@ -46,9 +46,6 @@ services.flatpak.enable = true; - # Enable PackageKit for Discover - services.packagekit.enable = true; - # Enable fwupd services.fwupd.enable = true; @@ -71,10 +68,6 @@ fish flatpak git - libsForQt5.discover - libsForQt5.plasma-nm - libsForQt5.plasma-pa - libsForQt5.sddm thunderbird tilix ]; From 6311124af59e5ad5f4979ba1231014150abeee2d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 12 May 2022 16:07:55 +0000 Subject: [PATCH 175/507] Update config-plasma.nix --- config-plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config-plasma.nix b/config-plasma.nix index 1d954a4..4cc2c63 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -75,6 +75,7 @@ libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.sddm + pciutils thunderbird tilix ]; From 8e52a739913acc225c0f6f66452eb6b149f8ebb0 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 12 May 2022 16:08:07 +0000 Subject: [PATCH 176/507] Update config-plasma.nix --- config-plasma.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/config-plasma.nix b/config-plasma.nix index 4cc2c63..1d954a4 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -75,7 +75,6 @@ libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.sddm - pciutils thunderbird tilix ]; From bcc79aea20d47c86b9b3e692fcdb18680f5ea5ce Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 17 May 2022 13:52:53 +0000 Subject: [PATCH 177/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 08f35da..b5d267d 100644 --- a/install.sh +++ b/install.sh @@ -1,6 +1,6 @@ # Figure out how much RAM the system has an set a variable # ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') -ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) +ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) # Detect and list the drives. lsblk -f From c62931457ef62797eb0de1f20659c5205bbbe9c3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 18 May 2022 13:13:00 +0000 Subject: [PATCH 178/507] Update install.sh --- install.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/install.sh b/install.sh index b5d267d..92c1d0a 100644 --- a/install.sh +++ b/install.sh @@ -1,5 +1,4 @@ # Figure out how much RAM the system has an set a variable -# ramTotal=$(grep MemTotal /proc/meminfo | awk '{print $2 / 1024 / 1024}') ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) # Detect and list the drives. From e52324ccf03ec9127c140b0dc9e538debfc848fe Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 13:59:23 +0000 Subject: [PATCH 179/507] Update install.sh --- install.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index 92c1d0a..f4ec5fe 100644 --- a/install.sh +++ b/install.sh @@ -50,18 +50,18 @@ sudo mkfs.fat -F32 -n EFI $efiName sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName # Open the encrypted root partition -sudo cryptsetup luksOpen $rootName crypt-root +sudo cryptsetup luksOpen $rootName cryptdata -sudo pvcreate /dev/mapper/crypt-root -sudo vgcreate lvm /dev/mapper/crypt-root +sudo pvcreate /dev/mapper/cryptdata +sudo vgcreate lvm /dev/mapper/cryptdata sudo lvcreate --size "$ramTotal"G --name swap lvm sudo lvcreate --extents 100%FREE --name root lvm sudo cryptsetup config $rootName --label luks -sudo mkswap /dev/lvm/swap # swap partition -sudo mkfs.btrfs -L root /dev/lvm/root # /root partition +sudo mkswap /dev/lvm/swap # swap partition +sudo mkfs.btrfs -L data-root /dev/lvm/root # /root partition # 0. Mount the filesystems. sudo swapon /dev/lvm/swap From 1b2a36a6b99ec6e166dc8bb1e5c57559fb2a3bbc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 14:18:07 +0000 Subject: [PATCH 180/507] Update config-plasma.nix --- config-plasma.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/config-plasma.nix b/config-plasma.nix index 1d954a4..cb38de3 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -76,7 +76,6 @@ libsForQt5.plasma-pa libsForQt5.sddm thunderbird - tilix ]; # Enable the OpenSSH daemon From c75207cb0dd4b9d7e92ba03973517dde73dfd282 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 14:20:14 +0000 Subject: [PATCH 181/507] Update install.sh --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index f4ec5fe..2ac9e8b 100644 --- a/install.sh +++ b/install.sh @@ -50,10 +50,10 @@ sudo mkfs.fat -F32 -n EFI $efiName sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName # Open the encrypted root partition -sudo cryptsetup luksOpen $rootName cryptdata +sudo cryptsetup luksOpen $rootName crypt-root -sudo pvcreate /dev/mapper/cryptdata -sudo vgcreate lvm /dev/mapper/cryptdata +sudo pvcreate /dev/mapper/crypt-root +sudo vgcreate lvm /dev/mapper/crypt-root sudo lvcreate --size "$ramTotal"G --name swap lvm sudo lvcreate --extents 100%FREE --name root lvm @@ -61,7 +61,7 @@ sudo lvcreate --extents 100%FREE --name root lvm sudo cryptsetup config $rootName --label luks sudo mkswap /dev/lvm/swap # swap partition -sudo mkfs.btrfs -L data-root /dev/lvm/root # /root partition +sudo mkfs.btrfs -L root /dev/lvm/root # /root partition # 0. Mount the filesystems. sudo swapon /dev/lvm/swap From 1ad9e63ddc5c71e5d67d391f127b5aa11b781cd5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 15:24:49 +0000 Subject: [PATCH 182/507] Update install.sh --- install.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/install.sh b/install.sh index 2ac9e8b..a72418c 100644 --- a/install.sh +++ b/install.sh @@ -93,15 +93,15 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-plasma.n sudo nixos-install # Start Setup section -# sudo -i -# curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/setup.sh > /mnt/setup.sh +sudo -i +curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/setup.sh > /mnt/setup.sh # Enter into installed OS -# sudo mount -o bind /dev /mnt/dev -# sudo mount -o bind /proc /mnt/proc -# sudo mount -o bind /sys /mnt/sys -# sudo chroot /mnt /nix/var/nix/profiles/system/activate -# sudo chroot /mnt /run/current-system/sw/bin/sh setup.sh +mount -o bind /dev /mnt/dev +mount -o bind /proc /mnt/proc +mount -o bind /sys /mnt/sys +chroot /mnt /nix/var/nix/profiles/system/activate +chroot /mnt /run/current-system/sw/bin/sh setup.sh # Removed install script. rm install.sh From 9444ced2f12fe46d07687429c30199899243d74d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 15:26:08 +0000 Subject: [PATCH 183/507] Update setup.sh --- setup.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.sh b/setup.sh index a135bd2..9ca3093 100644 --- a/setup.sh +++ b/setup.sh @@ -8,6 +8,5 @@ sudo passwd $userName # Create Directories mkdir /home/$userName/Projects -chmod $userName:$userName /home/aaronh/Projects exit From bf4516895d8d1ad03215fdb15c6e8059e05c1563 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 15:32:59 +0000 Subject: [PATCH 184/507] Update install.sh --- install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index a72418c..6e380ab 100644 --- a/install.sh +++ b/install.sh @@ -1,5 +1,6 @@ # Figure out how much RAM the system has an set a variable -ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) +# ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) +ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) # Detect and list the drives. lsblk -f From 22027083ce1ad6268c741041d20e929be097f2df Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 15:56:24 +0000 Subject: [PATCH 185/507] Update install.sh --- install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 6e380ab..a72418c 100644 --- a/install.sh +++ b/install.sh @@ -1,6 +1,5 @@ # Figure out how much RAM the system has an set a variable -# ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) -ramTotal=$(free | awk '/^Mem:/{print $2 / 1024 / 1024}' | awk -F. {'print$1'}) +ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) # Detect and list the drives. lsblk -f From faf630dbbe35714d96e65b5087bfd9edb4c0b765 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 16:03:30 +0000 Subject: [PATCH 186/507] Update install.sh --- install.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/install.sh b/install.sh index a72418c..42aa0bf 100644 --- a/install.sh +++ b/install.sh @@ -55,12 +55,12 @@ sudo cryptsetup luksOpen $rootName crypt-root sudo pvcreate /dev/mapper/crypt-root sudo vgcreate lvm /dev/mapper/crypt-root -sudo lvcreate --size "$ramTotal"G --name swap lvm -sudo lvcreate --extents 100%FREE --name root lvm +sudo lvcreate -L "$ramTotal"G -n swap lvm +sudo lvcreate -l '100%FREE' -n root lvm sudo cryptsetup config $rootName --label luks -sudo mkswap /dev/lvm/swap # swap partition +sudo mkswap /dev/lvm/swap # swap partition sudo mkfs.btrfs -L root /dev/lvm/root # /root partition # 0. Mount the filesystems. @@ -93,15 +93,15 @@ curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-plasma.n sudo nixos-install # Start Setup section -sudo -i -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/setup.sh > /mnt/setup.sh +# sudo -i +# curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/setup.sh > /mnt/setup.sh -# Enter into installed OS -mount -o bind /dev /mnt/dev -mount -o bind /proc /mnt/proc -mount -o bind /sys /mnt/sys -chroot /mnt /nix/var/nix/profiles/system/activate -chroot /mnt /run/current-system/sw/bin/sh setup.sh +# # Enter into installed OS +# mount -o bind /dev /mnt/dev +# mount -o bind /proc /mnt/proc +# mount -o bind /sys /mnt/sys +# chroot /mnt /nix/var/nix/profiles/system/activate +# chroot /mnt /run/current-system/sw/bin/sh setup.sh # Removed install script. rm install.sh From 898c035f8ca25d08b192ca6c78678a4539d18b6e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 16:52:46 +0000 Subject: [PATCH 187/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c916952..8c918f2 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This installer does the following at it's core: Tested on the following drives: - SATA -- M.2 NVMe +- M.2 SSD ## Get Started From 371bff82f25d18d5f11ae7f132b68d7d38470edc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 16:52:57 +0000 Subject: [PATCH 188/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c918f2..a1efec6 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This installer does the following at it's core: Tested on the following drives: - SATA -- M.2 SSD +- NVMe ## Get Started From a3c94f9e80f6b2e1cb0e0faa7e4a8552f17163d7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 May 2022 23:50:36 +0000 Subject: [PATCH 189/507] Update config-plasma.nix --- config-plasma.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index cb38de3..4b7f778 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -20,6 +20,9 @@ }; }; + # Allow Unfree + nixpkgs.config.allowUnfree = true; + # Enable 32 Bit libraries for applications like Steam hardware.opengl.driSupport32Bit = true; @@ -46,7 +49,7 @@ services.flatpak.enable = true; - # Enable PackageKit for Discover + # Enable PackageKit services.packagekit.enable = true; # Enable fwupd @@ -71,7 +74,7 @@ fish flatpak git - libsForQt5.discover + nixos.steam libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.sddm From 0cf77c0484ff751e718e5e47f0a6bd8db5c82f1c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 20 May 2022 13:58:56 +0000 Subject: [PATCH 190/507] Update config-plasma.nix --- config-plasma.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/config-plasma.nix b/config-plasma.nix index 4b7f778..2a61855 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -74,7 +74,6 @@ fish flatpak git - nixos.steam libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.sddm From 7b9ff4d7ab80ace89aa78d7a8c3ef73321b9cb02 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 20 May 2022 22:35:10 +0000 Subject: [PATCH 191/507] Add Bismuth for window tiling. --- config-plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config-plasma.nix b/config-plasma.nix index 2a61855..94a91ea 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -74,6 +74,7 @@ fish flatpak git + libsForQt5.bismuth libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.sddm From a58ed0a8e95d9d014af2539088d3d9edf9122a61 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 20 May 2022 22:46:33 +0000 Subject: [PATCH 192/507] Not including Discover so removing PackageKit --- config-plasma.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/config-plasma.nix b/config-plasma.nix index 94a91ea..2d6e794 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -49,9 +49,6 @@ services.flatpak.enable = true; - # Enable PackageKit - services.packagekit.enable = true; - # Enable fwupd services.fwupd.enable = true; From 26f236b989babbee40eeb1e6e3938de5d299d030 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 20 May 2022 22:50:46 +0000 Subject: [PATCH 193/507] Delete config-gnome.nix --- config-gnome.nix | 105 ----------------------------------------------- 1 file changed, 105 deletions(-) delete mode 100644 config-gnome.nix diff --git a/config-gnome.nix b/config-gnome.nix deleted file mode 100644 index 7185e45..0000000 --- a/config-gnome.nix +++ /dev/null @@ -1,105 +0,0 @@ -{ config, pkgs, ... }: - -{ - # Import other configuration modules - # (hardware-configuration.nix is autogenerated upon installation) - # paths in nix expressions are always relative the file which defines them - imports = - [ - ./hardware-configuration.nix - ]; - - boot.loader = { - systemd-boot.enable = true; - }; - - boot.initrd.luks.devices = { - crypt-root = { - device = "/dev/disk/by-label/luks"; - preLVM = true; - }; - }; - - # Enable 32 Bit libraries for applications like Steam - hardware.opengl.driSupport32Bit = true; - - # Name your host machine - networking.hostName = "NixOS"; - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "America/Denver"; - - # Enter keyboard layout - services.xserver.layout = "us"; - - # Enable Flatpak - xdg = { - portal = { - enable = true; - extraPortals = with pkgs; [ - xdg-desktop-portal-wlr - xdg-desktop-portal-kde - ]; - }; - }; - - services.flatpak.enable = true; - - # Enable fwupd - services.fwupd.enable = true; - - # Define user accounts - users.extraUsers = - { - aaronh = - { - home = "/home/aaronh"; - extraGroups = [ "wheel" "networkmanager" ]; - isNormalUser = true; - }; - }; - - # Install some packages - environment.systemPackages = - with pkgs; - [ - firefox - fish - flatpak - git - thunderbird - tilix - ]; - - # Enable the OpenSSH daemon - services.openssh.enable = true; - - # GNOME - services.xserver.enable = true; - services.xserver.displayManager.gdm.enable = true; - services.xserver.desktopManager.gnome.enable = true; - - # Disable GNOME applications - environment.gnome.excludePackages = [ pkgs.gnome.cheese pkgs.gnome-photos pkgs.gnome.gnome-music pkgs.gnome.gnome-terminal pkgs.gnome.gedit pkgs.epiphany pkgs.evince pkgs.gnome.gnome-characters pkgs.gnome.totem pkgs.gnome.tali pkgs.gnome.iagno pkgs.gnome.hitori pkgs.gnome.atomix pkgs.gnome-tour pkgs.gnome.geary ]; - - # Enable Pipewire - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; - - # Enable Bluetooth - hardware.bluetooth.enable = true; - - # Enable CUPS - services.printing.enable = true; - - # System - system.autoUpgrade.enable = true; - system.autoUpgrade.allowReboot = true; - -} From 373a81faf6fdd34b6974a751c0161230209ec330 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 01:21:04 +0000 Subject: [PATCH 194/507] Update config-plasma.nix --- config-plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config-plasma.nix b/config-plasma.nix index 2d6e794..b8620e3 100644 --- a/config-plasma.nix +++ b/config-plasma.nix @@ -75,6 +75,7 @@ libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.sddm + steam thunderbird ]; From f65de784ffe3a2e4d4b48c36ad9f502a63129f59 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 01:45:37 +0000 Subject: [PATCH 195/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 42aa0bf..9c45b5c 100644 --- a/install.sh +++ b/install.sh @@ -87,7 +87,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From d35bb7e2a16e3b0f491a935957ec36803185b56c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 20 May 2022 19:48:47 -0600 Subject: [PATCH 196/507] Rename file and update path --- config-plasma.nix => config.nix | 0 install.sh | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename config-plasma.nix => config.nix (100%) diff --git a/config-plasma.nix b/config.nix similarity index 100% rename from config-plasma.nix rename to config.nix diff --git a/install.sh b/install.sh index 9c45b5c..00bff76 100644 --- a/install.sh +++ b/install.sh @@ -87,14 +87,14 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config-plasma.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install # Start Setup section # sudo -i -# curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/setup.sh > /mnt/setup.sh +# curl https://gitlab.com/ahoneybun/nynx-installer/-/raw/main/setup.sh > /mnt/setup.sh # # Enter into installed OS # mount -o bind /dev /mnt/dev From 415f32275cd19d6c51fe94efa60e92544d214025 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 16:28:16 +0000 Subject: [PATCH 197/507] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a1efec6..f9c2150 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # The NixOS Installer +This installed is named after my doggo Onyxia. + This installer does the following at it's core: - Partition the drive of your choice From ed6a5daac850628b0c0652cc77f149f344c2961c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 16:30:36 +0000 Subject: [PATCH 198/507] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f9c2150..b858aaf 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # The NixOS Installer -This installed is named after my doggo Onyxia. +This installer is named after my doggo Onyxia. -This installer does the following at it's core: +At the core of this installer it does the following: - Partition the drive of your choice - Installs a base of NixOS From a4f57e25559ce7b48cdf4412c957be71c8cc6c1f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 19:00:06 +0000 Subject: [PATCH 199/507] Update config.nix --- config.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config.nix b/config.nix index b8620e3..655ddd2 100644 --- a/config.nix +++ b/config.nix @@ -72,6 +72,7 @@ flatpak git libsForQt5.bismuth + libsForQt5.kde-gtk-config libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.sddm From e95addbb679bd076dc7184c8f67e5f8789414cca Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 20:09:16 +0000 Subject: [PATCH 200/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 00bff76..4c37151 100644 --- a/install.sh +++ b/install.sh @@ -87,7 +87,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From 06d62caf24aea95bd938fdf72a685283495ed61f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 20:09:31 +0000 Subject: [PATCH 201/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 4c37151..00bff76 100644 --- a/install.sh +++ b/install.sh @@ -87,7 +87,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From 6f76441a16086eff8739cad533e42429e3547ed9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 20:22:24 +0000 Subject: [PATCH 202/507] Update config.nix --- config.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config.nix b/config.nix index 655ddd2..78356e1 100644 --- a/config.nix +++ b/config.nix @@ -60,6 +60,7 @@ home = "/home/aaronh"; extraGroups = [ "wheel" "networkmanager" ]; isNormalUser = true; + hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; }; }; From 843f51eb962609cd1f4d27cfc10690b24a80f5dc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 20:23:56 +0000 Subject: [PATCH 203/507] Update config.nix --- config.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/config.nix b/config.nix index 78356e1..655ddd2 100644 --- a/config.nix +++ b/config.nix @@ -60,7 +60,6 @@ home = "/home/aaronh"; extraGroups = [ "wheel" "networkmanager" ]; isNormalUser = true; - hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; }; }; From a0a5dcba6fd850f84443b1828def3edb93b838d9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 21:06:36 +0000 Subject: [PATCH 204/507] Update config.nix --- config.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/config.nix b/config.nix index 655ddd2..78356e1 100644 --- a/config.nix +++ b/config.nix @@ -60,6 +60,7 @@ home = "/home/aaronh"; extraGroups = [ "wheel" "networkmanager" ]; isNormalUser = true; + hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; }; }; From e6406957cb7fe0077873475a8a5b354d509f82f9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 21 May 2022 21:07:57 +0000 Subject: [PATCH 205/507] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index b858aaf..46d5a27 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,12 @@ 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 +``` + ## Get Started Prerequisites: From 02ff6cc4a7b7225f46bdfefa6b9eec4e221b1e25 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 22 May 2022 03:47:34 +0000 Subject: [PATCH 206/507] Update install.sh --- install.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/install.sh b/install.sh index 00bff76..c9e89c6 100644 --- a/install.sh +++ b/install.sh @@ -43,6 +43,10 @@ echo "" echo "Which is the root partition?" read rootName +echo "" +echo "Which is your username?" +read userName + # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName @@ -89,6 +93,9 @@ sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +sed -i 's/aaronh/$userName/g' /mnt/etc/configuration.nix +sed -i 's/home/aaronh/home/$userName/g' /mnt/etc/configuration.nix + # Install sudo nixos-install From 53b223bfa52f451f8909394c3fdcf4095e7d4e5c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 22 May 2022 03:50:07 +0000 Subject: [PATCH 207/507] Update install.sh --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index c9e89c6..c121f56 100644 --- a/install.sh +++ b/install.sh @@ -46,6 +46,7 @@ read rootName echo "" echo "Which is your username?" read userName +echo "" # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName From ff72f6fac825bbd113f6754d86fc4ae11d6df382 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 22 May 2022 03:53:18 +0000 Subject: [PATCH 208/507] Update install.sh --- install.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index c121f56..a581503 100644 --- a/install.sh +++ b/install.sh @@ -94,12 +94,13 @@ sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ -sed -i 's/aaronh/$userName/g' /mnt/etc/configuration.nix -sed -i 's/home/aaronh/home/$userName/g' /mnt/etc/configuration.nix - # Install sudo nixos-install +# Replacing username +sed -i 's/aaronh/$userName/g' /mnt/etc/configuration.nix +sed -i 's/home/aaronh/home/$userName/g' /mnt/etc/configuration.nix + # Start Setup section # sudo -i # curl https://gitlab.com/ahoneybun/nynx-installer/-/raw/main/setup.sh > /mnt/setup.sh @@ -113,6 +114,3 @@ sudo nixos-install # Removed install script. rm install.sh - -# Remove setup script -# rm setup.sh From b6504ab7b6d93fff3fd06bfbe0c5285aa8aaca52 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 22 May 2022 03:55:20 +0000 Subject: [PATCH 209/507] Update config.nix --- config.nix | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/config.nix b/config.nix index 78356e1..355f9c9 100644 --- a/config.nix +++ b/config.nix @@ -53,16 +53,12 @@ services.fwupd.enable = true; # Define user accounts - users.extraUsers = - { - aaronh = - { - home = "/home/aaronh"; - extraGroups = [ "wheel" "networkmanager" ]; - isNormalUser = true; - hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; - }; - }; + users.extraUsers.aaronh = { + home = "/home/aaronh"; + extraGroups = [ "wheel" "networkmanager" ]; + isNormalUser = true; + hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; + }; # Install some packages environment.systemPackages = From 1b799fc5a6d2633d42ec0cc25eabf01f28321575 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 22 May 2022 04:08:04 +0000 Subject: [PATCH 210/507] Update install.sh --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index a581503..794f4ef 100644 --- a/install.sh +++ b/install.sh @@ -94,13 +94,13 @@ sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ -# Install -sudo nixos-install - # Replacing username sed -i 's/aaronh/$userName/g' /mnt/etc/configuration.nix sed -i 's/home/aaronh/home/$userName/g' /mnt/etc/configuration.nix +# Install +sudo nixos-install + # Start Setup section # sudo -i # curl https://gitlab.com/ahoneybun/nynx-installer/-/raw/main/setup.sh > /mnt/setup.sh From 523e854cc8e1879cbb3fc43cffb287d678c52c13 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 22 May 2022 04:08:54 +0000 Subject: [PATCH 211/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 794f4ef..bedb216 100644 --- a/install.sh +++ b/install.sh @@ -95,8 +95,8 @@ sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Replacing username -sed -i 's/aaronh/$userName/g' /mnt/etc/configuration.nix -sed -i 's/home/aaronh/home/$userName/g' /mnt/etc/configuration.nix +sudo sed -i 's/aaronh/$userName/g' /mnt/etc/configuration.nix +sudo sed -i 's/home/aaronh/home/$userName/g' /mnt/etc/configuration.nix # Install sudo nixos-install From 476c35a560ac410a84ccf7603cc4c134dc539726 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 23 May 2022 01:32:25 +0000 Subject: [PATCH 212/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index bedb216..484e557 100644 --- a/install.sh +++ b/install.sh @@ -95,8 +95,8 @@ sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Replacing username -sudo sed -i 's/aaronh/$userName/g' /mnt/etc/configuration.nix -sudo sed -i 's/home/aaronh/home/$userName/g' /mnt/etc/configuration.nix +sudo sed -i 's/aaronh/$userName/g' /mnt/etc/nixos/configuration.nix +sudo sed -i 's/home/aaronh/home/$userName/g' /mnt/etc/nixos/configuration.nix # Install sudo nixos-install From e12717f2f3492286a29e74dcb70f621d2d44aa2c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 23 May 2022 01:38:37 +0000 Subject: [PATCH 213/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 484e557..9792132 100644 --- a/install.sh +++ b/install.sh @@ -95,8 +95,8 @@ sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Replacing username -sudo sed -i 's/aaronh/$userName/g' /mnt/etc/nixos/configuration.nix -sudo sed -i 's/home/aaronh/home/$userName/g' /mnt/etc/nixos/configuration.nix +sudo sed -i "s/aaronh/$userName/g" /mnt/etc/nixos/configuration.nix +sudo sed -i "s/home/aaronh/home/$userName/g" /mnt/etc/nixos/configuration.nix # Install sudo nixos-install From 8500a002c1c34f976fe6a4556c61d873f6718259 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 23 May 2022 14:00:30 +0000 Subject: [PATCH 214/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 9792132..1559872 100644 --- a/install.sh +++ b/install.sh @@ -96,7 +96,7 @@ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configu # Replacing username sudo sed -i "s/aaronh/$userName/g" /mnt/etc/nixos/configuration.nix -sudo sed -i "s/home/aaronh/home/$userName/g" /mnt/etc/nixos/configuration.nix +sudo sed -i "s/\/home\/aaronh/\/home\/$userName/g" /mnt/etc/nixos/configuration.nix # Install sudo nixos-install From d45b4da6de0ae58b7401a09f68d0620a7fc1d282 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 24 May 2022 23:03:35 +0000 Subject: [PATCH 215/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 1559872..6f45e29 100644 --- a/install.sh +++ b/install.sh @@ -60,7 +60,7 @@ sudo cryptsetup luksOpen $rootName crypt-root sudo pvcreate /dev/mapper/crypt-root sudo vgcreate lvm /dev/mapper/crypt-root -sudo lvcreate -L "$ramTotal"G -n swap lvm +sudo lvcreate -L 4G -n swap lvm sudo lvcreate -l '100%FREE' -n root lvm sudo cryptsetup config $rootName --label luks From ba86573473ecbc32ed3c2f6a71ec417ca3faa1a7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 24 May 2022 23:14:49 +0000 Subject: [PATCH 216/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 6f45e29..1559872 100644 --- a/install.sh +++ b/install.sh @@ -60,7 +60,7 @@ sudo cryptsetup luksOpen $rootName crypt-root sudo pvcreate /dev/mapper/crypt-root sudo vgcreate lvm /dev/mapper/crypt-root -sudo lvcreate -L 4G -n swap lvm +sudo lvcreate -L "$ramTotal"G -n swap lvm sudo lvcreate -l '100%FREE' -n root lvm sudo cryptsetup config $rootName --label luks From 8fdbfb297181b67901b90492044eda23ed6384e1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:23:21 +0000 Subject: [PATCH 217/507] removing custom username --- install.sh | 9 --------- 1 file changed, 9 deletions(-) diff --git a/install.sh b/install.sh index 1559872..493292a 100644 --- a/install.sh +++ b/install.sh @@ -43,11 +43,6 @@ echo "" echo "Which is the root partition?" read rootName -echo "" -echo "Which is your username?" -read userName -echo "" - # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName @@ -94,10 +89,6 @@ sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ -# Replacing username -sudo sed -i "s/aaronh/$userName/g" /mnt/etc/nixos/configuration.nix -sudo sed -i "s/\/home\/aaronh/\/home\/$userName/g" /mnt/etc/nixos/configuration.nix - # Install sudo nixos-install From d724ef887454ef40a504174bf33ba9ea8d265e33 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:26:01 +0000 Subject: [PATCH 218/507] Simplify custom configuration file --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 493292a..b15f30b 100644 --- a/install.sh +++ b/install.sh @@ -87,7 +87,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/config.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +sudo curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > /mnt/etc/nixos/configuration.nix # Install sudo nixos-install From 669a096167c8260e6558ccd9bb548c1140c9e11c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:27:32 +0000 Subject: [PATCH 219/507] Add new file --- configuration.nix | 107 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 configuration.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..355f9c9 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,107 @@ +{ config, pkgs, ... }: + +{ + # Import other configuration modules + # (hardware-configuration.nix is autogenerated upon installation) + # paths in nix expressions are always relative the file which defines them + imports = + [ + ./hardware-configuration.nix + ]; + + boot.loader = { + systemd-boot.enable = true; + }; + + boot.initrd.luks.devices = { + crypt-root = { + device = "/dev/disk/by-label/luks"; + preLVM = true; + }; + }; + + # Allow Unfree + nixpkgs.config.allowUnfree = true; + + # Enable 32 Bit libraries for applications like Steam + hardware.opengl.driSupport32Bit = true; + + # Name your host machine + networking.hostName = "NixOS"; + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "America/Denver"; + + # Enter keyboard layout + services.xserver.layout = "us"; + + # Enable Flatpak + xdg = { + portal = { + enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-wlr + xdg-desktop-portal-kde + ]; + }; + }; + + services.flatpak.enable = true; + + # Enable fwupd + services.fwupd.enable = true; + + # Define user accounts + users.extraUsers.aaronh = { + home = "/home/aaronh"; + extraGroups = [ "wheel" "networkmanager" ]; + isNormalUser = true; + hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; + }; + + # Install some packages + environment.systemPackages = + with pkgs; + [ + firefox + fish + flatpak + git + libsForQt5.bismuth + libsForQt5.kde-gtk-config + libsForQt5.plasma-nm + libsForQt5.plasma-pa + libsForQt5.sddm + steam + thunderbird + ]; + + # Enable the OpenSSH daemon + services.openssh.enable = true; + + # Plasma + services.xserver.enable = true; + services.xserver.displayManager.sddm.enable = true; + services.xserver.desktopManager.plasma5.enable = true; + + # Enable Pipewire + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + # Enable Bluetooth + hardware.bluetooth.enable = true; + + # Enable CUPS + services.printing.enable = true; + + # System + system.autoUpgrade.enable = true; + system.autoUpgrade.allowReboot = true; + +} From f4ec76840d5abe5191d15212dedb59c6bd6c0a79 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:29:29 +0000 Subject: [PATCH 220/507] Add new file --- plasma.nix | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 plasma.nix diff --git a/plasma.nix b/plasma.nix new file mode 100644 index 0000000..6ca9ab0 --- /dev/null +++ b/plasma.nix @@ -0,0 +1,9 @@ +{ config, pkgs, ... }: + +{ + # Plasma + services.xserver.enable = true; + services.xserver.displayManager.sddm.enable = true; + services.xserver.desktopManager.plasma5.enable = true; + +} From e8e084d1d93189ef198f2f430acea2aa3abcdc36 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:33:52 +0000 Subject: [PATCH 221/507] Update plasma.nix --- plasma.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plasma.nix b/plasma.nix index 6ca9ab0..d102fcf 100644 --- a/plasma.nix +++ b/plasma.nix @@ -6,4 +6,15 @@ services.xserver.displayManager.sddm.enable = true; services.xserver.desktopManager.plasma5.enable = true; + + # Install some packages + environment.systemPackages = + with pkgs; + [ + libsForQt5.bismuth + libsForQt5.kde-gtk-config + libsForQt5.plasma-nm + libsForQt5.plasma-pa + libsForQt5.sddm + ]; } From b8a6ae76844aed20465b9ee59891d6e0b7e5e7f5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:34:30 +0000 Subject: [PATCH 222/507] Update configuration.nix --- configuration.nix | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/configuration.nix b/configuration.nix index 355f9c9..f1b0fad 100644 --- a/configuration.nix +++ b/configuration.nix @@ -7,6 +7,7 @@ imports = [ ./hardware-configuration.nix + ./plasma.nix ]; boot.loader = { @@ -20,12 +21,6 @@ }; }; - # Allow Unfree - nixpkgs.config.allowUnfree = true; - - # Enable 32 Bit libraries for applications like Steam - hardware.opengl.driSupport32Bit = true; - # Name your host machine networking.hostName = "NixOS"; networking.networkmanager.enable = true; @@ -68,22 +63,12 @@ fish flatpak git - libsForQt5.bismuth - libsForQt5.kde-gtk-config - libsForQt5.plasma-nm - libsForQt5.plasma-pa - libsForQt5.sddm steam thunderbird ]; # Enable the OpenSSH daemon services.openssh.enable = true; - - # Plasma - services.xserver.enable = true; - services.xserver.displayManager.sddm.enable = true; - services.xserver.desktopManager.plasma5.enable = true; # Enable Pipewire security.rtkit.enable = true; From cd6e1a571a4301be638632b45ac8edb5c12397e1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:34:50 +0000 Subject: [PATCH 223/507] Update plasma.nix --- plasma.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plasma.nix b/plasma.nix index d102fcf..165a398 100644 --- a/plasma.nix +++ b/plasma.nix @@ -1,12 +1,17 @@ { config, pkgs, ... }: { + # Allow Unfree + nixpkgs.config.allowUnfree = true; + + # Enable 32 Bit libraries for applications like Steam + hardware.opengl.driSupport32Bit = true; + # Plasma services.xserver.enable = true; services.xserver.displayManager.sddm.enable = true; services.xserver.desktopManager.plasma5.enable = true; - # Install some packages environment.systemPackages = with pkgs; From c28bcfb2bbc311bbb3853549ad6a259b4e082f60 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:35:36 +0000 Subject: [PATCH 224/507] Update install.sh --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index b15f30b..35e0ef8 100644 --- a/install.sh +++ b/install.sh @@ -87,6 +87,7 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt +sudo curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/plasma.nix > /mnt/etc/nixos/plasma.nix sudo curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > /mnt/etc/nixos/configuration.nix # Install From 26692591e9433370cbe59267cf2042ab133b1967 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:44:56 +0000 Subject: [PATCH 225/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 35e0ef8..0fba9b7 100644 --- a/install.sh +++ b/install.sh @@ -75,10 +75,10 @@ sudo btrfs subvolume create /mnt/@home sudo umount /mnt # Mount the subvolumes. -sudo mount -o noatime,commit=120,compress=zstd:10,space_cache,subvol=@ /dev/lvm/root /mnt +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,space_cache,subvol=@home /dev/lvm/root /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/ From 7617906a17c1f0f6c664f83f31178d18af40ec71 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:48:06 +0000 Subject: [PATCH 226/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 0fba9b7..37f3420 100644 --- a/install.sh +++ b/install.sh @@ -87,8 +87,8 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -sudo curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/plasma.nix > /mnt/etc/nixos/plasma.nix -sudo curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > /mnt/etc/nixos/configuration.nix +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/split-config/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/split-config/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From 659730d4fa0736f6dff31a8a72751c617153813e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 13:58:09 +0000 Subject: [PATCH 227/507] Delete config.nix --- config.nix | 107 ----------------------------------------------------- 1 file changed, 107 deletions(-) delete mode 100644 config.nix diff --git a/config.nix b/config.nix deleted file mode 100644 index 355f9c9..0000000 --- a/config.nix +++ /dev/null @@ -1,107 +0,0 @@ -{ config, pkgs, ... }: - -{ - # Import other configuration modules - # (hardware-configuration.nix is autogenerated upon installation) - # paths in nix expressions are always relative the file which defines them - imports = - [ - ./hardware-configuration.nix - ]; - - boot.loader = { - systemd-boot.enable = true; - }; - - boot.initrd.luks.devices = { - crypt-root = { - device = "/dev/disk/by-label/luks"; - preLVM = true; - }; - }; - - # Allow Unfree - nixpkgs.config.allowUnfree = true; - - # Enable 32 Bit libraries for applications like Steam - hardware.opengl.driSupport32Bit = true; - - # Name your host machine - networking.hostName = "NixOS"; - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "America/Denver"; - - # Enter keyboard layout - services.xserver.layout = "us"; - - # Enable Flatpak - xdg = { - portal = { - enable = true; - extraPortals = with pkgs; [ - xdg-desktop-portal-wlr - xdg-desktop-portal-kde - ]; - }; - }; - - services.flatpak.enable = true; - - # Enable fwupd - services.fwupd.enable = true; - - # Define user accounts - users.extraUsers.aaronh = { - home = "/home/aaronh"; - extraGroups = [ "wheel" "networkmanager" ]; - isNormalUser = true; - hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; - }; - - # Install some packages - environment.systemPackages = - with pkgs; - [ - firefox - fish - flatpak - git - libsForQt5.bismuth - libsForQt5.kde-gtk-config - libsForQt5.plasma-nm - libsForQt5.plasma-pa - libsForQt5.sddm - steam - thunderbird - ]; - - # Enable the OpenSSH daemon - services.openssh.enable = true; - - # Plasma - services.xserver.enable = true; - services.xserver.displayManager.sddm.enable = true; - services.xserver.desktopManager.plasma5.enable = true; - - # Enable Pipewire - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; - - # Enable Bluetooth - hardware.bluetooth.enable = true; - - # Enable CUPS - services.printing.enable = true; - - # System - system.autoUpgrade.enable = true; - system.autoUpgrade.allowReboot = true; - -} From 43b8ccf89363f48cc6054bf5ba38e6698143016c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 15:34:05 +0000 Subject: [PATCH 228/507] Update configuration.nix --- configuration.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configuration.nix b/configuration.nix index f1b0fad..13f39bc 100644 --- a/configuration.nix +++ b/configuration.nix @@ -85,6 +85,9 @@ # Enable CUPS services.printing.enable = true; + # system stateVersion + system.stateVersion = "22.05"; + # System system.autoUpgrade.enable = true; system.autoUpgrade.allowReboot = true; From be9b8ecdaf7d94e465dbd0b7169203e483421586 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 15:34:28 +0000 Subject: [PATCH 229/507] Update configuration.nix --- configuration.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/configuration.nix b/configuration.nix index 13f39bc..39ebe77 100644 --- a/configuration.nix +++ b/configuration.nix @@ -85,10 +85,8 @@ # Enable CUPS services.printing.enable = true; - # system stateVersion - system.stateVersion = "22.05"; - # System + system.stateVersion = "22.05"; system.autoUpgrade.enable = true; system.autoUpgrade.allowReboot = true; From f6f03b75dab6f44d7ee949e8e4565b09d8ea2867 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 May 2022 17:27:30 +0000 Subject: [PATCH 230/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 37f3420..8c65104 100644 --- a/install.sh +++ b/install.sh @@ -87,8 +87,8 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/split-config/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/split-config/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Install sudo nixos-install From 170880ff44ae7643d23ce5269eeeade932b2bab1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 2 Jun 2022 15:04:35 +0000 Subject: [PATCH 231/507] Add Kate --- plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/plasma.nix b/plasma.nix index 165a398..7562be4 100644 --- a/plasma.nix +++ b/plasma.nix @@ -17,6 +17,7 @@ with pkgs; [ libsForQt5.bismuth + libsForQt5.kate libsForQt5.kde-gtk-config libsForQt5.plasma-nm libsForQt5.plasma-pa From cd4a6305254d3e04c2de44bdef49083e9814ea2b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 2 Jun 2022 18:33:09 +0000 Subject: [PATCH 232/507] Move unfree --- plasma.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/plasma.nix b/plasma.nix index 7562be4..e7d2d55 100644 --- a/plasma.nix +++ b/plasma.nix @@ -1,12 +1,6 @@ { config, pkgs, ... }: { - # Allow Unfree - nixpkgs.config.allowUnfree = true; - - # Enable 32 Bit libraries for applications like Steam - hardware.opengl.driSupport32Bit = true; - # Plasma services.xserver.enable = true; services.xserver.displayManager.sddm.enable = true; From 02686646fe291b3e872030acf157c5271cccd183 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 2 Jun 2022 18:33:30 +0000 Subject: [PATCH 233/507] Add Unfree --- configuration.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/configuration.nix b/configuration.nix index 39ebe77..68e80ca 100644 --- a/configuration.nix +++ b/configuration.nix @@ -85,6 +85,12 @@ # Enable CUPS services.printing.enable = true; + # Allow Unfree + nixpkgs.config.allowUnfree = true; + + # Enable 32 Bit libraries for applications like Steam + hardware.opengl.driSupport32Bit = true; + # System system.stateVersion = "22.05"; system.autoUpgrade.enable = true; From 6732eebab2e6a6062e2f2575003c7d2e6e405c5a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 2 Jun 2022 18:54:54 +0000 Subject: [PATCH 234/507] Add new file --- programs.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 programs.nix diff --git a/programs.nix b/programs.nix new file mode 100644 index 0000000..03e1048 --- /dev/null +++ b/programs.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + # virt-manager + virtualisation.libvirtd.enable = true; + + # Packages + environment.systemPackages = + with pkgs; + [ + virt-manager + ]; + +} From ba80b66a22d5c6b35db2576f0681c84634efb865 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 2 Jun 2022 19:38:00 +0000 Subject: [PATCH 235/507] Update plasma.nix --- plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/plasma.nix b/plasma.nix index e7d2d55..f46d7ea 100644 --- a/plasma.nix +++ b/plasma.nix @@ -11,6 +11,7 @@ with pkgs; [ libsForQt5.bismuth + libsForQt5.full libsForQt5.kate libsForQt5.kde-gtk-config libsForQt5.plasma-nm From 1b27207134447dfa562cf5a1211ca260a92021c2 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 3 Jun 2022 01:51:01 +0000 Subject: [PATCH 236/507] Add KDE Connect --- plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/plasma.nix b/plasma.nix index f46d7ea..49076f4 100644 --- a/plasma.nix +++ b/plasma.nix @@ -13,6 +13,7 @@ libsForQt5.bismuth libsForQt5.full libsForQt5.kate + libsForQt5.kdeconnect-kde libsForQt5.kde-gtk-config libsForQt5.plasma-nm libsForQt5.plasma-pa From e577abd4f4e3c4ab527a99249dc51dcf7fb461d4 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 3 Jun 2022 01:53:58 +0000 Subject: [PATCH 237/507] Add Discord and Slack --- programs.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/programs.nix b/programs.nix index 03e1048..7e3dd29 100644 --- a/programs.nix +++ b/programs.nix @@ -8,6 +8,8 @@ environment.systemPackages = with pkgs; [ + discord + slack virt-manager ]; From 1c50c98b2c7a29dda936371e085bb1157ff052d6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 3 Jun 2022 12:57:30 +0000 Subject: [PATCH 238/507] Add Ark --- plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/plasma.nix b/plasma.nix index 49076f4..e2fe07a 100644 --- a/plasma.nix +++ b/plasma.nix @@ -10,6 +10,7 @@ environment.systemPackages = with pkgs; [ + libsForQt5.ark libsForQt5.bismuth libsForQt5.full libsForQt5.kate From aa3e009add77c14f426a09da69d72642919666f1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 5 Jun 2022 18:05:49 +0000 Subject: [PATCH 239/507] Update install.sh --- install.sh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 8c65104..ba582a2 100644 --- a/install.sh +++ b/install.sh @@ -43,6 +43,12 @@ echo "" echo "Which is the root partition?" read rootName +echo "" +echo "Do you want Hibernation?" +echo "1) Yes" +echo "2) No" +read hibState + # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName @@ -55,7 +61,18 @@ sudo cryptsetup luksOpen $rootName crypt-root sudo pvcreate /dev/mapper/crypt-root sudo vgcreate lvm /dev/mapper/crypt-root -sudo lvcreate -L "$ramTotal"G -n swap lvm +if [ $hibState = 1 ]; then + sudo lvcreate -L "$ramTotal"G -n swap lvm + +else + +if [ $hibState = 2 ]; then + sudo lvcreate -L 4G -n swap lvm + +fi + +fi + sudo lvcreate -l '100%FREE' -n root lvm sudo cryptsetup config $rootName --label luks From 122765f95a315ada74b1be58108c9902e7d9b528 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 5 Jun 2022 21:50:51 +0000 Subject: [PATCH 240/507] Update install.sh --- install.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/install.sh b/install.sh index ba582a2..fe46a50 100644 --- a/install.sh +++ b/install.sh @@ -80,17 +80,12 @@ 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 From 42483ab941b266ffacfca6c78aa16dcb110e7a16 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 5 Jun 2022 21:58:37 +0000 Subject: [PATCH 241/507] Revert "Update install.sh" This reverts commit 122765f95a315ada74b1be58108c9902e7d9b528 --- install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install.sh b/install.sh index fe46a50..ba582a2 100644 --- a/install.sh +++ b/install.sh @@ -80,12 +80,17 @@ 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 From 7c4c8dc1e48d8edc6367c74d8a68eca6cf47cd66 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 5 Jun 2022 22:18:12 +0000 Subject: [PATCH 242/507] Update install.sh --- install.sh | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/install.sh b/install.sh index ba582a2..b4ca0b3 100644 --- a/install.sh +++ b/install.sh @@ -98,8 +98,7 @@ 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 +sudo mount --mkdir $efiName /mnt/boot/ # Generate Nix configuration sudo nixos-generate-config --root /mnt @@ -110,10 +109,6 @@ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > # Install sudo nixos-install -# Start Setup section -# sudo -i -# curl https://gitlab.com/ahoneybun/nynx-installer/-/raw/main/setup.sh > /mnt/setup.sh - # # Enter into installed OS # mount -o bind /dev /mnt/dev # mount -o bind /proc /mnt/proc From 2d5f9e8abd52d807fde0c9b7239c950bc6532add Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 5 Jun 2022 22:23:48 +0000 Subject: [PATCH 243/507] Revert "Update install.sh" This reverts commit 7c4c8dc1e48d8edc6367c74d8a68eca6cf47cd66 --- install.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index b4ca0b3..ba582a2 100644 --- a/install.sh +++ b/install.sh @@ -98,7 +98,8 @@ 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 mount --mkdir $efiName /mnt/boot/ +sudo mkdir /mnt/boot/ +sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt @@ -109,6 +110,10 @@ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > # Install sudo nixos-install +# Start Setup section +# sudo -i +# curl https://gitlab.com/ahoneybun/nynx-installer/-/raw/main/setup.sh > /mnt/setup.sh + # # Enter into installed OS # mount -o bind /dev /mnt/dev # mount -o bind /proc /mnt/proc From ea0c67f58f302ac24af27d0815e3be2c09818366 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 15:27:39 +0000 Subject: [PATCH 244/507] Update install.sh --- install.sh | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/install.sh b/install.sh index ba582a2..4b637f5 100644 --- a/install.sh +++ b/install.sh @@ -43,11 +43,11 @@ echo "" echo "Which is the root partition?" read rootName -echo "" -echo "Do you want Hibernation?" -echo "1) Yes" -echo "2) No" -read hibState +# echo "" +# echo "Do you want Hibernation?" +# echo "1) Yes" +# echo "2) No" +# read hibState # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName @@ -61,18 +61,19 @@ sudo cryptsetup luksOpen $rootName crypt-root sudo pvcreate /dev/mapper/crypt-root sudo vgcreate lvm /dev/mapper/crypt-root -if [ $hibState = 1 ]; then - sudo lvcreate -L "$ramTotal"G -n swap lvm +# if [ $hibState = 1 ]; then +# sudo lvcreate -L "$ramTotal"G -n swap lvm -else +# else -if [ $hibState = 2 ]; then - sudo lvcreate -L 4G -n swap lvm +# if [ $hibState = 2 ]; then +# sudo lvcreate -L 4G -n swap lvm -fi +# fi -fi +# fi +sudo lvcreate -L "$ramTotal"G -n swap lvm sudo lvcreate -l '100%FREE' -n root lvm sudo cryptsetup config $rootName --label luks From ca926a6da57722b5518e966b3c4bbacf8cafcbbc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 15:46:44 +0000 Subject: [PATCH 245/507] Update install.sh --- install.sh | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/install.sh b/install.sh index 4b637f5..ba582a2 100644 --- a/install.sh +++ b/install.sh @@ -43,11 +43,11 @@ echo "" echo "Which is the root partition?" read rootName -# echo "" -# echo "Do you want Hibernation?" -# echo "1) Yes" -# echo "2) No" -# read hibState +echo "" +echo "Do you want Hibernation?" +echo "1) Yes" +echo "2) No" +read hibState # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName @@ -61,19 +61,18 @@ sudo cryptsetup luksOpen $rootName crypt-root sudo pvcreate /dev/mapper/crypt-root sudo vgcreate lvm /dev/mapper/crypt-root -# if [ $hibState = 1 ]; then -# sudo lvcreate -L "$ramTotal"G -n swap lvm +if [ $hibState = 1 ]; then + sudo lvcreate -L "$ramTotal"G -n swap lvm -# else +else -# if [ $hibState = 2 ]; then -# sudo lvcreate -L 4G -n swap lvm +if [ $hibState = 2 ]; then + sudo lvcreate -L 4G -n swap lvm -# fi +fi -# fi +fi -sudo lvcreate -L "$ramTotal"G -n swap lvm sudo lvcreate -l '100%FREE' -n root lvm sudo cryptsetup config $rootName --label luks From 2a155bba1a30bcf0e01501c1d2376daa8161cdf1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 17:15:01 +0000 Subject: [PATCH 246/507] Update install.sh --- install.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index ba582a2..43eb0c9 100644 --- a/install.sh +++ b/install.sh @@ -101,12 +101,13 @@ sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@home /dev/lvm/root /mn sudo mkdir /mnt/boot/ sudo mount $efiName /mnt/boot -# Generate Nix configuration -sudo nixos-generate-config --root /mnt - +# Coping over my config files curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +# Generate Nix configuration +sudo nixos-generate-config --root /mnt + # Install sudo nixos-install From 7e06c2f66b277029e5e26bd5525dbd56adf753ca Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 17:15:27 +0000 Subject: [PATCH 247/507] Update install.sh --- install.sh | 7 ------- 1 file changed, 7 deletions(-) diff --git a/install.sh b/install.sh index 43eb0c9..0633331 100644 --- a/install.sh +++ b/install.sh @@ -115,12 +115,5 @@ sudo nixos-install # sudo -i # curl https://gitlab.com/ahoneybun/nynx-installer/-/raw/main/setup.sh > /mnt/setup.sh -# # Enter into installed OS -# mount -o bind /dev /mnt/dev -# mount -o bind /proc /mnt/proc -# mount -o bind /sys /mnt/sys -# chroot /mnt /nix/var/nix/profiles/system/activate -# chroot /mnt /run/current-system/sw/bin/sh setup.sh - # Removed install script. rm install.sh From 413ebdd22a1eabce4fef417a72b76e7d5eeb6cda Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 17:22:03 +0000 Subject: [PATCH 248/507] Update install.sh --- install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 0633331..a223d56 100644 --- a/install.sh +++ b/install.sh @@ -101,11 +101,14 @@ sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@home /dev/lvm/root /mn sudo mkdir /mnt/boot/ sudo mount $efiName /mnt/boot +# Generate Nix configuration +sudo nixos-generate-config --root /mnt + # Coping over my config files curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ -# Generate Nix configuration +# Generate Nix configuration again for UUID's for LVM sudo nixos-generate-config --root /mnt # Install From de6891e2ea5c45cfb8ffebad36cdd7aa44c99200 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 17:43:41 +0000 Subject: [PATCH 249/507] Not fixing the issue. --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index a223d56..8327282 100644 --- a/install.sh +++ b/install.sh @@ -109,7 +109,7 @@ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/plasma.nix > plasma. curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Generate Nix configuration again for UUID's for LVM -sudo nixos-generate-config --root /mnt +# sudo nixos-generate-config --root /mnt # Install sudo nixos-install From e5961603f0b3fb5729400d70004c850ef6def57b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 18:36:11 +0000 Subject: [PATCH 250/507] Update install.sh --- install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 8327282..c7c0959 100644 --- a/install.sh +++ b/install.sh @@ -75,7 +75,8 @@ fi sudo lvcreate -l '100%FREE' -n root lvm -sudo cryptsetup config $rootName --label luks +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 From eca76dce9d402f88d77450c9b12efa058310b2b7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 19:38:07 +0000 Subject: [PATCH 251/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index c7c0959..e13c755 100644 --- a/install.sh +++ b/install.sh @@ -109,8 +109,8 @@ sudo nixos-generate-config --root /mnt curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ -# Generate Nix configuration again for UUID's for LVM -# sudo nixos-generate-config --root /mnt +# Replace LUKS device with correct partition +sudo sed -i "s|/dev/disk/by-label/luks|$rootName|g" /mnt/etc/configuration.nix # Install sudo nixos-install From d0722306ed3100220ad4a4c94371438f52f63c94 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 19:44:20 +0000 Subject: [PATCH 252/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index e13c755..6924d96 100644 --- a/install.sh +++ b/install.sh @@ -110,7 +110,7 @@ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/plasma.nix > plasma. curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Replace LUKS device with correct partition -sudo sed -i "s|/dev/disk/by-label/luks|$rootName|g" /mnt/etc/configuration.nix +sudo sed -i "s|/dev/disk/by-label/luks|$rootName|g" /mnt/etc/nixos/configuration.nix # Install sudo nixos-install From 9e2997b17f7be84c0d618694a9ebb6c281d8e675 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 22:16:00 +0000 Subject: [PATCH 253/507] Add Kalendar --- plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/plasma.nix b/plasma.nix index e2fe07a..1bc9311 100644 --- a/plasma.nix +++ b/plasma.nix @@ -13,6 +13,7 @@ libsForQt5.ark libsForQt5.bismuth libsForQt5.full + libsForQt5.kalendar libsForQt5.kate libsForQt5.kdeconnect-kde libsForQt5.kde-gtk-config From 395387d13d28227677fd75f3ca92bd598612c57d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 22:42:13 +0000 Subject: [PATCH 254/507] Update README.md --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 46d5a27..23bf1d0 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,11 @@ At the core of this installer it does the following: - Installs Plasma - Installs needed packages +Files: + +- `configuration.nix` : This is the main file for the base system including some applications that I use +- `plasma.nix` : This file is for the desktop, login manager and other KDE applications + Tested on the following drives: - SATA - NVMe @@ -43,7 +48,7 @@ The following will happen: - 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. +- 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. From bb017d07b8beb8f8edef6802b9fa6770f6d86edb Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 22:52:48 +0000 Subject: [PATCH 255/507] Add restic --- configuration.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/configuration.nix b/configuration.nix index 68e80ca..2d758f1 100644 --- a/configuration.nix +++ b/configuration.nix @@ -65,6 +65,7 @@ git steam thunderbird + restic ]; # Enable the OpenSSH daemon From 7814bcaaf182c760475d1928eac5952d9cf4ab02 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 23:55:23 +0000 Subject: [PATCH 256/507] Add wget --- configuration.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/configuration.nix b/configuration.nix index 2d758f1..b897d08 100644 --- a/configuration.nix +++ b/configuration.nix @@ -66,6 +66,7 @@ steam thunderbird restic + wget ]; # Enable the OpenSSH daemon From 33776fcc173e029315775e9c6e1bf8a890e6d863 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 6 Jun 2022 23:57:38 +0000 Subject: [PATCH 257/507] Update configuration.nix --- configuration.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/configuration.nix b/configuration.nix index b897d08..9affff9 100644 --- a/configuration.nix +++ b/configuration.nix @@ -55,6 +55,12 @@ hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; }; + # Allow Unfree + nixpkgs.config.allowUnfree = true; + + # Enable 32 Bit libraries for applications like Steam + hardware.opengl.driSupport32Bit = true; + # Install some packages environment.systemPackages = with pkgs; @@ -87,12 +93,6 @@ # Enable CUPS services.printing.enable = true; - # Allow Unfree - nixpkgs.config.allowUnfree = true; - - # Enable 32 Bit libraries for applications like Steam - hardware.opengl.driSupport32Bit = true; - # System system.stateVersion = "22.05"; system.autoUpgrade.enable = true; From 9d893bca2260308f93511cf16fba733914311bbc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 7 Jun 2022 00:02:19 +0000 Subject: [PATCH 258/507] Add programs.nix file --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index 6924d96..e6db3e4 100644 --- a/install.sh +++ b/install.sh @@ -107,6 +107,7 @@ sudo nixos-generate-config --root /mnt # Coping over my config files curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/programs.nix > programs.nix; sudo mv -f programs.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Replace LUKS device with correct partition From 4a77aa9a87d0d850e62c60eae0c53a7bbb62b127 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 7 Jun 2022 00:02:31 +0000 Subject: [PATCH 259/507] Add programs.nix file --- configuration.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/configuration.nix b/configuration.nix index 9affff9..fc61b43 100644 --- a/configuration.nix +++ b/configuration.nix @@ -8,6 +8,7 @@ [ ./hardware-configuration.nix ./plasma.nix + ./programs.nix ]; boot.loader = { From b0af609fd5231a0d673ce536772ce1feee9b5531 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 7 Jun 2022 16:20:43 +0000 Subject: [PATCH 260/507] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 23bf1d0..f685176 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Files: - `configuration.nix` : This is the main file for the base system including some applications that I use - `plasma.nix` : This file is for the desktop, login manager and other KDE applications +- `programs.nix` : This file adds applications like Slack, Discord and virt-manager including turning on the services Tested on the following drives: - SATA From cdfd830bd6d99cb3508f0c6a2190615703934abe Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 7 Jun 2022 17:41:46 -0600 Subject: [PATCH 261/507] Add config files for Plasma --- configs/kglobalshortcutsrc | 320 +++++++++++++++++++++++++++++++++++++ configs/kwinrc | 30 ++++ 2 files changed, 350 insertions(+) create mode 100644 configs/kglobalshortcutsrc create mode 100644 configs/kwinrc diff --git a/configs/kglobalshortcutsrc b/configs/kglobalshortcutsrc new file mode 100644 index 0000000..e508894 --- /dev/null +++ b/configs/kglobalshortcutsrc @@ -0,0 +1,320 @@ +[$Version] +update_info=bismuth_shortcuts_category.upd:bismuth-shortcuts-category,bismuth_shortcuts_from_kwin.upd:bismuth-shortcuts-from-kwin + +[ActivityManager] +_k_friendly_name=Activity Manager +switch-to-activity-cb92f5f8-5a3f-455f-b046-6c5c9e945edd=none,none,Switch to activity "Default" + +[KDE Keyboard Layout Switcher] +Switch to Next Keyboard Layout=Ctrl+Alt+K,none,Switch to Next Keyboard Layout +_k_friendly_name=Keyboard Layout Switcher + +[bismuth] +_k_friendly_name=Window Tiling +decrease_master_size=none,,Decrease Master Area Size +decrease_master_win_count=none,Meta+[,Decrease Master Area Window Count +decrease_window_height=none,Meta+Ctrl+K,Decrease Window Height +decrease_window_width=none,Meta+Ctrl+H,Decrease Window Width +focus_bottom_window=none,Meta+J,Focus Bottom Window +focus_left_window=none,Meta+H,Focus Left Window +focus_next_window=none,,Focus Next Window +focus_prev_window=none,,Focus Previous Window +focus_right_window=none,Meta+L,Focus Right Window +focus_upper_window=none,Meta+K,Focus Upper Window +increase_master_size=none,,Increase Master Area Size +increase_master_win_count=none,Meta+],Increase Master Area Window Count +increase_window_height=none,Meta+Ctrl+J,Increase Window Height +increase_window_width=none,Meta+Ctrl+L,Increase Window Width +move_window_to_bottom_pos=none,Meta+Shift+J,Move Window Down +move_window_to_left_pos=none,Meta+Shift+H,Move Window Left +move_window_to_next_pos=none,,Move Window to the Next Position +move_window_to_prev_pos=none,,Move Window to the Previous Position +move_window_to_right_pos=none,Meta+Shift+L,Move Window Right +move_window_to_upper_pos=none,Meta+Shift+K,Move Window Up +next_layout=none,Meta+\\\\,Switch to the Next Layout +prev_layout=none,Meta+|,Switch to the Previous Layout +push_window_to_master=none,Meta+Return,Push Active Window to Master Area +rotate=none,Meta+R,Rotate +rotate_part=none,Meta+Shift+R,Rotate Part +rotate_reverse=none,,Rotate (Reverse) +toggle_float_layout=none,Meta+Shift+F,Toggle Floating Layout +toggle_monocle_layout=none,Meta+M,Toggle Monocle Layout +toggle_quarter_layout=none,,Toggle Quarter Layout +toggle_spiral_layout=none,,Toggle Spiral Layout +toggle_spread_layout=none,,Toggle Spread Layout +toggle_stair_layout=none,,Toggle Stair Layout +toggle_three_column_layout=none,,Toggle Three Column Layout +toggle_tile_layout=none,Meta+T,Toggle Tile Layout +toggle_window_floating=none,Meta+F,Toggle Active Window Floating + +[kaccess] +Toggle Screen Reader On and Off=Meta+Alt+S,Meta+Alt+S,Toggle Screen Reader On and Off +_k_friendly_name=Accessibility + +[kcm_touchpad] +Disable Touchpad=Touchpad Off,Touchpad Off,Disable Touchpad +Enable Touchpad=Touchpad On,Touchpad On,Enable Touchpad +Toggle Touchpad=Touchpad Toggle,Touchpad Toggle,Toggle Touchpad +_k_friendly_name=Touchpad + +[kded5] +Show System Activity=Ctrl+Esc,Ctrl+Esc,Show System Activity +_k_friendly_name=KDE Daemon +display=Display\tMeta+P,Display\tMeta+P,Switch Display + +[khotkeys] +_k_friendly_name=Custom Shortcuts Service +{d03619b6-9b3c-48cc-9d9c-a2aadb485550}=,none,Search + +[kmix] +_k_friendly_name=Audio Volume +decrease_microphone_volume=Microphone Volume Down,Microphone Volume Down,Decrease Microphone Volume +decrease_volume=Volume Down,Volume Down,Decrease Volume +increase_microphone_volume=Microphone Volume Up,Microphone Volume Up,Increase Microphone Volume +increase_volume=Volume Up,Volume Up,Increase Volume +mic_mute=Microphone Mute\tMeta+Volume Mute,Microphone Mute\tMeta+Volume Mute,Mute Microphone +mute=Volume Mute,Volume Mute,Mute + +[ksmserver] +Halt Without Confirmation=,,Halt Without Confirmation +Lock Session=Meta+L\tCtrl+Alt+L\tScreensaver,Meta+L\tCtrl+Alt+L\tScreensaver,Lock Session +Log Out=Ctrl+Alt+Del,Ctrl+Alt+Del,Log Out +Log Out Without Confirmation=,,Log Out Without Confirmation +Reboot Without Confirmation=,,Reboot Without Confirmation +_k_friendly_name=Session Management + +[kwin] +Activate Window Demanding Attention=Ctrl+Alt+A,Ctrl+Alt+A,Activate Window Demanding Attention +Decrease Opacity=,,Decrease Opacity of Active Window by 5 % +Expose=Ctrl+F9,Ctrl+F9,Toggle Present Windows (Current desktop) +ExposeAll=Ctrl+F10\tLaunch (C),Ctrl+F10\tLaunch (C),Toggle Present Windows (All desktops) +ExposeClass=Ctrl+F7,Ctrl+F7,Toggle Present Windows (Window class) +Increase Opacity=,,Increase Opacity of Active Window by 5 % +Invert Screen Colors=,,Invert Screen Colors +Kill Window=Ctrl+Alt+Esc,Ctrl+Alt+Esc,Kill Window +MoveMouseToCenter=Meta+F6,Meta+F6,Move Mouse to Center +MoveMouseToFocus=Meta+F5,Meta+F5,Move Mouse to Focus +MoveZoomDown=none,none,Move Zoomed Area Downwards +MoveZoomLeft=none,none,Move Zoomed Area to Left +MoveZoomRight=none,none,Move Zoomed Area to Right +MoveZoomUp=none,none,Move Zoomed Area Upwards +Overview=Meta+D,Meta+W,Toggle Overview +Setup Window Shortcut=,,Setup Window Shortcut +Show Desktop=,Meta+D,Show Desktop +ShowDesktopGrid=Ctrl+F8,Ctrl+F8,Show Desktop Grid +Suspend Compositing=Alt+Shift+F12,Alt+Shift+F12,Suspend Compositing +Switch One Desktop Down=Meta+Ctrl+Down,Meta+Ctrl+Down,Switch One Desktop Down +Switch One Desktop Up=Meta+Ctrl+Up,Meta+Ctrl+Up,Switch One Desktop Up +Switch One Desktop to the Left=Meta+Ctrl+Left,Meta+Ctrl+Left,Switch One Desktop to the Left +Switch One Desktop to the Right=Meta+Ctrl+Right,Meta+Ctrl+Right,Switch One Desktop to the Right +Switch Window Down=Meta+Alt+Down,Meta+Alt+Down,Switch to Window Below +Switch Window Left=Meta+Alt+Left,Meta+Alt+Left,Switch to Window to the Left +Switch Window Right=Meta+Alt+Right,Meta+Alt+Right,Switch to Window to the Right +Switch Window Up=Meta+Alt+Up,Meta+Alt+Up,Switch to Window Above +Switch to Desktop 1=Ctrl+F1,Ctrl+F1,Switch to Desktop 1 +Switch to Desktop 10=,,Switch to Desktop 10 +Switch to Desktop 11=,,Switch to Desktop 11 +Switch to Desktop 12=,,Switch to Desktop 12 +Switch to Desktop 13=,,Switch to Desktop 13 +Switch to Desktop 14=,,Switch to Desktop 14 +Switch to Desktop 15=,,Switch to Desktop 15 +Switch to Desktop 16=,,Switch to Desktop 16 +Switch to Desktop 17=,,Switch to Desktop 17 +Switch to Desktop 18=,,Switch to Desktop 18 +Switch to Desktop 19=,,Switch to Desktop 19 +Switch to Desktop 2=Ctrl+F2,Ctrl+F2,Switch to Desktop 2 +Switch to Desktop 20=,,Switch to Desktop 20 +Switch to Desktop 3=Ctrl+F3,Ctrl+F3,Switch to Desktop 3 +Switch to Desktop 4=Ctrl+F4,Ctrl+F4,Switch to Desktop 4 +Switch to Desktop 5=,,Switch to Desktop 5 +Switch to Desktop 6=,,Switch to Desktop 6 +Switch to Desktop 7=,,Switch to Desktop 7 +Switch to Desktop 8=,,Switch to Desktop 8 +Switch to Desktop 9=,,Switch to Desktop 9 +Switch to Next Desktop=,,Switch to Next Desktop +Switch to Next Screen=,,Switch to Next Screen +Switch to Previous Desktop=,,Switch to Previous Desktop +Switch to Previous Screen=,,Switch to Previous Screen +Switch to Screen 0=,,Switch to Screen 0 +Switch to Screen 1=,,Switch to Screen 1 +Switch to Screen 2=,,Switch to Screen 2 +Switch to Screen 3=,,Switch to Screen 3 +Switch to Screen 4=,,Switch to Screen 4 +Switch to Screen 5=,,Switch to Screen 5 +Switch to Screen 6=,,Switch to Screen 6 +Switch to Screen 7=,,Switch to Screen 7 +Toggle Night Color=none,none,Toggle Night Color +Toggle Window Raise/Lower=,,Toggle Window Raise/Lower +Walk Through Desktop List=,,Walk Through Desktop List +Walk Through Desktop List (Reverse)=,,Walk Through Desktop List (Reverse) +Walk Through Desktops=,,Walk Through Desktops +Walk Through Desktops (Reverse)=,,Walk Through Desktops (Reverse) +Walk Through Windows=Alt+Tab,Alt+Tab,Walk Through Windows +Walk Through Windows (Reverse)=Alt+Shift+Backtab,Alt+Shift+Backtab,Walk Through Windows (Reverse) +Walk Through Windows Alternative=,,Walk Through Windows Alternative +Walk Through Windows Alternative (Reverse)=,,Walk Through Windows Alternative (Reverse) +Walk Through Windows of Current Application=Alt+`,Alt+`,Walk Through Windows of Current Application +Walk Through Windows of Current Application (Reverse)=Alt+~,Alt+~,Walk Through Windows of Current Application (Reverse) +Walk Through Windows of Current Application Alternative=,,Walk Through Windows of Current Application Alternative +Walk Through Windows of Current Application Alternative (Reverse)=,,Walk Through Windows of Current Application Alternative (Reverse) +Window Above Other Windows=,,Keep Window Above Others +Window Below Other Windows=,,Keep Window Below Others +Window Close=Alt+F4,Alt+F4,Close Window +Window Fullscreen=,,Make Window Fullscreen +Window Grow Horizontal=,,Expand Window Horizontally +Window Grow Vertical=,,Expand Window Vertically +Window Lower=,,Lower Window +Window Maximize=Meta+PgUp,Meta+PgUp,Maximize Window +Window Maximize Horizontal=,,Maximize Window Horizontally +Window Maximize Vertical=,,Maximize Window Vertically +Window Minimize=Meta+PgDown,Meta+PgDown,Minimize Window +Window Move=,,Move Window +Window Move Center=,,Move Window to the Center +Window No Border=,,Hide Window Border +Window On All Desktops=,,Keep Window on All Desktops +Window One Desktop Down=Meta+Ctrl+Shift+Down,Meta+Ctrl+Shift+Down,Window One Desktop Down +Window One Desktop Up=Meta+Ctrl+Shift+Up,Meta+Ctrl+Shift+Up,Window One Desktop Up +Window One Desktop to the Left=Meta+Ctrl+Shift+Left,Meta+Ctrl+Shift+Left,Window One Desktop to the Left +Window One Desktop to the Right=Meta+Ctrl+Shift+Right,Meta+Ctrl+Shift+Right,Window One Desktop to the Right +Window Operations Menu=Alt+F3,Alt+F3,Window Operations Menu +Window Pack Down=,,Move Window Down +Window Pack Left=,,Move Window Left +Window Pack Right=,,Move Window Right +Window Pack Up=,,Move Window Up +Window Quick Tile Bottom=Meta+Down,Meta+Down,Quick Tile Window to the Bottom +Window Quick Tile Bottom Left=,,Quick Tile Window to the Bottom Left +Window Quick Tile Bottom Right=,,Quick Tile Window to the Bottom Right +Window Quick Tile Left=Meta+Left,Meta+Left,Quick Tile Window to the Left +Window Quick Tile Right=Meta+Right,Meta+Right,Quick Tile Window to the Right +Window Quick Tile Top=Meta+Up,Meta+Up,Quick Tile Window to the Top +Window Quick Tile Top Left=,,Quick Tile Window to the Top Left +Window Quick Tile Top Right=,,Quick Tile Window to the Top Right +Window Raise=,,Raise Window +Window Resize=,,Resize Window +Window Shade=,,Shade Window +Window Shrink Horizontal=,,Shrink Window Horizontally +Window Shrink Vertical=,,Shrink Window Vertically +Window to Desktop 1=,,Window to Desktop 1 +Window to Desktop 10=,,Window to Desktop 10 +Window to Desktop 11=,,Window to Desktop 11 +Window to Desktop 12=,,Window to Desktop 12 +Window to Desktop 13=,,Window to Desktop 13 +Window to Desktop 14=,,Window to Desktop 14 +Window to Desktop 15=,,Window to Desktop 15 +Window to Desktop 16=,,Window to Desktop 16 +Window to Desktop 17=,,Window to Desktop 17 +Window to Desktop 18=,,Window to Desktop 18 +Window to Desktop 19=,,Window to Desktop 19 +Window to Desktop 2=,,Window to Desktop 2 +Window to Desktop 20=,,Window to Desktop 20 +Window to Desktop 3=,,Window to Desktop 3 +Window to Desktop 4=,,Window to Desktop 4 +Window to Desktop 5=,,Window to Desktop 5 +Window to Desktop 6=,,Window to Desktop 6 +Window to Desktop 7=,,Window to Desktop 7 +Window to Desktop 8=,,Window to Desktop 8 +Window to Desktop 9=,,Window to Desktop 9 +Window to Next Desktop=,,Window to Next Desktop +Window to Next Screen=Meta+Shift+Right,Meta+Shift+Right,Window to Next Screen +Window to Previous Desktop=,,Window to Previous Desktop +Window to Previous Screen=Meta+Shift+Left,Meta+Shift+Left,Window to Previous Screen +Window to Screen 0=,,Window to Screen 0 +Window to Screen 1=,,Window to Screen 1 +Window to Screen 2=,,Window to Screen 2 +Window to Screen 3=,,Window to Screen 3 +Window to Screen 4=,,Window to Screen 4 +Window to Screen 5=,,Window to Screen 5 +Window to Screen 6=,,Window to Screen 6 +Window to Screen 7=,,Window to Screen 7 +_k_friendly_name=KWin +view_actual_size=Meta+0,Meta+0,Actual Size +view_zoom_in=Meta+=,Meta+=,Zoom In +view_zoom_out=Meta+-,Meta+-,Zoom Out + +[mediacontrol] +_k_friendly_name=Media Controller +mediavolumedown=,,Media volume down +mediavolumeup=,,Media volume up +nextmedia=Media Next,Media Next,Media playback next +pausemedia=Media Pause,Media Pause,Pause media playback +playmedia=,,Play media playback +playpausemedia=Media Play,Media Play,Play/Pause media playback +previousmedia=Media Previous,Media Previous,Media playback previous +stopmedia=Media Stop,Media Stop,Stop media playback + +[org.kde.dolphin.desktop] +_k_friendly_name=Dolphin +_launch=Meta+E,Meta+E,Dolphin + +[org.kde.krunner.desktop] +RunClipboard=Alt+Shift+F2,Alt+Shift+F2,Run command on clipboard contents +_k_friendly_name=KRunner +_launch=Alt+Space\tAlt+F2\tSearch,Alt+Space\tAlt+F2\tSearch,KRunner + +[org.kde.plasma.emojier.desktop] +_k_friendly_name=Emoji Selector +_launch=Meta+.,Meta+.,Emoji Selector + +[org.kde.spectacle.desktop] +ActiveWindowScreenShot=Meta+Print,Meta+Print,Capture Active Window +CurrentMonitorScreenShot=none,none,Capture Current Monitor +FullScreenScreenShot=Shift+Print,Shift+Print,Capture Entire Desktop +OpenWithoutScreenshot=none,none,Launch Spectacle without capturing +RectangularRegionScreenShot=Meta+Shift+Print,Meta+Shift+Print,Capture Rectangular Region +WindowUnderCursorScreenShot=Meta+Ctrl+Print,Meta+Ctrl+Print,Capture Window Under Cursor +_k_friendly_name=Spectacle +_launch=Print,Print,Launch Spectacle + +[org_kde_powerdevil] +Decrease Keyboard Brightness=Keyboard Brightness Down,Keyboard Brightness Down,Decrease Keyboard Brightness +Decrease Screen Brightness=Monitor Brightness Down,Monitor Brightness Down,Decrease Screen Brightness +Hibernate=Hibernate,Hibernate,Hibernate +Increase Keyboard Brightness=Keyboard Brightness Up,Keyboard Brightness Up,Increase Keyboard Brightness +Increase Screen Brightness=Monitor Brightness Up,Monitor Brightness Up,Increase Screen Brightness +PowerDown=Power Down,Power Down,Power Down +PowerOff=Power Off,Power Off,Power Off +Sleep=Sleep,Sleep,Suspend +Toggle Keyboard Backlight=Keyboard Light On/Off,Keyboard Light On/Off,Toggle Keyboard Backlight +Turn Off Screen=none,none,Turn Off Screen +_k_friendly_name=Power Management + +[plasmashell] +_k_friendly_name=Plasma +activate task manager entry 1=Meta+1,Meta+1,Activate Task Manager Entry 1 +activate task manager entry 10=,Meta+0,Activate Task Manager Entry 10 +activate task manager entry 2=Meta+2,Meta+2,Activate Task Manager Entry 2 +activate task manager entry 3=Meta+3,Meta+3,Activate Task Manager Entry 3 +activate task manager entry 4=Meta+4,Meta+4,Activate Task Manager Entry 4 +activate task manager entry 5=Meta+5,Meta+5,Activate Task Manager Entry 5 +activate task manager entry 6=Meta+6,Meta+6,Activate Task Manager Entry 6 +activate task manager entry 7=Meta+7,Meta+7,Activate Task Manager Entry 7 +activate task manager entry 8=Meta+8,Meta+8,Activate Task Manager Entry 8 +activate task manager entry 9=Meta+9,Meta+9,Activate Task Manager Entry 9 +activate widget 25=,none,Activate Application Launcher Widget +activate widget 3=Alt+F1,none,Activate Application Launcher Widget +activate widget 47=,none,Activate Application Launcher Widget +clear-history=,,Clear Clipboard History +clipboard_action=Ctrl+Alt+X,Ctrl+Alt+X,Enable Clipboard Actions +cycleNextAction=,,Next History Item +cyclePrevAction=,,Previous History Item +edit_clipboard=,,Edit Contents… +manage activities=Meta+Q,Meta+Q,Show Activity Switcher +next activity=Meta+Tab,none,Walk through activities +previous activity=Meta+Shift+Tab,none,Walk through activities (Reverse) +repeat_action=Ctrl+Alt+R,Ctrl+Alt+R,Manually Invoke Action on Current Clipboard +show dashboard=Ctrl+F12,Ctrl+F12,Show Desktop +show-barcode=,,Show Barcode… +show-on-mouse-pos=Meta+V,Meta+V,Open Klipper at Mouse Position +stop current activity=Meta+S,Meta+S,Stop Current Activity +switch to next activity=,,Switch to Next Activity +switch to previous activity=,,Switch to Previous Activity +toggle do not disturb=,,Toggle do not disturb + +[systemsettings.desktop] +_k_friendly_name=System Settings +_launch=Tools,Tools,System Settings +kcm-kscreen=none,none,Display Configuration +kcm-lookandfeel=none,none,Global Theme +kcm-users=none,none,Users +powerdevilprofilesconfig=none,none,Energy Saving +screenlocker=none,none,Screen Locking diff --git a/configs/kwinrc b/configs/kwinrc new file mode 100644 index 0000000..e4ea400 --- /dev/null +++ b/configs/kwinrc @@ -0,0 +1,30 @@ +[$Version] +update_info=kwin.upd:replace-scalein-with-scale,kwin.upd:port-minimizeanimation-effect-to-js,kwin.upd:port-scale-effect-to-js,kwin.upd:port-dimscreen-effect-to-js,kwin.upd:auto-bordersize,kwin.upd:make-translucency-effect-disabled-by-default,kwin.upd:enable-scale-effect-by-default,bismuth_new_logger.upd:bismuth-new-logger,kwin.upd:desktop-grid-click-behavior,kwin.upd:no-swap-encourage,kwin.upd:remove-flip-switch-effect,kwin.upd:remove-cover-switch-effect,kwin.upd:remove-cubeslide-effect,kwin.upd:remove-xrender-backend + +[Compositing] +OpenGLIsUnsafe=false + +[Desktops] +Id_1=f33e29de-0262-4cfb-b3d9-5aa905baf5e0 +Id_2=1c2993a9-ce62-45a3-83ab-67ba7d607ee6 +Id_3=76e3ed30-4a0f-450a-a370-e76f8081cc27 +Id_4=8f16d201-c8bd-4d57-801f-fce923d6cf61 +Name_2=Comms +Name_3=Gaming +Name_4=Music +Number=4 +Rows=2 + +[ModifierOnlyShortcuts] +Meta=org.kde.krunner,/App,,toggleDisplay + +[Plugins] +bismuthEnabled=true +overviewEnabled=true + +[Script-bismuth] +screenGapBottom=5 +screenGapLeft=5 +screenGapRight=5 +screenGapTop=5 +tileLayoutGap=5 From d386d2cde29aa37bb010890a217c1a38ffbec24d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 8 Jun 2022 00:48:50 +0000 Subject: [PATCH 262/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f685176..73c30ed 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ https://nixos.org/manual/nixos/stable/index.html#sec-installation-booting-networ ## Start the installer ``` -curl https://gitlab.com/ahoneybun/nixos-cli-installer/-/raw/main/install.sh > install.sh; sh install.sh +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh > install.sh; sh install.sh ``` The following will happen: From 4f9cc2cda3ee1af1e4d780e4454052f865cefd73 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 8 Jun 2022 14:45:38 +0000 Subject: [PATCH 263/507] LEMP starting file, just has working nginx so far. --- lemp.nix | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lemp.nix diff --git a/lemp.nix b/lemp.nix new file mode 100644 index 0000000..5577cf9 --- /dev/null +++ b/lemp.nix @@ -0,0 +1,31 @@ +{ config, pkgs, ... }: { + +services.nginx = { + enable = true; + virtualHosts."127.0.0.1" = { + root = "/var/www/blog"; + locations."~ \.php$".extraConfig = '' + fastcgi_pass unix:${config.services.phpfpm.pools.mypool.socket}; + fastcgi_index index.php; + ''; + }; +}; + +services.mysql = { + enable = true; + package = pkgs.mariadb; +}; + +services.phpfpm.pools.mypool = { + user = "nobody"; + settings = { + pm = "dynamic"; + "listen.owner" = config.services.nginx.user; + "pm.max_children" = 5; + "pm.start_servers" = 2; + "pm.min_spare_servers" = 1; + "pm.max_spare_servers" = 3; + "pm.max_requests" = 500; + }; + }; +} From 0800cba6b07d5f68b6770b8d081cecd391f7ebb6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 8 Jun 2022 14:57:37 +0000 Subject: [PATCH 264/507] Update lemp.nix --- lemp.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lemp.nix b/lemp.nix index 5577cf9..56bc176 100644 --- a/lemp.nix +++ b/lemp.nix @@ -3,7 +3,7 @@ services.nginx = { enable = true; virtualHosts."127.0.0.1" = { - root = "/var/www/blog"; + root = "/var/www/html"; locations."~ \.php$".extraConfig = '' fastcgi_pass unix:${config.services.phpfpm.pools.mypool.socket}; fastcgi_index index.php; From 47827cfaec368ac7796214d1657889de520499bc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 8 Jun 2022 17:35:04 +0000 Subject: [PATCH 265/507] Add user to adm group for firmware-manager software --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index fc61b43..7d69d78 100644 --- a/configuration.nix +++ b/configuration.nix @@ -51,7 +51,7 @@ # Define user accounts users.extraUsers.aaronh = { home = "/home/aaronh"; - extraGroups = [ "wheel" "networkmanager" ]; + extraGroups = [ "wheel" "networkmanager" "adm"]; isNormalUser = true; hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; }; From 396e8a1832e8d6eb90e9d433d969e1be9fffec65 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 8 Jun 2022 21:28:44 +0000 Subject: [PATCH 266/507] Update README.md --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 73c30ed..381c8c1 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,17 @@ At the core of this installer it does the following: - Installs Plasma - Installs needed packages -Files: +Nix files: - `configuration.nix` : This is the main file for the base system including some applications that I use - `plasma.nix` : This file is for the desktop, login manager and other KDE applications - `programs.nix` : This file adds applications like Slack, Discord and virt-manager including turning on the services +Plasma files: + +- `configs/kwinrc` : This has my setting for the Super key (Meta in Plasma) behavior +- `configs/kglobalshortcutsrc` : This has window control shortcuts like moving between Workspaces (Desktops in Plasma) + Tested on the following drives: - SATA - NVMe From 136b1e284df8a35cdc883ab8b5cdeed29c675ed7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 8 Jun 2022 21:32:28 +0000 Subject: [PATCH 267/507] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 381c8c1..5ca7fe1 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ This installer is named after my doggo Onyxia. At the core of this installer it does the following: - Partition the drive of your choice -- Installs a base of NixOS -- Installs Plasma -- Installs needed packages +- Installs a base of NixOS (`configuration.nix`) +- Installs Plasma (`plasma.nix`) +- Installs needed packages (`programs.nix`) Nix files: From a1d2985091bf44bae08e6f6c1aee313c7e9e3045 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 8 Jun 2022 21:36:02 +0000 Subject: [PATCH 268/507] Set fish by default --- programs.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/programs.nix b/programs.nix index 7e3dd29..ec927b3 100644 --- a/programs.nix +++ b/programs.nix @@ -13,4 +13,9 @@ virt-manager ]; + programs.fish.enable = true; + + users.users.aaronh = { + shell = pkgs.fish; + }; } From 163b15a554721d60d3274338c99f78f3879e0a1a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 11 Jun 2022 16:05:59 +0000 Subject: [PATCH 269/507] Add LibreOffice Fresh --- programs.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/programs.nix b/programs.nix index ec927b3..47e5804 100644 --- a/programs.nix +++ b/programs.nix @@ -9,6 +9,7 @@ with pkgs; [ discord + libreoffice-fresh slack virt-manager ]; From ce50b9011eab0551d407c3a7571244ebd281f278 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 11 Jun 2022 16:41:13 +0000 Subject: [PATCH 270/507] Add framework --- plasma.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/plasma.nix b/plasma.nix index 1bc9311..ed7bc18 100644 --- a/plasma.nix +++ b/plasma.nix @@ -17,6 +17,7 @@ libsForQt5.kate libsForQt5.kdeconnect-kde libsForQt5.kde-gtk-config + libsForQt5.plasma-framework libsForQt5.plasma-nm libsForQt5.plasma-pa libsForQt5.sddm From 0e8edcf035b11d0e40ee3e77db5628d9749e28f9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 11 Jun 2022 19:30:47 +0000 Subject: [PATCH 271/507] Adds unstable file for testing. --- unstable.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 unstable.nix diff --git a/unstable.nix b/unstable.nix new file mode 100644 index 0000000..669233f --- /dev/null +++ b/unstable.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ...}: + +let + unstable = import + (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/master) + # reuse the current configuration + { config = config.nixpkgs.config; }; +in +{ + environment.systemPackages = with pkgs; [ + unstable.protonvpn-cli + ]; +} From cf930bef19e848902fe756fec45fc886ed1c1ff7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 12 Jun 2022 13:46:26 +0000 Subject: [PATCH 272/507] Add LICENSE --- LICENSE | 339 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a8037d6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + Nyxi Installer + Copyright (C) 2022 Aaron Honeycutt + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. From 40d8c2dafcafd5e0aaaba8ccae311a8070a1cac0 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 12 Jun 2022 13:58:07 +0000 Subject: [PATCH 273/507] Uncomment label command as it may be causing issues. --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index e6db3e4..fb649d7 100644 --- a/install.sh +++ b/install.sh @@ -75,7 +75,7 @@ fi sudo lvcreate -l '100%FREE' -n root lvm -sudo btrfs filesystem label $rootName luks +# sudo btrfs filesystem label $rootName luks # sudo cryptsetup config $rootName --label luks sudo mkswap /dev/lvm/swap # swap partition From c57d6990837b6a8904705b6947b7cac16b61614c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 12 Jun 2022 14:36:51 +0000 Subject: [PATCH 274/507] Upload New File --- configs/krunnerrc | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 configs/krunnerrc diff --git a/configs/krunnerrc b/configs/krunnerrc new file mode 100644 index 0000000..bf739f7 --- /dev/null +++ b/configs/krunnerrc @@ -0,0 +1,2 @@ +[General] +FreeFloating=true From ac0794483c6efbadf4637cbb1e529db4516e4001 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 12 Jun 2022 14:54:21 +0000 Subject: [PATCH 275/507] Upload New File --- configs/kdeglobals | 151 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 configs/kdeglobals diff --git a/configs/kdeglobals b/configs/kdeglobals new file mode 100644 index 0000000..9f8ccca --- /dev/null +++ b/configs/kdeglobals @@ -0,0 +1,151 @@ +[$Version] +update_info=icons_remove_effects.upd:IconsRemoveEffects,style_widgetstyle_default_breeze.upd:StyleWidgetStyleDefaultBreeze,filepicker.upd:filepicker-remove-old-previews-entry,fonts_global.upd:Fonts_Global,fonts_global_toolbar.upd:Fonts_Global_Toolbar,kwin.upd:animation-speed + +[ColorEffects:Disabled] +ChangeSelectionColor= +Color=56,56,56 +ColorAmount=0 +ColorEffect=0 +ContrastAmount=0.65 +ContrastEffect=1 +Enable= +IntensityAmount=0.1 +IntensityEffect=2 + +[ColorEffects:Inactive] +ChangeSelectionColor=true +Color=112,111,110 +ColorAmount=0.025 +ColorEffect=2 +ContrastAmount=0.1 +ContrastEffect=2 +Enable=false +IntensityAmount=0 +IntensityEffect=0 + +[Colors:Button] +BackgroundAlternate=30,87,116 +BackgroundNormal=49,54,59 +DecorationFocus=61,174,233 +DecorationHover=61,174,233 +ForegroundActive=61,174,233 +ForegroundInactive=161,169,177 +ForegroundLink=29,153,243 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=252,252,252 +ForegroundPositive=39,174,96 +ForegroundVisited=155,89,182 + +[Colors:Complementary] +BackgroundAlternate=30,87,116 +BackgroundNormal=42,46,50 +DecorationFocus=61,174,233 +DecorationHover=61,174,233 +ForegroundActive=61,174,233 +ForegroundInactive=161,169,177 +ForegroundLink=29,153,243 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=252,252,252 +ForegroundPositive=39,174,96 +ForegroundVisited=155,89,182 + +[Colors:Header] +BackgroundAlternate=42,46,50 +BackgroundNormal=49,54,59 +DecorationFocus=61,174,233 +DecorationHover=61,174,233 +ForegroundActive=61,174,233 +ForegroundInactive=161,169,177 +ForegroundLink=29,153,243 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=252,252,252 +ForegroundPositive=39,174,96 +ForegroundVisited=155,89,182 + +[Colors:Header][Inactive] +BackgroundAlternate=49,54,59 +BackgroundNormal=42,46,50 +DecorationFocus=61,174,233 +DecorationHover=61,174,233 +ForegroundActive=61,174,233 +ForegroundInactive=161,169,177 +ForegroundLink=29,153,243 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=252,252,252 +ForegroundPositive=39,174,96 +ForegroundVisited=155,89,182 + +[Colors:Selection] +BackgroundAlternate=30,87,116 +BackgroundNormal=61,174,233 +DecorationFocus=61,174,233 +DecorationHover=61,174,233 +ForegroundActive=252,252,252 +ForegroundInactive=161,169,177 +ForegroundLink=253,188,75 +ForegroundNegative=176,55,69 +ForegroundNeutral=198,92,0 +ForegroundNormal=252,252,252 +ForegroundPositive=23,104,57 +ForegroundVisited=155,89,182 + +[Colors:Tooltip] +BackgroundAlternate=42,46,50 +BackgroundNormal=49,54,59 +DecorationFocus=61,174,233 +DecorationHover=61,174,233 +ForegroundActive=61,174,233 +ForegroundInactive=161,169,177 +ForegroundLink=29,153,243 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=252,252,252 +ForegroundPositive=39,174,96 +ForegroundVisited=155,89,182 + +[Colors:View] +BackgroundAlternate=35,38,41 +BackgroundNormal=27,30,32 +DecorationFocus=61,174,233 +DecorationHover=61,174,233 +ForegroundActive=61,174,233 +ForegroundInactive=161,169,177 +ForegroundLink=29,153,243 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=252,252,252 +ForegroundPositive=39,174,96 +ForegroundVisited=155,89,182 + +[Colors:Window] +BackgroundAlternate=49,54,59 +BackgroundNormal=42,46,50 +DecorationFocus=61,174,233 +DecorationHover=61,174,233 +ForegroundActive=61,174,233 +ForegroundInactive=161,169,177 +ForegroundLink=29,153,243 +ForegroundNegative=218,68,83 +ForegroundNeutral=246,116,0 +ForegroundNormal=252,252,252 +ForegroundPositive=39,174,96 +ForegroundVisited=155,89,182 + +[General] +BrowserApplication=firefox.desktop +ColorSchemeHash=d0b3d2da363261958945ede41bfed4e1744dd286 + +[KDE] +LookAndFeelPackage=org.kde.breezedark.desktop + +[WM] +activeBackground=49,54,59 +activeBlend=252,252,252 +activeForeground=252,252,252 +inactiveBackground=42,46,50 +inactiveBlend=161,169,177 +inactiveForeground=161,169,177 From 23ab83e1770ae9c95761dd61894ef588f54d3d52 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 12 Jun 2022 14:56:23 +0000 Subject: [PATCH 276/507] Add ProtonVPN GUI package --- unstable.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/unstable.nix b/unstable.nix index 669233f..c0b3f7b 100644 --- a/unstable.nix +++ b/unstable.nix @@ -9,5 +9,6 @@ in { environment.systemPackages = with pkgs; [ unstable.protonvpn-cli + unstable.protonvpn-gui ]; } From cd5b2a7c1aa16a2710afad102183a6d086e0791a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 12 Jun 2022 16:18:23 +0000 Subject: [PATCH 277/507] Wayland --- README.md | 7 ++----- plasma.nix | 2 ++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5ca7fe1..580b1d0 100644 --- a/README.md +++ b/README.md @@ -58,13 +58,10 @@ The following will happen: - Create a root partition in the LVM. - Install systemd-boot. -## After Installation ... - -... - ## Roadmap -- [ ] +- [ ] Change KWin shortcuts (Workspace changing) +- [ ] Change KRunner shortcut (User Super key [Meta] instead) # Possible Ideas diff --git a/plasma.nix b/plasma.nix index ed7bc18..68ee3fb 100644 --- a/plasma.nix +++ b/plasma.nix @@ -4,6 +4,8 @@ # Plasma services.xserver.enable = true; services.xserver.displayManager.sddm.enable = true; + services.xserver.displayManager.sddm.settings.Wayland.SessionDir = + "${pkgs.plasma5Packages.plasma-workspace}/share/wayland-sessions"; services.xserver.desktopManager.plasma5.enable = true; # Install some packages From 9e9cf0410e096280e4de257ddae26e920f095741 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 12 Jun 2022 16:44:26 +0000 Subject: [PATCH 278/507] Add VS Code --- programs.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/programs.nix b/programs.nix index 47e5804..6106b93 100644 --- a/programs.nix +++ b/programs.nix @@ -12,6 +12,7 @@ libreoffice-fresh slack virt-manager + vscode ]; programs.fish.enable = true; From c1d3078634a1c639d6015fbb433f92fa9993cb0c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 12 Jun 2022 16:54:09 +0000 Subject: [PATCH 279/507] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 580b1d0..6c6f81c 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ Plasma files: - `configs/kwinrc` : This has my setting for the Super key (Meta in Plasma) behavior - `configs/kglobalshortcutsrc` : This has window control shortcuts like moving between Workspaces (Desktops in Plasma) +- `configs/krunnerrc` : Sets KRunner to in the center of the screen when activated +- `configs/kdeglobals` : Sets the theme to Breeze Dark Tested on the following drives: - SATA @@ -60,8 +62,7 @@ The following will happen: ## Roadmap -- [ ] Change KWin shortcuts (Workspace changing) -- [ ] Change KRunner shortcut (User Super key [Meta] instead) +- [ ] # Possible Ideas From 717ff6b4243cfe1aa5a16dd644d6081e80140829 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 14 Jun 2022 12:54:16 +0000 Subject: [PATCH 280/507] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6c6f81c..99b62f2 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Nix files: - `configuration.nix` : This is the main file for the base system including some applications that I use - `plasma.nix` : This file is for the desktop, login manager and other KDE applications - `programs.nix` : This file adds applications like Slack, Discord and virt-manager including turning on the services +- `unstable.nix` : This file has the applications that need to be from unstable to work like ProtonVPN software Plasma files: From d6fdfedd00e3c6f9f19220a443f8965c4708995b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 14 Jun 2022 20:52:42 +0000 Subject: [PATCH 281/507] Add init nix file --- oryp6 | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 oryp6 diff --git a/oryp6 b/oryp6 new file mode 100644 index 0000000..c2544d9 --- /dev/null +++ b/oryp6 @@ -0,0 +1,11 @@ +{ config, pkgs, ... }: + +{ + # NVIDIA + services.xserver.videoDrivers = [ "nvidia" ]; + hardware.opengl.enable = true; + hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; + + # Allow Unfree + nixpkgs.config.allowUnfree = true; +} From ab30f02a5a6d28224d41ec306e7829afa3e8581e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 14 Jun 2022 20:53:06 +0000 Subject: [PATCH 282/507] Rename file --- oryp6 => oryp6.nix | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename oryp6 => oryp6.nix (100%) diff --git a/oryp6 b/oryp6.nix similarity index 100% rename from oryp6 rename to oryp6.nix From 00fef136c243d34ab3b7c397cf3ed70c87141c4f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 15 Jun 2022 17:33:21 +0000 Subject: [PATCH 283/507] Remove setup.sh as it is not needed --- install.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/install.sh b/install.sh index fb649d7..ef1146e 100644 --- a/install.sh +++ b/install.sh @@ -116,9 +116,5 @@ sudo sed -i "s|/dev/disk/by-label/luks|$rootName|g" /mnt/etc/nixos/configuration # Install sudo nixos-install -# Start Setup section -# sudo -i -# curl https://gitlab.com/ahoneybun/nynx-installer/-/raw/main/setup.sh > /mnt/setup.sh - # Removed install script. rm install.sh From 8d629a40c6bba84a22308f630aaee3a7edb91622 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 18 Jun 2022 08:48:11 -0600 Subject: [PATCH 284/507] Move lemp.nix to nix-configs repo --- lemp.nix | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 lemp.nix diff --git a/lemp.nix b/lemp.nix deleted file mode 100644 index 56bc176..0000000 --- a/lemp.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ config, pkgs, ... }: { - -services.nginx = { - enable = true; - virtualHosts."127.0.0.1" = { - root = "/var/www/html"; - locations."~ \.php$".extraConfig = '' - fastcgi_pass unix:${config.services.phpfpm.pools.mypool.socket}; - fastcgi_index index.php; - ''; - }; -}; - -services.mysql = { - enable = true; - package = pkgs.mariadb; -}; - -services.phpfpm.pools.mypool = { - user = "nobody"; - settings = { - pm = "dynamic"; - "listen.owner" = config.services.nginx.user; - "pm.max_children" = 5; - "pm.start_servers" = 2; - "pm.min_spare_servers" = 1; - "pm.max_spare_servers" = 3; - "pm.max_requests" = 500; - }; - }; -} From 5edcc12af58c395d11f306c307d180ed511c42df Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 18 Jun 2022 08:50:28 -0600 Subject: [PATCH 285/507] Move files into a sub folder to clean up a bit --- install.sh | 6 +++--- configuration.nix => nix-configs/configuration.nix | 0 oryp6.nix => nix-configs/oryp6.nix | 0 plasma.nix => nix-configs/plasma.nix | 0 programs.nix => nix-configs/programs.nix | 0 unstable.nix => nix-configs/unstable.nix | 0 6 files changed, 3 insertions(+), 3 deletions(-) rename configuration.nix => nix-configs/configuration.nix (100%) rename oryp6.nix => nix-configs/oryp6.nix (100%) rename plasma.nix => nix-configs/plasma.nix (100%) rename programs.nix => nix-configs/programs.nix (100%) rename unstable.nix => nix-configs/unstable.nix (100%) diff --git a/install.sh b/install.sh index ef1146e..dd6b632 100644 --- a/install.sh +++ b/install.sh @@ -106,9 +106,9 @@ sudo mount $efiName /mnt/boot sudo nixos-generate-config --root /mnt # Coping over my config files -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/programs.nix > programs.nix; sudo mv -f programs.nix /mnt/etc/nixos/ -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/nix-configs/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/nix-configs/programs.nix > programs.nix; sudo mv -f programs.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/nix-configs/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ # Replace LUKS device with correct partition sudo sed -i "s|/dev/disk/by-label/luks|$rootName|g" /mnt/etc/nixos/configuration.nix diff --git a/configuration.nix b/nix-configs/configuration.nix similarity index 100% rename from configuration.nix rename to nix-configs/configuration.nix diff --git a/oryp6.nix b/nix-configs/oryp6.nix similarity index 100% rename from oryp6.nix rename to nix-configs/oryp6.nix diff --git a/plasma.nix b/nix-configs/plasma.nix similarity index 100% rename from plasma.nix rename to nix-configs/plasma.nix diff --git a/programs.nix b/nix-configs/programs.nix similarity index 100% rename from programs.nix rename to nix-configs/programs.nix diff --git a/unstable.nix b/nix-configs/unstable.nix similarity index 100% rename from unstable.nix rename to nix-configs/unstable.nix From 0897390f7eceef718317ebb05c31a57de34f1ba5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 18 Jun 2022 14:51:13 +0000 Subject: [PATCH 286/507] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 99b62f2..cd10aeb 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,14 @@ At the core of this installer it does the following: - Installs Plasma (`plasma.nix`) - Installs needed packages (`programs.nix`) -Nix files: +Nix files: (nix-configs/) - `configuration.nix` : This is the main file for the base system including some applications that I use - `plasma.nix` : This file is for the desktop, login manager and other KDE applications - `programs.nix` : This file adds applications like Slack, Discord and virt-manager including turning on the services - `unstable.nix` : This file has the applications that need to be from unstable to work like ProtonVPN software -Plasma files: +Plasma files: (configs) - `configs/kwinrc` : This has my setting for the Super key (Meta in Plasma) behavior - `configs/kglobalshortcutsrc` : This has window control shortcuts like moving between Workspaces (Desktops in Plasma) From b03dd951fcc617c4ef59de19d0a0ca55cd8a8e66 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 18 Jun 2022 15:12:49 +0000 Subject: [PATCH 287/507] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cd10aeb..2e5b17d 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Nix files: (nix-configs/) - `configuration.nix` : This is the main file for the base system including some applications that I use - `plasma.nix` : This file is for the desktop, login manager and other KDE applications - `programs.nix` : This file adds applications like Slack, Discord and virt-manager including turning on the services +- `oryp6.nix` : This file is mainly for my System76 Oryx Pro (oryp6) to add and enable the NVIDIA driver from stable - `unstable.nix` : This file has the applications that need to be from unstable to work like ProtonVPN software Plasma files: (configs) From 0ce421de45ba7b11de1ab405e75ef4d309626625 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 12 Aug 2022 14:56:21 +0000 Subject: [PATCH 288/507] Add description for user --- nix-configs/configuration.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nix-configs/configuration.nix b/nix-configs/configuration.nix index 7d69d78..b5292e1 100644 --- a/nix-configs/configuration.nix +++ b/nix-configs/configuration.nix @@ -50,6 +50,7 @@ # Define user accounts users.extraUsers.aaronh = { + description = "Aaron Honeycutt"; home = "/home/aaronh"; extraGroups = [ "wheel" "networkmanager" "adm"]; isNormalUser = true; From afc764ba6e719479eada3436ea05e2c3c65b02b9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 21 Aug 2022 03:09:30 +0000 Subject: [PATCH 289/507] Add new file --- nix-configs/configuration-pi4b.nix | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 nix-configs/configuration-pi4b.nix diff --git a/nix-configs/configuration-pi4b.nix b/nix-configs/configuration-pi4b.nix new file mode 100644 index 0000000..a76f661 --- /dev/null +++ b/nix-configs/configuration-pi4b.nix @@ -0,0 +1,51 @@ +{ config, pkgs, lib, ... }: + +{ + # This configuration worked on 08-20-2022 nixos-unstable + # The image used https://hydra.nixos.org/build/188033711 + + boot = { + kernelPackages = pkgs.linuxPackages_rpi4; + tmpOnTmpfs = true; + initrd.availableKernelModules = [ "usbhid" "usb_storage" ]; + # ttyAMA0 is the serial console broken out to the GPIO + kernelParams = [ + "8250.nr_uarts=1" + "console=ttyAMA0,115200" + "console=tty1" + # A lot GUI programs need this, nearly all wayland applications + "cma=128M" + ]; + }; + + boot.loader.raspberryPi = { + enable = true; + version = 4; + }; + boot.loader.grub.enable = false; + + # Required for the Wireless firmware + hardware.enableRedistributableFirmware = true; + + networking = { + hostName = "nixos-raspi-4"; # Define your hostname. + networkmanager = { + enable = true; + }; + }; + + nix = { + autoOptimiseStore = true; + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + # Free up to 1GiB whenever there is less than 100MiB left. + extraOptions = '' + min-free = ${toString (100 * 1024 * 1024)} + max-free = ${toString (1024 * 1024 * 1024)} + ''; + }; + system.stateVersion = "20.09"; +} From ddee886e480c9eaa6fb2c09262fc209b4c789ba7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 21 Aug 2022 03:11:19 +0000 Subject: [PATCH 290/507] Update configuration-pi4b.nix --- nix-configs/configuration-pi4b.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix-configs/configuration-pi4b.nix b/nix-configs/configuration-pi4b.nix index a76f661..141f278 100644 --- a/nix-configs/configuration-pi4b.nix +++ b/nix-configs/configuration-pi4b.nix @@ -47,5 +47,5 @@ max-free = ${toString (1024 * 1024 * 1024)} ''; }; - system.stateVersion = "20.09"; + system.stateVersion = "22.11"; } From f719eb4aa830d8ff43ace8e6507b32c7148e788c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 21 Aug 2022 03:38:49 +0000 Subject: [PATCH 291/507] Update configuration-pi4b.nix --- nix-configs/configuration-pi4b.nix | 51 --------------------------- nix-configs/rpi4.nix | 56 ++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 51 deletions(-) delete mode 100644 nix-configs/configuration-pi4b.nix create mode 100644 nix-configs/rpi4.nix diff --git a/nix-configs/configuration-pi4b.nix b/nix-configs/configuration-pi4b.nix deleted file mode 100644 index 141f278..0000000 --- a/nix-configs/configuration-pi4b.nix +++ /dev/null @@ -1,51 +0,0 @@ -{ config, pkgs, lib, ... }: - -{ - # This configuration worked on 08-20-2022 nixos-unstable - # The image used https://hydra.nixos.org/build/188033711 - - boot = { - kernelPackages = pkgs.linuxPackages_rpi4; - tmpOnTmpfs = true; - initrd.availableKernelModules = [ "usbhid" "usb_storage" ]; - # ttyAMA0 is the serial console broken out to the GPIO - kernelParams = [ - "8250.nr_uarts=1" - "console=ttyAMA0,115200" - "console=tty1" - # A lot GUI programs need this, nearly all wayland applications - "cma=128M" - ]; - }; - - boot.loader.raspberryPi = { - enable = true; - version = 4; - }; - boot.loader.grub.enable = false; - - # Required for the Wireless firmware - hardware.enableRedistributableFirmware = true; - - networking = { - hostName = "nixos-raspi-4"; # Define your hostname. - networkmanager = { - enable = true; - }; - }; - - nix = { - autoOptimiseStore = true; - gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 30d"; - }; - # Free up to 1GiB whenever there is less than 100MiB left. - extraOptions = '' - min-free = ${toString (100 * 1024 * 1024)} - max-free = ${toString (1024 * 1024 * 1024)} - ''; - }; - system.stateVersion = "22.11"; -} diff --git a/nix-configs/rpi4.nix b/nix-configs/rpi4.nix new file mode 100644 index 0000000..1903f87 --- /dev/null +++ b/nix-configs/rpi4.nix @@ -0,0 +1,56 @@ +{ config, pkgs, lib, ... }: + +let + SSID = "Honeycutt-5G"; + SSIDpassword = "Frappe92"; + interface = "wlan0"; + hostname = "NixOS"; +in { + imports = ["${fetchTarball "https://github.com/NixOS/nixos-hardware/archive/936e4649098d6a5e0762058cb7687be1b2d90550.tar.gz" }/raspberry-pi/4"]; + + fileSystems = { + "/" = { + device = "/dev/disk/by-label/NIXOS_SD"; + fsType = "ext4"; + options = [ "noatime" ]; + }; + }; + + networking = { + hostName = "NixOS"; + networkmanager.enable = true; + + wireless = { + enable = true; + networks."${SSID}".psk = SSIDpassword; + interfaces = [ interface ]; + }; + }; + + # Set your time zone. + time.timeZone = "America/Denver"; + + environment.systemPackages = with pkgs; [ vim ]; + + services.openssh.enable = true; + + # Define user accounts + users.extraUsers.aaronh = { + description = "Aaron Honeycutt"; + home = "/home/aaronh"; + extraGroups = [ "wheel" "networkmanager" "adm"]; + isNormalUser = true; + hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; + }; + + # Enable GPU acceleration + hardware.raspberry-pi."4".fkms-3d.enable = true; + + services.xserver = { + enable = true; + displayManager.lightdm.enable = true; + desktopManager.xfce.enable = true; + }; + + hardware.pulseaudio.enable = true; +} From 57c1b7055d0192fec6f5760a43e542b0b841bf78 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 21 Aug 2022 17:30:56 -0600 Subject: [PATCH 292/507] Moved to https://gitlab.com/ahoneybun/dot-files repo --- configs/kdeglobals | 151 ----------------- configs/kglobalshortcutsrc | 320 ------------------------------------- configs/krunnerrc | 2 - configs/kwinrc | 30 ---- 4 files changed, 503 deletions(-) delete mode 100644 configs/kdeglobals delete mode 100644 configs/kglobalshortcutsrc delete mode 100644 configs/krunnerrc delete mode 100644 configs/kwinrc diff --git a/configs/kdeglobals b/configs/kdeglobals deleted file mode 100644 index 9f8ccca..0000000 --- a/configs/kdeglobals +++ /dev/null @@ -1,151 +0,0 @@ -[$Version] -update_info=icons_remove_effects.upd:IconsRemoveEffects,style_widgetstyle_default_breeze.upd:StyleWidgetStyleDefaultBreeze,filepicker.upd:filepicker-remove-old-previews-entry,fonts_global.upd:Fonts_Global,fonts_global_toolbar.upd:Fonts_Global_Toolbar,kwin.upd:animation-speed - -[ColorEffects:Disabled] -ChangeSelectionColor= -Color=56,56,56 -ColorAmount=0 -ColorEffect=0 -ContrastAmount=0.65 -ContrastEffect=1 -Enable= -IntensityAmount=0.1 -IntensityEffect=2 - -[ColorEffects:Inactive] -ChangeSelectionColor=true -Color=112,111,110 -ColorAmount=0.025 -ColorEffect=2 -ContrastAmount=0.1 -ContrastEffect=2 -Enable=false -IntensityAmount=0 -IntensityEffect=0 - -[Colors:Button] -BackgroundAlternate=30,87,116 -BackgroundNormal=49,54,59 -DecorationFocus=61,174,233 -DecorationHover=61,174,233 -ForegroundActive=61,174,233 -ForegroundInactive=161,169,177 -ForegroundLink=29,153,243 -ForegroundNegative=218,68,83 -ForegroundNeutral=246,116,0 -ForegroundNormal=252,252,252 -ForegroundPositive=39,174,96 -ForegroundVisited=155,89,182 - -[Colors:Complementary] -BackgroundAlternate=30,87,116 -BackgroundNormal=42,46,50 -DecorationFocus=61,174,233 -DecorationHover=61,174,233 -ForegroundActive=61,174,233 -ForegroundInactive=161,169,177 -ForegroundLink=29,153,243 -ForegroundNegative=218,68,83 -ForegroundNeutral=246,116,0 -ForegroundNormal=252,252,252 -ForegroundPositive=39,174,96 -ForegroundVisited=155,89,182 - -[Colors:Header] -BackgroundAlternate=42,46,50 -BackgroundNormal=49,54,59 -DecorationFocus=61,174,233 -DecorationHover=61,174,233 -ForegroundActive=61,174,233 -ForegroundInactive=161,169,177 -ForegroundLink=29,153,243 -ForegroundNegative=218,68,83 -ForegroundNeutral=246,116,0 -ForegroundNormal=252,252,252 -ForegroundPositive=39,174,96 -ForegroundVisited=155,89,182 - -[Colors:Header][Inactive] -BackgroundAlternate=49,54,59 -BackgroundNormal=42,46,50 -DecorationFocus=61,174,233 -DecorationHover=61,174,233 -ForegroundActive=61,174,233 -ForegroundInactive=161,169,177 -ForegroundLink=29,153,243 -ForegroundNegative=218,68,83 -ForegroundNeutral=246,116,0 -ForegroundNormal=252,252,252 -ForegroundPositive=39,174,96 -ForegroundVisited=155,89,182 - -[Colors:Selection] -BackgroundAlternate=30,87,116 -BackgroundNormal=61,174,233 -DecorationFocus=61,174,233 -DecorationHover=61,174,233 -ForegroundActive=252,252,252 -ForegroundInactive=161,169,177 -ForegroundLink=253,188,75 -ForegroundNegative=176,55,69 -ForegroundNeutral=198,92,0 -ForegroundNormal=252,252,252 -ForegroundPositive=23,104,57 -ForegroundVisited=155,89,182 - -[Colors:Tooltip] -BackgroundAlternate=42,46,50 -BackgroundNormal=49,54,59 -DecorationFocus=61,174,233 -DecorationHover=61,174,233 -ForegroundActive=61,174,233 -ForegroundInactive=161,169,177 -ForegroundLink=29,153,243 -ForegroundNegative=218,68,83 -ForegroundNeutral=246,116,0 -ForegroundNormal=252,252,252 -ForegroundPositive=39,174,96 -ForegroundVisited=155,89,182 - -[Colors:View] -BackgroundAlternate=35,38,41 -BackgroundNormal=27,30,32 -DecorationFocus=61,174,233 -DecorationHover=61,174,233 -ForegroundActive=61,174,233 -ForegroundInactive=161,169,177 -ForegroundLink=29,153,243 -ForegroundNegative=218,68,83 -ForegroundNeutral=246,116,0 -ForegroundNormal=252,252,252 -ForegroundPositive=39,174,96 -ForegroundVisited=155,89,182 - -[Colors:Window] -BackgroundAlternate=49,54,59 -BackgroundNormal=42,46,50 -DecorationFocus=61,174,233 -DecorationHover=61,174,233 -ForegroundActive=61,174,233 -ForegroundInactive=161,169,177 -ForegroundLink=29,153,243 -ForegroundNegative=218,68,83 -ForegroundNeutral=246,116,0 -ForegroundNormal=252,252,252 -ForegroundPositive=39,174,96 -ForegroundVisited=155,89,182 - -[General] -BrowserApplication=firefox.desktop -ColorSchemeHash=d0b3d2da363261958945ede41bfed4e1744dd286 - -[KDE] -LookAndFeelPackage=org.kde.breezedark.desktop - -[WM] -activeBackground=49,54,59 -activeBlend=252,252,252 -activeForeground=252,252,252 -inactiveBackground=42,46,50 -inactiveBlend=161,169,177 -inactiveForeground=161,169,177 diff --git a/configs/kglobalshortcutsrc b/configs/kglobalshortcutsrc deleted file mode 100644 index e508894..0000000 --- a/configs/kglobalshortcutsrc +++ /dev/null @@ -1,320 +0,0 @@ -[$Version] -update_info=bismuth_shortcuts_category.upd:bismuth-shortcuts-category,bismuth_shortcuts_from_kwin.upd:bismuth-shortcuts-from-kwin - -[ActivityManager] -_k_friendly_name=Activity Manager -switch-to-activity-cb92f5f8-5a3f-455f-b046-6c5c9e945edd=none,none,Switch to activity "Default" - -[KDE Keyboard Layout Switcher] -Switch to Next Keyboard Layout=Ctrl+Alt+K,none,Switch to Next Keyboard Layout -_k_friendly_name=Keyboard Layout Switcher - -[bismuth] -_k_friendly_name=Window Tiling -decrease_master_size=none,,Decrease Master Area Size -decrease_master_win_count=none,Meta+[,Decrease Master Area Window Count -decrease_window_height=none,Meta+Ctrl+K,Decrease Window Height -decrease_window_width=none,Meta+Ctrl+H,Decrease Window Width -focus_bottom_window=none,Meta+J,Focus Bottom Window -focus_left_window=none,Meta+H,Focus Left Window -focus_next_window=none,,Focus Next Window -focus_prev_window=none,,Focus Previous Window -focus_right_window=none,Meta+L,Focus Right Window -focus_upper_window=none,Meta+K,Focus Upper Window -increase_master_size=none,,Increase Master Area Size -increase_master_win_count=none,Meta+],Increase Master Area Window Count -increase_window_height=none,Meta+Ctrl+J,Increase Window Height -increase_window_width=none,Meta+Ctrl+L,Increase Window Width -move_window_to_bottom_pos=none,Meta+Shift+J,Move Window Down -move_window_to_left_pos=none,Meta+Shift+H,Move Window Left -move_window_to_next_pos=none,,Move Window to the Next Position -move_window_to_prev_pos=none,,Move Window to the Previous Position -move_window_to_right_pos=none,Meta+Shift+L,Move Window Right -move_window_to_upper_pos=none,Meta+Shift+K,Move Window Up -next_layout=none,Meta+\\\\,Switch to the Next Layout -prev_layout=none,Meta+|,Switch to the Previous Layout -push_window_to_master=none,Meta+Return,Push Active Window to Master Area -rotate=none,Meta+R,Rotate -rotate_part=none,Meta+Shift+R,Rotate Part -rotate_reverse=none,,Rotate (Reverse) -toggle_float_layout=none,Meta+Shift+F,Toggle Floating Layout -toggle_monocle_layout=none,Meta+M,Toggle Monocle Layout -toggle_quarter_layout=none,,Toggle Quarter Layout -toggle_spiral_layout=none,,Toggle Spiral Layout -toggle_spread_layout=none,,Toggle Spread Layout -toggle_stair_layout=none,,Toggle Stair Layout -toggle_three_column_layout=none,,Toggle Three Column Layout -toggle_tile_layout=none,Meta+T,Toggle Tile Layout -toggle_window_floating=none,Meta+F,Toggle Active Window Floating - -[kaccess] -Toggle Screen Reader On and Off=Meta+Alt+S,Meta+Alt+S,Toggle Screen Reader On and Off -_k_friendly_name=Accessibility - -[kcm_touchpad] -Disable Touchpad=Touchpad Off,Touchpad Off,Disable Touchpad -Enable Touchpad=Touchpad On,Touchpad On,Enable Touchpad -Toggle Touchpad=Touchpad Toggle,Touchpad Toggle,Toggle Touchpad -_k_friendly_name=Touchpad - -[kded5] -Show System Activity=Ctrl+Esc,Ctrl+Esc,Show System Activity -_k_friendly_name=KDE Daemon -display=Display\tMeta+P,Display\tMeta+P,Switch Display - -[khotkeys] -_k_friendly_name=Custom Shortcuts Service -{d03619b6-9b3c-48cc-9d9c-a2aadb485550}=,none,Search - -[kmix] -_k_friendly_name=Audio Volume -decrease_microphone_volume=Microphone Volume Down,Microphone Volume Down,Decrease Microphone Volume -decrease_volume=Volume Down,Volume Down,Decrease Volume -increase_microphone_volume=Microphone Volume Up,Microphone Volume Up,Increase Microphone Volume -increase_volume=Volume Up,Volume Up,Increase Volume -mic_mute=Microphone Mute\tMeta+Volume Mute,Microphone Mute\tMeta+Volume Mute,Mute Microphone -mute=Volume Mute,Volume Mute,Mute - -[ksmserver] -Halt Without Confirmation=,,Halt Without Confirmation -Lock Session=Meta+L\tCtrl+Alt+L\tScreensaver,Meta+L\tCtrl+Alt+L\tScreensaver,Lock Session -Log Out=Ctrl+Alt+Del,Ctrl+Alt+Del,Log Out -Log Out Without Confirmation=,,Log Out Without Confirmation -Reboot Without Confirmation=,,Reboot Without Confirmation -_k_friendly_name=Session Management - -[kwin] -Activate Window Demanding Attention=Ctrl+Alt+A,Ctrl+Alt+A,Activate Window Demanding Attention -Decrease Opacity=,,Decrease Opacity of Active Window by 5 % -Expose=Ctrl+F9,Ctrl+F9,Toggle Present Windows (Current desktop) -ExposeAll=Ctrl+F10\tLaunch (C),Ctrl+F10\tLaunch (C),Toggle Present Windows (All desktops) -ExposeClass=Ctrl+F7,Ctrl+F7,Toggle Present Windows (Window class) -Increase Opacity=,,Increase Opacity of Active Window by 5 % -Invert Screen Colors=,,Invert Screen Colors -Kill Window=Ctrl+Alt+Esc,Ctrl+Alt+Esc,Kill Window -MoveMouseToCenter=Meta+F6,Meta+F6,Move Mouse to Center -MoveMouseToFocus=Meta+F5,Meta+F5,Move Mouse to Focus -MoveZoomDown=none,none,Move Zoomed Area Downwards -MoveZoomLeft=none,none,Move Zoomed Area to Left -MoveZoomRight=none,none,Move Zoomed Area to Right -MoveZoomUp=none,none,Move Zoomed Area Upwards -Overview=Meta+D,Meta+W,Toggle Overview -Setup Window Shortcut=,,Setup Window Shortcut -Show Desktop=,Meta+D,Show Desktop -ShowDesktopGrid=Ctrl+F8,Ctrl+F8,Show Desktop Grid -Suspend Compositing=Alt+Shift+F12,Alt+Shift+F12,Suspend Compositing -Switch One Desktop Down=Meta+Ctrl+Down,Meta+Ctrl+Down,Switch One Desktop Down -Switch One Desktop Up=Meta+Ctrl+Up,Meta+Ctrl+Up,Switch One Desktop Up -Switch One Desktop to the Left=Meta+Ctrl+Left,Meta+Ctrl+Left,Switch One Desktop to the Left -Switch One Desktop to the Right=Meta+Ctrl+Right,Meta+Ctrl+Right,Switch One Desktop to the Right -Switch Window Down=Meta+Alt+Down,Meta+Alt+Down,Switch to Window Below -Switch Window Left=Meta+Alt+Left,Meta+Alt+Left,Switch to Window to the Left -Switch Window Right=Meta+Alt+Right,Meta+Alt+Right,Switch to Window to the Right -Switch Window Up=Meta+Alt+Up,Meta+Alt+Up,Switch to Window Above -Switch to Desktop 1=Ctrl+F1,Ctrl+F1,Switch to Desktop 1 -Switch to Desktop 10=,,Switch to Desktop 10 -Switch to Desktop 11=,,Switch to Desktop 11 -Switch to Desktop 12=,,Switch to Desktop 12 -Switch to Desktop 13=,,Switch to Desktop 13 -Switch to Desktop 14=,,Switch to Desktop 14 -Switch to Desktop 15=,,Switch to Desktop 15 -Switch to Desktop 16=,,Switch to Desktop 16 -Switch to Desktop 17=,,Switch to Desktop 17 -Switch to Desktop 18=,,Switch to Desktop 18 -Switch to Desktop 19=,,Switch to Desktop 19 -Switch to Desktop 2=Ctrl+F2,Ctrl+F2,Switch to Desktop 2 -Switch to Desktop 20=,,Switch to Desktop 20 -Switch to Desktop 3=Ctrl+F3,Ctrl+F3,Switch to Desktop 3 -Switch to Desktop 4=Ctrl+F4,Ctrl+F4,Switch to Desktop 4 -Switch to Desktop 5=,,Switch to Desktop 5 -Switch to Desktop 6=,,Switch to Desktop 6 -Switch to Desktop 7=,,Switch to Desktop 7 -Switch to Desktop 8=,,Switch to Desktop 8 -Switch to Desktop 9=,,Switch to Desktop 9 -Switch to Next Desktop=,,Switch to Next Desktop -Switch to Next Screen=,,Switch to Next Screen -Switch to Previous Desktop=,,Switch to Previous Desktop -Switch to Previous Screen=,,Switch to Previous Screen -Switch to Screen 0=,,Switch to Screen 0 -Switch to Screen 1=,,Switch to Screen 1 -Switch to Screen 2=,,Switch to Screen 2 -Switch to Screen 3=,,Switch to Screen 3 -Switch to Screen 4=,,Switch to Screen 4 -Switch to Screen 5=,,Switch to Screen 5 -Switch to Screen 6=,,Switch to Screen 6 -Switch to Screen 7=,,Switch to Screen 7 -Toggle Night Color=none,none,Toggle Night Color -Toggle Window Raise/Lower=,,Toggle Window Raise/Lower -Walk Through Desktop List=,,Walk Through Desktop List -Walk Through Desktop List (Reverse)=,,Walk Through Desktop List (Reverse) -Walk Through Desktops=,,Walk Through Desktops -Walk Through Desktops (Reverse)=,,Walk Through Desktops (Reverse) -Walk Through Windows=Alt+Tab,Alt+Tab,Walk Through Windows -Walk Through Windows (Reverse)=Alt+Shift+Backtab,Alt+Shift+Backtab,Walk Through Windows (Reverse) -Walk Through Windows Alternative=,,Walk Through Windows Alternative -Walk Through Windows Alternative (Reverse)=,,Walk Through Windows Alternative (Reverse) -Walk Through Windows of Current Application=Alt+`,Alt+`,Walk Through Windows of Current Application -Walk Through Windows of Current Application (Reverse)=Alt+~,Alt+~,Walk Through Windows of Current Application (Reverse) -Walk Through Windows of Current Application Alternative=,,Walk Through Windows of Current Application Alternative -Walk Through Windows of Current Application Alternative (Reverse)=,,Walk Through Windows of Current Application Alternative (Reverse) -Window Above Other Windows=,,Keep Window Above Others -Window Below Other Windows=,,Keep Window Below Others -Window Close=Alt+F4,Alt+F4,Close Window -Window Fullscreen=,,Make Window Fullscreen -Window Grow Horizontal=,,Expand Window Horizontally -Window Grow Vertical=,,Expand Window Vertically -Window Lower=,,Lower Window -Window Maximize=Meta+PgUp,Meta+PgUp,Maximize Window -Window Maximize Horizontal=,,Maximize Window Horizontally -Window Maximize Vertical=,,Maximize Window Vertically -Window Minimize=Meta+PgDown,Meta+PgDown,Minimize Window -Window Move=,,Move Window -Window Move Center=,,Move Window to the Center -Window No Border=,,Hide Window Border -Window On All Desktops=,,Keep Window on All Desktops -Window One Desktop Down=Meta+Ctrl+Shift+Down,Meta+Ctrl+Shift+Down,Window One Desktop Down -Window One Desktop Up=Meta+Ctrl+Shift+Up,Meta+Ctrl+Shift+Up,Window One Desktop Up -Window One Desktop to the Left=Meta+Ctrl+Shift+Left,Meta+Ctrl+Shift+Left,Window One Desktop to the Left -Window One Desktop to the Right=Meta+Ctrl+Shift+Right,Meta+Ctrl+Shift+Right,Window One Desktop to the Right -Window Operations Menu=Alt+F3,Alt+F3,Window Operations Menu -Window Pack Down=,,Move Window Down -Window Pack Left=,,Move Window Left -Window Pack Right=,,Move Window Right -Window Pack Up=,,Move Window Up -Window Quick Tile Bottom=Meta+Down,Meta+Down,Quick Tile Window to the Bottom -Window Quick Tile Bottom Left=,,Quick Tile Window to the Bottom Left -Window Quick Tile Bottom Right=,,Quick Tile Window to the Bottom Right -Window Quick Tile Left=Meta+Left,Meta+Left,Quick Tile Window to the Left -Window Quick Tile Right=Meta+Right,Meta+Right,Quick Tile Window to the Right -Window Quick Tile Top=Meta+Up,Meta+Up,Quick Tile Window to the Top -Window Quick Tile Top Left=,,Quick Tile Window to the Top Left -Window Quick Tile Top Right=,,Quick Tile Window to the Top Right -Window Raise=,,Raise Window -Window Resize=,,Resize Window -Window Shade=,,Shade Window -Window Shrink Horizontal=,,Shrink Window Horizontally -Window Shrink Vertical=,,Shrink Window Vertically -Window to Desktop 1=,,Window to Desktop 1 -Window to Desktop 10=,,Window to Desktop 10 -Window to Desktop 11=,,Window to Desktop 11 -Window to Desktop 12=,,Window to Desktop 12 -Window to Desktop 13=,,Window to Desktop 13 -Window to Desktop 14=,,Window to Desktop 14 -Window to Desktop 15=,,Window to Desktop 15 -Window to Desktop 16=,,Window to Desktop 16 -Window to Desktop 17=,,Window to Desktop 17 -Window to Desktop 18=,,Window to Desktop 18 -Window to Desktop 19=,,Window to Desktop 19 -Window to Desktop 2=,,Window to Desktop 2 -Window to Desktop 20=,,Window to Desktop 20 -Window to Desktop 3=,,Window to Desktop 3 -Window to Desktop 4=,,Window to Desktop 4 -Window to Desktop 5=,,Window to Desktop 5 -Window to Desktop 6=,,Window to Desktop 6 -Window to Desktop 7=,,Window to Desktop 7 -Window to Desktop 8=,,Window to Desktop 8 -Window to Desktop 9=,,Window to Desktop 9 -Window to Next Desktop=,,Window to Next Desktop -Window to Next Screen=Meta+Shift+Right,Meta+Shift+Right,Window to Next Screen -Window to Previous Desktop=,,Window to Previous Desktop -Window to Previous Screen=Meta+Shift+Left,Meta+Shift+Left,Window to Previous Screen -Window to Screen 0=,,Window to Screen 0 -Window to Screen 1=,,Window to Screen 1 -Window to Screen 2=,,Window to Screen 2 -Window to Screen 3=,,Window to Screen 3 -Window to Screen 4=,,Window to Screen 4 -Window to Screen 5=,,Window to Screen 5 -Window to Screen 6=,,Window to Screen 6 -Window to Screen 7=,,Window to Screen 7 -_k_friendly_name=KWin -view_actual_size=Meta+0,Meta+0,Actual Size -view_zoom_in=Meta+=,Meta+=,Zoom In -view_zoom_out=Meta+-,Meta+-,Zoom Out - -[mediacontrol] -_k_friendly_name=Media Controller -mediavolumedown=,,Media volume down -mediavolumeup=,,Media volume up -nextmedia=Media Next,Media Next,Media playback next -pausemedia=Media Pause,Media Pause,Pause media playback -playmedia=,,Play media playback -playpausemedia=Media Play,Media Play,Play/Pause media playback -previousmedia=Media Previous,Media Previous,Media playback previous -stopmedia=Media Stop,Media Stop,Stop media playback - -[org.kde.dolphin.desktop] -_k_friendly_name=Dolphin -_launch=Meta+E,Meta+E,Dolphin - -[org.kde.krunner.desktop] -RunClipboard=Alt+Shift+F2,Alt+Shift+F2,Run command on clipboard contents -_k_friendly_name=KRunner -_launch=Alt+Space\tAlt+F2\tSearch,Alt+Space\tAlt+F2\tSearch,KRunner - -[org.kde.plasma.emojier.desktop] -_k_friendly_name=Emoji Selector -_launch=Meta+.,Meta+.,Emoji Selector - -[org.kde.spectacle.desktop] -ActiveWindowScreenShot=Meta+Print,Meta+Print,Capture Active Window -CurrentMonitorScreenShot=none,none,Capture Current Monitor -FullScreenScreenShot=Shift+Print,Shift+Print,Capture Entire Desktop -OpenWithoutScreenshot=none,none,Launch Spectacle without capturing -RectangularRegionScreenShot=Meta+Shift+Print,Meta+Shift+Print,Capture Rectangular Region -WindowUnderCursorScreenShot=Meta+Ctrl+Print,Meta+Ctrl+Print,Capture Window Under Cursor -_k_friendly_name=Spectacle -_launch=Print,Print,Launch Spectacle - -[org_kde_powerdevil] -Decrease Keyboard Brightness=Keyboard Brightness Down,Keyboard Brightness Down,Decrease Keyboard Brightness -Decrease Screen Brightness=Monitor Brightness Down,Monitor Brightness Down,Decrease Screen Brightness -Hibernate=Hibernate,Hibernate,Hibernate -Increase Keyboard Brightness=Keyboard Brightness Up,Keyboard Brightness Up,Increase Keyboard Brightness -Increase Screen Brightness=Monitor Brightness Up,Monitor Brightness Up,Increase Screen Brightness -PowerDown=Power Down,Power Down,Power Down -PowerOff=Power Off,Power Off,Power Off -Sleep=Sleep,Sleep,Suspend -Toggle Keyboard Backlight=Keyboard Light On/Off,Keyboard Light On/Off,Toggle Keyboard Backlight -Turn Off Screen=none,none,Turn Off Screen -_k_friendly_name=Power Management - -[plasmashell] -_k_friendly_name=Plasma -activate task manager entry 1=Meta+1,Meta+1,Activate Task Manager Entry 1 -activate task manager entry 10=,Meta+0,Activate Task Manager Entry 10 -activate task manager entry 2=Meta+2,Meta+2,Activate Task Manager Entry 2 -activate task manager entry 3=Meta+3,Meta+3,Activate Task Manager Entry 3 -activate task manager entry 4=Meta+4,Meta+4,Activate Task Manager Entry 4 -activate task manager entry 5=Meta+5,Meta+5,Activate Task Manager Entry 5 -activate task manager entry 6=Meta+6,Meta+6,Activate Task Manager Entry 6 -activate task manager entry 7=Meta+7,Meta+7,Activate Task Manager Entry 7 -activate task manager entry 8=Meta+8,Meta+8,Activate Task Manager Entry 8 -activate task manager entry 9=Meta+9,Meta+9,Activate Task Manager Entry 9 -activate widget 25=,none,Activate Application Launcher Widget -activate widget 3=Alt+F1,none,Activate Application Launcher Widget -activate widget 47=,none,Activate Application Launcher Widget -clear-history=,,Clear Clipboard History -clipboard_action=Ctrl+Alt+X,Ctrl+Alt+X,Enable Clipboard Actions -cycleNextAction=,,Next History Item -cyclePrevAction=,,Previous History Item -edit_clipboard=,,Edit Contents… -manage activities=Meta+Q,Meta+Q,Show Activity Switcher -next activity=Meta+Tab,none,Walk through activities -previous activity=Meta+Shift+Tab,none,Walk through activities (Reverse) -repeat_action=Ctrl+Alt+R,Ctrl+Alt+R,Manually Invoke Action on Current Clipboard -show dashboard=Ctrl+F12,Ctrl+F12,Show Desktop -show-barcode=,,Show Barcode… -show-on-mouse-pos=Meta+V,Meta+V,Open Klipper at Mouse Position -stop current activity=Meta+S,Meta+S,Stop Current Activity -switch to next activity=,,Switch to Next Activity -switch to previous activity=,,Switch to Previous Activity -toggle do not disturb=,,Toggle do not disturb - -[systemsettings.desktop] -_k_friendly_name=System Settings -_launch=Tools,Tools,System Settings -kcm-kscreen=none,none,Display Configuration -kcm-lookandfeel=none,none,Global Theme -kcm-users=none,none,Users -powerdevilprofilesconfig=none,none,Energy Saving -screenlocker=none,none,Screen Locking diff --git a/configs/krunnerrc b/configs/krunnerrc deleted file mode 100644 index bf739f7..0000000 --- a/configs/krunnerrc +++ /dev/null @@ -1,2 +0,0 @@ -[General] -FreeFloating=true diff --git a/configs/kwinrc b/configs/kwinrc deleted file mode 100644 index e4ea400..0000000 --- a/configs/kwinrc +++ /dev/null @@ -1,30 +0,0 @@ -[$Version] -update_info=kwin.upd:replace-scalein-with-scale,kwin.upd:port-minimizeanimation-effect-to-js,kwin.upd:port-scale-effect-to-js,kwin.upd:port-dimscreen-effect-to-js,kwin.upd:auto-bordersize,kwin.upd:make-translucency-effect-disabled-by-default,kwin.upd:enable-scale-effect-by-default,bismuth_new_logger.upd:bismuth-new-logger,kwin.upd:desktop-grid-click-behavior,kwin.upd:no-swap-encourage,kwin.upd:remove-flip-switch-effect,kwin.upd:remove-cover-switch-effect,kwin.upd:remove-cubeslide-effect,kwin.upd:remove-xrender-backend - -[Compositing] -OpenGLIsUnsafe=false - -[Desktops] -Id_1=f33e29de-0262-4cfb-b3d9-5aa905baf5e0 -Id_2=1c2993a9-ce62-45a3-83ab-67ba7d607ee6 -Id_3=76e3ed30-4a0f-450a-a370-e76f8081cc27 -Id_4=8f16d201-c8bd-4d57-801f-fce923d6cf61 -Name_2=Comms -Name_3=Gaming -Name_4=Music -Number=4 -Rows=2 - -[ModifierOnlyShortcuts] -Meta=org.kde.krunner,/App,,toggleDisplay - -[Plugins] -bismuthEnabled=true -overviewEnabled=true - -[Script-bismuth] -screenGapBottom=5 -screenGapLeft=5 -screenGapRight=5 -screenGapTop=5 -tileLayoutGap=5 From bbe802c1c9e38519b71a60cb9f56aa227f36c83a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 21 Aug 2022 17:34:28 -0600 Subject: [PATCH 293/507] Update paths to new repo --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index dd6b632..881b9db 100644 --- a/install.sh +++ b/install.sh @@ -105,10 +105,10 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -# Coping over my config files -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/nix-configs/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/nix-configs/programs.nix > programs.nix; sudo mv -f programs.nix /mnt/etc/nixos/ -curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/nix-configs/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +# Coping over my nix files +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/plasma.nix > plasma.nix; sudo mv -f plasma.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/ # Replace LUKS device with correct partition sudo sed -i "s|/dev/disk/by-label/luks|$rootName|g" /mnt/etc/nixos/configuration.nix From 3d72ac98e28ca41ed7fec6af2e1c51574c84eb6f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 21 Aug 2022 17:35:17 -0600 Subject: [PATCH 294/507] Remove old files for new location --- nix-configs/configuration.nix | 103 ---------------------------------- nix-configs/oryp6.nix | 11 ---- nix-configs/plasma.nix | 27 --------- nix-configs/programs.nix | 23 -------- nix-configs/rpi4.nix | 56 ------------------ nix-configs/unstable.nix | 14 ----- 6 files changed, 234 deletions(-) delete mode 100644 nix-configs/configuration.nix delete mode 100644 nix-configs/oryp6.nix delete mode 100644 nix-configs/plasma.nix delete mode 100644 nix-configs/programs.nix delete mode 100644 nix-configs/rpi4.nix delete mode 100644 nix-configs/unstable.nix diff --git a/nix-configs/configuration.nix b/nix-configs/configuration.nix deleted file mode 100644 index b5292e1..0000000 --- a/nix-configs/configuration.nix +++ /dev/null @@ -1,103 +0,0 @@ -{ config, pkgs, ... }: - -{ - # Import other configuration modules - # (hardware-configuration.nix is autogenerated upon installation) - # paths in nix expressions are always relative the file which defines them - imports = - [ - ./hardware-configuration.nix - ./plasma.nix - ./programs.nix - ]; - - boot.loader = { - systemd-boot.enable = true; - }; - - boot.initrd.luks.devices = { - crypt-root = { - device = "/dev/disk/by-label/luks"; - preLVM = true; - }; - }; - - # Name your host machine - networking.hostName = "NixOS"; - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "America/Denver"; - - # Enter keyboard layout - services.xserver.layout = "us"; - - # Enable Flatpak - xdg = { - portal = { - enable = true; - extraPortals = with pkgs; [ - xdg-desktop-portal-wlr - xdg-desktop-portal-kde - ]; - }; - }; - - services.flatpak.enable = true; - - # Enable fwupd - services.fwupd.enable = true; - - # Define user accounts - users.extraUsers.aaronh = { - description = "Aaron Honeycutt"; - home = "/home/aaronh"; - extraGroups = [ "wheel" "networkmanager" "adm"]; - isNormalUser = true; - hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; - }; - - # Allow Unfree - nixpkgs.config.allowUnfree = true; - - # Enable 32 Bit libraries for applications like Steam - hardware.opengl.driSupport32Bit = true; - - # Install some packages - environment.systemPackages = - with pkgs; - [ - firefox - fish - flatpak - git - steam - thunderbird - restic - wget - ]; - - # Enable the OpenSSH daemon - services.openssh.enable = true; - - # Enable Pipewire - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; - - # Enable Bluetooth - hardware.bluetooth.enable = true; - - # Enable CUPS - services.printing.enable = true; - - # System - system.stateVersion = "22.05"; - system.autoUpgrade.enable = true; - system.autoUpgrade.allowReboot = true; - -} diff --git a/nix-configs/oryp6.nix b/nix-configs/oryp6.nix deleted file mode 100644 index c2544d9..0000000 --- a/nix-configs/oryp6.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, pkgs, ... }: - -{ - # NVIDIA - services.xserver.videoDrivers = [ "nvidia" ]; - hardware.opengl.enable = true; - hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; - - # Allow Unfree - nixpkgs.config.allowUnfree = true; -} diff --git a/nix-configs/plasma.nix b/nix-configs/plasma.nix deleted file mode 100644 index 68ee3fb..0000000 --- a/nix-configs/plasma.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ config, pkgs, ... }: - -{ - # Plasma - services.xserver.enable = true; - services.xserver.displayManager.sddm.enable = true; - services.xserver.displayManager.sddm.settings.Wayland.SessionDir = - "${pkgs.plasma5Packages.plasma-workspace}/share/wayland-sessions"; - services.xserver.desktopManager.plasma5.enable = true; - - # Install some packages - environment.systemPackages = - with pkgs; - [ - libsForQt5.ark - libsForQt5.bismuth - libsForQt5.full - libsForQt5.kalendar - libsForQt5.kate - libsForQt5.kdeconnect-kde - libsForQt5.kde-gtk-config - libsForQt5.plasma-framework - libsForQt5.plasma-nm - libsForQt5.plasma-pa - libsForQt5.sddm - ]; -} diff --git a/nix-configs/programs.nix b/nix-configs/programs.nix deleted file mode 100644 index 6106b93..0000000 --- a/nix-configs/programs.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, pkgs, ... }: - -{ - # virt-manager - virtualisation.libvirtd.enable = true; - - # Packages - environment.systemPackages = - with pkgs; - [ - discord - libreoffice-fresh - slack - virt-manager - vscode - ]; - - programs.fish.enable = true; - - users.users.aaronh = { - shell = pkgs.fish; - }; -} diff --git a/nix-configs/rpi4.nix b/nix-configs/rpi4.nix deleted file mode 100644 index 1903f87..0000000 --- a/nix-configs/rpi4.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ config, pkgs, lib, ... }: - -let - SSID = "Honeycutt-5G"; - SSIDpassword = "Frappe92"; - interface = "wlan0"; - hostname = "NixOS"; -in { - imports = ["${fetchTarball "https://github.com/NixOS/nixos-hardware/archive/936e4649098d6a5e0762058cb7687be1b2d90550.tar.gz" }/raspberry-pi/4"]; - - fileSystems = { - "/" = { - device = "/dev/disk/by-label/NIXOS_SD"; - fsType = "ext4"; - options = [ "noatime" ]; - }; - }; - - networking = { - hostName = "NixOS"; - networkmanager.enable = true; - - wireless = { - enable = true; - networks."${SSID}".psk = SSIDpassword; - interfaces = [ interface ]; - }; - }; - - # Set your time zone. - time.timeZone = "America/Denver"; - - environment.systemPackages = with pkgs; [ vim ]; - - services.openssh.enable = true; - - # Define user accounts - users.extraUsers.aaronh = { - description = "Aaron Honeycutt"; - home = "/home/aaronh"; - extraGroups = [ "wheel" "networkmanager" "adm"]; - isNormalUser = true; - hashedPassword = "$6$aAcbLtqiqzySifls$jdKMOQjoWITHD/dWNNZVUH/qNc6aoJ7v4zYofi0U7IJSVTbmOfChS3mzaJbp57AodjdPNKPrnrip8Nlh2Qanx."; - }; - - # Enable GPU acceleration - hardware.raspberry-pi."4".fkms-3d.enable = true; - - services.xserver = { - enable = true; - displayManager.lightdm.enable = true; - desktopManager.xfce.enable = true; - }; - - hardware.pulseaudio.enable = true; -} diff --git a/nix-configs/unstable.nix b/nix-configs/unstable.nix deleted file mode 100644 index c0b3f7b..0000000 --- a/nix-configs/unstable.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, pkgs, ...}: - -let - unstable = import - (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/master) - # reuse the current configuration - { config = config.nixpkgs.config; }; -in -{ - environment.systemPackages = with pkgs; [ - unstable.protonvpn-cli - unstable.protonvpn-gui - ]; -} From 57829ec18ee15b1071de7db15f17bcb6eccb18be Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 21 Aug 2022 17:38:30 -0600 Subject: [PATCH 295/507] Update README and move sections to correct repos --- README.md | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/README.md b/README.md index 2e5b17d..610636c 100644 --- a/README.md +++ b/README.md @@ -9,21 +9,6 @@ At the core of this installer it does the following: - Installs Plasma (`plasma.nix`) - Installs needed packages (`programs.nix`) -Nix files: (nix-configs/) - -- `configuration.nix` : This is the main file for the base system including some applications that I use -- `plasma.nix` : This file is for the desktop, login manager and other KDE applications -- `programs.nix` : This file adds applications like Slack, Discord and virt-manager including turning on the services -- `oryp6.nix` : This file is mainly for my System76 Oryx Pro (oryp6) to add and enable the NVIDIA driver from stable -- `unstable.nix` : This file has the applications that need to be from unstable to work like ProtonVPN software - -Plasma files: (configs) - -- `configs/kwinrc` : This has my setting for the Super key (Meta in Plasma) behavior -- `configs/kglobalshortcutsrc` : This has window control shortcuts like moving between Workspaces (Desktops in Plasma) -- `configs/krunnerrc` : Sets KRunner to in the center of the screen when activated -- `configs/kdeglobals` : Sets the theme to Breeze Dark - Tested on the following drives: - SATA - NVMe From 262663bf3bc3f11b6dba848d5d74c91539f6d453 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 21 Aug 2022 17:39:52 -0600 Subject: [PATCH 296/507] Update README to link to new nix-configs repo --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 610636c..e8f4d49 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ At the core of this installer it does the following: - 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 From 0a150560ddcb9545d174563fc84e48324a03a2d5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 22 Aug 2022 17:25:15 -0600 Subject: [PATCH 297/507] Add DE choice, GNOME and Plasma for now --- install.sh | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 881b9db..d69030c 100644 --- a/install.sh +++ b/install.sh @@ -105,9 +105,26 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -# Coping over my nix files +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/ + +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/ + +fi + +fi + +# Copy my nix configs over 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/plasma.nix > plasma.nix; sudo mv -f plasma.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/ # Replace LUKS device with correct partition From f599ad153e4c32ab6e0eb47d37173c4604b59418 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 22 Aug 2022 17:55:22 -0600 Subject: [PATCH 298/507] Update configuration to be generic --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index d69030c..668cd29 100644 --- a/install.sh +++ b/install.sh @@ -113,12 +113,12 @@ 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/ - + sed -e '1n;/^./hardware-configuration.nix/a\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/ - + sed -e '1n;/^./hardware-configuration.nix/a\gnome.nix' /mnt/etc/nixos/configuration.nix fi fi From 0a346b32e9b5c34662dd69d0dcd4e3029aa518a7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 22 Aug 2022 18:21:32 -0600 Subject: [PATCH 299/507] Add devices --- install.sh | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 668cd29..549e75d 100644 --- a/install.sh +++ b/install.sh @@ -113,12 +113,30 @@ 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/ - sed -e '1n;/^./hardware-configuration.nix/a\plasma.nix' /mnt/etc/nixos/configuration.nix + sed -e '1n;/^./hardware-configuration.nix/a\./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/ - sed -e '1n;/^./hardware-configuration.nix/a\gnome.nix' /mnt/etc/nixos/configuration.nix + sed -e '1n;/^./hardware-configuration.nix/a\./gnome.nix' /mnt/etc/nixos/configuration.nix +fi + +fi + +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/oryp6.nix > oryp6.nix; sudo mv -f oryp6.nix /mnt/etc/nixos/ + sed -e '1n;/^./hardware-configuration.nix/a\.oryp6.nix' /mnt/etc/nixos/configuration.nix +else + +if [ $device = 2 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hp-omen.nix > hp-omen.nix; sudo mv -f hp-omen.nix /mnt/etc/nixos/ + sed -e '1n;/^./hardware-configuration.nix/a\.hp-omen.nix' /mnt/etc/nixos/configuration.nix fi fi From 95fd3ae7feacd82a33ba03a1551dbf782d99aacd Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 23 Aug 2022 13:51:31 +0000 Subject: [PATCH 300/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 549e75d..305e36f 100644 --- a/install.sh +++ b/install.sh @@ -113,12 +113,12 @@ 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/ - sed -e '1n;/^./hardware-configuration.nix/a\./plasma.nix' /mnt/etc/nixos/configuration.nix + 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/ - sed -e '1n;/^./hardware-configuration.nix/a\./gnome.nix' /mnt/etc/nixos/configuration.nix + sed -i '10 i ./gnome.nix' /mnt/etc/nixos/configuration.nix fi fi From e9afbf2cc97c2835185b8035154f21bf5d3b110a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 23 Aug 2022 16:03:17 +0000 Subject: [PATCH 301/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 305e36f..4530502 100644 --- a/install.sh +++ b/install.sh @@ -131,12 +131,12 @@ read device if [ $device = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/oryp6.nix > oryp6.nix; sudo mv -f oryp6.nix /mnt/etc/nixos/ - sed -e '1n;/^./hardware-configuration.nix/a\.oryp6.nix' /mnt/etc/nixos/configuration.nix + sed -i '11 i ./oryp6.nix' /mnt/etc/nixos/configuration.nix else if [ $device = 2 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hp-omen.nix > hp-omen.nix; sudo mv -f hp-omen.nix /mnt/etc/nixos/ - sed -e '1n;/^./hardware-configuration.nix/a\.hp-omen.nix' /mnt/etc/nixos/configuration.nix + sed -i '11 i ./hp-omen.nix' /mnt/etc/nixos/configuration.nix fi fi From b5290d3a35c328fd5e567c725afc73c819e2b3b8 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 31 Aug 2022 15:44:19 +0000 Subject: [PATCH 302/507] Update install.sh --- install.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index 4530502..9c7198e 100644 --- a/install.sh +++ b/install.sh @@ -105,6 +105,10 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt +# Copy my nix configs over +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/ + echo "" echo "Which Desktop Environment do you want?" echo "1) Plasma" @@ -136,15 +140,11 @@ else if [ $device = 2 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hp-omen.nix > hp-omen.nix; sudo mv -f hp-omen.nix /mnt/etc/nixos/ - sed -i '11 i ./hp-omen.nix' /mnt/etc/nixos/configuration.nix + sed -i '11 i ./hp-omen.nix' /mnt/etc/nixos/configuration.nix fi fi -# Copy my nix configs over -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/ - # Replace LUKS device with correct partition sudo sed -i "s|/dev/disk/by-label/luks|$rootName|g" /mnt/etc/nixos/configuration.nix From 617aa15e521a77b4f931de86bfcf40dd900df445 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 31 Aug 2022 15:47:09 +0000 Subject: [PATCH 303/507] Update install.sh --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index 9c7198e..682144a 100644 --- a/install.sh +++ b/install.sh @@ -117,12 +117,12 @@ 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/ - sed -i '10 i ./plasma.nix' /mnt/etc/nixos/configuration.nix + 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/ - sed -i '10 i ./gnome.nix' /mnt/etc/nixos/configuration.nix + sudo sed -i '10 i ./gnome.nix' /mnt/etc/nixos/configuration.nix fi fi @@ -135,12 +135,12 @@ read device if [ $device = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/oryp6.nix > oryp6.nix; sudo mv -f oryp6.nix /mnt/etc/nixos/ - sed -i '11 i ./oryp6.nix' /mnt/etc/nixos/configuration.nix + sudo sed -i '11 i ./oryp6.nix' /mnt/etc/nixos/configuration.nix else if [ $device = 2 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hp-omen.nix > hp-omen.nix; sudo mv -f hp-omen.nix /mnt/etc/nixos/ - sed -i '11 i ./hp-omen.nix' /mnt/etc/nixos/configuration.nix + sudo sed -i '11 i ./hp-omen.nix' /mnt/etc/nixos/configuration.nix fi fi From 92b15a9f9b55b7b9d7798d86de43245bbca6da15 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 31 Aug 2022 15:53:00 +0000 Subject: [PATCH 304/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 682144a..b936cd8 100644 --- a/install.sh +++ b/install.sh @@ -134,12 +134,12 @@ echo "2) HP Omen (15-dh0015nr)" read device if [ $device = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/oryp6.nix > oryp6.nix; sudo mv -f oryp6.nix /mnt/etc/nixos/ + 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 '11 i ./oryp6.nix' /mnt/etc/nixos/configuration.nix else if [ $device = 2 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hp-omen.nix > hp-omen.nix; sudo mv -f hp-omen.nix /mnt/etc/nixos/ + 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 From 963bcf8ebd950090c1c097a346b35f593e506078 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 31 Aug 2022 18:13:59 +0000 Subject: [PATCH 305/507] Update install.sh --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index b936cd8..941181d 100644 --- a/install.sh +++ b/install.sh @@ -117,12 +117,12 @@ 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 + 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 + sudo sed -i "10 i \ ./gnome.nix" /mnt/etc/nixos/configuration.nix fi fi @@ -135,12 +135,12 @@ 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 '11 i ./oryp6.nix' /mnt/etc/nixos/configuration.nix + sudo sed -i "10 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix else 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 + sudo sed -i "11 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix fi fi From 102a3365543b64ca360727c332e458d9ddf30ea8 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 1 Sep 2022 16:38:24 +0000 Subject: [PATCH 306/507] Documentation updates --- README.md | 3 ++- install.sh | 23 ++++++++++++++++++----- setup.sh | 12 ------------ 3 files changed, 20 insertions(+), 18 deletions(-) delete mode 100644 setup.sh diff --git a/README.md b/README.md index e8f4d49..1e7840d 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,9 @@ At the core of this installer it does the following: - Partition the drive of your choice - Installs a base of NixOS (`configuration.nix`) -- Installs Plasma (`plasma.nix`) +- Installs a DE/WM of your choice (currently supporting GNOME and Plasma) - Installs needed packages (`programs.nix`) +- Installs needed packages for certain hardware nix files are from [this repo](https://gitlab.com/ahoneybun/nix-configs/) but that can be changed as needed. diff --git a/install.sh b/install.sh index 941181d..0446e22 100644 --- a/install.sh +++ b/install.sh @@ -1,4 +1,5 @@ -# Figure out how much RAM the system has an set a variable +# Figure out how much RAM the system has +# then sets it as a variable for hibernation support ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) # Detect and list the drives. @@ -105,7 +106,12 @@ sudo mount $efiName /mnt/boot # Generate Nix configuration sudo nixos-generate-config --root /mnt -# Copy my nix configs over +# Copy my base nix configs over +# Change the URL to match where you are hosting your .nix file(s). + +echo "Default username and password are in the configuration.nix file" +echo "Password is hashed so it is not plaintext" + 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/ @@ -115,6 +121,9 @@ echo "1) Plasma" echo "2) GNOME" read desktopChoice +# Change the URL to match where you are hosting your DE/WM .nix file +# Update the second command to the file name that matches your DE/WM .nix file + 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 @@ -131,14 +140,18 @@ echo "" echo "Which device are you installing to?" echo "1) Oryx Pro (oryp6)" echo "2) HP Omen (15-dh0015nr)" -read device +echo "0) None or N/A" +read deviceChoice -if [ $device = 1 ]; then +# Change the URL to match where you are hosting your system .nix file +# Update the second command to the file name that matches your system .nix file + +if [ $deviceChoice = 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 [ $device = 2 ]; then +if [ $deviceChoice = 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 diff --git a/setup.sh b/setup.sh deleted file mode 100644 index 9ca3093..0000000 --- a/setup.sh +++ /dev/null @@ -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 From b6a612519d871cb99b0e6b31a7f6b692025505c0 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 3 Sep 2022 01:02:02 +0000 Subject: [PATCH 307/507] Update install.sh --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index 0446e22..3bde713 100644 --- a/install.sh +++ b/install.sh @@ -126,12 +126,12 @@ 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 + 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 + sudo sed -i "10 i \ ./gnome.nix" /mnt/etc/nixos/configuration.nix fi fi @@ -148,12 +148,12 @@ read deviceChoice if [ $deviceChoice = 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 + sudo sed -i "10 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix else if [ $deviceChoice = 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 + sudo sed -i "11 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix fi fi From df65ab97b2f1566549d4373b9ebe0ae9a70de55c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 6 Sep 2022 00:16:09 +0000 Subject: [PATCH 308/507] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 1e7840d..921ac3c 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,12 @@ https://nixos.org/manual/nixos/stable/index.html#sec-installation-booting-networ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh > install.sh; sh install.sh ``` +or + +``` +sh <(https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) +``` + The following will happen: - Clear partition table for `/dev/***`. From 2b91f8b7dfe1e45d8237bdcd58c58fcf8fd6f929 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 9 Sep 2022 15:43:51 +0000 Subject: [PATCH 309/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 921ac3c..ea603f5 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ curl https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh > install or ``` -sh <(https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) +sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) ``` The following will happen: From 33bac9a6b6bbc90bf31d4502270685039256f9e5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 9 Sep 2022 16:27:27 +0000 Subject: [PATCH 310/507] ESP --- README.md | 2 +- install.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ea603f5..e29351e 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ The following will happen: - Clear partition table for `/dev/***`. - Creates a GPT partition table for `/dev/***`. -- Create a +512M EFI partiton at `/dev/***1`. +- Create a 1GB 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. diff --git a/install.sh b/install.sh index 3bde713..716dc97 100644 --- a/install.sh +++ b/install.sh @@ -17,10 +17,11 @@ 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 +1G # Set +1G as last sector. echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. +echo # Set last sector. echo n # Create new partition (for swap). echo # Set default partition number. echo # Set default first sector. From 53ed09cae64629e1a77ba2c64fc647d35fa5eaa2 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 9 Sep 2022 17:13:07 +0000 Subject: [PATCH 311/507] No need to remove the file --- install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/install.sh b/install.sh index 716dc97..b3dd4ca 100644 --- a/install.sh +++ b/install.sh @@ -164,6 +164,3 @@ sudo sed -i "s|/dev/disk/by-label/luks|$rootName|g" /mnt/etc/nixos/configuration # Install sudo nixos-install - -# Removed install script. -rm install.sh From 2c6cde2ef72e3cd3df874f549204e9b0fb71aad1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 5 Dec 2022 19:51:10 +0000 Subject: [PATCH 312/507] Update install.sh --- install.sh | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/install.sh b/install.sh index b3dd4ca..e5d6ea2 100644 --- a/install.sh +++ b/install.sh @@ -14,10 +14,6 @@ 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 +1G # Set +1G as last sector. echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. @@ -26,21 +22,13 @@ 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 "" echo "Which is the root partition?" read rootName @@ -49,10 +37,7 @@ echo "" echo "Do you want Hibernation?" echo "1) Yes" echo "2) No" -read hibState - -# Create EFI partition -sudo mkfs.fat -F32 -n EFI $efiName +read hibState # Encrypt the root partition sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName @@ -100,10 +85,6 @@ 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 @@ -113,7 +94,7 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -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/systems/php.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/ echo "" From 340e47060b2207fba8e62bbf18f7be49751760a5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 5 Dec 2022 20:05:10 +0000 Subject: [PATCH 313/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index e5d6ea2..ab91067 100644 --- a/install.sh +++ b/install.sh @@ -17,7 +17,7 @@ echo g # Create new GPT partition table echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. -echo # Set last sector. +echo -8G # Set last sector. echo n # Create new partition (for swap). echo # Set default partition number. echo # Set default first sector. From 72c9ad36903272b53ba9eddcac0d5861d90bf10f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 5 Dec 2022 20:08:26 +0000 Subject: [PATCH 314/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index ab91067..1941117 100644 --- a/install.sh +++ b/install.sh @@ -94,7 +94,7 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/php.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.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/ echo "" From e01bc41ff58ef344983c2dd8e47802e4c8ced2ff Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 5 Dec 2022 20:10:00 +0000 Subject: [PATCH 315/507] Update install.sh --- install.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/install.sh b/install.sh index 1941117..0bcd3f3 100644 --- a/install.sh +++ b/install.sh @@ -17,10 +17,6 @@ echo g # Create new GPT partition table echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. -echo -8G # Set last 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 w # write changes. From bd1745d03c564c734e617de66cd0b74bf66d6374 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 5 Dec 2022 20:11:23 +0000 Subject: [PATCH 316/507] Update install.sh --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index 0bcd3f3..590f1b3 100644 --- a/install.sh +++ b/install.sh @@ -97,6 +97,7 @@ echo "" echo "Which Desktop Environment do you want?" echo "1) Plasma" echo "2) GNOME" +echo "0) None or N/A" read desktopChoice # Change the URL to match where you are hosting your DE/WM .nix file From a45782b7c8e96e60b27f09030aca218e735a28b9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 5 Dec 2022 20:58:53 +0000 Subject: [PATCH 317/507] Update install.sh --- install.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/install.sh b/install.sh index 590f1b3..caac8d6 100644 --- a/install.sh +++ b/install.sh @@ -14,6 +14,10 @@ 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 +1G # Set +1G as last sector. echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. @@ -25,6 +29,12 @@ echo w # write changes. # List the new partitions. lsblk -f +# Format the partitions : +echo "----------" +echo "" +echo "Which is the EFI partition?" +read efiName + echo "" echo "Which is the root partition?" read rootName @@ -35,6 +45,9 @@ echo "1) Yes" echo "2) No" read hibState +# Create EFI partition +sudo mkfs.fat -F32 -n EFI $efiName + # Encrypt the root partition sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName From 8850925b7ec5444c7eb83e2400c210939f6a7de1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 5 Dec 2022 21:28:41 +0000 Subject: [PATCH 318/507] Update install.sh --- install.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.sh b/install.sh index caac8d6..c3b2090 100644 --- a/install.sh +++ b/install.sh @@ -94,6 +94,10 @@ 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 From 8bd99cc405ff8406a3d82e7058d4e68916d63790 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 6 Dec 2022 16:37:45 +0000 Subject: [PATCH 319/507] Update install.sh --- install.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index c3b2090..5a220b6 100644 --- a/install.sh +++ b/install.sh @@ -22,7 +22,9 @@ echo n # Create new partition (for root). 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 From d7f9fb191762429474753fbb6adc88db6ef27005 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 3 Jan 2023 20:45:33 +0000 Subject: [PATCH 320/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index b3dd4ca..d15acb4 100644 --- a/install.sh +++ b/install.sh @@ -21,7 +21,7 @@ echo +1G # Set +1G as last sector. echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. -echo # Set last sector. +echo -4G # Set last sector. echo n # Create new partition (for swap). echo # Set default partition number. echo # Set default first sector. From c220cd7a5483e0b6eda459556d953168542e038e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 3 Jan 2023 20:52:06 +0000 Subject: [PATCH 321/507] Update install.sh --- install.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.sh b/install.sh index d15acb4..a2d23ef 100644 --- a/install.sh +++ b/install.sh @@ -29,6 +29,9 @@ 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 t # Change partition type. +echo 1 # Pick last partition. +echo 19 # Change last partition to swap. echo w # write changes. ) | sudo fdisk $driveName -w always -W always From c5ffb0ed63e819446822578d76f92ae888154fcb Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 3 Jan 2023 21:06:34 +0000 Subject: [PATCH 322/507] Update install.sh --- install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/install.sh b/install.sh index a2d23ef..d15acb4 100644 --- a/install.sh +++ b/install.sh @@ -29,9 +29,6 @@ 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 t # Change partition type. -echo 1 # Pick last partition. -echo 19 # Change last partition to swap. echo w # write changes. ) | sudo fdisk $driveName -w always -W always From 362e9e706f81659d00fd9f90caefab183e57fc0d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 4 Jan 2023 00:57:51 +0000 Subject: [PATCH 323/507] Update install.sh --- install.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/install.sh b/install.sh index d15acb4..2e88b6a 100644 --- a/install.sh +++ b/install.sh @@ -21,11 +21,7 @@ echo +1G # Set +1G as last sector. echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. -echo -4G # Set last 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 # Set last sector. echo t # Change partition type. echo 1 # Pick first partition. echo 1 # Change first partition to EFI system. From 87649df8a230813992b083fa80fa5a0292f307da Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 Jan 2023 07:20:21 +0000 Subject: [PATCH 324/507] Add new directory --- Screenshots/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Screenshots/.gitkeep diff --git a/Screenshots/.gitkeep b/Screenshots/.gitkeep new file mode 100644 index 0000000..e69de29 From 1123ee169b2c6448ef960df946c9c1d16e4e8e79 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 Jan 2023 07:22:10 +0000 Subject: [PATCH 325/507] Upload New File --- .../Screenshot_from_2023-01-08_00-21-43.png | Bin 0 -> 227928 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Screenshots/Screenshot_from_2023-01-08_00-21-43.png diff --git a/Screenshots/Screenshot_from_2023-01-08_00-21-43.png b/Screenshots/Screenshot_from_2023-01-08_00-21-43.png new file mode 100644 index 0000000000000000000000000000000000000000..55a057005f4d897cf5020f0f96fddd6d059cc284 GIT binary patch literal 227928 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 XbXCu&pVd1AYVCQt`njxgN@xNAse{Yl literal 0 HcmV?d00001 From 8b86ef5e9da188f60e317dea51aba282fcb8d17f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 8 Jan 2023 07:24:06 +0000 Subject: [PATCH 326/507] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index e29351e..768bd34 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,10 @@ The following will happen: - Create a root partition in the LVM. - Install systemd-boot. +## Screenshots + +![GNOME Installation](Screenshots/Screenshot_from_2023-01-08_00-21-43.png) + ## Roadmap - [ ] From bcc6965ca75d3f42b3263cdd2438b25a7f57d28f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 11 Jan 2023 18:26:29 +0000 Subject: [PATCH 327/507] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 768bd34..4c83d07 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,8 @@ Tested on the following drives: - SATA - NVMe +Tested on x86_64 machines. + 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: ``` From b795982d26bff20d38ec0b7b7a9dcb80ee70c6b4 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 12 Jan 2023 09:06:43 -0700 Subject: [PATCH 328/507] Fix order --- install.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 5a220b6..a2d86b2 100644 --- a/install.sh +++ b/install.sh @@ -13,7 +13,7 @@ echo "Which drive do we want to use for this installation?" read driveName ( -echo g # Create new GPT partition table +echo g # Create new GPT partition table. echo n # Create new partition (for EFI). echo # Set default partition number. echo # Set default first sector. @@ -21,9 +21,17 @@ echo +1G # Set +1G as last sector. echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. -echo # Set default last sector (rest of the disk). +echo -8G # Set -8G as the last sector. +echo n # Create new partiton (for Swap). +echo # Set default partiion number. +echo # Set default first sector. +echo # Set default last sector. echo t # Change partition type. echo 1 # Pick first partition. +echo 1 # Change to EFI System. +echo t # Change partition type. +echo 3 # Pick last partition. +echo 19 # change to Linux wwap. echo 1 # Change first partition to EFI system. echo w # write changes. ) | sudo fdisk $driveName -w always -W always From 5a5305f7507fb85c29a7c695c54ad917cbed9c04 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 12 Jan 2023 10:31:35 -0700 Subject: [PATCH 329/507] Update path with new filename --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index a2d86b2..406ac17 100644 --- a/install.sh +++ b/install.sh @@ -117,7 +117,7 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.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/ echo "" From 18447da4d457b2c9a2e338211fa338972b4cb674 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 12 Jan 2023 23:42:10 +0000 Subject: [PATCH 330/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c83d07..c5bb006 100644 --- a/README.md +++ b/README.md @@ -68,4 +68,4 @@ The following will happen: # Possible Ideas -- [ ] +- [ ] Install nix-channels such as `nixos-hardware` and `home-manager` after install. From 5a68df458bc3981ff8f8e2d1f2229ced18bbb34d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 12 Jan 2023 23:48:09 +0000 Subject: [PATCH 331/507] Upload New File --- Screenshots/pinebook-pro_nixos.png | Bin 0 -> 173818 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Screenshots/pinebook-pro_nixos.png diff --git a/Screenshots/pinebook-pro_nixos.png b/Screenshots/pinebook-pro_nixos.png new file mode 100644 index 0000000000000000000000000000000000000000..b029355c92930284b06e2ab53108dbe3e978fa40 GIT binary patch literal 173818 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

o6JF)%D)tUjQ}(QqYS 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 z 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 literal 0 HcmV?d00001 From 089c621c8e1060a32f89dc03f045b5e3c9e91b4c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 12 Jan 2023 23:48:54 +0000 Subject: [PATCH 332/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c5bb006..5188028 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ The following will happen: ## Screenshots -![GNOME Installation](Screenshots/Screenshot_from_2023-01-08_00-21-43.png) +![GNOME Installation](Screenshots/pinebook-pro_nixos.png) ## Roadmap From 7ba677837c6d1a920c56e00fb44c1c87b363b681 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 15 Jan 2023 14:57:34 +0000 Subject: [PATCH 333/507] Update install.sh --- install.sh | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/install.sh b/install.sh index 406ac17..78aefd5 100644 --- a/install.sh +++ b/install.sh @@ -13,7 +13,7 @@ echo "Which drive do we want to use for this installation?" read driveName ( -echo g # Create new GPT partition table. +echo g # Create new GPT partition table echo n # Create new partition (for EFI). echo # Set default partition number. echo # Set default first sector. @@ -21,17 +21,9 @@ echo +1G # Set +1G as last sector. echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. -echo -8G # Set -8G as the last sector. -echo n # Create new partiton (for Swap). -echo # Set default partiion number. -echo # Set default first sector. -echo # Set default last sector. +echo # Set last sector. echo t # Change partition type. echo 1 # Pick first partition. -echo 1 # Change to EFI System. -echo t # Change partition type. -echo 3 # Pick last partition. -echo 19 # change to Linux wwap. echo 1 # Change first partition to EFI system. echo w # write changes. ) | sudo fdisk $driveName -w always -W always From f84b30afd03c7b8a8805e27a38e87b9c253e3d27 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 16 Jan 2023 19:11:16 +0000 Subject: [PATCH 334/507] Update install.sh --- install.sh | 66 ++++++++++++++---------------------------------------- 1 file changed, 17 insertions(+), 49 deletions(-) diff --git a/install.sh b/install.sh index 78aefd5..4d65472 100644 --- a/install.sh +++ b/install.sh @@ -21,10 +21,13 @@ echo +1G # Set +1G as last sector. echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. -echo # Set last sector. +echo -4G # Set last sector. echo t # Change partition type. echo 1 # Pick first partition. echo 1 # Change first partition to EFI system. +echo t # Change partition type. +echo 3 # Pick the last partition. +echo 19 # Change last partition to Swap. echo w # write changes. ) | sudo fdisk $driveName -w always -W always @@ -42,60 +45,23 @@ echo "Which is the root partition?" read rootName echo "" -echo "Do you want Hibernation?" -echo "1) Yes" -echo "2) No" -read hibState +echo "Which is the swap partition?" +read swapName # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName -# Encrypt the root partition -sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName - -# Open the encrypted root partition -sudo cryptsetup luksOpen $rootName crypt-root - -sudo pvcreate /dev/mapper/crypt-root -sudo vgcreate lvm /dev/mapper/crypt-root - -if [ $hibState = 1 ]; then - sudo lvcreate -L "$ramTotal"G -n swap lvm - -else - -if [ $hibState = 2 ]; then - sudo lvcreate -L 4G -n swap lvm - -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 +sudo mkswap $swapName # swap partition +sudo mkfs.ext4 $rootName # /root partition +sudo e2label $rootName NixOS # 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 +sudo swapon $swapName +sudo mount $rootName /mnt # 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 @@ -109,7 +75,7 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/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/ echo "" @@ -138,6 +104,7 @@ echo "" echo "Which device are you installing to?" echo "1) Oryx Pro (oryp6)" echo "2) HP Omen (15-dh0015nr)" +echo "3) Pinebook Pro" echo "0) None or N/A" read deviceChoice @@ -152,12 +119,13 @@ else if [ $deviceChoice = 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 +else + +if [ $deviceChoice = 3 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ fi 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 From 0b4e2b1129f900ce5a8cee15453d567053663ca9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 16 Jan 2023 19:44:34 +0000 Subject: [PATCH 335/507] Update install.sh --- install.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/install.sh b/install.sh index 4d65472..bfdc52e 100644 --- a/install.sh +++ b/install.sh @@ -82,6 +82,7 @@ echo "" echo "Which Desktop Environment do you want?" echo "1) Plasma" echo "2) GNOME" +echo "3) Pantheon" echo "0) None or N/A" read desktopChoice @@ -96,6 +97,13 @@ 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 +else + +if [ $desktopChoice = 3 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/pantheon.nix > pantheon.nix; sudo mv -f pantheon.nix /mnt/etc/nixos/ + sudo sed -i "10 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix +else + fi fi From b6c7ca713cfe70a1c6816c5db4745bfe8621915d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 16 Jan 2023 19:57:59 +0000 Subject: [PATCH 336/507] Upload New File --- Screenshots/nixos-pantheon.png | Bin 0 -> 109617 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Screenshots/nixos-pantheon.png diff --git a/Screenshots/nixos-pantheon.png b/Screenshots/nixos-pantheon.png new file mode 100644 index 0000000000000000000000000000000000000000..dfb7ae7bc9363f055d15b2aa8719b787cf8e97b0 GIT binary patch literal 109617 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 Mh0nwpw>=Q{O!`})3pD*{sXL<#KkCuvV!y=8H6 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ʼnOw(UvZ+<%Gi1lpY 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 A*#H0l literal 0 HcmV?d00001 From 8f00b0ccf3788bc85884546a6b7f601411c8383e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 16 Jan 2023 20:07:41 +0000 Subject: [PATCH 337/507] Update README.md --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5188028..69bc4c6 100644 --- a/README.md +++ b/README.md @@ -56,11 +56,9 @@ The following will happen: - 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. +- Install systemd-boot*. -## Screenshots - -![GNOME Installation](Screenshots/pinebook-pro_nixos.png) +* Pinebook Pro is using GRUB currently. ## Roadmap From 8104975a06cf5b7026cdbb60b9dcb52c66e74ac8 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 16 Jan 2023 13:34:57 -0700 Subject: [PATCH 338/507] Updater README --- README.md | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 69bc4c6..dbe1560 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ nix files are from [this repo](https://gitlab.com/ahoneybun/nix-configs/) but th Tested on the following drives: - SATA - NVMe +- eMMC Tested on x86_64 machines. @@ -34,17 +35,24 @@ Prerequisites: ## Connect to internet +```sh +> add_network +0 +> set_network 0 ssid "myhomenetwork" +OK +> set_network 0 psk "mypassword" +OK +> set_network 0 key_mgmt WPA-PSK +OK +> enable_network 0 +OK +``` + 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 -``` - -or - -``` +```sh sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) ``` @@ -58,7 +66,7 @@ The following will happen: - Create a root partition in the LVM. - Install systemd-boot*. -* Pinebook Pro is using GRUB currently. +* Pinebook Pro is using GRUB currently and that is in the main-pbp branch ## Roadmap From 709a11d8bfa63188ef120806d6ac58ad9b60b35c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 16 Jan 2023 13:38:48 -0700 Subject: [PATCH 339/507] Update and clean up README --- README.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index dbe1560..f469332 100644 --- a/README.md +++ b/README.md @@ -58,19 +58,28 @@ sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) The following will happen: +### x86_64 - main branch + - Clear partition table for `/dev/***`. - Creates a GPT partition table for `/dev/***`. -- Create a 1GB 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*. +- Creates a 1GB EFI partiton at `/dev/***1`. +- Creates a encrypted LVM at `/dev/***2`. +- Creates a swap partition in the LVM and sets it as the same size as the RAM for hibernation if requested. +- Creates a root partition in the LVM. +- Installs systemd-boot -* Pinebook Pro is using GRUB currently and that is in the main-pbp branch +### ARM64 (Pinebook Pro) - main-pbp branch + +- Clear partition table for `/dev/***`. +- Creates a GPT partition table for `/dev/***`. +- Creates a 1GB EFI partiton at `/dev/***1`. +- Creates a 4GB Swap partition at `/dev/***3`. +- Creates a root partition with the rest of the space at `/dev/***2`. +- Installs GRUB ## Roadmap -- [ ] +- [ ] Merge ARM64 and x86_64 together into one branch # Possible Ideas From b9f6020df85df10a4086e542e03e265e571ce7c2 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 17 Jan 2023 22:15:36 +0000 Subject: [PATCH 340/507] Update README.md --- README.md | 51 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index e29351e..a4c73e3 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,9 @@ nix files are from [this repo](https://gitlab.com/ahoneybun/nix-configs/) but th Tested on the following drives: - SATA - NVMe +- eMMC + +Tested on x86_64 and aarch64 machines. 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: @@ -32,34 +35,52 @@ Prerequisites: ## Connect to internet +```sh +> add_network +0 +> set_network 0 ssid "myhomenetwork" +OK +> set_network 0 psk "mypassword" +OK +> set_network 0 key_mgmt WPA-PSK +OK +> enable_network 0 +OK +``` + 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 -``` - -or - -``` -sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) +```sh +sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main-pbp/install.sh) ``` The following will happen: +### x86_64 - main branch + - Clear partition table for `/dev/***`. - Creates a GPT partition table for `/dev/***`. -- Create a 1GB 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. +- Creates a 1GB EFI partiton at `/dev/***1`. +- Creates a encrypted LVM at `/dev/***2`. +- Creates a swap partition in the LVM and sets it as the same size as the RAM for hibernation if requested. +- Creates a root partition in the LVM. +- Installs systemd-boot + +### ARM64 (Pinebook Pro) - main-pbp branch + +- Clear partition table for `/dev/***`. +- Creates a GPT partition table for `/dev/***`. +- Creates a 1GB EFI partiton at `/dev/***1`. +- Creates a 4GB Swap partition at `/dev/***3`. +- Creates a root partition with the rest of the space at `/dev/***2`. +- Installs GRUB ## Roadmap -- [ ] +- [ ] Merge ARM64 and x86_64 together into one branch # Possible Ideas -- [ ] +- [ ] Install nix-channels such as `nixos-hardware` and `home-manager` after install. From 0ec8fb9fad80097ff5555d741eec59b03dac6eae Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 17 Jan 2023 22:15:38 +0000 Subject: [PATCH 341/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f469332..43abd04 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Tested on the following drives: - NVMe - eMMC -Tested on x86_64 machines. +Tested on x86_64 and aarch64 machines. 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: From 21d82763203777404f70213a1887c4b6c28fa682 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 17 Jan 2023 22:16:27 +0000 Subject: [PATCH 342/507] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 43abd04..2ccab19 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,9 @@ Tested on the following drives: - NVMe - eMMC -Tested on x86_64 and aarch64 machines. +Tested on the following architectures +- x86_64 +- aarch64 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: From a4d929ac826995e2058ed8b4acba186d759d5176 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 17 Jan 2023 22:16:37 +0000 Subject: [PATCH 343/507] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a4c73e3..4b2b41d 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,9 @@ Tested on the following drives: - NVMe - eMMC -Tested on x86_64 and aarch64 machines. +Tested on the following architectures +- x86_64 +- aarch64 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: From 8dfea142a61193fb02e865e5d254e9d018d500d6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 17 Jan 2023 22:17:30 +0000 Subject: [PATCH 344/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2ccab19..1f0e07f 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Tested on the following drives: - NVMe - eMMC -Tested on the following architectures +Tested on the following architectures: - x86_64 - aarch64 From 160d5135d031b358e6a309ad98071b3d18d8b861 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 17 Jan 2023 22:17:47 +0000 Subject: [PATCH 345/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4b2b41d..2fc56b8 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Tested on the following drives: - NVMe - eMMC -Tested on the following architectures +Tested on the following architectures: - x86_64 - aarch64 From aedc3fee8c6be4c565491552cbf0a4583d6210ba Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 23 Jan 2023 20:51:39 +0000 Subject: [PATCH 346/507] Update install.sh --- install.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 2e88b6a..20996e1 100644 --- a/install.sh +++ b/install.sh @@ -122,15 +122,20 @@ read desktopChoice # Update the second command to the file name that matches your DE/WM .nix file 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/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/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/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/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 +if [ $desktopChoice = 3 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/pantheon.nix > pantheon.nix; sudo mv -f pantheon.nix /mnt/etc/nixos/ + sudo sed -i "10 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix +fi + fi echo "" From 68c4914d01c67b36b0c83aa28f9eb08fcb8adcc0 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 17:11:55 +0000 Subject: [PATCH 347/507] Update install.sh --- install.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.sh b/install.sh index bfdc52e..533dd0e 100644 --- a/install.sh +++ b/install.sh @@ -22,6 +22,10 @@ echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. echo -4G # Set last sector. +echo n # Create Swap partition +echo # Set default partition number. +echo # Set default first sector. +echo # Set last sector. echo t # Change partition type. echo 1 # Pick first partition. echo 1 # Change first partition to EFI system. From bf04a0badca8928be4780c0bf352f7912dc90379 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 17:13:55 +0000 Subject: [PATCH 348/507] Update install.sh --- install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 533dd0e..14d2bd4 100644 --- a/install.sh +++ b/install.sh @@ -130,11 +130,12 @@ else if [ $deviceChoice = 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 + sudo sed -i "10 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix else if [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > pinebook-pro.nix; sudo mv -f pinebook-pro.nix /mnt/etc/nixos/ + sudo sed -i "10 i \ ./pinebook-pro.nix" /mnt/etc/nixos/configuration.nix fi fi From cd61733b7b622a8dd460c4bc1a9e8507eaa9e00d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 17:15:13 +0000 Subject: [PATCH 349/507] Update install.sh --- install.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/install.sh b/install.sh index 14d2bd4..db63359 100644 --- a/install.sh +++ b/install.sh @@ -106,8 +106,6 @@ else if [ $desktopChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/pantheon.nix > pantheon.nix; sudo mv -f pantheon.nix /mnt/etc/nixos/ sudo sed -i "10 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix -else - fi fi From 7e5eb4f22807291e08521e6fa603209dcde17efd Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 17:16:26 +0000 Subject: [PATCH 350/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index db63359..449686c 100644 --- a/install.sh +++ b/install.sh @@ -101,7 +101,7 @@ 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 -else +fi if [ $desktopChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/pantheon.nix > pantheon.nix; sudo mv -f pantheon.nix /mnt/etc/nixos/ @@ -129,7 +129,7 @@ else if [ $deviceChoice = 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 "10 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix -else +fi if [ $deviceChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > pinebook-pro.nix; sudo mv -f pinebook-pro.nix /mnt/etc/nixos/ From 8da4b82c810a9f9efd539c3bcadd14a3b83d399e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 17:21:25 +0000 Subject: [PATCH 351/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 449686c..7526b4b 100644 --- a/install.sh +++ b/install.sh @@ -79,7 +79,7 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +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/ echo "" From 74909e63e47ce4b2322a28700341d8f24dfb5564 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 17:29:27 +0000 Subject: [PATCH 352/507] Update install.sh --- install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/install.sh b/install.sh index 7526b4b..8de8c49 100644 --- a/install.sh +++ b/install.sh @@ -63,9 +63,6 @@ sudo e2label $rootName NixOS sudo swapon $swapName sudo mount $rootName /mnt -# Unmount root -sudo umount /mnt - # Mount the EFI partition. sudo mkdir /mnt/boot/ sudo mount $efiName /mnt/boot From 4f9cfac60728f3b3c300e1745899074ada22d941 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 17:52:47 +0000 Subject: [PATCH 353/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 8de8c49..14f8c90 100644 --- a/install.sh +++ b/install.sh @@ -76,7 +76,7 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -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-pbp/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/ echo "" From 64aaa67037d59bac8d97f8b0826da39bc9428131 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 18:09:29 +0000 Subject: [PATCH 354/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 14f8c90..8de8c49 100644 --- a/install.sh +++ b/install.sh @@ -76,7 +76,7 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main-pbp/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +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/ echo "" From 06749e0a58200c126cefc7de1640f12d0de3e4b7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 18:13:23 +0000 Subject: [PATCH 355/507] Update install.sh --- install.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.sh b/install.sh index 136f3d0..79aa886 100644 --- a/install.sh +++ b/install.sh @@ -21,6 +21,10 @@ echo +1G # Set +1G as last sector. echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. +echo -4G # Set -4G as last sector. +echo n # Create new partition (for root). +echo # Set default partition number. +echo # Set default first sector. echo # Set last sector. echo t # Change partition type. echo 1 # Pick first partition. From 381d729d46f8a5619263f657623d0213d8f0a716 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 18:24:12 +0000 Subject: [PATCH 356/507] Update README.md --- README.md | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/README.md b/README.md index 1f0e07f..9d7a694 100644 --- a/README.md +++ b/README.md @@ -60,18 +60,6 @@ sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) The following will happen: -### x86_64 - main branch - -- Clear partition table for `/dev/***`. -- Creates a GPT partition table for `/dev/***`. -- Creates a 1GB EFI partiton at `/dev/***1`. -- Creates a encrypted LVM at `/dev/***2`. -- Creates a swap partition in the LVM and sets it as the same size as the RAM for hibernation if requested. -- Creates a root partition in the LVM. -- Installs systemd-boot - -### ARM64 (Pinebook Pro) - main-pbp branch - - Clear partition table for `/dev/***`. - Creates a GPT partition table for `/dev/***`. - Creates a 1GB EFI partiton at `/dev/***1`. @@ -81,7 +69,7 @@ The following will happen: ## Roadmap -- [ ] Merge ARM64 and x86_64 together into one branch +- [x] Merge ARM64 and x86_64 together into one branch # Possible Ideas From 061e3f57a7bf1213640a7bfcf01632bfe581e50b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 18:27:39 +0000 Subject: [PATCH 357/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 79aa886..3e027c3 100644 --- a/install.sh +++ b/install.sh @@ -129,8 +129,8 @@ if [ $deviceChoice = 2 ]; then fi if [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > pinebook-pro.nix; sudo mv -f pinebook-pro.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./pinebook-pro.nix" /mnt/etc/nixos/configuration.nix + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ + sudo sed -i "10 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix fi fi From 33437304820a356f87e43f6a724c8eb4e44e6573 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 19:39:06 +0000 Subject: [PATCH 358/507] Update install.sh --- install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 3e027c3..1d0ae7e 100644 --- a/install.sh +++ b/install.sh @@ -129,8 +129,9 @@ if [ $deviceChoice = 2 ]; then fi if [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ + #sudo sed -i "10 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix fi fi From 77d0feb8f03d0c5c5cdf18033442255ec61866ef Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 25 Jan 2023 20:11:33 +0000 Subject: [PATCH 359/507] Update install.sh --- install.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index 1d0ae7e..2c52f06 100644 --- a/install.sh +++ b/install.sh @@ -92,17 +92,17 @@ read desktopChoice if [ $desktopChoice = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./plasma.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "8 i \ ./plasma.nix" /mnt/etc/nixos/configuration.nix else if [ $desktopChoice = 2 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/gnome.nix > gnome.nix; sudo mv -f gnome.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./gnome.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "8 i \ ./gnome.nix" /mnt/etc/nixos/configuration.nix fi if [ $desktopChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/pantheon.nix > pantheon.nix; sudo mv -f pantheon.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "8 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix fi fi @@ -120,18 +120,18 @@ read deviceChoice if [ $deviceChoice = 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 + sudo sed -i "9 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix else if [ $deviceChoice = 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 "10 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "9 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix fi if [ $deviceChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ - #sudo sed -i "10 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix + #sudo sed -i "9 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix fi fi From 58fc58512998362b9e4478edd667a93e828b5dfe Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 26 Jan 2023 17:10:33 +0000 Subject: [PATCH 360/507] Update install.sh --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 2c52f06..819a5fc 100644 --- a/install.sh +++ b/install.sh @@ -129,9 +129,9 @@ if [ $deviceChoice = 2 ]; then fi if [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ - #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ - #sudo sed -i "9 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix + #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ + sudo sed -i "9 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix fi fi From a08a2f6610706e5a44e19beab19cb69a7de1d74b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 26 Jan 2023 17:17:31 +0000 Subject: [PATCH 361/507] Update install.sh --- install.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index 819a5fc..0f3de0e 100644 --- a/install.sh +++ b/install.sh @@ -92,17 +92,17 @@ read desktopChoice if [ $desktopChoice = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ - sudo sed -i "8 i \ ./plasma.nix" /mnt/etc/nixos/configuration.nix + 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/desktops/gnome.nix > gnome.nix; sudo mv -f gnome.nix /mnt/etc/nixos/ - sudo sed -i "8 i \ ./gnome.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "10 i \ ./gnome.nix" /mnt/etc/nixos/configuration.nix fi if [ $desktopChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/pantheon.nix > pantheon.nix; sudo mv -f pantheon.nix /mnt/etc/nixos/ - sudo sed -i "8 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "10 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix fi fi @@ -120,18 +120,18 @@ read deviceChoice if [ $deviceChoice = 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 "9 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "11 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix else if [ $deviceChoice = 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 "9 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "11 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix fi if [ $deviceChoice = 3 ]; then #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ - sudo sed -i "9 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix fi fi From a1fe95bb8367138f4d9f59e53416333f3b407087 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 29 Jan 2023 22:41:43 +0000 Subject: [PATCH 362/507] Update install.sh --- install.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 0f3de0e..c9e1b03 100644 --- a/install.sh +++ b/install.sh @@ -110,8 +110,9 @@ fi echo "" echo "Which device are you installing to?" echo "1) Oryx Pro (oryp6)" -echo "2) HP Omen (15-dh0015nr)" -echo "3) Pinebook Pro" +echo "2) Galago Pro (galp3-b)" +echo "3) HP Omen (15-dh0015nr)" +echo "4) Pinebook Pro" echo "0) None or N/A" read deviceChoice @@ -124,11 +125,16 @@ if [ $deviceChoice = 1 ]; then else if [ $deviceChoice = 2 ]; 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 "11 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix +else + +if [ $deviceChoice = 3 ]; 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 -if [ $deviceChoice = 3 ]; then +if [ $deviceChoice = 4 ]; then #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix From 7ed4fe5918bdc411087db60e2b49d3c3fe5115a6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 30 Jan 2023 19:17:59 +0000 Subject: [PATCH 363/507] Update install.sh --- install.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index c9e1b03..2b97308 100644 --- a/install.sh +++ b/install.sh @@ -111,8 +111,9 @@ echo "" echo "Which device are you installing to?" echo "1) Oryx Pro (oryp6)" echo "2) Galago Pro (galp3-b)" -echo "3) HP Omen (15-dh0015nr)" -echo "4) Pinebook Pro" +echo "3) Galago Pro (galp4)" +echo "4) HP Omen (15-dh0015nr)" +echo "5) Pinebook Pro" echo "0) None or N/A" read deviceChoice @@ -125,16 +126,21 @@ if [ $deviceChoice = 1 ]; then else if [ $deviceChoice = 2 ]; 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 "11 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/galp3-b.nix > galp3-b.nix; sudo mv -f galp3-b.nix /mnt/etc/nixos/ + sudo sed -i "11 i \ ./galp3-b.nix" /mnt/etc/nixos/configuration.nix else if [ $deviceChoice = 3 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/galp4.nix > galp4.nix; sudo mv -f galp4.nix /mnt/etc/nixos/ + sudo sed -i "11 i \ ./galp4.nix" /mnt/etc/nixos/configuration.nix +else + +if [ $deviceChoice = 4 ]; 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 -if [ $deviceChoice = 4 ]; then +if [ $deviceChoice = 5 ]; then #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix From 0b9ff8eafc224ec7717105b7b2859070efae7049 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 30 Jan 2023 19:43:14 +0000 Subject: [PATCH 364/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 2b97308..b2df964 100644 --- a/install.sh +++ b/install.sh @@ -128,12 +128,12 @@ else if [ $deviceChoice = 2 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/galp3-b.nix > galp3-b.nix; sudo mv -f galp3-b.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./galp3-b.nix" /mnt/etc/nixos/configuration.nix -else +fi if [ $deviceChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/galp4.nix > galp4.nix; sudo mv -f galp4.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./galp4.nix" /mnt/etc/nixos/configuration.nix -else +fi if [ $deviceChoice = 4 ]; 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/ From eb1e50aceaa3c23128dfe4af939b9af238380652 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 28 Mar 2023 18:52:55 +0000 Subject: [PATCH 365/507] Update install.sh --- install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/install.sh b/install.sh index b2df964..d7129ed 100644 --- a/install.sh +++ b/install.sh @@ -56,8 +56,7 @@ read swapName sudo mkfs.fat -F32 -n EFI $efiName sudo mkswap $swapName # swap partition -sudo mkfs.ext4 $rootName # /root partition -sudo e2label $rootName NixOS +sudo mkfs.btrfs -L root $rootName # /root partition # 0. Mount the filesystems. sudo swapon $swapName From 967bf36bdefc344a64bba9098a093296a90deacb Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 28 Mar 2023 19:02:08 +0000 Subject: [PATCH 366/507] Update install.sh --- install.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index d7129ed..50cb081 100644 --- a/install.sh +++ b/install.sh @@ -58,13 +58,24 @@ sudo mkfs.fat -F32 -n EFI $efiName sudo mkswap $swapName # swap partition sudo mkfs.btrfs -L root $rootName # /root partition -# 0. Mount the filesystems. +# Mount the filesystems. sudo swapon $swapName sudo mount $rootName /mnt +# Create Subvolumes +btrfs subvolume create /mnt/@ +btrfs subvolume create /mnt/@home + +# Unmount root +sudo umount /mnt + +# Mount the subvolumes. +mount -o noatime,commit=120,compress=zstd:10,subvol=@ /dev/lvm/root /mnt +mkdir /mnt/home +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 +mount --mkdir $efiName /mnt/boot/ # Generate Nix configuration sudo nixos-generate-config --root /mnt From df9711b88bf3141c826cec008f703f72b06def61 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 28 Mar 2023 19:04:12 +0000 Subject: [PATCH 367/507] Add sudo --- install.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index 50cb081..26eedda 100644 --- a/install.sh +++ b/install.sh @@ -63,19 +63,19 @@ sudo swapon $swapName sudo mount $rootName /mnt # Create Subvolumes -btrfs subvolume create /mnt/@ -btrfs subvolume create /mnt/@home +sudo btrfs subvolume create /mnt/@ +sudo btrfs subvolume create /mnt/@home # Unmount root sudo umount /mnt # Mount the subvolumes. -mount -o noatime,commit=120,compress=zstd:10,subvol=@ /dev/lvm/root /mnt -mkdir /mnt/home -mount -o noatime,commit=120,compress=zstd:10,subvol=@home /dev/lvm/root /mnt/home +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. -mount --mkdir $efiName /mnt/boot/ +sudo mount --mkdir $efiName /mnt/boot/ # Generate Nix configuration sudo nixos-generate-config --root /mnt From ccade8a217505a68d4beb9b1426fa6ad0899c9fe Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 28 Mar 2023 19:08:50 +0000 Subject: [PATCH 368/507] Update rootName --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 26eedda..7b57a9c 100644 --- a/install.sh +++ b/install.sh @@ -70,9 +70,9 @@ sudo btrfs subvolume create /mnt/@home sudo umount /mnt # Mount the subvolumes. -sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@ /dev/lvm/root /mnt +sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@ $rootName /mnt sudo mkdir /mnt/home -sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@home /dev/lvm/root /mnt/home +sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@home $rootName /mnt/home # Mount the EFI partition. sudo mount --mkdir $efiName /mnt/boot/ From 950e2ef11a93d4c329a796a7693cc12f7b4aa221 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Mar 2023 14:18:13 +0000 Subject: [PATCH 369/507] Update @ subvol name --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 7b57a9c..320af78 100644 --- a/install.sh +++ b/install.sh @@ -63,7 +63,7 @@ sudo swapon $swapName sudo mount $rootName /mnt # Create Subvolumes -sudo btrfs subvolume create /mnt/@ +sudo btrfs subvolume create /mnt/@root sudo btrfs subvolume create /mnt/@home # Unmount root From c477296da56025e2a9f7071ce791c21af2d8d45e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 29 Mar 2023 14:23:13 +0000 Subject: [PATCH 370/507] Add Sway --- install.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/install.sh b/install.sh index 320af78..c7f4bab 100644 --- a/install.sh +++ b/install.sh @@ -94,6 +94,7 @@ echo "Which Desktop Environment do you want?" echo "1) Plasma" echo "2) GNOME" echo "3) Pantheon" +echo "4) Sway" echo "0) None or N/A" read desktopChoice @@ -115,6 +116,11 @@ if [ $desktopChoice = 3 ]; then sudo sed -i "10 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix fi +if [ $desktopChoice = 4 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/sway.nix > sway.nix; sudo mv -f sway.nix /mnt/etc/nixos/ + sudo sed -i "10 i \ ./sway.nix" /mnt/etc/nixos/configuration.nix +fi + fi echo "" From 084993248e3502f67d7be41fa2f84549b8bf599a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 31 Mar 2023 15:21:49 +0000 Subject: [PATCH 371/507] Update install.sh --- install.sh | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/install.sh b/install.sh index c7f4bab..3fab391 100644 --- a/install.sh +++ b/install.sh @@ -55,12 +55,26 @@ read swapName # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName +# Encrypt the root partition +sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName + +# Open the encrypted root partition +sudo cryptsetup luksOpen $rootName crypt-root + +sudo pvcreate /dev/mapper/crypt-root +sudo vgcreate lvm /dev/mapper/crypt-root + +sudo lvcreate -L 4G -n swap lvm +sudo lvcreate -l '100%FREE' -n root lvm + +sudo cryptsetup config $rootName --label luks + sudo mkswap $swapName # swap partition sudo mkfs.btrfs -L root $rootName # /root partition # Mount the filesystems. -sudo swapon $swapName -sudo mount $rootName /mnt +sudo swapon /dev/mapper/lvm-swap +sudo mount /dev/mapper/lvm-root /mnt # Create Subvolumes sudo btrfs subvolume create /mnt/@root @@ -86,7 +100,7 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -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/luks/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/ echo "" @@ -150,13 +164,7 @@ if [ $deviceChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/galp4.nix > galp4.nix; sudo mv -f galp4.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./galp4.nix" /mnt/etc/nixos/configuration.nix fi - -if [ $deviceChoice = 4 ]; 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 - -if [ $deviceChoice = 5 ]; then + #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; s #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix From 99f366132ec389dbac0313630c11bc1274a078e7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 31 Mar 2023 15:30:35 +0000 Subject: [PATCH 372/507] Update install.sh --- install.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.sh b/install.sh index 3fab391..8e521c0 100644 --- a/install.sh +++ b/install.sh @@ -172,5 +172,8 @@ fi fi +# Replace LUKS device +sudo sed -i "s#/dev/sda#$rootName#g" /mnt/etc/nixos/configuration.nix + # Install sudo nixos-install From 3b411028aac027317f89f5bbbd011d9e62d454f7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 31 Mar 2023 15:36:27 +0000 Subject: [PATCH 373/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 8e521c0..79eafca 100644 --- a/install.sh +++ b/install.sh @@ -69,8 +69,8 @@ sudo lvcreate -l '100%FREE' -n root lvm sudo cryptsetup config $rootName --label luks -sudo mkswap $swapName # swap partition -sudo mkfs.btrfs -L root $rootName # /root partition +sudo mkswap /dev/lvm/swap # swap partition +sudo mkfs.btrfs -L root /dev/mapper/lvm-root # /root partition # Mount the filesystems. sudo swapon /dev/mapper/lvm-swap From 766177340bfd5d8ab32db1eedd130dca0f3d1f51 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 31 Mar 2023 15:40:15 +0000 Subject: [PATCH 374/507] Update install.sh --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 79eafca..2744d0d 100644 --- a/install.sh +++ b/install.sh @@ -84,9 +84,9 @@ sudo btrfs subvolume create /mnt/@home sudo umount /mnt # Mount the subvolumes. -sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@ $rootName /mnt -sudo mkdir /mnt/home -sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@home $rootName /mnt/home +mount -o noatime,commit=120,compress=zstd:10,subvol=@ /dev/lvm/root /mnt +mkdir /mnt/home +mount -o noatime,commit=120,compress=zstd:10,subvol=@home /dev/lvm/root /mnt/home # Mount the EFI partition. sudo mount --mkdir $efiName /mnt/boot/ From e4241b0c58c32cab9b56fbba0e1cfb2e976a50aa Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 31 Mar 2023 15:43:09 +0000 Subject: [PATCH 375/507] Update install.sh --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 2744d0d..547a54a 100644 --- a/install.sh +++ b/install.sh @@ -84,9 +84,9 @@ sudo btrfs subvolume create /mnt/@home sudo umount /mnt # Mount the subvolumes. -mount -o noatime,commit=120,compress=zstd:10,subvol=@ /dev/lvm/root /mnt -mkdir /mnt/home -mount -o noatime,commit=120,compress=zstd:10,subvol=@home /dev/lvm/root /mnt/home +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 mount --mkdir $efiName /mnt/boot/ From 6fca38d2f2ea6d3c0a69360632b12bbc790b65f9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 31 Mar 2023 15:48:46 +0000 Subject: [PATCH 376/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 547a54a..c31bf97 100644 --- a/install.sh +++ b/install.sh @@ -84,7 +84,7 @@ sudo btrfs subvolume create /mnt/@home sudo umount /mnt # Mount the subvolumes. -sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@ /dev/lvm/root /mnt +sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@root /dev/lvm/root /mnt sudo mkdir /mnt/home sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@home /dev/lvm/root /mnt/home From 99df74fc41cf08d933451ee303d68832f85b06dd Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 31 Mar 2023 15:56:50 +0000 Subject: [PATCH 377/507] Update install.sh --- install.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/install.sh b/install.sh index c31bf97..f392a7f 100644 --- a/install.sh +++ b/install.sh @@ -164,6 +164,13 @@ if [ $deviceChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/galp4.nix > galp4.nix; sudo mv -f galp4.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./galp4.nix" /mnt/etc/nixos/configuration.nix fi + +if [ $deviceChoice = 4 ]; 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 \ ./galp4.nix" /mnt/etc/nixos/configuration.nix +fi + +if [ $deviceChoice = 5 ]; then #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; s #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ From 4e3857b2e2b2fadc6e8f323633380ea90c18c2f4 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 31 Mar 2023 15:57:41 +0000 Subject: [PATCH 378/507] Update install.sh --- install.sh | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/install.sh b/install.sh index f392a7f..e4b52a2 100644 --- a/install.sh +++ b/install.sh @@ -118,23 +118,19 @@ read desktopChoice if [ $desktopChoice = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/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 +elif [ $desktopChoice = 2 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/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 -if [ $desktopChoice = 3 ]; then +elif [ $desktopChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/pantheon.nix > pantheon.nix; sudo mv -f pantheon.nix /mnt/etc/nixos/ sudo sed -i "10 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix -fi -if [ $desktopChoice = 4 ]; then +elif [ $desktopChoice = 4 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/sway.nix > sway.nix; sudo mv -f sway.nix /mnt/etc/nixos/ sudo sed -i "10 i \ ./sway.nix" /mnt/etc/nixos/configuration.nix -fi - + fi echo "" From 6fb781a07824125c8e2224aa572da694d257c9e4 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 31 Mar 2023 16:02:21 +0000 Subject: [PATCH 379/507] Update install.sh --- install.sh | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/install.sh b/install.sh index e4b52a2..322cdd8 100644 --- a/install.sh +++ b/install.sh @@ -130,7 +130,7 @@ elif [ $desktopChoice = 3 ]; then elif [ $desktopChoice = 4 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/sway.nix > sway.nix; sudo mv -f sway.nix /mnt/etc/nixos/ sudo sed -i "10 i \ ./sway.nix" /mnt/etc/nixos/configuration.nix - + fi echo "" @@ -149,29 +149,24 @@ read deviceChoice if [ $deviceChoice = 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 "11 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix -else -if [ $deviceChoice = 2 ]; then +elif [ $deviceChoice = 2 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/galp3-b.nix > galp3-b.nix; sudo mv -f galp3-b.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./galp3-b.nix" /mnt/etc/nixos/configuration.nix -fi -if [ $deviceChoice = 3 ]; then +elif [ $deviceChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/galp4.nix > galp4.nix; sudo mv -f galp4.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./galp4.nix" /mnt/etc/nixos/configuration.nix -fi -if [ $deviceChoice = 4 ]; then +elif [ $deviceChoice = 4 ]; 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 \ ./galp4.nix" /mnt/etc/nixos/configuration.nix -fi -if [ $deviceChoice = 5 ]; then +elif [ $deviceChoice = 5 ]; then #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; s #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix -fi fi From 3dc06836bf4d4ebe499e84c8347ac1d73bc0e1a4 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sat, 1 Apr 2023 23:46:57 +0000 Subject: [PATCH 380/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 322cdd8..38c7af0 100644 --- a/install.sh +++ b/install.sh @@ -100,7 +100,7 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/luks/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +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/ echo "" From 266b04f6318403e51856085fa4b5f50e82f3fe1d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 12 Apr 2023 16:19:53 +0000 Subject: [PATCH 381/507] Update install.sh --- install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install.sh b/install.sh index 38c7af0..a2d4be3 100644 --- a/install.sh +++ b/install.sh @@ -140,6 +140,7 @@ echo "2) Galago Pro (galp3-b)" echo "3) Galago Pro (galp4)" echo "4) HP Omen (15-dh0015nr)" echo "5) Pinebook Pro" +echo "6) Virtual Machine" echo "0) None or N/A" read deviceChoice @@ -168,6 +169,10 @@ elif [ $deviceChoice = 5 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix +elif [ $deviceChoice = 6 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +fi + fi # Replace LUKS device From b9d5261c20d08d00e6cca860985e09c8e14fefd6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 12 Apr 2023 16:26:12 +0000 Subject: [PATCH 382/507] Update install.sh --- install.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/install.sh b/install.sh index a2d4be3..574092e 100644 --- a/install.sh +++ b/install.sh @@ -100,7 +100,7 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -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/luks/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/ echo "" @@ -173,8 +173,6 @@ elif [ $deviceChoice = 6 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ fi -fi - # Replace LUKS device sudo sed -i "s#/dev/sda#$rootName#g" /mnt/etc/nixos/configuration.nix From 123f0e32b582eea9d73c130e311f0957d8a978dc Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 13:22:25 +0000 Subject: [PATCH 383/507] Update install.sh --- install.sh | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index 574092e..14412e8 100644 --- a/install.sh +++ b/install.sh @@ -138,9 +138,10 @@ echo "Which device are you installing to?" echo "1) Oryx Pro (oryp6)" echo "2) Galago Pro (galp3-b)" echo "3) Galago Pro (galp4)" -echo "4) HP Omen (15-dh0015nr)" -echo "5) Pinebook Pro" -echo "6) Virtual Machine" +echo "4) Thelio NVIDIA (thelio-b1)" +echo "5) HP Omen (15-dh0015nr)" +echo "6) Pinebook Pro" +echo "7) Virtual Machine" echo "0) None or N/A" read deviceChoice @@ -160,16 +161,19 @@ elif [ $deviceChoice = 3 ]; then sudo sed -i "11 i \ ./galp4.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 4 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/thelio-nvidia.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + +elif [ $deviceChoice = 5 ]; 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 \ ./galp4.nix" /mnt/etc/nixos/configuration.nix -elif [ $deviceChoice = 5 ]; then +elif [ $deviceChoice = 6 ]; then #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; s #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix -elif [ $deviceChoice = 6 ]; then +elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ fi From 6dcc21244adb34cc835bad0c327de4f0a490e2e7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 17:33:30 +0000 Subject: [PATCH 384/507] Add Thelio with NVIDIA sed option --- install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 14412e8..dadf1a8 100644 --- a/install.sh +++ b/install.sh @@ -161,7 +161,7 @@ elif [ $deviceChoice = 3 ]; then sudo sed -i "11 i \ ./galp4.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 4 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/thelio-nvidia.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + elif [ $deviceChoice = 5 ]; 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/ @@ -180,5 +180,8 @@ fi # Replace LUKS device sudo sed -i "s#/dev/sda#$rootName#g" /mnt/etc/nixos/configuration.nix +# Disable latest kernel for Thelio with NVIDIA GPU +sudo sed -i "s/boot.kernelPackages/# boot.kernelPackages/g" /mnt/etc/nixos/configuration.nix + # Install sudo nixos-install From 8060b0f4f258bd6885e617f32ee0fefe0259e939 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 17:37:07 +0000 Subject: [PATCH 385/507] Update install.sh --- install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index dadf1a8..0cc724e 100644 --- a/install.sh +++ b/install.sh @@ -161,11 +161,12 @@ elif [ $deviceChoice = 3 ]; then sudo sed -i "11 i \ ./galp4.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 4 ]; then - + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ + sudo sed -i "11 i \ ./thelio-nvidia.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 5 ]; 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 \ ./galp4.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "11 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 6 ]; then #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; s From 6f4ae4be9d3bd3e9b7f08248a3d730dd1b44f354 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 18:03:44 +0000 Subject: [PATCH 386/507] Test if statement --- install.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/install.sh b/install.sh index 0cc724e..a282230 100644 --- a/install.sh +++ b/install.sh @@ -35,6 +35,22 @@ echo 19 # Change last partition to Swap. echo w # write changes. ) | sudo fdisk $driveName -w always -W always +if [ $driveName == /dev/nvme* ]; then + # Format the NVMe drive with the ext4 filesystem + mkfs.ext4 $DEVICE_PATH + +# Check if the device is a SATA drive +elif [ $driveName == /dev/sd* ]; then + # Format the SATA drive with the NTFS filesystem + mkfs.ntfs $DEVICE_PATH + +# Check if the device is an eMMC drive +elif [ $driveName == /dev/mmcblk* ]; then + # Format the eMMC drive with the FAT32 filesystem + mkfs.fat -F 32 $DEVICE_PATH + +fi + # List the new partitions. lsblk -f From 2596d54e282de6f3f849ac8424d0b4428c175c0a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 18:38:43 +0000 Subject: [PATCH 387/507] Update install.sh --- install.sh | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index a282230..55fbacd 100644 --- a/install.sh +++ b/install.sh @@ -36,18 +36,31 @@ echo w # write changes. ) | sudo fdisk $driveName -w always -W always if [ $driveName == /dev/nvme* ]; then - # Format the NVMe drive with the ext4 filesystem - mkfs.ext4 $DEVICE_PATH + # Set variables + efiName="${driveName}p1" + rootName="${driveName}p2" + swapName="${driveName}p3" # Check if the device is a SATA drive elif [ $driveName == /dev/sd* ]; then - # Format the SATA drive with the NTFS filesystem - mkfs.ntfs $DEVICE_PATH + # Set variables + efiName="${driveName}1" + rootName="${driveName}2" + swapName="${driveName}3" + +# Check if the device is a Virtual drive +elif [ $driveName == /dev/vd* ]; then + # Set variables + efiName="${driveName}1" + rootName="${driveName}2" + swapName="${driveName}3" # Check if the device is an eMMC drive elif [ $driveName == /dev/mmcblk* ]; then - # Format the eMMC drive with the FAT32 filesystem - mkfs.fat -F 32 $DEVICE_PATH + # Set variables + efiName="${driveName}1" + rootName="${driveName}2" + swapName="${driveName}3" fi From 8c46a23503f70abcb36843450b1745ade19cc4ca Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 18:39:54 +0000 Subject: [PATCH 388/507] Update install.sh --- install.sh | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/install.sh b/install.sh index 55fbacd..fb2032a 100644 --- a/install.sh +++ b/install.sh @@ -67,20 +67,6 @@ fi # List the new partitions. lsblk -f -# Format the partitions : -echo "----------" -echo "" -echo "Which is the EFI partition?" -read efiName - -echo "" -echo "Which is the root partition?" -read rootName - -echo "" -echo "Which is the swap partition?" -read swapName - # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName From c447fbc67f3dd10e8fbefbbce2e61c1c2b31c7fe Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 18:45:54 +0000 Subject: [PATCH 389/507] Update install.sh --- install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install.sh b/install.sh index fb2032a..1ed48d3 100644 --- a/install.sh +++ b/install.sh @@ -95,6 +95,8 @@ sudo mount /dev/mapper/lvm-root /mnt sudo btrfs subvolume create /mnt/@root sudo btrfs subvolume create /mnt/@home +sleep 120 + # Unmount root sudo umount /mnt From 3652e3663b7d321dec4a3764022e160ca39a312f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 18:47:05 +0000 Subject: [PATCH 390/507] debugging --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 1ed48d3..1ba407a 100644 --- a/install.sh +++ b/install.sh @@ -70,6 +70,8 @@ lsblk -f # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName +sleep 120 + # Encrypt the root partition sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName @@ -95,8 +97,6 @@ sudo mount /dev/mapper/lvm-root /mnt sudo btrfs subvolume create /mnt/@root sudo btrfs subvolume create /mnt/@home -sleep 120 - # Unmount root sudo umount /mnt From b8fefcdfb8465248e00a3c0df0f4bd122a8468d9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 18:50:06 +0000 Subject: [PATCH 391/507] Update install.sh --- install.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/install.sh b/install.sh index 1ba407a..847167b 100644 --- a/install.sh +++ b/install.sh @@ -37,30 +37,30 @@ echo w # write changes. if [ $driveName == /dev/nvme* ]; then # Set variables - efiName="${driveName}p1" - rootName="${driveName}p2" - swapName="${driveName}p3" + efiName=${driveName}p1 + rootName=${driveName}p2 + swapName=${driveName}p3 # Check if the device is a SATA drive elif [ $driveName == /dev/sd* ]; then # Set variables - efiName="${driveName}1" - rootName="${driveName}2" - swapName="${driveName}3" + efiName=${driveName}1 + rootName=${driveName}2 + swapName=${driveName}3 # Check if the device is a Virtual drive elif [ $driveName == /dev/vd* ]; then # Set variables - efiName="${driveName}1" - rootName="${driveName}2" - swapName="${driveName}3" + efiName=${driveName}1 + rootName=${driveName}2 + swapName=${driveName}3 # Check if the device is an eMMC drive elif [ $driveName == /dev/mmcblk* ]; then # Set variables - efiName="${driveName}1" - rootName="${driveName}2" - swapName="${driveName}3" + efiName=${driveName}1 + rootName=${driveName}2 + swapName=${driveName}3 fi From fd766280d5e0313998054d31791032b5b947305e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 18:58:36 +0000 Subject: [PATCH 392/507] Update install.sh --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index 847167b..9774f11 100644 --- a/install.sh +++ b/install.sh @@ -70,6 +70,7 @@ lsblk -f # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName +echo $efiName sleep 120 # Encrypt the root partition From cd5e8ec98cddfb8f43f69700acef6975e4bb77e3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 19:08:18 +0000 Subject: [PATCH 393/507] Update install.sh --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 9774f11..784ee95 100644 --- a/install.sh +++ b/install.sh @@ -51,9 +51,9 @@ elif [ $driveName == /dev/sd* ]; then # Check if the device is a Virtual drive elif [ $driveName == /dev/vd* ]; then # Set variables - efiName=${driveName}1 - rootName=${driveName}2 - swapName=${driveName}3 + efiName={$driveName}1 + rootName={$driveName}2 + swapName={$driveName}3 # Check if the device is an eMMC drive elif [ $driveName == /dev/mmcblk* ]; then From a1beec96af54d6bc23bc71f1b41de0e456100b86 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 19:09:49 +0000 Subject: [PATCH 394/507] Update install.sh --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 784ee95..c14d61c 100644 --- a/install.sh +++ b/install.sh @@ -51,9 +51,9 @@ elif [ $driveName == /dev/sd* ]; then # Check if the device is a Virtual drive elif [ $driveName == /dev/vd* ]; then # Set variables - efiName={$driveName}1 - rootName={$driveName}2 - swapName={$driveName}3 + efiName="{$driveName}1" + rootName="{$driveName}2" + swapName="{$driveName}3" # Check if the device is an eMMC drive elif [ $driveName == /dev/mmcblk* ]; then From 062259948606258f11b26e1c7d0460842e7e001d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 19:10:32 +0000 Subject: [PATCH 395/507] Update install.sh --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index c14d61c..b854ceb 100644 --- a/install.sh +++ b/install.sh @@ -35,28 +35,28 @@ echo 19 # Change last partition to Swap. echo w # write changes. ) | sudo fdisk $driveName -w always -W always -if [ $driveName == /dev/nvme* ]; then +if [ $driveName = /dev/nvme* ]; then # Set variables efiName=${driveName}p1 rootName=${driveName}p2 swapName=${driveName}p3 # Check if the device is a SATA drive -elif [ $driveName == /dev/sd* ]; then +elif [ $driveName = /dev/sd* ]; then # Set variables efiName=${driveName}1 rootName=${driveName}2 swapName=${driveName}3 # Check if the device is a Virtual drive -elif [ $driveName == /dev/vd* ]; then +elif [ $driveName = /dev/vd* ]; then # Set variables efiName="{$driveName}1" rootName="{$driveName}2" swapName="{$driveName}3" # Check if the device is an eMMC drive -elif [ $driveName == /dev/mmcblk* ]; then +elif [ $driveName = /dev/mmcblk* ]; then # Set variables efiName=${driveName}1 rootName=${driveName}2 From 66e9be884a5a8ae5534a960acbf6a690b08b17e9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 19:21:56 +0000 Subject: [PATCH 396/507] Update install.sh --- install.sh | 45 +++++++++++++-------------------------------- 1 file changed, 13 insertions(+), 32 deletions(-) diff --git a/install.sh b/install.sh index b854ceb..a4ffc25 100644 --- a/install.sh +++ b/install.sh @@ -35,44 +35,25 @@ echo 19 # Change last partition to Swap. echo w # write changes. ) | sudo fdisk $driveName -w always -W always -if [ $driveName = /dev/nvme* ]; then - # Set variables - efiName=${driveName}p1 - rootName=${driveName}p2 - swapName=${driveName}p3 - -# Check if the device is a SATA drive -elif [ $driveName = /dev/sd* ]; then - # Set variables - efiName=${driveName}1 - rootName=${driveName}2 - swapName=${driveName}3 - -# Check if the device is a Virtual drive -elif [ $driveName = /dev/vd* ]; then - # Set variables - efiName="{$driveName}1" - rootName="{$driveName}2" - swapName="{$driveName}3" - -# Check if the device is an eMMC drive -elif [ $driveName = /dev/mmcblk* ]; then - # Set variables - efiName=${driveName}1 - rootName=${driveName}2 - swapName=${driveName}3 - -fi - # List the new partitions. lsblk -f +echo "----------" +echo "" +echo "Which is the EFI partition?" +read efiName + +echo "" +echo "Which is the root partition?" +read rootName + +echo "" +echo "Which is the swap partition?" +read swapName + # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName -echo $efiName -sleep 120 - # Encrypt the root partition sudo cryptsetup luksFormat -v -s 512 -h sha512 $rootName From d987e56383d9182075b09537d3676f9ad4a21883 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 20:05:28 +0000 Subject: [PATCH 397/507] Update install.sh --- install.sh | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/install.sh b/install.sh index a4ffc25..b42d06b 100644 --- a/install.sh +++ b/install.sh @@ -2,6 +2,9 @@ # then sets it as a variable for hibernation support ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) +# Set append for drive automation +APPEND="" + # Detect and list the drives. lsblk -f @@ -38,18 +41,16 @@ echo w # write changes. # List the new partitions. lsblk -f -echo "----------" -echo "" -echo "Which is the EFI partition?" -read efiName +if [[ "$driveName" == "/dev/nvme"* || "$driveName" == "/dev/mmcblk0"* ]]; then + APPEND="p" +fi -echo "" -echo "Which is the root partition?" -read rootName - -echo "" -echo "Which is the swap partition?" -read swapName +efiName=${driveName}$APPEND +efiName+=1 +rootName=${driveName}$APPEND +rootName+=2 +swapName=${driveName}$APPEND +swapName+=3 # Create EFI partition sudo mkfs.fat -F32 -n EFI $efiName From 5ad2080f9772741f3de6a19a111254c7009f9aeb Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 20:24:29 +0000 Subject: [PATCH 398/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index b42d06b..2378da9 100644 --- a/install.sh +++ b/install.sh @@ -175,7 +175,7 @@ elif [ $deviceChoice = 6 ]; then sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 7 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/luks/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ fi # Replace LUKS device From 7caeae09f626843fe2b3d0dac86971599423cfba Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 20:32:39 +0000 Subject: [PATCH 399/507] Move boot.kernelPackages option --- install.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 2378da9..ce9547e 100644 --- a/install.sh +++ b/install.sh @@ -163,6 +163,8 @@ elif [ $deviceChoice = 3 ]; then elif [ $deviceChoice = 4 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./thelio-nvidia.nix" /mnt/etc/nixos/configuration.nix + # Disable latest kernel for Thelio with NVIDIA GPU + sudo sed -i "s/boot.kernelPackages/# boot.kernelPackages/g" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 5 ]; 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/ @@ -181,8 +183,5 @@ fi # Replace LUKS device sudo sed -i "s#/dev/sda#$rootName#g" /mnt/etc/nixos/configuration.nix -# Disable latest kernel for Thelio with NVIDIA GPU -sudo sed -i "s/boot.kernelPackages/# boot.kernelPackages/g" /mnt/etc/nixos/configuration.nix - # Install sudo nixos-install From b31598203354ac5e76fd71b3c85092a546ef1234 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 20:43:13 +0000 Subject: [PATCH 400/507] Fix partitioning --- install.sh | 6 ------ 1 file changed, 6 deletions(-) diff --git a/install.sh b/install.sh index ce9547e..9fbbaf8 100644 --- a/install.sh +++ b/install.sh @@ -24,17 +24,11 @@ echo +1G # Set +1G as last sector. echo n # Create new partition (for root). echo # Set default partition number. echo # Set default first sector. -echo -4G # Set -4G as last sector. -echo n # Create new partition (for root). -echo # Set default partition number. -echo # Set default first sector. echo # Set last sector. echo t # Change partition type. echo 1 # Pick first partition. echo 1 # Change first partition to EFI system. echo t # Change partition type. -echo 3 # Pick the last partition. -echo 19 # Change last partition to Swap. echo w # write changes. ) | sudo fdisk $driveName -w always -W always From 3263d94099f3d36b1b88d487a8b154459aae426f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 22:00:16 +0000 Subject: [PATCH 401/507] Update install.sh --- install.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/install.sh b/install.sh index 9fbbaf8..5ecb783 100644 --- a/install.sh +++ b/install.sh @@ -28,7 +28,6 @@ echo # Set last sector. echo t # Change partition type. echo 1 # Pick first partition. echo 1 # Change first partition to EFI system. -echo t # Change partition type. echo w # write changes. ) | sudo fdisk $driveName -w always -W always From fbe2438d64a7e45b03a879759ee56a42af35cb9d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Apr 2023 22:06:26 +0000 Subject: [PATCH 402/507] Update install.sh --- install.sh | 60 +++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/install.sh b/install.sh index 5ecb783..63587c3 100644 --- a/install.sh +++ b/install.sh @@ -96,36 +96,6 @@ echo "Password is hashed so it is not plaintext" curl https://gitlab.com/ahoneybun/nix-configs/-/raw/luks/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/ -echo "" -echo "Which Desktop Environment do you want?" -echo "1) Plasma" -echo "2) GNOME" -echo "3) Pantheon" -echo "4) Sway" -echo "0) None or N/A" -read desktopChoice - -# Change the URL to match where you are hosting your DE/WM .nix file -# Update the second command to the file name that matches your DE/WM .nix file - -if [ $desktopChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./plasma.nix" /mnt/etc/nixos/configuration.nix - -elif [ $desktopChoice = 2 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/gnome.nix > gnome.nix; sudo mv -f gnome.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./gnome.nix" /mnt/etc/nixos/configuration.nix - -elif [ $desktopChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/pantheon.nix > pantheon.nix; sudo mv -f pantheon.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix - -elif [ $desktopChoice = 4 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/sway.nix > sway.nix; sudo mv -f sway.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./sway.nix" /mnt/etc/nixos/configuration.nix - -fi - echo "" echo "Which device are you installing to?" echo "1) Oryx Pro (oryp6)" @@ -173,6 +143,36 @@ elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/luks/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ fi +echo "" +echo "Which Desktop Environment do you want?" +echo "1) Plasma" +echo "2) GNOME" +echo "3) Pantheon" +echo "4) Sway" +echo "0) None or N/A" +read desktopChoice + +# Change the URL to match where you are hosting your DE/WM .nix file +# Update the second command to the file name that matches your DE/WM .nix file + +if [ $desktopChoice = 1 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ + sudo sed -i "10 i \ ./plasma.nix" /mnt/etc/nixos/configuration.nix + +elif [ $desktopChoice = 2 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/gnome.nix > gnome.nix; sudo mv -f gnome.nix /mnt/etc/nixos/ + sudo sed -i "10 i \ ./gnome.nix" /mnt/etc/nixos/configuration.nix + +elif [ $desktopChoice = 3 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/pantheon.nix > pantheon.nix; sudo mv -f pantheon.nix /mnt/etc/nixos/ + sudo sed -i "10 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix + +elif [ $desktopChoice = 4 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/sway.nix > sway.nix; sudo mv -f sway.nix /mnt/etc/nixos/ + sudo sed -i "10 i \ ./sway.nix" /mnt/etc/nixos/configuration.nix + +fi + # Replace LUKS device sudo sed -i "s#/dev/sda#$rootName#g" /mnt/etc/nixos/configuration.nix From 33c309eb8d7ca08668291a0a2fda877dfd85be53 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 19 Apr 2023 00:21:07 +0000 Subject: [PATCH 403/507] Update README.md --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 9d7a694..564e700 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,7 @@ At the core of this installer it does the following: - Partition the drive of your choice - Installs a base of NixOS (`configuration.nix`) -- Installs a DE/WM of your choice (currently supporting GNOME and Plasma) -- Installs needed packages (`programs.nix`) +- Installs a DE/WM of your choice (currently supporting GNOME, Plasma, Pantheon and Sway) - Installs needed packages for certain hardware nix files are from [this repo](https://gitlab.com/ahoneybun/nix-configs/) but that can be changed as needed. @@ -15,11 +14,9 @@ nix files are from [this repo](https://gitlab.com/ahoneybun/nix-configs/) but th Tested on the following drives: - SATA - NVMe -- eMMC Tested on the following architectures: - x86_64 -- aarch64 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: From b1905abcba244dcdcdb9eb72af46705f2f500733 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 2 Jun 2023 22:16:47 +0000 Subject: [PATCH 404/507] Update install.sh --- install.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 63587c3..d7f2d42 100644 --- a/install.sh +++ b/install.sh @@ -134,9 +134,8 @@ elif [ $deviceChoice = 5 ]; then sudo sed -i "11 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 6 ]; then - #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; s - #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ + #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/aarch64/jaal/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/aarch64/jaal/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 7 ]; then From 092b7cc4f489343415f295c57e93476557c9bc1e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 6 Jun 2023 16:54:43 +0000 Subject: [PATCH 405/507] Update install.sh --- install.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index d7f2d42..b5d4ab5 100644 --- a/install.sh +++ b/install.sh @@ -112,25 +112,25 @@ read deviceChoice # Update the second command to the file name that matches your system .nix file if [ $deviceChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/oryp6.nix > oryp6.nix; sudo mv -f oryp6.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/oryp6.nix > oryp6.nix; sudo mv -f oryp6.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 2 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/galp3-b.nix > galp3-b.nix; sudo mv -f galp3-b.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/garrus/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./galp3-b.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/galp4.nix > galp4.nix; sudo mv -f galp4.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/galp4.nix > galp4.nix; sudo mv -f galp4.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./galp4.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 4 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./thelio-nvidia.nix" /mnt/etc/nixos/configuration.nix # Disable latest kernel for Thelio with NVIDIA GPU sudo sed -i "s/boot.kernelPackages/# boot.kernelPackages/g" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 5 ]; 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/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/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 elif [ $deviceChoice = 6 ]; then From 9bbca1ab8f287b0c4caf9b3e8074e8966348f4e7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 11 Aug 2023 14:25:09 +0000 Subject: [PATCH 406/507] Update install.sh From afd45c2d201ce52b20805e280fb0a6ee7fac7220 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 27 Oct 2023 16:20:43 +0000 Subject: [PATCH 407/507] Update install.sh --- install.sh | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/install.sh b/install.sh index b5d4ab5..458e309 100644 --- a/install.sh +++ b/install.sh @@ -93,18 +93,17 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/luks/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +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/ echo "" echo "Which device are you installing to?" -echo "1) Oryx Pro (oryp6)" -echo "2) Galago Pro (galp3-b)" -echo "3) Galago Pro (galp4)" -echo "4) Thelio NVIDIA (thelio-b1)" -echo "5) HP Omen (15-dh0015nr)" -echo "6) Pinebook Pro" -echo "7) Virtual Machine" +echo "1) Galago Pro (galp3-b)" +echo "2) Darter Pro (darp9)" +echo "3) Thelio NVIDIA (thelio-b1)" +echo "4) HP Omen (15-dh0015nr)" +echo "5) Pinebook Pro" +echo "6) Virtual Machine" echo "0) None or N/A" read deviceChoice @@ -112,34 +111,29 @@ read deviceChoice # Update the second command to the file name that matches your system .nix file if [ $deviceChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/oryp6.nix > oryp6.nix; sudo mv -f oryp6.nix /mnt/etc/nixos/ - sudo sed -i "11 i \ ./oryp6.nix" /mnt/etc/nixos/configuration.nix + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/garrus/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + sudo sed -i "11 i \ ./galp3-b.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 2 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/garrus/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ - sudo sed -i "11 i \ ./galp3-b.nix" /mnt/etc/nixos/configuration.nix + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/darp9.nix > darp9.nix; sudo mv -f darp9.nix /mnt/etc/nixos/ + sudo sed -i "11 i \ ./darp9.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/galp4.nix > galp4.nix; sudo mv -f galp4.nix /mnt/etc/nixos/ - sudo sed -i "11 i \ ./galp4.nix" /mnt/etc/nixos/configuration.nix - -elif [ $deviceChoice = 4 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./thelio-nvidia.nix" /mnt/etc/nixos/configuration.nix # Disable latest kernel for Thelio with NVIDIA GPU sudo sed -i "s/boot.kernelPackages/# boot.kernelPackages/g" /mnt/etc/nixos/configuration.nix -elif [ $deviceChoice = 5 ]; then +elif [ $deviceChoice = 4 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/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 -elif [ $deviceChoice = 6 ]; then - #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/aarch64/jaal/pinebook-pro.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +elif [ $deviceChoice = 5 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/aarch64/jaal/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix -elif [ $deviceChoice = 7 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/luks/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +elif [ $deviceChoice = 6 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ fi echo "" From bfb2d07d25c9bfa1ec1ca99d2673f1dd44f9a53e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 Oct 2023 23:15:07 +0000 Subject: [PATCH 408/507] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 564e700..33eeee7 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ The following will happen: - Creates a 1GB EFI partiton at `/dev/***1`. - Creates a 4GB Swap partition at `/dev/***3`. - Creates a root partition with the rest of the space at `/dev/***2`. -- Installs GRUB +- Installs systemd-boot ## Roadmap From 3f7664892381c82b5b5cca0a420622b5df602d84 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 31 Oct 2023 23:22:53 +0000 Subject: [PATCH 409/507] Reorder and add hostnames --- install.sh | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/install.sh b/install.sh index 458e309..77b03d0 100644 --- a/install.sh +++ b/install.sh @@ -98,12 +98,13 @@ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/programs.nix > programs echo "" echo "Which device are you installing to?" -echo "1) Galago Pro (galp3-b)" -echo "2) Darter Pro (darp9)" -echo "3) Thelio NVIDIA (thelio-b1)" -echo "4) HP Omen (15-dh0015nr)" -echo "5) Pinebook Pro" -echo "6) Virtual Machine" +echo "1) Home Desktop - Shepard" +echo "2) Galago Pro (galp3-b) - Garrus" +echo "3) HP Omen (15-dh0015nr)" +echo "4) Pinebook Pro - Jaal" +echo "5) Thelio NVIDIA (thelio-b1)" +echo "6) Darter Pro (darp9)" +echo "7) Virtual Machine" echo "0) None or N/A" read deviceChoice @@ -111,28 +112,32 @@ read deviceChoice # Update the second command to the file name that matches your system .nix file if [ $deviceChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/garrus/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ - sudo sed -i "11 i \ ./galp3-b.nix" /mnt/etc/nixos/configuration.nix + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/shepard/configuration.nix > shepard.nix; sudo mv -f shepard.nix /mnt/etc/nixos/ + sudo sed -i "11 i \ ./shepard.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 2 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/darp9.nix > darp9.nix; sudo mv -f darp9.nix /mnt/etc/nixos/ - sudo sed -i "11 i \ ./darp9.nix" /mnt/etc/nixos/configuration.nix + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/garrus/configuration.nix > garrus.nix; sudo mv -f garrus.nix /mnt/etc/nixos/ + sudo sed -i "11 i \ ./garrus.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 3 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/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 + +elif [ $deviceChoice = 4 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/aarch64/jaal/pbp.nix > jaal.nix; sudo mv -f jaal.nix /mnt/etc/nixos/ + sudo sed -i "11 i \ ./jaal.nix" /mnt/etc/nixos/configuration.nix + +elif [ $deviceChoice = 5 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./thelio-nvidia.nix" /mnt/etc/nixos/configuration.nix # Disable latest kernel for Thelio with NVIDIA GPU sudo sed -i "s/boot.kernelPackages/# boot.kernelPackages/g" /mnt/etc/nixos/configuration.nix -elif [ $deviceChoice = 4 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/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 - -elif [ $deviceChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/aarch64/jaal/pbp.nix > pbp.nix; sudo mv -f pbp.nix /mnt/etc/nixos/ - sudo sed -i "11 i \ ./pbp.nix" /mnt/etc/nixos/configuration.nix - elif [ $deviceChoice = 6 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/darp9.nix > darp9.nix; sudo mv -f darp9.nix /mnt/etc/nixos/ + sudo sed -i "11 i \ ./darp9.nix" /mnt/etc/nixos/configuration.nix + +elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ fi From bdebc5b8f04ae357258176ebf106870c8120b155 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 28 Dec 2023 21:18:48 +0000 Subject: [PATCH 410/507] Update install.sh --- install.sh | 43 +++++++------------------------------------ 1 file changed, 7 insertions(+), 36 deletions(-) diff --git a/install.sh b/install.sh index 77b03d0..21029ab 100644 --- a/install.sh +++ b/install.sh @@ -45,44 +45,15 @@ rootName+=2 swapName=${driveName}$APPEND swapName+=3 -# 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/vdb#$rootName#g" /tmp/disko-config.nix -# Open the encrypted root partition -sudo cryptsetup luksOpen $rootName crypt-root - -sudo pvcreate /dev/mapper/crypt-root -sudo vgcreate lvm /dev/mapper/crypt-root - -sudo lvcreate -L 4G -n swap lvm -sudo lvcreate -l '100%FREE' -n root lvm - -sudo cryptsetup config $rootName --label luks - -sudo mkswap /dev/lvm/swap # swap partition -sudo mkfs.btrfs -L root /dev/mapper/lvm-root # /root partition - -# Mount the filesystems. -sudo swapon /dev/mapper/lvm-swap -sudo mount /dev/mapper/lvm-root /mnt - -# Create Subvolumes -sudo btrfs subvolume create /mnt/@root -sudo btrfs subvolume create /mnt/@home - -# Unmount root -sudo umount /mnt - -# Mount the subvolumes. -sudo mount -o noatime,commit=120,compress=zstd:10,subvol=@root /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 mount --mkdir $efiName /mnt/boot/ +# Run Disko to partition the disk +sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko-config.nix # Generate Nix configuration sudo nixos-generate-config --root /mnt From 0ccf221ea095e8cc44fd3376992334ea05dc086c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 15:24:02 +0000 Subject: [PATCH 411/507] Update install.sh --- install.sh | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/install.sh b/install.sh index 21029ab..e659718 100644 --- a/install.sh +++ b/install.sh @@ -15,22 +15,6 @@ 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 +1G # Set +1G as last sector. -echo n # Create new partition (for root). -echo # Set default partition number. -echo # Set default first sector. -echo # Set last sector. -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 From 34ce1bdffb103ede062e014499b6cd08e4021dac Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 15:28:28 +0000 Subject: [PATCH 412/507] Update install.sh --- install.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index e659718..1f7bf28 100644 --- a/install.sh +++ b/install.sh @@ -40,7 +40,10 @@ sudo sed -i "s#/dev/vdb#$rootName#g" /tmp/disko-config.nix sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko-config.nix # Generate Nix configuration -sudo nixos-generate-config --root /mnt +#sudo nixos-generate-config --root /mnt + +sudo nixos-generate-config --no-filesystems --root /mnt +sudo mv /tmp/disko-config.nix /mnt/etc/nixos # Copy my base nix configs over # Change the URL to match where you are hosting your .nix file(s). @@ -48,8 +51,8 @@ sudo nixos-generate-config --root /mnt echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -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/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/ echo "" echo "Which device are you installing to?" From 818737c53a65d0f796774370ed8123602a109fd7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 15:33:25 +0000 Subject: [PATCH 413/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 1f7bf28..55b361c 100644 --- a/install.sh +++ b/install.sh @@ -31,10 +31,10 @@ swapName+=3 # Download Disko file cd /tmp -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/partitions/luks-btrfs-subvolumes.nix -o /tmp/disko-config.nix +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/partitions/simple-efi.nix -o /tmp/disko-config.nix # Replace drive in Disko file -sudo sed -i "s#/dev/vdb#$rootName#g" /tmp/disko-config.nix +#sudo sed -i "s#/dev/vdb#$rootName#g" /tmp/disko-config.nix # Run Disko to partition the disk sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko-config.nix From c770791c8e8cf62d36a9d87cf5e1b5d12d7404d8 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 15:49:13 +0000 Subject: [PATCH 414/507] Update install.sh --- install.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 55b361c..3d4146f 100644 --- a/install.sh +++ b/install.sh @@ -97,6 +97,10 @@ elif [ $deviceChoice = 6 ]; then elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + sudo sed -i "11 i \ "${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"" /mnt/etc/nixos/configuration.nix + sudo sed -i "12 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix + + ./disko-config.nix fi echo "" @@ -130,7 +134,7 @@ elif [ $desktopChoice = 4 ]; then fi # Replace LUKS device -sudo sed -i "s#/dev/sda#$rootName#g" /mnt/etc/nixos/configuration.nix +#sudo sed -i "s#/dev/sda#$rootName#g" /mnt/etc/nixos/configuration.nix # Install sudo nixos-install From 6617b81c473ef133117ba893ebe2816fd068870f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 16:10:50 +0000 Subject: [PATCH 415/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 3d4146f..9264ef0 100644 --- a/install.sh +++ b/install.sh @@ -97,7 +97,7 @@ elif [ $deviceChoice = 6 ]; then elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ - sudo sed -i "11 i \ "${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"" /mnt/etc/nixos/configuration.nix + sed -i 's#disko#"${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"#' /mnt/etc/nixos/configuration.nix sudo sed -i "12 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix ./disko-config.nix From 2777ed06541340422463ca2f1e00748b358e3a76 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 16:11:29 +0000 Subject: [PATCH 416/507] Update install.sh --- install.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 9264ef0..5a79dc0 100644 --- a/install.sh +++ b/install.sh @@ -99,9 +99,7 @@ elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ sed -i 's#disko#"${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"#' /mnt/etc/nixos/configuration.nix sudo sed -i "12 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix - - ./disko-config.nix -fi + fi echo "" echo "Which Desktop Environment do you want?" From 3ed3d5d8696eb719c2fe43775016da9942501bc6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 16:14:13 +0000 Subject: [PATCH 417/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 5a79dc0..5571d59 100644 --- a/install.sh +++ b/install.sh @@ -98,7 +98,7 @@ elif [ $deviceChoice = 6 ]; then elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ sed -i 's#disko#"${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"#' /mnt/etc/nixos/configuration.nix - sudo sed -i "12 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix + sudo sed -i "10 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix fi echo "" From 28293c042e39136a430f25c33cda4b7c69384101 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 16:15:58 +0000 Subject: [PATCH 418/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 5571d59..75d12ca 100644 --- a/install.sh +++ b/install.sh @@ -97,7 +97,7 @@ elif [ $deviceChoice = 6 ]; then elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ - sed -i 's#disko#"${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"#' /mnt/etc/nixos/configuration.nix + sudo sed -i 's#disko#"${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"#' /mnt/etc/nixos/configuration.nix sudo sed -i "10 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix fi From a34e71876b34fbd0f0e0a9675d0b0e19eb8cdd27 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 16:24:52 +0000 Subject: [PATCH 419/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 75d12ca..93ba5f5 100644 --- a/install.sh +++ b/install.sh @@ -96,7 +96,7 @@ elif [ $deviceChoice = 6 ]; then sudo sed -i "11 i \ ./darp9.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 7 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ sudo sed -i 's#disko#"${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"#' /mnt/etc/nixos/configuration.nix sudo sed -i "10 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix fi From 9311549eea098735466aae79f21f9cbf0ccbdd62 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 16:46:48 +0000 Subject: [PATCH 420/507] Update install.sh --- install.sh | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/install.sh b/install.sh index 93ba5f5..010a425 100644 --- a/install.sh +++ b/install.sh @@ -54,16 +54,18 @@ echo "Password is hashed so it is not plaintext" #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/ -echo "" -echo "Which device are you installing to?" -echo "1) Home Desktop - Shepard" -echo "2) Galago Pro (galp3-b) - Garrus" -echo "3) HP Omen (15-dh0015nr)" -echo "4) Pinebook Pro - Jaal" -echo "5) Thelio NVIDIA (thelio-b1)" -echo "6) Darter Pro (darp9)" -echo "7) Virtual Machine" -echo "0) None or N/A" +cat << EOF + +Which device are you installing to? + 1) Home Desktop - Shepard + 2) Galago Pro (galp3-b) - Garrus + 3) HP Omen (15-dh0015nr) + 4) Pinebook Pro - Jaal + 5) Thelio NVIDIA (thelio-b1) + 6) Darter Pro (darp9) + 7) Virtual Machine + 0) None or N/A +EOF read deviceChoice # Change the URL to match where you are hosting your system .nix file From 5823acbed7d54b256d9ded5785bcd6b999dc4ced Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 16:50:25 +0000 Subject: [PATCH 421/507] Update install.sh --- install.sh | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/install.sh b/install.sh index 010a425..3a3592b 100644 --- a/install.sh +++ b/install.sh @@ -2,9 +2,6 @@ # then sets it as a variable for hibernation support ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) -# Set append for drive automation -APPEND="" - # Detect and list the drives. lsblk -f @@ -15,26 +12,12 @@ echo "" echo "Which drive do we want to use for this installation?" read driveName -# List the new partitions. -lsblk -f - -if [[ "$driveName" == "/dev/nvme"* || "$driveName" == "/dev/mmcblk0"* ]]; then - APPEND="p" -fi - -efiName=${driveName}$APPEND -efiName+=1 -rootName=${driveName}$APPEND -rootName+=2 -swapName=${driveName}$APPEND -swapName+=3 - # Download Disko file cd /tmp curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/partitions/simple-efi.nix -o /tmp/disko-config.nix # Replace drive in Disko file -#sudo sed -i "s#/dev/vdb#$rootName#g" /tmp/disko-config.nix +sudo sed -i "s#/dev/vdb#$rootName#g" /tmp/disko-config.nix # Run Disko to partition the disk sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko-config.nix From 045469eec08f217a7ec017bb0696e914d3836f5f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 16:50:49 +0000 Subject: [PATCH 422/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 3a3592b..9849d0e 100644 --- a/install.sh +++ b/install.sh @@ -14,7 +14,7 @@ read driveName # Download Disko file cd /tmp -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/partitions/simple-efi.nix -o /tmp/disko-config.nix +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/partitions/simple-efi.nix -o /tmp/disko-config.nix # Replace drive in Disko file sudo sed -i "s#/dev/vdb#$rootName#g" /tmp/disko-config.nix From 9192cd819c7e8d86d0b4a7a126980e2e4f62818d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 16:51:19 +0000 Subject: [PATCH 423/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 9849d0e..e262e0c 100644 --- a/install.sh +++ b/install.sh @@ -17,7 +17,7 @@ cd /tmp curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/partitions/simple-efi.nix -o /tmp/disko-config.nix # Replace drive in Disko file -sudo sed -i "s#/dev/vdb#$rootName#g" /tmp/disko-config.nix +sudo sed -i "s#/dev/sda#$driveName#g" /tmp/disko-config.nix # Run Disko to partition the disk sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko-config.nix From 5efb2d8ee7453e062801dcc182570c312d4f7c51 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 17:01:33 +0000 Subject: [PATCH 424/507] Update both ECHO options to EOF instead --- install.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/install.sh b/install.sh index e262e0c..5bc291b 100644 --- a/install.sh +++ b/install.sh @@ -86,13 +86,15 @@ elif [ $deviceChoice = 7 ]; then sudo sed -i "10 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix fi -echo "" -echo "Which Desktop Environment do you want?" -echo "1) Plasma" -echo "2) GNOME" -echo "3) Pantheon" -echo "4) Sway" -echo "0) None or N/A" +cat << EOF + +Which Desktop Environment do you want? + 1) Plasma + 2) GNOME + 3) Pantheon + 4) Sway + 0) None or N/A +EOF read desktopChoice # Change the URL to match where you are hosting your DE/WM .nix file From 451de45b43acb10276e4a691e458e940a14faa03 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 17:32:11 +0000 Subject: [PATCH 425/507] swap in LUKS BTRFS subvol file --- install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 5bc291b..62c35a9 100644 --- a/install.sh +++ b/install.sh @@ -14,7 +14,8 @@ read driveName # Download Disko file cd /tmp -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/partitions/simple-efi.nix -o /tmp/disko-config.nix +#curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/partitions/simple-efi.nix -o /tmp/disko-config.nix +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/partitions/luks-btrfs-subvolumes.nix -o /tmp/disko-config.nix # Replace drive in Disko file sudo sed -i "s#/dev/sda#$driveName#g" /tmp/disko-config.nix From a41e7a78248ff01b075369c4dc4326e490638222 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 18:28:56 +0000 Subject: [PATCH 426/507] Update install.sh --- install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/install.sh b/install.sh index 62c35a9..ff26344 100644 --- a/install.sh +++ b/install.sh @@ -14,7 +14,6 @@ read driveName # Download Disko file cd /tmp -#curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/partitions/simple-efi.nix -o /tmp/disko-config.nix curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/partitions/luks-btrfs-subvolumes.nix -o /tmp/disko-config.nix # Replace drive in Disko file @@ -24,8 +23,6 @@ sudo sed -i "s#/dev/sda#$driveName#g" /tmp/disko-config.nix sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko-config.nix # Generate Nix configuration -#sudo nixos-generate-config --root /mnt - sudo nixos-generate-config --no-filesystems --root /mnt sudo mv /tmp/disko-config.nix /mnt/etc/nixos From ccc91857a306502e473bb3ff1e2e5443d7cb0744 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 20:05:56 +0000 Subject: [PATCH 427/507] Update thelio-b1 build --- install.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index ff26344..8704bb8 100644 --- a/install.sh +++ b/install.sh @@ -32,7 +32,7 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -#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/disko/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/ cat << EOF @@ -70,6 +70,8 @@ elif [ $deviceChoice = 4 ]; then elif [ $deviceChoice = 5 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ + sudo sed -i 's#disko#"${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"#' /mnt/etc/nixos/configuration.nix + sudo sed -i "10 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix sudo sed -i "11 i \ ./thelio-nvidia.nix" /mnt/etc/nixos/configuration.nix # Disable latest kernel for Thelio with NVIDIA GPU sudo sed -i "s/boot.kernelPackages/# boot.kernelPackages/g" /mnt/etc/nixos/configuration.nix From a6297052a76fb4961071a122dc7e090ca91297a1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 20:21:30 +0000 Subject: [PATCH 428/507] Update install.sh --- install.sh | 5 ----- 1 file changed, 5 deletions(-) diff --git a/install.sh b/install.sh index 8704bb8..ccc3453 100644 --- a/install.sh +++ b/install.sh @@ -82,8 +82,6 @@ elif [ $deviceChoice = 6 ]; then elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ - sudo sed -i 's#disko#"${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"#' /mnt/etc/nixos/configuration.nix - sudo sed -i "10 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix fi cat << EOF @@ -118,8 +116,5 @@ elif [ $desktopChoice = 4 ]; then fi -# Replace LUKS device -#sudo sed -i "s#/dev/sda#$rootName#g" /mnt/etc/nixos/configuration.nix - # Install sudo nixos-install From 3643da70631f44c00c0500b24ff3395cb24a2cdd Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 29 Dec 2023 21:07:56 +0000 Subject: [PATCH 429/507] Update install.sh --- install.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/install.sh b/install.sh index ccc3453..c535ddd 100644 --- a/install.sh +++ b/install.sh @@ -70,8 +70,6 @@ elif [ $deviceChoice = 4 ]; then elif [ $deviceChoice = 5 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ - sudo sed -i 's#disko#"${builtins.fetchTarball "https://github.com/nix-community/disko/archive/master.tar.gz"}/module.nix"#' /mnt/etc/nixos/configuration.nix - sudo sed -i "10 i \ ./disko-config.nix" /mnt/etc/nixos/configuration.nix sudo sed -i "11 i \ ./thelio-nvidia.nix" /mnt/etc/nixos/configuration.nix # Disable latest kernel for Thelio with NVIDIA GPU sudo sed -i "s/boot.kernelPackages/# boot.kernelPackages/g" /mnt/etc/nixos/configuration.nix From 97a2594eb9e0da9767bc4f8406f7758e680b7318 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 2 Jan 2024 17:42:25 +0000 Subject: [PATCH 430/507] Update install.sh --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index c535ddd..be7ecbe 100644 --- a/install.sh +++ b/install.sh @@ -14,7 +14,7 @@ read driveName # Download Disko file cd /tmp -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/partitions/luks-btrfs-subvolumes.nix -o /tmp/disko-config.nix +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/partitions/luks-btrfs-subvolumes.nix -o /tmp/disko-config.nix # Replace drive in Disko file sudo sed -i "s#/dev/sda#$driveName#g" /tmp/disko-config.nix @@ -32,7 +32,7 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +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/ cat << EOF @@ -79,7 +79,7 @@ elif [ $deviceChoice = 6 ]; then sudo sed -i "11 i \ ./darp9.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 7 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/disko/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ fi cat << EOF From e05760dde35f90f8e4d6d7017475748db2f2d51a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 8 Jan 2024 14:59:17 +0000 Subject: [PATCH 431/507] Edit VM options to use flake file and use nixos-install flake option --- install.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index be7ecbe..bd601bd 100644 --- a/install.sh +++ b/install.sh @@ -79,7 +79,8 @@ elif [ $deviceChoice = 6 ]; then sudo sed -i "11 i \ ./darp9.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 7 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ fi cat << EOF @@ -115,4 +116,5 @@ elif [ $desktopChoice = 4 ]; then fi # Install -sudo nixos-install +sudo nixos-install --impure --flake /mnt/etc/nixos/flake.nix +#sudo nixos-install From a11e58c93bdef7b8c2461e9d2e19a436dbc55c92 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 8 Jan 2024 16:42:17 +0000 Subject: [PATCH 432/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index bd601bd..8005f68 100644 --- a/install.sh +++ b/install.sh @@ -116,5 +116,5 @@ elif [ $desktopChoice = 4 ]; then fi # Install -sudo nixos-install --impure --flake /mnt/etc/nixos/flake.nix +sudo nixos-install --impure --flake /mnt/etc/nixos/flake.nix#vm #sudo nixos-install From cd4523a6aa461a73439aecc33ce98477949ea35c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 8 Jan 2024 16:43:26 +0000 Subject: [PATCH 433/507] fix path --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 8005f68..58a370a 100644 --- a/install.sh +++ b/install.sh @@ -116,5 +116,5 @@ elif [ $desktopChoice = 4 ]; then fi # Install -sudo nixos-install --impure --flake /mnt/etc/nixos/flake.nix#vm +sudo nixos-install --impure --flake /mnt/etc/nixos#vm #sudo nixos-install From be6f524998cc72fdef9b8d9cc5208b7ea7261d85 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 8 Jan 2024 16:44:14 +0000 Subject: [PATCH 434/507] Fix flake path for VM --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 58a370a..b378c30 100644 --- a/install.sh +++ b/install.sh @@ -79,7 +79,7 @@ elif [ $deviceChoice = 6 ]; then sudo sed -i "11 i \ ./darp9.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 7 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ fi From 1e37870e70b5be8e3876de9420d9f46ac7ab1b1a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 8 Jan 2024 16:48:10 +0000 Subject: [PATCH 435/507] Disable downloading the configuration.nix for now --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index b378c30..ac2aa3a 100644 --- a/install.sh +++ b/install.sh @@ -32,7 +32,7 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -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/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/ cat << EOF From ff818891e46105206ddcaafebbb4fa4b24b00db6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 8 Jan 2024 17:14:33 +0000 Subject: [PATCH 436/507] Add if/then --- install.sh | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index ac2aa3a..9351704 100644 --- a/install.sh +++ b/install.sh @@ -116,5 +116,26 @@ elif [ $desktopChoice = 4 ]; then fi # Install -sudo nixos-install --impure --flake /mnt/etc/nixos#vm +if [ $deviceChoice = 1 ]; then + echo "shepard" + +elif [ $deviceChoice = 2 ]; then + echo "garrus" + +elif [ $deviceChoice = 3 ]; then + echo "hp-omen" + +elif [ $deviceChoice = 4 ]; then + echo "pbp" + +elif [ $deviceChoice = 5 ]; then + echo "thelio-nvidia" + +elif [ $deviceChoice = 6 ]; then + echo "darp9" + +elif [ $deviceChoice = 7 ]; then + sudo nixos-install --impure --flake /mnt/etc/nixos#vm + fi + #sudo nixos-install From d947ea93b2971ed7395a4287734d652a4bc6b344 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 8 Jan 2024 18:27:35 +0000 Subject: [PATCH 437/507] Test new nixos-install --- install.sh | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/install.sh b/install.sh index 9351704..ed942bb 100644 --- a/install.sh +++ b/install.sh @@ -116,26 +116,5 @@ elif [ $desktopChoice = 4 ]; then fi # Install -if [ $deviceChoice = 1 ]; then - echo "shepard" - -elif [ $deviceChoice = 2 ]; then - echo "garrus" - -elif [ $deviceChoice = 3 ]; then - echo "hp-omen" - -elif [ $deviceChoice = 4 ]; then - echo "pbp" - -elif [ $deviceChoice = 5 ]; then - echo "thelio-nvidia" - -elif [ $deviceChoice = 6 ]; then - echo "darp9" - -elif [ $deviceChoice = 7 ]; then - sudo nixos-install --impure --flake /mnt/etc/nixos#vm - fi - +sudo nixos-install --flake #sudo nixos-install From 928af8b3d7a27398a42cd123f0392d871c05c5d3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 8 Jan 2024 18:31:29 +0000 Subject: [PATCH 438/507] You do need to set the system name in the nixos-install command for it to work --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index ed942bb..6ef4bc3 100644 --- a/install.sh +++ b/install.sh @@ -116,5 +116,5 @@ elif [ $desktopChoice = 4 ]; then fi # Install -sudo nixos-install --flake +sudo nixos-install --flake /mnt/etc/nixos#vm #sudo nixos-install From 6390329d069603acc40e35effe06a384a47753f3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 9 Jan 2024 14:35:17 +0000 Subject: [PATCH 439/507] Add generic flake option --- install.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 6ef4bc3..c4a8521 100644 --- a/install.sh +++ b/install.sh @@ -45,7 +45,7 @@ Which device are you installing to? 5) Thelio NVIDIA (thelio-b1) 6) Darter Pro (darp9) 7) Virtual Machine - 0) None or N/A + 0) Generic EOF read deviceChoice @@ -81,6 +81,10 @@ elif [ $deviceChoice = 6 ]; then elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + +elif [ $deviceChoice = 7 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + fi cat << EOF @@ -116,5 +120,5 @@ elif [ $desktopChoice = 4 ]; then fi # Install -sudo nixos-install --flake /mnt/etc/nixos#vm +sudo nixos-install --flake /mnt/etc/nixos#nixos #sudo nixos-install From 14b72a9dcd7fdaf4d2423af90bb74865af7c3e21 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 9 Jan 2024 14:35:42 +0000 Subject: [PATCH 440/507] Fix new option --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index c4a8521..9d3c860 100644 --- a/install.sh +++ b/install.sh @@ -82,7 +82,7 @@ elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ -elif [ $deviceChoice = 7 ]; then +elif [ $deviceChoice = 0 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ fi From 490a41279522926dc40fdf59d00a95cd8193bcd1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 9 Jan 2024 19:49:47 +0000 Subject: [PATCH 441/507] Switch other systems to the generic flake and remove extra line at the end of the script --- install.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index 9d3c860..c3ec5cd 100644 --- a/install.sh +++ b/install.sh @@ -53,15 +53,15 @@ read deviceChoice # Update the second command to the file name that matches your system .nix file if [ $deviceChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/shepard/configuration.nix > shepard.nix; sudo mv -f shepard.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./shepard.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 2 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/garrus/configuration.nix > garrus.nix; sudo mv -f garrus.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./garrus.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/hp-omen.nix > hp-omen.nix; sudo mv -f hp-omen.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./hp-omen.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 4 ]; then @@ -69,10 +69,8 @@ elif [ $deviceChoice = 4 ]; then sudo sed -i "11 i \ ./jaal.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ sudo sed -i "11 i \ ./thelio-nvidia.nix" /mnt/etc/nixos/configuration.nix - # Disable latest kernel for Thelio with NVIDIA GPU - sudo sed -i "s/boot.kernelPackages/# boot.kernelPackages/g" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 6 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/darp9.nix > darp9.nix; sudo mv -f darp9.nix /mnt/etc/nixos/ From 3ed0d05b054f29f4fde690e3eeb57047fb1a9123 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 9 Jan 2024 19:55:22 +0000 Subject: [PATCH 442/507] Revert change but swap configuration.nix to flake.nix --- install.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index c3ec5cd..8ccf085 100644 --- a/install.sh +++ b/install.sh @@ -32,7 +32,7 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos echo "Default username and password are in the configuration.nix file" echo "Password is hashed so it is not plaintext" -#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/flake/flake.nix > flake.nix; sudo mv -f flake.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/ cat << EOF @@ -53,15 +53,15 @@ read deviceChoice # Update the second command to the file name that matches your system .nix file if [ $deviceChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/shepard/configuration.nix > shepard.nix; sudo mv -f shepard.nix /mnt/etc/nixos sudo sed -i "11 i \ ./shepard.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 2 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/garrus/configuration.nix > garrus.nix; sudo mv -f garrus.nix /mnt/etc/nixos sudo sed -i "11 i \ ./garrus.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/hp-omen/configuration.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 elif [ $deviceChoice = 4 ]; then @@ -69,7 +69,7 @@ elif [ $deviceChoice = 4 ]; then sudo sed -i "11 i \ ./jaal.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos sudo sed -i "11 i \ ./thelio-nvidia.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 6 ]; then From b5f977e403b36ddc25fa321c960ab8da69d8a091 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 9 Jan 2024 19:56:10 +0000 Subject: [PATCH 443/507] Update messaging --- install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 8ccf085..d8e4538 100644 --- a/install.sh +++ b/install.sh @@ -8,7 +8,6 @@ lsblk -f # Choice the drive to use : # 1. echo "----------" -echo "" echo "Which drive do we want to use for this installation?" read driveName @@ -29,8 +28,10 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos # Copy my base nix configs over # Change the URL to match where you are hosting your .nix file(s). -echo "Default username and password are in the configuration.nix file" +echo "" +echo "Default username and password are in the flake.nix file" echo "Password is hashed so it is not plaintext" +echo "" curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.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/ From fb7de0dbe85cb7e9488b78425c8fef29f057a7a0 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 9 Jan 2024 20:02:19 +0000 Subject: [PATCH 444/507] Remove unneeded VM config.nix file --- install.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/install.sh b/install.sh index d8e4538..a80817f 100644 --- a/install.sh +++ b/install.sh @@ -79,7 +79,6 @@ elif [ $deviceChoice = 6 ]; then elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ - #curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ elif [ $deviceChoice = 0 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ From 1641a786f012983fb39905125b0dabf3221085d1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 11 Jan 2024 18:56:30 +0000 Subject: [PATCH 445/507] Clean up comments in the code to make it more readable hopefully --- install.sh | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/install.sh b/install.sh index a80817f..73d3d2a 100644 --- a/install.sh +++ b/install.sh @@ -5,8 +5,9 @@ ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) # Detect and list the drives. lsblk -f +# Step 1: Choosing the drive for the installation + # Choice the drive to use : -# 1. echo "----------" echo "Which drive do we want to use for this installation?" read driveName @@ -18,6 +19,8 @@ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/partitions/luks-btrfs-s # Replace drive in Disko file sudo sed -i "s#/dev/sda#$driveName#g" /tmp/disko-config.nix +# Step 2: Partitioning the drive used for the installation + # Run Disko to partition the disk sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko-config.nix @@ -25,16 +28,10 @@ sudo nix --experimental-features "nix-command flakes" run github:nix-community/d sudo nixos-generate-config --no-filesystems --root /mnt sudo mv /tmp/disko-config.nix /mnt/etc/nixos -# Copy my base nix configs over -# Change the URL to match where you are hosting your .nix file(s). - -echo "" -echo "Default username and password are in the flake.nix file" -echo "Password is hashed so it is not plaintext" -echo "" - +# Downloads and places the predefinded generic flake to use curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.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/ + +# Step 3: Choosing a predefined system flake file to use cat << EOF @@ -50,9 +47,6 @@ Which device are you installing to? EOF read deviceChoice -# Change the URL to match where you are hosting your system .nix file -# Update the second command to the file name that matches your system .nix file - if [ $deviceChoice = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/shepard/configuration.nix > shepard.nix; sudo mv -f shepard.nix /mnt/etc/nixos sudo sed -i "11 i \ ./shepard.nix" /mnt/etc/nixos/configuration.nix @@ -85,6 +79,8 @@ elif [ $deviceChoice = 0 ]; then fi +# Step 4: Choosing a predefined desktop/window manager file to use + cat << EOF Which Desktop Environment do you want? @@ -96,9 +92,6 @@ Which Desktop Environment do you want? EOF read desktopChoice -# Change the URL to match where you are hosting your DE/WM .nix file -# Update the second command to the file name that matches your DE/WM .nix file - if [ $desktopChoice = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ sudo sed -i "10 i \ ./plasma.nix" /mnt/etc/nixos/configuration.nix From 8d26d86a5d7a6f7bb1c6534c6339262eb54bc111 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 16 Jan 2024 16:23:22 +0000 Subject: [PATCH 446/507] Download home-manager file --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index 73d3d2a..5e9e993 100644 --- a/install.sh +++ b/install.sh @@ -30,6 +30,7 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos # Downloads and places the predefinded generic flake to use curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ # Step 3: Choosing a predefined system flake file to use From 8063942f61ebd625d1a30871843ddf3419d457c5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 16 Jan 2024 17:35:02 +0000 Subject: [PATCH 447/507] Add Dev One, remove desktops for now. --- install.sh | 40 +++++----------------------------------- 1 file changed, 5 insertions(+), 35 deletions(-) diff --git a/install.sh b/install.sh index 5e9e993..7d04c91 100644 --- a/install.sh +++ b/install.sh @@ -44,6 +44,7 @@ Which device are you installing to? 5) Thelio NVIDIA (thelio-b1) 6) Darter Pro (darp9) 7) Virtual Machine + 8) HP Dev One 0) Generic EOF read deviceChoice @@ -75,42 +76,11 @@ elif [ $deviceChoice = 6 ]; then elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ +elif [ $deviceChoice = 8 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + sudo nixos-install --flake /mnt/etc/nixos#dev-one + elif [ $deviceChoice = 0 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ fi - -# Step 4: Choosing a predefined desktop/window manager file to use - -cat << EOF - -Which Desktop Environment do you want? - 1) Plasma - 2) GNOME - 3) Pantheon - 4) Sway - 0) None or N/A -EOF -read desktopChoice - -if [ $desktopChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/plasma.nix > plasma.nix; sudo mv -f plasma.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./plasma.nix" /mnt/etc/nixos/configuration.nix - -elif [ $desktopChoice = 2 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/gnome.nix > gnome.nix; sudo mv -f gnome.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./gnome.nix" /mnt/etc/nixos/configuration.nix - -elif [ $desktopChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/pantheon.nix > pantheon.nix; sudo mv -f pantheon.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./pantheon.nix" /mnt/etc/nixos/configuration.nix - -elif [ $desktopChoice = 4 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/desktops/sway.nix > sway.nix; sudo mv -f sway.nix /mnt/etc/nixos/ - sudo sed -i "10 i \ ./sway.nix" /mnt/etc/nixos/configuration.nix - -fi - -# Install -sudo nixos-install --flake /mnt/etc/nixos#nixos -#sudo nixos-install From 553650b883fe0f2b3d8cd21db27f280cd1dc074b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 16 Jan 2024 17:39:34 +0000 Subject: [PATCH 448/507] Update paths for dev-one and nixos generic --- install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install.sh b/install.sh index 7d04c91..bba7011 100644 --- a/install.sh +++ b/install.sh @@ -75,9 +75,11 @@ elif [ $deviceChoice = 6 ]; then elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + sudo nixos-install --flake /mnt/etc/nixos#nixos elif [ $deviceChoice = 8 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/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#dev-one elif [ $deviceChoice = 0 ]; then From 9ff54a086411af1058a851ff42ed9a5c1576940a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 16 Jan 2024 17:47:02 +0000 Subject: [PATCH 449/507] Update install.sh --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index bba7011..09c566a 100644 --- a/install.sh +++ b/install.sh @@ -74,11 +74,11 @@ elif [ $deviceChoice = 6 ]; then sudo sed -i "11 i \ ./darp9.nix" /mnt/etc/nixos/configuration.nix elif [ $deviceChoice = 7 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#nixos elif [ $deviceChoice = 8 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/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#dev-one From 1d5a54e841400fcbcfc7c557da0a64d09fbc6d88 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 16 Jan 2024 18:03:15 +0000 Subject: [PATCH 450/507] remove other devices for now. --- install.sh | 37 ++++--------------------------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/install.sh b/install.sh index 09c566a..8a97160 100644 --- a/install.sh +++ b/install.sh @@ -37,47 +37,18 @@ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/home.nix > home.nix; s cat << EOF Which device are you installing to? - 1) Home Desktop - Shepard - 2) Galago Pro (galp3-b) - Garrus - 3) HP Omen (15-dh0015nr) - 4) Pinebook Pro - Jaal - 5) Thelio NVIDIA (thelio-b1) - 6) Darter Pro (darp9) - 7) Virtual Machine - 8) HP Dev One + 1) Virtual Machine + 2) HP Dev One 0) Generic EOF read deviceChoice if [ $deviceChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/shepard/configuration.nix > shepard.nix; sudo mv -f shepard.nix /mnt/etc/nixos - sudo sed -i "11 i \ ./shepard.nix" /mnt/etc/nixos/configuration.nix - -elif [ $deviceChoice = 2 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/garrus/configuration.nix > garrus.nix; sudo mv -f garrus.nix /mnt/etc/nixos - sudo sed -i "11 i \ ./garrus.nix" /mnt/etc/nixos/configuration.nix - -elif [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/hp-omen/configuration.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 - -elif [ $deviceChoice = 4 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/aarch64/jaal/pbp.nix > jaal.nix; sudo mv -f jaal.nix /mnt/etc/nixos/ - sudo sed -i "11 i \ ./jaal.nix" /mnt/etc/nixos/configuration.nix - -elif [ $deviceChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos - sudo sed -i "11 i \ ./thelio-nvidia.nix" /mnt/etc/nixos/configuration.nix - -elif [ $deviceChoice = 6 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/darp9.nix > darp9.nix; sudo mv -f darp9.nix /mnt/etc/nixos/ - sudo sed -i "11 i \ ./darp9.nix" /mnt/etc/nixos/configuration.nix - -elif [ $deviceChoice = 7 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/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 -elif [ $deviceChoice = 8 ]; then +elif [ $deviceChoice = 2 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/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#dev-one From 5cacafbea4d4fb1d5478b065f9d72a0786cf0fe6 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 16 Jan 2024 19:53:00 +0000 Subject: [PATCH 451/507] Update VM setup --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 8a97160..ede6e2f 100644 --- a/install.sh +++ b/install.sh @@ -45,8 +45,8 @@ read deviceChoice if [ $deviceChoice = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/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 + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ + sudo nixos-install --flake /mnt/etc/nixos#vm elif [ $deviceChoice = 2 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ From 054635f1fcc69d28726075003cd8e81d46a1e763 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 17 Jan 2024 13:17:08 +0000 Subject: [PATCH 452/507] Update install.sh --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index ede6e2f..12fff6a 100644 --- a/install.sh +++ b/install.sh @@ -30,6 +30,7 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos # Downloads and places the predefinded generic flake to use curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ # Step 3: Choosing a predefined system flake file to use From b637d3bfe2d1f15eb43485e2260e94aceefdfb36 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 18 Jan 2024 13:58:07 +0000 Subject: [PATCH 453/507] Update install.sh --- install.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.sh b/install.sh index 12fff6a..32a2e7d 100644 --- a/install.sh +++ b/install.sh @@ -28,6 +28,9 @@ sudo nix --experimental-features "nix-command flakes" run github:nix-community/d sudo nixos-generate-config --no-filesystems --root /mnt sudo mv /tmp/disko-config.nix /mnt/etc/nixos +# Removes generated configuration file as it's being replaced with our own +sudo rm /mnt/etc/nixos/configuration.nix + # Downloads and places the predefinded generic flake to use curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ From 7a6c1f5104e915c51c38ddfd11ce4df817ac117d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 18 Jan 2024 14:02:57 +0000 Subject: [PATCH 454/507] Remove custom VM line --- install.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/install.sh b/install.sh index 32a2e7d..cf37b95 100644 --- a/install.sh +++ b/install.sh @@ -49,7 +49,6 @@ read deviceChoice if [ $deviceChoice = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#vm elif [ $deviceChoice = 2 ]; then From 82791c73b16276f96d551ab4db5d63ae349f1e05 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 18 Jan 2024 14:20:22 +0000 Subject: [PATCH 455/507] Import vm configuration file --- install.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/install.sh b/install.sh index cf37b95..8a74ce3 100644 --- a/install.sh +++ b/install.sh @@ -28,9 +28,6 @@ sudo nix --experimental-features "nix-command flakes" run github:nix-community/d sudo nixos-generate-config --no-filesystems --root /mnt sudo mv /tmp/disko-config.nix /mnt/etc/nixos -# Removes generated configuration file as it's being replaced with our own -sudo rm /mnt/etc/nixos/configuration.nix - # Downloads and places the predefinded generic flake to use curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ @@ -49,6 +46,7 @@ read deviceChoice if [ $deviceChoice = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#vm elif [ $deviceChoice = 2 ]; then From 6fe8c907b251964bdc4ce468520dafa6c906eaa9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 18 Jan 2024 14:23:43 +0000 Subject: [PATCH 456/507] Add example of drive path --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index 8a74ce3..20c8475 100644 --- a/install.sh +++ b/install.sh @@ -10,6 +10,7 @@ lsblk -f # Choice the drive to use : echo "----------" echo "Which drive do we want to use for this installation?" +echo "For example /dev/sda or /dev/nvme0n1" read driveName # Download Disko file From 09a5f2418544ac949ec4eff0b883dcfc76bc3b6e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 18 Jan 2024 14:24:26 +0000 Subject: [PATCH 457/507] Move fi over to make the code look cleaner --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 20c8475..1f9d314 100644 --- a/install.sh +++ b/install.sh @@ -58,4 +58,4 @@ elif [ $deviceChoice = 2 ]; then elif [ $deviceChoice = 0 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ - fi +fi From d355c4ec3eda299db7947c75e49978bc24c84c28 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 18 Jan 2024 15:46:32 +0000 Subject: [PATCH 458/507] Add generic option from the flake --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index 1f9d314..424737f 100644 --- a/install.sh +++ b/install.sh @@ -57,5 +57,6 @@ elif [ $deviceChoice = 2 ]; then elif [ $deviceChoice = 0 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + sudo nixos-install --flake /mnt/etc/nixos#nixos fi From c3ae7e37dd618ed0e53f213b7f12dd76686cdb54 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 18 Jan 2024 16:51:13 +0000 Subject: [PATCH 459/507] Update install.sh --- install.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 424737f..8c08fe8 100644 --- a/install.sh +++ b/install.sh @@ -46,12 +46,10 @@ EOF read deviceChoice if [ $deviceChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/vm.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/vm.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#vm elif [ $deviceChoice = 2 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/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#dev-one From a58e322a5b3517d35f1e3ee15cb04cc1af036b33 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 19 Jan 2024 13:38:59 +0000 Subject: [PATCH 460/507] Add thelio-b1 --- install.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.sh b/install.sh index 8c08fe8..cc50d89 100644 --- a/install.sh +++ b/install.sh @@ -53,6 +53,10 @@ elif [ $deviceChoice = 2 ]; then 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#dev-one +elif [ $deviceChoice = 3 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ + sudo nixos-install --flake /mnt/etc/nixos#thelio-b1 + elif [ $deviceChoice = 0 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#nixos From 4933f6d0e6c1ac2d9a19f7fbcae7603b51873638 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 23 Jan 2024 20:06:48 +0000 Subject: [PATCH 461/507] Add thelio-b1 --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index cc50d89..bfe0b00 100644 --- a/install.sh +++ b/install.sh @@ -41,6 +41,7 @@ cat << EOF Which device are you installing to? 1) Virtual Machine 2) HP Dev One + 3) Thelio B1 (NVIDIA) 0) Generic EOF read deviceChoice From 999acc5296a5c07e4fc81ae8fbea2f9ff8333ed3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 25 Jan 2024 22:54:51 +0000 Subject: [PATCH 462/507] Add galp3b --- install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install.sh b/install.sh index bfe0b00..c3f4745 100644 --- a/install.sh +++ b/install.sh @@ -42,6 +42,7 @@ Which device are you installing to? 1) Virtual Machine 2) HP Dev One 3) Thelio B1 (NVIDIA) + 4) Galago Pro 3b (Garrus) 0) Generic EOF read deviceChoice @@ -58,6 +59,10 @@ elif [ $deviceChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#thelio-b1 +elif [ $deviceChoice = 4 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/x86_64/garrus/configuration.nix > garrus.nix; sudo mv -f garrus.nix /mnt/etc/nixos/ + sudo nixos-install --flake /mnt/etc/nixos#garrus + elif [ $deviceChoice = 0 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#nixos From dc1aa54f75a3949631c5834dc054628a92e941b1 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 25 Jan 2024 23:59:37 +0000 Subject: [PATCH 463/507] GNOME download for Thelio B1 and Galago 3B --- install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install.sh b/install.sh index c3f4745..802859e 100644 --- a/install.sh +++ b/install.sh @@ -57,10 +57,12 @@ elif [ $deviceChoice = 2 ]; then elif [ $deviceChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.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#thelio-b1 elif [ $deviceChoice = 4 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/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 [ $deviceChoice = 0 ]; then From 50744893ffd4027ad1a8989cd390ad926614b6ca Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 30 Jan 2024 17:42:06 +0000 Subject: [PATCH 464/507] Change from flake to main branch now that nix-configs change has been merged. --- install.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index 802859e..35804a3 100644 --- a/install.sh +++ b/install.sh @@ -30,9 +30,9 @@ sudo nixos-generate-config --no-filesystems --root /mnt sudo mv /tmp/disko-config.nix /mnt/etc/nixos # Downloads and places the predefinded generic flake to use -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ +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/configuration.nix > configuration.nix; sudo mv -f configuration.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 @@ -48,7 +48,7 @@ EOF read deviceChoice if [ $deviceChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/vm.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#vm elif [ $deviceChoice = 2 ]; then @@ -56,12 +56,12 @@ elif [ $deviceChoice = 2 ]; then sudo nixos-install --flake /mnt/etc/nixos#dev-one elif [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.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#thelio-b1 elif [ $deviceChoice = 4 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/systems/x86_64/garrus/configuration.nix > garrus.nix; sudo mv -f garrus.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/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 From 9e353184de88445bba41b26d6fdcfc221e70db31 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 30 Jan 2024 17:43:17 +0000 Subject: [PATCH 465/507] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 33eeee7..72c4abd 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ At the core of this installer it does the following: - Partition the drive of your choice - Installs a base of NixOS (`configuration.nix`) -- Installs a DE/WM of your choice (currently supporting GNOME, Plasma, Pantheon and Sway) - Installs needed packages for certain hardware +- Installs home-manager, sets the home.nix file into /etc/nixos/ so that it is updated with the rest of the system nix files are from [this repo](https://gitlab.com/ahoneybun/nix-configs/) but that can be changed as needed. @@ -20,8 +20,8 @@ Tested on the following architectures: 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 From c67b546b01a2c920e631e9ea1f1abc0858ae761f Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 30 Jan 2024 22:27:18 +0000 Subject: [PATCH 466/507] Update README.md --- README.md | 48 ------------------------------------------------ 1 file changed, 48 deletions(-) diff --git a/README.md b/README.md index 72c4abd..3cdd96a 100644 --- a/README.md +++ b/README.md @@ -23,51 +23,3 @@ This sets the hashedPassword to my own so you will need to update it to match yo ```bash mkpasswd -m sha-512 ``` - -## Get Started - -Prerequisites: - -- Prepare an installation medium. -- Boot the live environment. -- Connect to internet. - -## Connect to internet - -```sh -> add_network -0 -> set_network 0 ssid "myhomenetwork" -OK -> set_network 0 psk "mypassword" -OK -> set_network 0 key_mgmt WPA-PSK -OK -> enable_network 0 -OK -``` - -https://nixos.org/manual/nixos/stable/index.html#sec-installation-booting-networking - -## Start the installer - -```sh -sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) -``` - -The following will happen: - -- Clear partition table for `/dev/***`. -- Creates a GPT partition table for `/dev/***`. -- Creates a 1GB EFI partiton at `/dev/***1`. -- Creates a 4GB Swap partition at `/dev/***3`. -- Creates a root partition with the rest of the space at `/dev/***2`. -- Installs systemd-boot - -## Roadmap - -- [x] Merge ARM64 and x86_64 together into one branch - -# Possible Ideas - -- [ ] Install nix-channels such as `nixos-hardware` and `home-manager` after install. From 46517ae8c8a6e1fa32a21005dcb894ca85053454 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 30 Jan 2024 16:01:24 -0700 Subject: [PATCH 467/507] add shepard to options --- install.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/install.sh b/install.sh index 35804a3..ef97258 100644 --- a/install.sh +++ b/install.sh @@ -43,6 +43,7 @@ Which device are you installing to? 2) HP Dev One 3) Thelio B1 (NVIDIA) 4) Galago Pro 3b (Garrus) + 5) Nebula49 (Shepard) 0) Generic EOF read deviceChoice @@ -65,6 +66,11 @@ elif [ $deviceChoice = 4 ]; then 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 [ $deviceChoice = 5 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/rawmain/systems/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 [ $deviceChoice = 0 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#nixos From 8e91b6cc041be2c5fda93de8a5db8fadf3e14d27 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 30 Jan 2024 23:54:24 +0000 Subject: [PATCH 468/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index ef97258..7a32d8e 100644 --- a/install.sh +++ b/install.sh @@ -67,7 +67,7 @@ elif [ $deviceChoice = 4 ]; then sudo nixos-install --flake /mnt/etc/nixos#garrus elif [ $deviceChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/rawmain/systems/x86_64/shepard/configuration.nix > shepard.nix; sudo mv -f shepard.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/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 From eea3b738ec76f6dfbda1aac6d3306c8c94a4af2a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 31 Jan 2024 08:02:31 -0700 Subject: [PATCH 469/507] change: use hosts instead of systems --- install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index 7a32d8e..3fb8a75 100644 --- a/install.sh +++ b/install.sh @@ -49,7 +49,7 @@ EOF read deviceChoice if [ $deviceChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/vm.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/vm.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#vm elif [ $deviceChoice = 2 ]; then @@ -57,17 +57,17 @@ elif [ $deviceChoice = 2 ]; then sudo nixos-install --flake /mnt/etc/nixos#dev-one elif [ $deviceChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.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#thelio-b1 elif [ $deviceChoice = 4 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/garrus/configuration.nix > garrus.nix; sudo mv -f garrus.nix /mnt/etc/nixos/ + 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 [ $deviceChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/systems/x86_64/shepard/configuration.nix > shepard.nix; sudo mv -f shepard.nix /mnt/etc/nixos/ + 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 From 2704e92aea763b37806ad68dc0f0c5d3ed043e0b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 1 Feb 2024 10:32:34 -0700 Subject: [PATCH 470/507] chore: reorder and add comments to make code cleaner --- install.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/install.sh b/install.sh index 3fb8a75..402790e 100644 --- a/install.sh +++ b/install.sh @@ -2,34 +2,34 @@ # then sets it as a variable for hibernation support ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) -# Detect and list the drives. -lsblk -f - # Step 1: Choosing the drive for the installation -# Choice the drive to use : +## Detect and list the drives. +lsblk -f + +## Choice the drive to use : echo "----------" echo "Which drive do we want to use for this installation?" echo "For example /dev/sda or /dev/nvme0n1" read driveName -# Download Disko file +## Download Disko file cd /tmp curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/partitions/luks-btrfs-subvolumes.nix -o /tmp/disko-config.nix -# Replace drive in Disko file +## Replace drive in Disko file sudo sed -i "s#/dev/sda#$driveName#g" /tmp/disko-config.nix # Step 2: Partitioning the drive used for the installation -# Run Disko to partition the disk +## Run Disko to partition the disk sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko-config.nix -# Generate Nix configuration +## Generate Nix configuration sudo nixos-generate-config --no-filesystems --root /mnt sudo mv /tmp/disko-config.nix /mnt/etc/nixos -# Downloads and places the predefinded generic flake to use +## 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/ 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/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ From beb42a25e9cd569f1b6339b202471ffb7c664303 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 1 Feb 2024 23:58:29 +0000 Subject: [PATCH 471/507] add omen and reorder hosts --- install.sh | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/install.sh b/install.sh index 402790e..38c67c4 100644 --- a/install.sh +++ b/install.sh @@ -41,37 +41,43 @@ cat << EOF Which device are you installing to? 1) Virtual Machine 2) HP Dev One - 3) Thelio B1 (NVIDIA) - 4) Galago Pro 3b (Garrus) - 5) Nebula49 (Shepard) + 3) HP Omen + 4) Thelio B1 (NVIDIA) + 5) Galago Pro 3b (Garrus) + 6) Nebula49 (Shepard) 0) Generic EOF -read deviceChoice +read hostChoice -if [ $deviceChoice = 1 ]; then +if [ $hostChoice = 1 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/vm.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#vm -elif [ $deviceChoice = 2 ]; then +elif [ $hostChoice = 2 ]; then 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#dev-one -elif [ $deviceChoice = 3 ]; then +elif [ $hostChoice = 3 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/hp-omen.nix > hp-omen.nix; sudo mv -f hp-omen.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#omen + +elif [ $hostChoice = 4 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.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#thelio-b1 -elif [ $deviceChoice = 4 ]; then +elif [ $hostChoice = 5 ]; 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 [ $deviceChoice = 5 ]; then +elif [ $hostChoice = 6 ]; 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 [ $deviceChoice = 0 ]; then +elif [ $hostChoice = 0 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#nixos From e6006b70ec3d62250edf73b1063691fd6884723b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 9 Feb 2024 06:53:38 -0700 Subject: [PATCH 472/507] add: Jaal --- install.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/install.sh b/install.sh index 38c67c4..888f70d 100644 --- a/install.sh +++ b/install.sh @@ -30,7 +30,7 @@ sudo nixos-generate-config --no-filesystems --root /mnt sudo mv /tmp/disko-config.nix /mnt/etc/nixos ## 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/ +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ 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/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ @@ -41,9 +41,9 @@ cat << EOF Which device are you installing to? 1) Virtual Machine 2) HP Dev One - 3) HP Omen - 4) Thelio B1 (NVIDIA) - 5) Galago Pro 3b (Garrus) + 3) Thelio B1 (NVIDIA) + 4) Galago Pro 3b (Garrus) + 5) Pinebook Pro (Jaal) 6) Nebula49 (Shepard) 0) Generic EOF @@ -58,19 +58,19 @@ elif [ $hostChoice = 2 ]; then sudo nixos-install --flake /mnt/etc/nixos#dev-one elif [ $hostChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/hp-omen.nix > hp-omen.nix; sudo mv -f hp-omen.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#omen - -elif [ $hostChoice = 4 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.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#thelio-b1 -elif [ $hostChoice = 5 ]; then +elif [ $hostChoice = 4 ]; 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 = 5 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/aarch64/jaal/pinebook-pro.nix > jaal.nix; sudo mv -f jaal.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#jaal elif [ $hostChoice = 6 ]; 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/ From 4720940db1cd89c13b2d1062eb78ab8b31b7e452 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 9 Feb 2024 07:56:12 -0700 Subject: [PATCH 473/507] fix: update links for correct branch for jaal testing --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 888f70d..fd6ca93 100644 --- a/install.sh +++ b/install.sh @@ -31,8 +31,8 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos ## Downloads and places the predefinded generic flake to use curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ -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/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ # Step 3: Choosing a predefined system flake file to use @@ -68,7 +68,7 @@ elif [ $hostChoice = 4 ]; then sudo nixos-install --flake /mnt/etc/nixos#garrus elif [ $hostChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/aarch64/jaal/pinebook-pro.nix > jaal.nix; sudo mv -f jaal.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/hosts/aarch64/jaal/pinebook-pro.nix > jaal.nix; sudo mv -f jaal.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#jaal From cfa9051d9eab33f22c0ba9f178fd22dd383fa918 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 9 Feb 2024 08:33:12 -0700 Subject: [PATCH 474/507] change: rename pinebook-pro file --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index fd6ca93..ccb334c 100644 --- a/install.sh +++ b/install.sh @@ -68,7 +68,7 @@ elif [ $hostChoice = 4 ]; then sudo nixos-install --flake /mnt/etc/nixos#garrus elif [ $hostChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/hosts/aarch64/jaal/pinebook-pro.nix > jaal.nix; sudo mv -f jaal.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/hosts/aarch64/jaal/configuration.nix > jaal.nix; sudo mv -f jaal.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#jaal From 0cce412a56ee0ea5e7404847274f0a234ddd462b Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 9 Feb 2024 08:37:03 -0700 Subject: [PATCH 475/507] match the installer --- install.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index ccb334c..7c10dac 100644 --- a/install.sh +++ b/install.sh @@ -30,9 +30,9 @@ sudo nixos-generate-config --no-filesystems --root /mnt sudo mv /tmp/disko-config.nix /mnt/etc/nixos ## Downloads and places the predefinded generic flake to use -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ +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/configuration.nix > configuration.nix; sudo mv -f configuration.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 @@ -68,7 +68,7 @@ elif [ $hostChoice = 4 ]; then sudo nixos-install --flake /mnt/etc/nixos#garrus elif [ $hostChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/add-nixos-hardware/hosts/aarch64/jaal/configuration.nix > jaal.nix; sudo mv -f jaal.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/aarch64/jaal/configuration.nix > jaal.nix; sudo mv -f jaal.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#jaal @@ -78,7 +78,7 @@ elif [ $hostChoice = 6 ]; then sudo nixos-install --flake /mnt/etc/nixos#shepard elif [ $hostChoice = 0 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/flake/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/flake.nix > flake.nix; sudo mv -f flake.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#nixos fi From 92c6e47c1924b73e9369f923a3492c423dcb1ea7 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 9 Feb 2024 16:15:08 -0700 Subject: [PATCH 476/507] update README --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3cdd96a..35c6370 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ 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 Disko +- Uses `flake.nix` to set certain modules depending on the system like nixos-hardware for the Pinebook Pro + - Uses home-manager to manage settings for GNOME (current desktop) and other applications for my user - Installs a base of NixOS (`configuration.nix`) -- Installs needed packages for certain hardware -- Installs home-manager, sets the home.nix file into /etc/nixos/ so that it is updated with the rest of the system nix files are from [this repo](https://gitlab.com/ahoneybun/nix-configs/) but that can be changed as needed. From b09dbc091b66fcd00110e7cd4eedb66a5ad1fbf3 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 13 Feb 2024 06:49:17 -0700 Subject: [PATCH 477/507] remove: work systems like Thelio and HP Dev One --- install.sh | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/install.sh b/install.sh index 7c10dac..1da3278 100644 --- a/install.sh +++ b/install.sh @@ -40,11 +40,9 @@ cat << EOF Which device are you installing to? 1) Virtual Machine - 2) HP Dev One - 3) Thelio B1 (NVIDIA) - 4) Galago Pro 3b (Garrus) - 5) Pinebook Pro (Jaal) - 6) Nebula49 (Shepard) + 2) Galago Pro 3b (Garrus) + 3) Pinebook Pro (Jaal) + 4) Nebula49 (Shepard) 0) Generic EOF read hostChoice @@ -54,25 +52,16 @@ if [ $hostChoice = 1 ]; then sudo nixos-install --flake /mnt/etc/nixos#vm elif [ $hostChoice = 2 ]; then - 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#dev-one - -elif [ $hostChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/thelio-nvidia.nix > thelio-nvidia.nix; sudo mv -f thelio-nvidia.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#thelio-b1 - -elif [ $hostChoice = 4 ]; 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 = 5 ]; then +elif [ $hostChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/aarch64/jaal/configuration.nix > jaal.nix; sudo mv -f jaal.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#jaal -elif [ $hostChoice = 6 ]; then +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 From 1704dd58a77acfed8226532b8d2eb8fd0b835a0a Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 15 Feb 2024 16:35:26 -0700 Subject: [PATCH 478/507] add: EDI --- install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install.sh b/install.sh index 1da3278..fe5c389 100644 --- a/install.sh +++ b/install.sh @@ -43,6 +43,7 @@ Which device are you installing to? 2) Galago Pro 3b (Garrus) 3) Pinebook Pro (Jaal) 4) Nebula49 (Shepard) + 5) local Build Server (EDI) 0) Generic EOF read hostChoice @@ -66,6 +67,10 @@ elif [ $hostChoice = 4 ]; then 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 = 5 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/EDI/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ + sudo nixos-install --flake /mnt/etc/nixos#edi + 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/ sudo nixos-install --flake /mnt/etc/nixos#nixos From 3037df6b3e6050d00226d04ccec3f649e63aa8f2 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 15 Feb 2024 17:02:05 -0700 Subject: [PATCH 479/507] change: edi -> EDI --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index fe5c389..f3aa48b 100644 --- a/install.sh +++ b/install.sh @@ -69,7 +69,7 @@ elif [ $hostChoice = 4 ]; then elif [ $hostChoice = 5 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/EDI/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ - sudo nixos-install --flake /mnt/etc/nixos#edi + sudo nixos-install --flake /mnt/etc/nixos#EDI 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/ From cec220bb71a30290fbd0a137d963d092a7ea888e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 22 Feb 2024 18:10:29 +0000 Subject: [PATCH 480/507] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 35c6370..4a67414 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,12 @@ This installer is named after my doggo Onyxia. +## Starting the Installer + +```bash +sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) +``` + At the core of this installer it does the following: - Partition the drive of your choice using Disko From cbe6bcc93e37b79f28ec5e17b27de05fffb04ced Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 22 Feb 2024 18:14:15 +0000 Subject: [PATCH 481/507] Nebula49 -> nebula49 --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index f3aa48b..373f518 100644 --- a/install.sh +++ b/install.sh @@ -42,7 +42,7 @@ Which device are you installing to? 1) Virtual Machine 2) Galago Pro 3b (Garrus) 3) Pinebook Pro (Jaal) - 4) Nebula49 (Shepard) + 4) nebula49 (Shepard) 5) local Build Server (EDI) 0) Generic EOF From 85087fe3580b41bb43c359d97e21660a3398e361 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 29 Feb 2024 16:28:38 +0000 Subject: [PATCH 482/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 373f518..95984e5 100644 --- a/install.sh +++ b/install.sh @@ -43,7 +43,7 @@ Which device are you installing to? 2) Galago Pro 3b (Garrus) 3) Pinebook Pro (Jaal) 4) nebula49 (Shepard) - 5) local Build Server (EDI) + 5) Homelab (EDI) 0) Generic EOF read hostChoice From d89f6afc214e05fdecbe6e1723c90cc8768a066c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 1 Mar 2024 22:21:32 +0000 Subject: [PATCH 483/507] add: macbook --- install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install.sh b/install.sh index 95984e5..f30fbb7 100644 --- a/install.sh +++ b/install.sh @@ -71,6 +71,11 @@ elif [ $hostChoice = 5 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/EDI/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#EDI +elif [ $hostChoice = 6 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/macbook-intel.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#macbook + 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/ sudo nixos-install --flake /mnt/etc/nixos#nixos From b3825d935bafc2c3e1dcfb3af857074e875a48b5 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 25 Jun 2024 16:03:46 -0600 Subject: [PATCH 484/507] start work on move to 24.05 --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index f30fbb7..04d4ec2 100644 --- a/install.sh +++ b/install.sh @@ -31,8 +31,8 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos ## 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/ -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/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/release-24.05/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ +curl https://gitlab.com/ahoneybun/nix-configs/-/raw/release-24.05/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ # Step 3: Choosing a predefined system flake file to use From 56369f0679f6bb12e66683c4833d5e924c48c690 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 9 Aug 2024 11:30:34 -0600 Subject: [PATCH 485/507] Point to main now and remove unsupported devices --- install.sh | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/install.sh b/install.sh index 04d4ec2..393656f 100644 --- a/install.sh +++ b/install.sh @@ -31,8 +31,8 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos ## 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/ -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/release-24.05/configuration.nix > configuration.nix; sudo mv -f configuration.nix /mnt/etc/nixos/ -curl https://gitlab.com/ahoneybun/nix-configs/-/raw/release-24.05/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ +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/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ # Step 3: Choosing a predefined system flake file to use @@ -43,7 +43,6 @@ Which device are you installing to? 2) Galago Pro 3b (Garrus) 3) Pinebook Pro (Jaal) 4) nebula49 (Shepard) - 5) Homelab (EDI) 0) Generic EOF read hostChoice @@ -56,7 +55,7 @@ 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/aarch64/jaal/configuration.nix > jaal.nix; sudo mv -f jaal.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/ @@ -67,15 +66,6 @@ elif [ $hostChoice = 4 ]; then 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 = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/EDI/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ - sudo nixos-install --flake /mnt/etc/nixos#EDI - -elif [ $hostChoice = 6 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/macbook-intel.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#macbook - 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/ sudo nixos-install --flake /mnt/etc/nixos#nixos From c02b8f0ca3a882ab58aa0386207076ceaff65b33 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 5 Sep 2024 14:09:33 +0000 Subject: [PATCH 486/507] Update install.sh --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 393656f..37f76c5 100644 --- a/install.sh +++ b/install.sh @@ -40,7 +40,7 @@ cat << EOF Which device are you installing to? 1) Virtual Machine - 2) Galago Pro 3b (Garrus) + 2) Galago Pro 5 (Garrus) 3) Pinebook Pro (Jaal) 4) nebula49 (Shepard) 0) Generic From 0f1f29e716f0da0025eefabc32520f14220fee57 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 9 Sep 2024 17:24:20 -0600 Subject: [PATCH 487/507] Remove jaal (pinebook-pro) --- install.sh | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/install.sh b/install.sh index 37f76c5..a516724 100644 --- a/install.sh +++ b/install.sh @@ -41,8 +41,7 @@ cat << EOF Which device are you installing to? 1) Virtual Machine 2) Galago Pro 5 (Garrus) - 3) Pinebook Pro (Jaal) - 4) nebula49 (Shepard) + 3) nebula49 (Shepard) 0) Generic EOF read hostChoice @@ -57,11 +56,6 @@ elif [ $hostChoice = 2 ]; then sudo nixos-install --flake /mnt/etc/nixos#garrus elif [ $hostChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/aarch64/jaal/configuration.nix > jaal.nix; sudo mv -f jaal.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#jaal - -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 From b6bd57a20fed7c22cd69a0bb7e451eee677ee13c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Thu, 19 Sep 2024 19:18:01 -0600 Subject: [PATCH 488/507] fix vm path --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index a516724..162ae23 100644 --- a/install.sh +++ b/install.sh @@ -47,7 +47,7 @@ EOF read hostChoice if [ $hostChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/vm.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/configuration.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#vm elif [ $hostChoice = 2 ]; then From 7730df30af073e7173b0c74e0270db90e04723e2 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 15 Oct 2024 19:56:19 +0000 Subject: [PATCH 489/507] add drack --- install.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 162ae23..a8c0371 100644 --- a/install.sh +++ b/install.sh @@ -41,7 +41,8 @@ cat << EOF Which device are you installing to? 1) Virtual Machine 2) Galago Pro 5 (Garrus) - 3) nebula49 (Shepard) + 3) Thinkpad X13s (Drack) + 4) nebula49 (Shepard) 0) Generic EOF read hostChoice @@ -56,6 +57,10 @@ elif [ $hostChoice = 2 ]; then sudo nixos-install --flake /mnt/etc/nixos#garrus elif [ $hostChoice = 3 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/aarch64/drack/configuration.nix > drack.nix; sudo mv -f drack.nix /mnt/etc/nixos/ + sudo nixos-install --flake /mnt/etc/nixos#drack + +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 From 0db2dedde109f3a9e037e71fad105036f54f05b9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 15 Oct 2024 21:33:15 +0000 Subject: [PATCH 490/507] Update install.sh --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index a8c0371..aaea823 100644 --- a/install.sh +++ b/install.sh @@ -58,6 +58,7 @@ elif [ $hostChoice = 2 ]; then elif [ $hostChoice = 3 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/aarch64/drack/configuration.nix > drack.nix; sudo mv -f drack.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#drack elif [ $hostChoice = 4 ]; then From 816765472726fd269ef095423f5392c1994d8d67 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 25 Oct 2024 22:18:55 +0000 Subject: [PATCH 491/507] add EDI back --- install.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install.sh b/install.sh index aaea823..f266c0d 100644 --- a/install.sh +++ b/install.sh @@ -66,6 +66,10 @@ elif [ $hostChoice = 4 ]; then 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 = 5 ]; then + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/edi/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ + sudo nixos-install --flake /mnt/etc/nixos#edi + 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/ sudo nixos-install --flake /mnt/etc/nixos#nixos From 6c0a6cc602079217378c5055849a60d9654a416d Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 25 Oct 2024 22:19:29 +0000 Subject: [PATCH 492/507] finish adding EDI --- install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install.sh b/install.sh index f266c0d..9b348a7 100644 --- a/install.sh +++ b/install.sh @@ -43,6 +43,7 @@ Which device are you installing to? 2) Galago Pro 5 (Garrus) 3) Thinkpad X13s (Drack) 4) nebula49 (Shepard) + 5) Home Server (EDI) 0) Generic EOF read hostChoice From 7541a7a9ad76db0b2a6432ab2d7994e636b7d20c Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Fri, 1 Nov 2024 15:55:41 -0600 Subject: [PATCH 493/507] fix typo --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 9b348a7..e4d9eec 100644 --- a/install.sh +++ b/install.sh @@ -43,7 +43,7 @@ Which device are you installing to? 2) Galago Pro 5 (Garrus) 3) Thinkpad X13s (Drack) 4) nebula49 (Shepard) - 5) Home Server (EDI) + 5) Home Server (EDI) - Do Not Use 0) Generic EOF read hostChoice @@ -68,7 +68,7 @@ elif [ $hostChoice = 4 ]; then sudo nixos-install --flake /mnt/etc/nixos#shepard elif [ $hostChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/edi/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/EDI/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#edi elif [ $hostChoice = 0 ]; then From bb2f3f53d3b209fa3268d0200747bf006c18d87e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 4 Nov 2024 15:39:14 -0700 Subject: [PATCH 494/507] Rename EDI to edi --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index e4d9eec..0c8851f 100644 --- a/install.sh +++ b/install.sh @@ -68,7 +68,7 @@ elif [ $hostChoice = 4 ]; then sudo nixos-install --flake /mnt/etc/nixos#shepard elif [ $hostChoice = 5 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/EDI/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/edi/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#edi elif [ $hostChoice = 0 ]; then From 99683499bf10ae4dd36d3c9df3b84c485b3b7c88 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 7 Jan 2025 14:28:19 +0000 Subject: [PATCH 495/507] add lemp13 --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 0c8851f..3b1fcd8 100644 --- a/install.sh +++ b/install.sh @@ -41,7 +41,7 @@ cat << EOF Which device are you installing to? 1) Virtual Machine 2) Galago Pro 5 (Garrus) - 3) Thinkpad X13s (Drack) + 3) Lemur Pro 13 4) nebula49 (Shepard) 5) Home Server (EDI) - Do Not Use 0) Generic @@ -58,9 +58,9 @@ elif [ $hostChoice = 2 ]; then sudo nixos-install --flake /mnt/etc/nixos#garrus elif [ $hostChoice = 3 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/aarch64/drack/configuration.nix > drack.nix; sudo mv -f drack.nix /mnt/etc/nixos/ + curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/lemp13.nix > lemp13.nix; sudo mv -f lemp13.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#drack + sudo nixos-install --flake /mnt/etc/nixos#lemp13 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/ From ebd81d3780ff1b01c9080e1652036f220bfbb041 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 27 Jan 2025 12:26:36 -0700 Subject: [PATCH 496/507] swap lemp13 for garrus --- install.sh | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/install.sh b/install.sh index 3b1fcd8..406cc1f 100644 --- a/install.sh +++ b/install.sh @@ -40,10 +40,9 @@ cat << EOF Which device are you installing to? 1) Virtual Machine - 2) Galago Pro 5 (Garrus) - 3) Lemur Pro 13 - 4) nebula49 (Shepard) - 5) Home Server (EDI) - Do Not Use + 2) Lemur Pro 13 (Garrus) + 3) nebula49 (Shepard) + 4) Home Server (EDI) - Do Not Use 0) Generic EOF read hostChoice @@ -57,11 +56,6 @@ elif [ $hostChoice = 2 ]; then 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/lemp13.nix > lemp13.nix; sudo mv -f lemp13.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#lemp13 - 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/ From 0e9001e6bf8a91455e2bc5dbf7a945674dbeddbd Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 16 Feb 2025 06:14:50 +0000 Subject: [PATCH 497/507] fix numbering for the list --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 406cc1f..dcd1a11 100644 --- a/install.sh +++ b/install.sh @@ -56,12 +56,12 @@ elif [ $hostChoice = 2 ]; then 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 = 4 ]; then +elif [ $hostChoice = 3 ]; 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 = 5 ]; then +elif [ $hostChoice = 4 ]; then curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/edi/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ sudo nixos-install --flake /mnt/etc/nixos#edi From 31cce1d9988384e98843eb7e7f62cbc28de009d9 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Mon, 17 Feb 2025 20:01:04 +0000 Subject: [PATCH 498/507] Edit install.sh --- install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install.sh b/install.sh index dcd1a11..5650cb2 100644 --- a/install.sh +++ b/install.sh @@ -31,6 +31,8 @@ sudo mv /tmp/disko-config.nix /mnt/etc/nixos ## 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/ + +## 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/home.nix > home.nix; sudo mv -f home.nix /mnt/etc/nixos/ From 6c8f35c39f110ba12276bf5e44ebaf8bc2fc7a85 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 18 Feb 2025 20:02:01 +0000 Subject: [PATCH 499/507] Interface --- install.sh | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/install.sh b/install.sh index 5650cb2..869e7a2 100644 --- a/install.sh +++ b/install.sh @@ -1,7 +1,3 @@ -# Figure out how much RAM the system has -# then sets it as a variable for hibernation support -ramTotal=$(free -h | awk '/^Mem:/{print $2}'| awk -FG {'print$1'}) - # Step 1: Choosing the drive for the installation ## Detect and list the drives. @@ -11,7 +7,10 @@ lsblk -f echo "----------" echo "Which drive do we want to use for this installation?" echo "For example /dev/sda or /dev/nvme0n1" -read driveName + +echo "" +read -p "Enter your drive choice: " driveName +echo "" ## Download Disko file cd /tmp @@ -23,12 +22,17 @@ sudo sed -i "s#/dev/sda#$driveName#g" /tmp/disko-config.nix # Step 2: Partitioning the drive used for the installation ## Run Disko to partition the disk -sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko-config.nix +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 ## Generate Nix configuration sudo nixos-generate-config --no-filesystems --root /mnt + +## Copies over the disko file for running `nixos-install` sudo mv /tmp/disko-config.nix /mnt/etc/nixos +## Confirm that partitions are mounted +lsblk -f + ## 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/ @@ -44,13 +48,15 @@ Which device are you installing to? 1) Virtual Machine 2) Lemur Pro 13 (Garrus) 3) nebula49 (Shepard) - 4) Home Server (EDI) - Do Not Use 0) Generic EOF -read hostChoice + +echo "" +read -p "Enter your device choice: " hostChoice +echo "" if [ $hostChoice = 1 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/configuration.nix > vm.nix; sudo mv -f vm.nix /mnt/etc/nixos/ + 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 elif [ $hostChoice = 2 ]; then @@ -63,12 +69,9 @@ elif [ $hostChoice = 3 ]; then 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 = 4 ]; then - curl https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/edi/configuration.nix > edi.nix; sudo mv -f edi.nix /mnt/etc/nixos/ - sudo nixos-install --flake /mnt/etc/nixos#edi - 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 From 743ca7f3dd167e29f7786af4e1d6af863aab7213 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Tue, 18 Feb 2025 20:02:40 +0000 Subject: [PATCH 500/507] removes debugging lsblk command --- install.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/install.sh b/install.sh index 869e7a2..e7a2c5f 100644 --- a/install.sh +++ b/install.sh @@ -30,9 +30,6 @@ sudo nixos-generate-config --no-filesystems --root /mnt ## Copies over the disko file for running `nixos-install` sudo mv /tmp/disko-config.nix /mnt/etc/nixos -## Confirm that partitions are mounted -lsblk -f - ## 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/ From 14b8ada912cbc1389db1ea10ed4ab530d7b947be Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Wed, 12 Mar 2025 15:39:08 -0600 Subject: [PATCH 501/507] add Pixel Slate to installer --- install.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index e7a2c5f..e2810a1 100644 --- a/install.sh +++ b/install.sh @@ -44,7 +44,8 @@ cat << EOF Which device are you installing to? 1) Virtual Machine 2) Lemur Pro 13 (Garrus) - 3) nebula49 (Shepard) + 3) Pixel Slate + 4) nebula49 (Shepard) 0) Generic EOF @@ -62,6 +63,11 @@ elif [ $hostChoice = 2 ]; then 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 From 888bba4c341005380b5b0fd6585554893c3dfb5e Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 23 Mar 2025 14:21:00 -0600 Subject: [PATCH 502/507] init commit --- .gitignore | 1 + Cargo.lock | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 7 +++ src/main.rs | 30 ++++++++++++ 4 files changed, 170 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..99c4c00 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,132 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[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 = "libc" +version = "0.2.171" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" + +[[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 = "nyxi-installer" +version = "2.0.0" +dependencies = [ + "sys_metrics", +] + +[[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 = "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", +] + +[[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 = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..564397c --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "nyxi-installer" +version = "2.0.0" +edition = "2021" + +[dependencies] +sys_metrics = "0.2.7" diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..3afa952 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,30 @@ +use std::io; +use sys_metrics::disks; + +fn main() { + println!("Availble disks for installation:"); + 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!("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(); + + // let deposit_number: f64 = deposit_amount.parse().expect("Input not an integer"); + +} From 725967fe25415a3772814d65353bcd74ce2e8a17 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 23 Mar 2025 19:36:41 -0600 Subject: [PATCH 503/507] rsdisk working --- Cargo.lock | 533 +++++++++++++++++++++++++++++++++++++++++++++++++++- Cargo.toml | 1 + src/main.rs | 47 ++++- 3 files changed, 579 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 99c4c00..aa0100b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,18 +2,182 @@ # 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 = "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", +] + [[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", +] + +[[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" @@ -30,12 +194,40 @@ 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 = "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" @@ -54,13 +246,107 @@ 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 = [ + "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 = "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" @@ -79,6 +365,83 @@ 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", +] + [[package]] name = "serde" version = "1.0.219" @@ -96,7 +459,24 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn", + "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 = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] @@ -125,8 +505,159 @@ dependencies = [ "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 = "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.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", +] diff --git a/Cargo.toml b/Cargo.toml index 564397c..6017b19 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,4 +4,5 @@ version = "2.0.0" edition = "2021" [dependencies] +rsfdisk = "0.1.0" sys_metrics = "0.2.7" diff --git a/src/main.rs b/src/main.rs index 3afa952..a740890 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,47 @@ use std::io; use sys_metrics::disks; +use rsfdisk::fdisk::Fdisk; +use rsfdisk::core::partition_table::PartitionTableKind; +use rsfdisk::core::partition::{Guid, Partition, PartitionKind, PartitionList}; + +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::LinuxRootx86_64) + .build()?; + + let boot = Partition::builder() + .partition_type(partition_type.clone()) + .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 root = Partition::builder() + .partition_type(partition_type) + .name("Root") + .size_in_sectors(499_033_071_616) + .build()?; + + let _ = disk.partition_add(root)?; + + disk.partition_table_write_to_disk()?; + + Ok(()) +} + +fn mount_parts() { + +} fn main() { println!("Availble disks for installation:"); @@ -23,8 +65,11 @@ fn main() { .read_line(&mut drive_name) .expect("Failed to read line"); - let _drive_name = drive_name.trim(); + let drive_name = drive_name.trim(); // let deposit_number: f64 = deposit_amount.parse().expect("Input not an integer"); + // Partitioning the selected drive + format_drive(drive_name); + } From 3e2ac09e373398812bf7b3186785264d991e3479 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 23 Mar 2025 19:39:33 -0600 Subject: [PATCH 504/507] add development nix-shell file --- shell.nix | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 shell.nix diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..826e6ba --- /dev/null +++ b/shell.nix @@ -0,0 +1,26 @@ +{ pkgs ? import {} }: + + pkgs.mkShell { + buildInputs = with pkgs; [ + # Rust + cargo + rustc + + # Compiler + gnumake + clang + llvmPackages.libclang + llvmPackages.clang + + # System + 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 "Ready to make some rust!" + ''; +} From db898d510d158fcd956efdec0b8c8bf6df9030bf Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 23 Mar 2025 19:43:01 -0600 Subject: [PATCH 505/507] add README --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..9b1e531 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# The NixOS Installer + +This installer is named after my doggo Onyxia. + +## Starting the Installer + +```bash +sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) +``` + +At the core of this installer it does the following: + +- 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`) + +nix files are from [this repo](https://gitlab.com/ahoneybun/nix-configs/) but that can be changed as needed. + +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: + +```bash +mkpasswd -m sha-512 +``` From 2281629835e97bae66b4a9ada9332ad5775f42a0 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 23 Mar 2025 19:54:51 -0600 Subject: [PATCH 506/507] add note about full path for drive --- Cargo.lock | 19 ------------------- src/main.rs | 1 + 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aa0100b..0089cb2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -70,12 +70,6 @@ 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" @@ -258,18 +252,6 @@ 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" @@ -305,7 +287,6 @@ dependencies = [ name = "nyxi-installer" version = "2.0.0" dependencies = [ - "nix", "rsfdisk", "sys_metrics", ] diff --git a/src/main.rs b/src/main.rs index a740890..e6674ad 100644 --- a/src/main.rs +++ b/src/main.rs @@ -59,6 +59,7 @@ fn main() { let mut drive_name = String::new(); println!(""); + println!("Use the full drive path such as /dev/nvme0n1 or /dev/sda"); println!("Which drive do we want to use for this installation?: {}", drive_name); io::stdin() From 64ba913d398748e04582c06ba6e435842fa9a969 Mon Sep 17 00:00:00 2001 From: Aaron Honeycutt Date: Sun, 23 Mar 2025 19:55:07 -0600 Subject: [PATCH 507/507] remove command with curl as this is not valid --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 9b1e531..0b9f3d2 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ This installer is named after my doggo Onyxia. ## Starting the Installer ```bash -sh <(curl -L https://gitlab.com/ahoneybun/nyxi-installer/-/raw/main/install.sh) ``` At the core of this installer it does the following: