Compare commits

10 Commits

Author SHA1 Message Date
Wesley Irvin
b0f44ab39f Merge pull request 'Update 6-29-23' (#7) from update-6-29-23 into master
Reviewed-on: #7
2023-06-30 01:04:59 +00:00
Wesley Irvin
54c7367a06 Update 6-29-23
Updated to latest updates for nixpkgs and home-manager as of 6-29-23.
Also cleaned up the directory structure and moved some redundant data
to locations that make a lot more sense. E.g. we moved the hostname
definitions into the hardware configurations as there is other
networking configuration done there. I feel this is a much more
logical place to stick it. Also got rid of update directory as we
are now using flakes and not channels, so our updates are limited to
what our flake.lock is set to.
2023-06-29 20:59:07 -04:00
Wesley Irvin
c34f525eff Merge pull request 'Steiner Configuration' (#6) from steiner-flake into master
Reviewed-on: #6
2023-06-29 21:49:24 +00:00
Wesley Irvin
306fa556e2 Steiner Configuration
Ported over the configuration for steiner into the flake. Have
tested the deployment in a VM and am writing this commit from
the flake itself. Everything came up and this should be good to
pass issue #4 and move this to a Done status.
2023-06-29 17:44:33 -04:00
Wesley Irvin
28b22b9f33 Merge pull request 'flake' (#5) from flake into master
Reviewed-on: #5
2023-06-29 17:52:29 +00:00
Wesley Irvin
dd4835f520 Initial flake commit
Enough of an initial flake and layout for an initial commit.
2023-06-29 13:42:57 -04:00
Wesley Irvin
69122b6ad7 Ignore Hardware Configuration
Added in a .gitignore that adds in hardware-configuration.nix so
that we don't commit our hardware configurations and they can
stay unique per system.
2023-06-25 16:24:43 -04:00
Wesley Irvin
5338912d19 Merge pull request 'KeepassXC and Nextcloud' (#1) from nextcloud-keepass into master
Reviewed-on: #1
2023-06-18 20:13:18 +00:00
Wesley Irvin
86201c23b0 KeepassXC and Nextcloud
Patch to add KeepassXC and Nextcloud desktop to base config to
install for user wesley.
2023-06-18 16:10:45 -04:00
Wesley Irvin
e0011f16b6 Timeshift and tmux
Added in support for timeshift and added in cron services with
correct entry so that timeshift will take snapshots properly
on a schedule. Added in and configured tmux support. Was thinking
of using zellij but tmux just integrates so much nicer to nix.
2023-06-17 21:04:34 -04:00
8 changed files with 404 additions and 32 deletions

View File

@@ -5,17 +5,10 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
imports =
[
# Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "nixos-base"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary # Configure network proxy if necessary
@@ -43,10 +36,6 @@
LC_TIME = "en_US.UTF-8"; LC_TIME = "en_US.UTF-8";
}; };
# Enable automatic updates
system.autoUpgrade.enable = true;
system.autoUpgrade.allowReboot = true;
# Enable the X11 windowing system. # Enable the X11 windowing system.
services.xserver.enable = true; services.xserver.enable = true;
@@ -88,27 +77,6 @@
# to login make sure you set hashedPassword on users.users.<name> using mkpasswd. # to login make sure you set hashedPassword on users.users.<name> using mkpasswd.
users.mutableUsers = false; users.mutableUsers = false;
# Define a user account. Don't forget to set a password with 'passwd'.
users.users.wesley = {
isNormalUser = true;
description = "Wesley Irvin";
extraGroups = [ "networkmanager" "wheel" ];
shell = pkgs.zsh; # Set our default shell for our user to zsh
hashedPassword = "$y$j9T$PXPH.OUWrqDkhAQR03weh/$Ge5dooWNGvExpXtA2Wtqe01e6CIyVvrMZiKZM6Ufzd3";
packages = with pkgs; [
alacritty
bottom
brave
element-desktop
jamesdsp
neofetch
neovim
retroarchFull
rustup
spotify
];
};
# Allow unfree packages # Allow unfree packages
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
@@ -142,6 +110,14 @@
# Now add the zsh shell to /etc/shells so others can set their shell # Now add the zsh shell to /etc/shells so others can set their shell
environment.shells = with pkgs; [ zsh ]; environment.shells = with pkgs; [ zsh ];
# Enable tmux support and configure it to our usage
programs.tmux = {
enable = true;
keyMode = "vi";
shortcut = "a";
clock24 = true;
};
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are
# started in user sessions. # started in user sessions.
# programs.mtr.enable = true; # programs.mtr.enable = true;
@@ -152,6 +128,12 @@
# List services that you want to enable: # List services that you want to enable:
# Enable Vixie cron service
services.cron.enable = true;
services.cron.systemCronJobs = [
"0 * * * * root timeshift --check --scripted"
];
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
# services.openssh.enable = true; # services.openssh.enable = true;

49
flake.lock generated Normal file
View File

@@ -0,0 +1,49 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1687871164,
"narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-23.05",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1687829761,
"narHash": "sha256-QRe1Y8SS3M4GeC58F/6ajz6V0ZLUVWX3ZAMgov2N3/g=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9790f3242da2152d5aa1976e3e4b8b414f4dd206",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

42
flake.nix Normal file
View File

@@ -0,0 +1,42 @@
{
description = "Wesley's NixOS Configurations Flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
home-manager.url = "github:nix-community/home-manager/release-23.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, home-manager, ... }@inputs: {
nixosConfigurations = {
"nixos-bootstrap" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hardware/nixos-bootstrap.nix
./configs/desktop.nix
./users/wesley.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.wesley = import ./home/wesley.nix;
}
];
};
"steiner" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hardware/steiner.nix
./configs/desktop.nix
./users/wesley.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.wesley = import ./home/wesley-steiner.nix;
}
];
};
};
};
}

