Merge remote-tracking branch 'origin/MultipleSystems'

This commit is contained in:
Zonsopkomst 2023-01-31 12:35:51 -06:00
commit b20be793ed
18 changed files with 2766 additions and 6 deletions

21
LICENSE.md Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 Zonsopkomst
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -10,5 +10,18 @@ This is my NixOS with home-manager config structure using nix flakes
## Structure
* flake.nix: Declare hosts and home configurations
* hosts: NixOS Configurations using nixos-rebuild --flake .#<username>
* common: Shared configurations
* common: Shared configurations
## Machines
Hostname | Model | Type | RAM | Processor | Main Use
--- | --- | --- | --- | --- | ---
frija | Acer Aspire 3 | Laptop | ??GB | ?? | Testing
## How to
1. Install NixOS on a Machine. I use the default Gnome installer from xxxxxxxxxxx.
2. Copy the ```configuration.nix``` and ```hardware-configuration.nix``` files from the /etc/nixos directory
3. Create a ```hosts``` directory on git for the new machine
4.

0
common/TODO/CUPS.nix Normal file
View File

0
common/TODO/gnome.nix Normal file
View File

0
common/TODO/pipewire.nix Normal file
View File

0
common/TODO/time.nix Normal file
View File

View File

@ -2,15 +2,18 @@
description = "Zonsopkomst's NixOS Flake to Manage Multiple Machines";
inputs = {
# Attribute set of all the dependencies used in the flake
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
hyprland.url = "github:hyprwm/Hyprland";
};
outputs = inputs@{ nixpkgs, home-manager, hyprland, ... }: {
# Function of an argument that uses the inputs for reference
outputs = inputs@{
home-manager,
hyprland,
nixpkgs,
... }: {
nixosConfigurations = {
nixos = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
@ -26,7 +29,21 @@
hyprland.nixosModules.default
{programs.hyprland.enable = true;}
];
};
};
frija = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hosts/home/frija/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.aspire = import ./hosts/home/frija/home.nix;
}
];
};
};
};
}

View File

@ -0,0 +1,162 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
./packages.nix
../../../common/amd.nix
#../../../common/docker.nix
../../../common/flakeinit.nix
#../../../common/flatpak.nix
#../../../common/gaming.nix
#../../../common/hyperland.nix
#../../../common/insecure.nix
#../../../common/waydroid.nix
../../../users/aspire/home-manager.nix
#../../../users/aspire/syncthing.nix
];
# Bootloader.
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
boot.loader.grub.useOSProber = true;
# Setup keyfile
boot.initrd.secrets = {
"/crypto_keyfile.bin" = null;
};
# Enable grub cryptodisk
boot.loader.grub.enableCryptodisk=true;
boot.initrd.luks.devices."luks-ff9e6bac-c23b-45eb-8429-c15271559dfa".keyFile = "/crypto_keyfile.bin";
# Enable swap on luks
boot.initrd.luks.devices."luks-bfce34cb-65e4-4ba0-939d-e3f0ff903338".device = "/dev/disk/by-uuid/bfce34cb-65e4-4ba0-939d-e3f0ff903338";
boot.initrd.luks.devices."luks-bfce34cb-65e4-4ba0-939d-e3f0ff903338".keyFile = "/crypto_keyfile.bin";
networking.hostName = "frija"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/Chicago";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
# Configure keymap in X11
services.xserver = {
layout = "us";
xkbVariant = "";
};
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.aspire = {
isNormalUser = true;
description = "Aspire";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
# firefox
# thunderbird
];
};
# Enable automatic login for the user.
services.xserver.displayManager.autoLogin.enable = true;
services.xserver.displayManager.autoLogin.user = "aspire";
# Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229
systemd.services."getty@tty1".enable = false;
systemd.services."autovt@tty1".enable = false;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "22.11"; # Did you read the comment?
}

View File

