First pass at crazy
This commit is contained in:
parent
9de7773af9
commit
59c97c9143
20 changed files with 437 additions and 182 deletions
|
|
@ -1,95 +0,0 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
# Use latest kernel.
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
boot.kernelModules = [ "amdgpu" ];
|
||||
|
||||
networking.hostName = "crow"; # Define your hostname.
|
||||
|
||||
# Configure network connections interactively with nmcli or nmtui.
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/New_York";
|
||||
|
||||
users.defaultUserShell = pkgs.zsh;
|
||||
|
||||
users.users.nest = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "wheel" "network" ]; # Enable ‘sudo’ for the user.
|
||||
|
||||
packages = with pkgs; [
|
||||
tree
|
||||
];
|
||||
};
|
||||
|
||||
programs.niri.enable = true;
|
||||
programs.zsh.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
neovim
|
||||
wget
|
||||
];
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh.enable = true;
|
||||
|
||||
# Enable sound.
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
services.libinput.enable = true;
|
||||
|
||||
services.getty.autologinUser = "nest";
|
||||
|
||||
services.displayManager = {
|
||||
gdm.enable = true;
|
||||
autoLogin = {
|
||||
enable = true;
|
||||
user = "nest";
|
||||
};
|
||||
};
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||
#
|
||||
# Most users should NEVER change this value after the initial install, for any reason,
|
||||
# even if you've upgraded your system to a new NixOS release.
|
||||
#
|
||||
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||
# to actually do that.
|
||||
#
|
||||
# This value being lower than the current NixOS release does NOT mean your system is
|
||||
# out of date, out of support, or vulnerable.
|
||||
#
|
||||
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||
# and migrated your data accordingly.
|
||||
#
|
||||
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||
system.stateVersion = "25.11"; # Did you read the comment?
|
||||
}
|
||||
|
||||
81
flake.nix
81
flake.nix
|
|
@ -10,21 +10,72 @@
|
|||
};
|
||||
};
|
||||
|
||||
outputs = inputs@{ nixpkgs, home-manager, ... }: {
|
||||
nixosConfigurations.crow = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
./configuration.nix
|
||||
outputs = { self, nixpkgs, ... }@inputs:
|
||||
let
|
||||
inherit (self) outputs;
|
||||
|
||||
home-manager.nixosModules.home-manager {
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users.nest = import ./home.nix;
|
||||
backupFileExtension = "backup";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
# Set the default user. Can be overitten on a system level
|
||||
vars.user = "nest";
|
||||
|
||||
# List of system types our hosts use
|
||||
systems = [ "x86_64-linux" ];
|
||||
|
||||
# Generic NixOS config
|
||||
mkNixOSConfig = {
|
||||
path,
|
||||
extraModules ? [],
|
||||
}:
|
||||
nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs outputs vars;
|
||||
};
|
||||
|
||||
modules = [
|
||||
./nixos/common
|
||||
path
|
||||
]
|
||||
++ extraModules;
|
||||
};
|
||||
|
||||
# Additional modules for physical hosts
|
||||
mkPhysicalNixOSConfig = path:
|
||||
mkNixOSConfig {
|
||||
path = path;
|
||||
extraModules = [ ./hosts/physical ];
|
||||
};
|
||||
|
||||
# Additional modules for servers
|
||||
# mkServerNixOSConfig = path: serverType:
|
||||
# mkNixOSConfig {
|
||||
# path = path;
|
||||
# extraModules = [
|
||||
# ./hosts/server
|
||||
# ./nixos/roles/server/${serverType}
|
||||
# ./nixos/modules/backup
|
||||
# ];
|
||||
# };
|
||||
in {
|
||||
# Format our nix files using alejandra
|
||||
formatter = nixpkgs.lib.genAttrs systems (system: nixpkgs.legacyPackages.${system}.alejandra);
|
||||
|
||||
# Collection of all of our configs
|
||||
# =========== Desktops ===========
|
||||
crow = mkPhysicalNixOSConfig ./hosts/physical/crow;
|
||||
|
||||
# nixosConfigurations.crow = nixpkgs.lib.nixosSystem {
|
||||
# system = "x86_64-linux";
|
||||
# modules = [
|
||||
# ./configuration.nix
|
||||
|
||||
# home-manager.nixosModules.home-manager {
|
||||
# home-manager = {
|
||||
# useGlobalPkgs = true;
|
||||
# useUserPackages = true;
|
||||
# users.nest = import ./home.nix;
|
||||
# backupFileExtension = "backup";
|
||||
# };
|
||||
# }
|
||||
# ];
|
||||
# };
|
||||
};
|
||||
}
|
||||
|
|
|
|||
25
home-manager/common/default.nix
Normal file
25
home-manager/common/default.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
vars,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
home = {
|
||||
username = "${vars.user}";
|
||||
homeDirectory = "/home/${vars.user}";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
lazygit
|
||||
];
|
||||
|
||||
programs.zsh = {
|
||||
shellAliases = {
|
||||
lg = "lazygit";
|
||||
};
|
||||
};
|
||||
|
||||
home.stateVersion = "26.05";
|
||||
}
|
||||
6
home-manager/roles/desktop/common/apps/default.nix
Normal file
6
home-manager/roles/desktop/common/apps/default.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./librewolf.nix
|
||||
./minecraft.nix
|
||||
];
|
||||
}
|
||||
80
home-manager/roles/desktop/common/apps/librewolf.nix
Normal file
80
home-manager/roles/desktop/common/apps/librewolf.nix
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
{ pkgs, vars, ... }:
|
||||
|
||||
|
||||
{
|
||||
programs.librewolf = {
|
||||
enable = true;
|
||||
policies = {
|
||||
OfferToSaveLogins = false;
|
||||
PasswordManagerEnabled = false;
|
||||
DisplayBookmarksToolbar = true;
|
||||
NoDefaultBookmarks = true;
|
||||
};
|
||||
|
||||
profiles."${vars.user}" = {
|
||||
search = {
|
||||
force = true;
|
||||
engines = {
|
||||
"Nix Packages" = {
|
||||
urls = [
|
||||
{
|
||||
template = "https://search.nixos.org/packages?channel=unstable";
|
||||
params = [
|
||||
{
|
||||
name = "type";
|
||||
value = "packages";
|
||||
}
|
||||
{
|
||||
name = "query";
|
||||
value = "{searchTerms}";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = ["@np"];
|
||||
};
|
||||
"Nix Options" = {
|
||||
urls = [
|
||||
{
|
||||
template = "https://search.nixos.org/options?channel=unstable";
|
||||
params = [
|
||||
{
|
||||
name = "sort";
|
||||
value = "alpha_asc";
|
||||
}
|
||||
{
|
||||
name = "query";
|
||||
value = "{searchTerms}";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = ["@no"];
|
||||
};
|
||||
"NixOS Wiki" = {
|
||||
urls = [
|
||||
{
|
||||
template = "https://wiki.nixos.org/w/index.php?search={searchTerms}";
|
||||
}
|
||||
];
|
||||
icon = "https://nixos.wiki/favicon.png";
|
||||
updateInterval = 24 * 60 * 60 * 1000;
|
||||
definedAliases = ["@nw"];
|
||||
};
|
||||
"Home Manager Options" = {
|
||||
urls = [{template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=master";}];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = ["@hm"];
|
||||
};
|
||||
"wikipedia".metaData.alias = "@wiki";
|
||||
"google".metaData.hidden = true;
|
||||
"amazondotcom-us".metaData.hidden = true;
|
||||
"bing".metaData.hidden = true;
|
||||
"ebay".metaData.hidden = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
7
home-manager/roles/desktop/common/apps/minecraft.nix
Normal file
7
home-manager/roles/desktop/common/apps/minecraft.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
prismlauncher
|
||||
];
|
||||
}
|
||||
10
home-manager/roles/desktop/common/default.nix
Normal file
10
home-manager/roles/desktop/common/default.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
imports = [
|
||||
./apps
|
||||
];
|
||||
|
||||
# Setup user profile pic
|
||||
home.file.".face" = {
|
||||
source = ./nest.webp;
|
||||
};
|
||||
}
|
||||
BIN
home-manager/roles/desktop/common/nest.webp
Normal file
BIN
home-manager/roles/desktop/common/nest.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
22
home-manager/roles/desktop/niri/default.nix
Normal file
22
home-manager/roles/desktop/niri/default.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../common/apps
|
||||
];
|
||||
|
||||
programs.niri.enable = true;
|
||||
|
||||
programs.zsh = {
|
||||
profileExtra = ''
|
||||
if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then
|
||||
exec gdm
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
home.package = with pkgs; [
|
||||
swaybg
|
||||
mako
|
||||
];
|
||||
}
|
||||
15
home-manager/roles/personal/default.nix
Normal file
15
home-manager/roles/personal/default.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "KnightArtorias";
|
||||
userEmail = "booksandpi@gmail.com";
|
||||
extraConfig = {
|
||||
init.defaultBranch = "main";
|
||||
};
|
||||
};
|
||||
}
|
||||
72
home.nix
72
home.nix
|
|
@ -1,72 +0,0 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# ============ Home-Manager =============
|
||||
|
||||
home.username = "nest";
|
||||
home.homeDirectory = "/home/nest";
|
||||
|
||||
home.stateVersion = "26.05";
|
||||
|
||||
# =======================================
|
||||
|
||||
# ================ Programs =============
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
settings = {
|
||||
user = {
|
||||
name = "nest";
|
||||
email = "booksandpi@gmail.com";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
autosuggestion.enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
history.size = 10000;
|
||||
|
||||
shellAliases = {
|
||||
ll = "ls -la";
|
||||
update = "sudo nixos-rebuild --flake $HOME/.nix#crow";
|
||||
};
|
||||
|
||||
profileExtra = ''
|
||||
if [-z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then
|
||||
exec gdm
|
||||
fi
|
||||
'';
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
plugins = [ "git" ];
|
||||
};
|
||||
};
|
||||
|
||||
programs.alacritty.enable = true;
|
||||
programs.rofi.enable = true;
|
||||
programs.swaylock.enable = true;
|
||||
programs.quickshell.enable = true;
|
||||
programs.librewolf.enable = true;
|
||||
|
||||
# ======================================
|
||||
|
||||
# ============== Services ==============
|
||||
|
||||
services.swayidle.enable = true;
|
||||
services.polkit-gnome.enable = true;
|
||||
|
||||
# ======================================
|
||||
|
||||
# ============ Packages ================
|
||||
|
||||
home.packages = with pkgs; [
|
||||
swaybg
|
||||
mako
|
||||
];
|
||||
|
||||
# ======================================
|
||||
}
|
||||
25
hosts/physical/crow/default.nix
Normal file
25
hosts/physical/crow/default.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
vars,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
./system-configuration.nix
|
||||
../default.nix
|
||||
|
||||
../../../nixos/roles/physical/desktop/niri
|
||||
];
|
||||
|
||||
home-manager = {
|
||||
users.${vars.user}.imports = [
|
||||
../../../home-manager/common
|
||||
../../../home-manager/roles/personal
|
||||
../../../home-manager/roles/desktop/niri
|
||||
];
|
||||
};
|
||||
|
||||
networking.hostName = "crow";
|
||||
}
|
||||
15
hosts/physical/crow/system-configuration.nix
Normal file
15
hosts/physical/crow/system-configuration.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.loader.timeout = 1;
|
||||
|
||||
# Use latest kernel
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
boot.kernelModules = [ "amdgpu" ];
|
||||
|
||||
system.stateVersion = "26.05";
|
||||
}
|
||||
|
||||
56
hosts/physical/default.nix
Normal file
56
hosts/physical/default.nix
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
vars,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
../../nixos/modules/home-manager.nix
|
||||
];
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
neovim
|
||||
wget
|
||||
];
|
||||
|
||||
services.openssh.enable = true;
|
||||
services.getty.autologinUser = "${vars.user}";
|
||||
|
||||
boot = {
|
||||
# Fun boot spinny!
|
||||
plymouth = {
|
||||
enable = true;
|
||||
theme = "circle_flow";
|
||||
themePackages = with pkgs; [
|
||||
(adi1090x-plymouth-themese.override {
|
||||
selected_themes = [
|
||||
"cirlce_flow"
|
||||
"colorful"
|
||||
"colorful_slices"
|
||||
"double"
|
||||
"polaroid"
|
||||
];
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
# "Silent" boot
|
||||
console.LogLevel = 0;
|
||||
initrd.verbose = false;
|
||||
kernelParams = [
|
||||
"quiet"
|
||||
"splash"
|
||||
"boot.shell_on_fail"
|
||||
"loglevel=3"
|
||||
"rd.systemd.show_status=false"
|
||||
"rd.udev.log_level=3"
|
||||
"udev.log_priority=3"
|
||||
];
|
||||
};
|
||||
}
|
||||
23
nixos/common/default.nix
Normal file
23
nixos/common/default.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
vars,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports= [
|
||||
../../users/${vars.user}.nix
|
||||
../modules/zsh.nix
|
||||
];
|
||||
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
|
||||
enviroment.systemPackages = with pkgs; [
|
||||
tree
|
||||
htop
|
||||
dig
|
||||
traceroute
|
||||
];
|
||||
}
|
||||
|
||||
22
nixos/modules/home-manager.nix
Normal file
22
nixos/modules/home-manager.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
inputs,
|
||||
vars,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
home-manager = {
|
||||
backupFileExtension = "backup";
|
||||
extraSpecialArgs = {
|
||||
inherit inputs vars;
|
||||
};
|
||||
|
||||
useGlobalPackages = true;
|
||||
useUserPackages = true;
|
||||
|
||||
# Common home-manager imports
|
||||
users.${vars.user}.imports = [
|
||||
../../home-manager/common
|
||||
];
|
||||
};
|
||||
}
|
||||
40
nixos/modules/zsh.nix
Normal file
40
nixos/modules/zsh.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
pgks,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
environment.systemPackage = with pkgs; [
|
||||
zsh
|
||||
oh-my-zsh
|
||||
];
|
||||
|
||||
enviroment.variables = {
|
||||
NIX_FLAKE_PATH = "/etc/nixos";
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableBashCompletion = true;
|
||||
enableConpletion = true;
|
||||
autosuggestions.enable = true;
|
||||
history.append = true;
|
||||
history.size = 10000;
|
||||
|
||||
ohMyZsh = {
|
||||
enable = true;
|
||||
theme = "bira";
|
||||
plugins = [
|
||||
sudo
|
||||
git
|
||||
];
|
||||
};
|
||||
|
||||
shellAliases = {
|
||||
ll = "ls -la";
|
||||
update = "sudo nixos-rebuild switch --flake $NIX_FLAKE_PATH";
|
||||
};
|
||||
};
|
||||
|
||||
users.defaultUserShell = pkgs.zsh;
|
||||
}
|
||||
11
nixos/roles/physical/desktop/niri/default.nix
Normal file
11
nixos/roles/physical/desktop/niri/default.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{ vars, pkgs, ... }: {
|
||||
security.polkit.enable = true;
|
||||
|
||||
services.displayManager = {
|
||||
gdm.enable = true;
|
||||
autoLogin = {
|
||||
enable = true;
|
||||
user = "${vars.user}";
|
||||
};
|
||||
};
|
||||
}
|
||||
14
users/nest.nix
Normal file
14
users/nest.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
users.users.nest = {
|
||||
description = "nest";
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "wheel" "network" ];
|
||||
};
|
||||
}
|
||||
|
||||
Loading…
Add table
Reference in a new issue