View File

@@ -0,0 +1,41 @@
# 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 + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{
device = "/dev/disk/by-uuid/544f57e2-71e0-433b-8afe-305610bb4a6b";
fsType = "ext4";
};
fileSystems."/boot" =
{
device = "/dev/disk/by-uuid/DE9E-321B";
fsType = "vfat";
};
swapDevices = [ ];
# 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.enp1s0.useDHCP = lib.mkDefault true;
networking.hostName = "nixos-bootstrap"; # Define your hostname.
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

53
hardware/steiner.nix Normal file
View File

@@ -0,0 +1,53 @@
# 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" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{
device = "/dev/disk/by-uuid/e6e56cd8-a5ee-45d6-bc88-0edc03bfc004";
fsType = "btrfs";
options = [ "subvol=@" ];
};
fileSystems."/boot" =
{
device = "/dev/disk/by-uuid/8357-3C1B";
fsType = "vfat";
};
fileSystems."/home" =
{
device = "/dev/disk/by-uuid/e6e56cd8-a5ee-45d6-bc88-0edc03bfc004";
fsType = "btrfs";
options = [ "subvol=@home" ];
};
swapDevices =
[{ device = "/dev/disk/by-uuid/fb41410e-80cd-427b-8040-e9acb57b3ce5"; }];
# 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.enp0s31f6.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
networking.hostName = "steiner"; # Define your hostname.
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

180
home/wesley-steiner.nix Normal file
View File

@@ -0,0 +1,180 @@
{ config, pkgs, ... }:
{
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "wesley";
home.homeDirectory = "/home/wesley";
# 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 should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "23.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = [
# # Adds the 'hello' command to your environment. It prints a friendly
# # "Hello, world!" when run.
# pkgs.hello
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# You can also manage environment variables but you will have to manually
# source
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/wesley/etc/profile.d/hm-session-vars.sh
#
# if you don't want to manage your shell through Home Manager.
home.sessionVariables = {
EDITOR = "nvim";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# Let home manager take over and manage our zsh install
programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableSyntaxHighlighting = true;
shellAliases = {
btm = "btm --color=nord";
};
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
theme = "eastwood";
};
initExtra = ''
neofetch
'';
};
# Let Home Manager install and manage starship
programs.starship = {
enable = true;
enableZshIntegration = true;
};
# Let Home Manager take over and manage git
programs.git = {
enable = true;
userName = "Wesley Irvin";
userEmail = "wesley.irvin@gmail.com";
};
# Let Home Manager take over and manage alacritty
programs.alacritty = {
enable = true;
settings = {
window.dimensions = {
columns = 115;
lines = 30;
};
window.opacity = 0.95;
### BEGIN THEME ###
### Nord ###
# Copyright (c) 2016-present Sven Greb <development@svengreb.de>
# This source code is licensed under the MIT license found in the license file.
colors = {
primary = {
background = "#2e3440";
foreground = "#d8dee9";
dim_foreground = "#a5abb6";
};
cursor = {
text = "#2e3440";
cursor = "#d8dee9";
};
vi_mode_cursor = {
text = "#2e3440";
cursor = "#d8dee9";
};
selection = {
text = "CellForeground";
background = "#4c566a";
};
search = {
matches = {
foreground = "CellBackground";
background = "#4c566a";
};
footer_bar = {
background = "#434c5e";
foreground = "#d8dee9";
};
};
normal = {
black = "#3b4252";
red = "#bf616a";
green = "#a3be8c";
yellow = "#ebcb8b";
blue = "#81a1c1";
magenta = "#b48ead";
cyan = "#88c0d0";
white = "#e5e9f0";
};
bright = {
black = "#4c566a";
red = "#bf616a";
green = "#a3be8c";
yellow = "#ebdb8b";
blue = "#81a1c1";
magenta = "#b48ead";
cyan = "#8fbcbb";
white = "#eceff4";
};
dim = {
black = "#373e4d";
red = "#94545d";
green = "#809575";
yellow = "#b29e75";
blue = "#68809a";
magenta = "#8c739c";
cyan = "#6d96a5";
white = "#aeb3bb";
};
};
### END THEME ###
};
};
}

25
users/wesley.nix Normal file
View File

@@ -0,0 +1,25 @@
{ config, pkgs, ... }:
{
users.users.wesley = {
isNormalUser = true;
description = "Wesley Irvin";
extraGroups = [ "networkmanager" "wheel" ];
shell = pkgs.zsh; # Set our default shell for our user to zsh
hashedPassword = "$y$j9T$PXPH.OUWrqDkhAQR03weh/$Ge5dooWNGvExpXtA2Wtqe01e6CIyVvrMZiKZM6Ufzd3";
packages = with pkgs; [
alacritty
bottom
brave
element-desktop
jamesdsp
keepassxc
neofetch
neovim
nextcloud-client
retroarchFull
rustup
spotify
];
};
}