@ -0,0 +1,37 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "ehci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/4a526b94-4676-44d0-b545-2c1a96d08450";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-ff9e6bac-c23b-45eb-8429-c15271559dfa".device = "/dev/disk/by-uuid/ff9e6bac-c23b-45eb-8429-c15271559dfa";
swapDevices =
[ { device = "/dev/disk/by-uuid/b0b3c4a1-5d5c-44e6-8eee-9e3693f25c90"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp2s0f1.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -0,0 +1,18 @@
{ config, pkgs, ... }:
let
in
{
# imports = [
# (import "${home-manager}/nixos")
# ];
#
home.stateVersion = 22.11;
home-manager.users.aspire = {
# Begin packages and options
home.packages = with pkgs; [
#dconf2nix
]
};
}

21
hosts/home/frija/home.nix Normal file
View File

@ -0,0 +1,21 @@
{ config, pkgs, ... }:
{
# Home Manager needs a bit of information about you and the
# paths it should manage.
home.username = "aspire";
home.homeDirectory = "/home/aspire";
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "22.11";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}

View File

@ -0,0 +1,203 @@
########################
# Full System Packages #
########################
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs;
[
#################
# Communication #
#################
#dino # XMPP Client
#discord # Discord Client
#element-desktop # Matrix Client
#jitsi # Video Calls & Chat
###########
# Cursors #
###########
phinger-cursors
#########
# Fonts #
#########
anonymousPro # TrueType Font Set for Source Code
roboto # Android Family of Fonts
tamsyn # Monospace Bitmap Font for Programmers
#########
# Games #
#########
#airshipper # Veloren RPG Updater
#assaultcube # First-Person Shooter
#alienarena # First-Person Shooter
#cataclysm-dda # Zombie Rogue-Like
#factorio # Build & Maintain Factories
#freeciv # Civilization Strategy Clone
#freenukum # Duke Nukum 1 Clone
#gamemode # Optimse Linux System Performance
#gzdoom # Doom Clone based on ZDoom
#hedgewars # Worms Clone
#openttd # Transport Tycoon Deluxe Clone
#redeclipse # First-Person Shooter
#retroarchFull # Multi-Platform Emulator
#sauerbraten # First-Person Shooter, successor of Cube
#scorched3d # Scorched Earth 3D Clone
#shattered-pixel-dungeon # Roguelike Dungeon Crawl
#supertux # Super Mario Clone
#supertuxkart # Super Mario Kart Clone
#tuxpaint # Drawing for Children
#warzone2100 # Real-Time Strategy
#warsow # First-Person Shooter
#wesnoth # Fantasy Strategy
#ufoai # X-Com Clone
#xonotic # First-Person Shooter
#zdoom # Doom Clone
#zeroad # Ancient Warfare Strategy
# Todo:
#zero ballistics # ??
#the dark mod # ??
#########
# Gnome #
#########
adw-gtk3 # GTK3 libadwaita Theme ported to GTK-3
dconf # Gnome Configuration
gnome.gnome-tweaks # Gnome Customization Tool
##################
# Game Launchers #
##################
#heroic # GOG & Epic Games Launcher
# NOTE: Issues with authenticating, package out of date, using Flatpak
#itch # itch.io Games Launcher
#legendary-gl # Epic Games Launcher Alternative
#lutris # Issues with Origin installation,
# using Flatpak
#steam # Steam Game Launcher, using xxx
############
# Internet #
############
#betterbird # Email Client, No pkg,
# using flatpak
#brave # Thunderbird Fork, issues
# w/ BAT, using flatpak
librewolf # Firefox Web Browser Fork
#thunderbird # Email Client
#tigervnc # VNC Client
tor-browser-bundle-bin # Privacy Web Browser
#######
# KDE #
#######
#kate # Text Editor
#kde-gtk-config # KDE GTK Configuration
#libsForQt5.applet-window-buttons # KDE Applet
#libsForQt5.breeze-gtk # GTK Breeze Theming
#libsForQt5.breeze-qt5 # QT5 Breeze Theming
#libsForQt5.breeze-icons # Breeze Icons
#libsForQt5.filelight # Storage Usage Application
#libsForQt5.kaccounts-providers # KDE Accounts#libsForQt5.qtstyleplugin-kvantum # KDE Theming
#libsForQt5.kdecoration # KDE Theming
#libsForQt5.powerdevil # Power Manager
#libsForQt5.sddm # SDDM Libraries
#libsForQt5.sddm-kcm # SDDM Libraries
# Enable KDE Wallet PAM
#security.pam.services.zonsopkomst.enableKwallet = true;
#########
# Media #
#########
#ardour # DAW
#bibletime # Bible Study Tool
#blender # 3D Animation/Publishing
#calibre # eBook Library
#easytag # Music Tag Editor
#foliate # eBook Reader
#freetube # YouTube Front-End
#gimp # GNU Image Manipulation Program
#gpodder # Podcast Manager
#handbrake # Video Conversion Tool
#inkscape # Vector Graphics Editor
#libsForQt5.kolourpaint # Painting Application
#krita # Painting Application
#libsForQt5.k3b # Disk Burning Application
#gmic-qt-krita # Painting Application
#makemkv # Blu-Ray and DVD to MKV Converter
mpv # Media Player
#nuclear # Music Player,
# Package not updated
#obs-studio # Recording/Streaming Application
#libsForQt5.okular # Document Viewer
#smplayer # Media Player
#strawberry # Media Player
#tenacity # Sound Editor
#zotero # Research Sourcer
#hypnotix ?? # IPTV Streaming Application
##########
# Office #
##########
#gImageReader # Tesseract-OCR Front-End
#gnucash # Double Entry Accounting Software
# Gnucash requires dconf, see Gnome section above
#obsidian # Markdown Editor
#onlyoffice-bin # Office Suite
#pdfarranger # PDF Arranger
###############################
# Printers, Copiers, Scanners #
###############################
#hplip # HP Print Drivers
##########
# System #
##########
# alacritty # Terminal Emulator
appimage-run # Appimage Runner
bleachbit # PC Cleaner
#bottles # Wineprefix Manager
btop # Resource Monitor
cpu-x # PC Information
#crow-translate # Language Translator
#genymotion # NOTE: Issues with loading
git # Distributed Version Control System
#gsmartcontrol # Disk Health Inspection Tool
#htop # Process Viewer
#i2c-tools # Network Utilities
#inetutils # Network Utilities
#keepassxc # GUI Password Manager with Cryptography
#kitty # Terminal Emulator
#openrgb # RGB Manager
neofetch # System Information
#nix-software-center # Nix Software Center
#nox # Nix Tools
ntfs3g # FUSE Client
p7zip # File Archiver
papirus-icon-theme # Icons
powertop # Power Manager
#protonup # Proton Installer
#qemu_full # Virtual Machine
#solaar # Logitech Unifying Receiver
#speedcrunch # Calculator
#syncthing # File Synchronization
#syncthing-tray # Tray for Syncthing
tixati # Torrent Application
#tldr # Simplified man pages
#waydroid # Android Emulator
# Only works on wayland
#ventoy-bin # USB Boot App
veracrypt # Filesystem Encryption
#virtualbox # Virtual Machine
# Only needed with genymotion
vscodium # Code Editor
xorg.xkill # Kill Windows w/ Mouse
];
}

View File

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -23,4 +23,6 @@ nix-colors
sops-nix
impermanence
home-manager
deploy-rs
deploy-rs
https://github.com/swaywm/sway/wiki/Useful-add-ons-for-sway

2242
reference/kitty.conf Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
{ config, pkgs, ... }:
{
# Currently using to manage my config files on multiple systems
# See https://github.com/nix-community/home-manager for manual and configuration options
# 1) Remember to add unstable channel (in this case) in the terminal:
# sudo nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
# 2) sudo nix-channel --update
# 3) Include "<home-manager/nixos>" in "Imports" section above
home-manager.users.aspire = { pkgs, ... }: {
home.packages = with pkgs; [
# Begin packages and options
alacritty
];
# Need to enable home.stateVersion for it to work correctly:
home.stateVersion = "22.11";
# Begin configuration or script declarations
home.file = {
".config/alacritty/alacritty.yml".text = ''
{window: {opacity: 0.8}, font: {normal: {family: tamsyn, style: Regular}}}
'';
};
};
}