Merge Dev with main #21
28 changed files with 80 additions and 1010 deletions
|
|
@ -1,152 +0,0 @@
|
||||||
{ config, pkgs, host, lib, inputs, userconf, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
# Load user-specific variables
|
|
||||||
userVars = import ./variables/user-vars.nix;
|
|
||||||
inherit (userVars) username gitUsername gitEmail keyboardLayout;
|
|
||||||
nixDirectory = "/home/${username}/NixOS";
|
|
||||||
in {
|
|
||||||
################################################################
|
|
||||||
# Module Imports
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
# Host-specific hardware configuration (autogenerated)
|
|
||||||
./hardware-configuration.nix
|
|
||||||
|
|
||||||
# System-level user definition
|
|
||||||
./user.nix
|
|
||||||
|
|
||||||
# Base and global modules
|
|
||||||
../../../Modules/System
|
|
||||||
|
|
||||||
# Home Manager integration
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
|
|
||||||
# nixos95
|
|
||||||
inputs.self.nixosModules.nixos95
|
|
||||||
|
|
||||||
];
|
|
||||||
################################################################
|
|
||||||
# Display & Desktop Environment
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
nixos95 = {
|
|
||||||
enable = true;
|
|
||||||
user = username;
|
|
||||||
|
|
||||||
taskbar = {
|
|
||||||
homeIcon = "whisker-menu-button";
|
|
||||||
battery-plugin.enable = false;
|
|
||||||
applications = [
|
|
||||||
{
|
|
||||||
name = "Brave";
|
|
||||||
description = "Browse the Web";
|
|
||||||
pkg = pkgs.brave;
|
|
||||||
icon = "world";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Signal";
|
|
||||||
description = "Private Messenger";
|
|
||||||
pkg = pkgs.signal-desktop;
|
|
||||||
icon = "signal";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Obsidian";
|
|
||||||
description = "Markdown Editor";
|
|
||||||
exe = "obsidian %u";
|
|
||||||
icon = "obsidian";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Spotify";
|
|
||||||
description = "Spotify Music";
|
|
||||||
exe = "spotify %U";
|
|
||||||
icon = "spotify";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
keybinds = {
|
|
||||||
commands = [
|
|
||||||
{ key="<Super>l"; exe="xflock4"; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
################################################################
|
|
||||||
# System Packages (XFCE & Utilities)
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
|
|
||||||
# Optional Extras
|
|
||||||
xfce.gigolo
|
|
||||||
xfce.xfce4-screenshooter
|
|
||||||
xfce.parole
|
|
||||||
# xfce.xfce4-clipman
|
|
||||||
|
|
||||||
# other:
|
|
||||||
zsh
|
|
||||||
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
|
||||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
|
||||||
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
|
||||||
};
|
|
||||||
|
|
||||||
services.openssh.enable = true;
|
|
||||||
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
ohMyZsh = {
|
|
||||||
enable = true;
|
|
||||||
theme = "xiong-chiamiov-plus";
|
|
||||||
plugins = ["git"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
################################################################
|
|
||||||
# Home Manager Configuration
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
backupFileExtension = "delme-HMbackup";
|
|
||||||
|
|
||||||
users.${username} = import ./home/home.nix {
|
|
||||||
inherit config nixDirectory pkgs;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
################################################################
|
|
||||||
# Bootloader
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
boot.loader = {
|
|
||||||
grub = {
|
|
||||||
enable = true;
|
|
||||||
efiSupport = false;
|
|
||||||
useOSProber = false;
|
|
||||||
devices = ["nodev"];
|
|
||||||
};
|
|
||||||
systemd-boot.enable = false;
|
|
||||||
efi.canTouchEfiVariables = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
################################################################
|
|
||||||
# System Version
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
}
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
|
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
abort ''
|
|
||||||
This file is a placeholder and should not be edited manually.
|
|
||||||
|
|
||||||
Please run:
|
|
||||||
nixos-generate-config
|
|
||||||
|
|
||||||
to regenerate the correct hardware configuration.
|
|
||||||
|
|
||||||
This file was intentionally disabled to prevent accidental editing.
|
|
||||||
'';
|
|
||||||
|
|
||||||
imports =
|
|
||||||
[ (modulesPath + "/profiles/qemu-guest.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.125312 = [ "ah124123ci" "xhci_pci" "¹3¹32134" "2143432" "12441234" ];
|
|
||||||
boot.initrd.14231 = [ ];
|
|
||||||
boot.124 = [ "124-124214" ];
|
|
||||||
boot.1241324134 = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" =
|
|
||||||
{ device = "/dev/disk/by-uuid/9b55ed5e-1-443f-a5e8-1fb378fdad77";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ 1241324134124214];
|
|
||||||
|
|
||||||
# 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 1324414124444444444444444444444444444444444;
|
|
||||||
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
}
|
|
||||||
|
|
@ -1,169 +0,0 @@
|
||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
# Your application definitions
|
|
||||||
apps = {
|
|
||||||
brave = {
|
|
||||||
name = "Brave";
|
|
||||||
genericName = "Web Browser";
|
|
||||||
exec = "brave";
|
|
||||||
icon = "world";
|
|
||||||
comment = "Browse the Web";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Network" "WebBrowser" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
terminal = {
|
|
||||||
name = "Terminal";
|
|
||||||
exec = "xfce4-terminal";
|
|
||||||
icon = "utilities-terminal";
|
|
||||||
comment = "Run a terminal emulator";
|
|
||||||
terminal = true;
|
|
||||||
categories = [ "System" "Utility" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
libre-calc = {
|
|
||||||
name = "Libre Calc";
|
|
||||||
exec = "libreoffice --calc";
|
|
||||||
icon = "libreoffice-calc";
|
|
||||||
comment = "Spreadsheet program";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Office" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
libre-write = {
|
|
||||||
name = "Libre Write";
|
|
||||||
exec = "libreoffice --writer";
|
|
||||||
icon = "libreoffice-writer";
|
|
||||||
comment = "Word processor";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Office" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
mpv = {
|
|
||||||
name = "MPV";
|
|
||||||
exec = "mpv";
|
|
||||||
icon = "mpv";
|
|
||||||
comment = "Video Player";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "AudioVideo" "Player" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
obsidian = {
|
|
||||||
name = "Obsidian";
|
|
||||||
exec = "obsidian %u";
|
|
||||||
icon = "obsidian";
|
|
||||||
comment = "Markdown Editor";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Office" "Utility" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
gwenview = {
|
|
||||||
name = "Gwenview";
|
|
||||||
exec = "gwenview %U";
|
|
||||||
icon = "gwenview";
|
|
||||||
comment = "Image Viewer";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Graphics" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
krita = {
|
|
||||||
name = "Krita";
|
|
||||||
exec = "krita %F";
|
|
||||||
icon = "krita";
|
|
||||||
comment = "Digital painting";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Graphics" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
prism-launcher = {
|
|
||||||
name = "Prism Launcher";
|
|
||||||
exec = "prismlauncher %U";
|
|
||||||
icon = "minecraft";
|
|
||||||
comment = "Minecraft Launcher";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Game" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
protonvpn = {
|
|
||||||
name = "ProtonVPN";
|
|
||||||
exec = "protonvpn-app";
|
|
||||||
icon = "protonvpn";
|
|
||||||
comment = "VPN Client";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Network" "Security" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
signal = {
|
|
||||||
name = "Signal";
|
|
||||||
exec = "signal-desktop %U";
|
|
||||||
icon = "signal-desktop";
|
|
||||||
comment = "Private Messenger";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Network" "InstantMessaging" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
vesktop = {
|
|
||||||
name = "Vesktop";
|
|
||||||
exec = "vesktop %U";
|
|
||||||
icon = "discord";
|
|
||||||
comment = "Discord Client";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Network" "Chat" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
spotify = {
|
|
||||||
name = "Spotify";
|
|
||||||
exec = "spotify %U";
|
|
||||||
icon = "spotify";
|
|
||||||
comment = "Spotify Music";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "AudioVideo" "Player" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
okular = {
|
|
||||||
name = "Okular";
|
|
||||||
exec = "okular %U";
|
|
||||||
icon = "okular";
|
|
||||||
comment = "PDF Viewer";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Office" "Viewer" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
steam = {
|
|
||||||
name = "Steam";
|
|
||||||
exec = "steam";
|
|
||||||
icon = "steam";
|
|
||||||
comment = "Steam Game Platform";
|
|
||||||
terminal = false;
|
|
||||||
categories = [ "Game" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
in {
|
|
||||||
home.activation.desktopFiles = lib.hm.dag.entryAfter [ "writeBoundary" ] (
|
|
||||||
''
|
|
||||||
mkdir -p "$HOME/Desktop"
|
|
||||||
'' + (lib.concatStringsSep "\n" (lib.mapAttrsToList (name: data:
|
|
||||||
let
|
|
||||||
desktopText = ''
|
|
||||||
[Desktop Entry]
|
|
||||||
Version=1.0
|
|
||||||
Type=Application
|
|
||||||
Name=${data.name}
|
|
||||||
${lib.optionalString (data ? genericName) "GenericName=${data.genericName}"}
|
|
||||||
Comment=${data.comment}
|
|
||||||
Exec=${data.exec}
|
|
||||||
Icon=${data.icon}
|
|
||||||
Terminal=${if data.terminal then "true" else "false"}
|
|
||||||
Categories=${lib.concatStringsSep ";" data.categories};
|
|
||||||
'';
|
|
||||||
in ''
|
|
||||||
cat > "$HOME/Desktop/${name}.desktop" <<EOF
|
|
||||||
${desktopText}
|
|
||||||
EOF
|
|
||||||
chmod +x "$HOME/Desktop/${name}.desktop"
|
|
||||||
''
|
|
||||||
) apps))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,114 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
nixDirectory,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
# Import user-specific variables
|
|
||||||
userVars = import ../variables/user-vars.nix;
|
|
||||||
inherit (userVars) username gitUsername gitEmail;
|
|
||||||
in {
|
|
||||||
################################################################
|
|
||||||
# Basic Home Manager Setup
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
home.username = username;
|
|
||||||
home.homeDirectory = "/home/${username}";
|
|
||||||
home.stateVersion = "25.05";
|
|
||||||
|
|
||||||
################################################################
|
|
||||||
# Module Imports
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
# All Home Manager Modules
|
|
||||||
../../../../Modules/Applications
|
|
||||||
|
|
||||||
# Desktop applications
|
|
||||||
./desktop.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
################################################################
|
|
||||||
# Nyx Tools Configuration
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
#imports = [
|
|
||||||
# # Nyx Tools
|
|
||||||
# # ../../../../Misc/Nyx-Tools/nyx.nix
|
|
||||||
#];
|
|
||||||
|
|
||||||
# Optional but really cool so if you wanna use it:
|
|
||||||
# https://github.com/Peritia-System/Nyx-Tools
|
|
||||||
|
|
||||||
#modules.nyx-rebuild = {
|
|
||||||
# enable = true;
|
|
||||||
# inherit username nixDirectory;
|
|
||||||
# editor = "nvim";
|
|
||||||
# formatter = "alejandra";
|
|
||||||
# enableAlias = false;
|
|
||||||
# autoPush = false;
|
|
||||||
# enableFormatting = false;
|
|
||||||
# startEditor = false;
|
|
||||||
#};
|
|
||||||
|
|
||||||
#modules.nyx-cleanup = {
|
|
||||||
# enable = true;
|
|
||||||
# inherit username nixDirectory;
|
|
||||||
# autoPush = false;
|
|
||||||
# keepGenerations = 5;
|
|
||||||
# enableAlias = false;
|
|
||||||
#};
|
|
||||||
|
|
||||||
#modules.nix-tool = {
|
|
||||||
# enable = true;
|
|
||||||
# inherit nixDirectory;
|
|
||||||
#};
|
|
||||||
|
|
||||||
################################################################
|
|
||||||
# Package Selection
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
home.packages = import ./user-packages.nix {inherit pkgs;};
|
|
||||||
|
|
||||||
################################################################
|
|
||||||
# Feature Modules
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
# App groups
|
|
||||||
standardApps.enable = true;
|
|
||||||
officeApps.enable = true;
|
|
||||||
|
|
||||||
# Individual applications
|
|
||||||
brave-and-extension.enable = true;
|
|
||||||
vscodium-and-extension.enable = true;
|
|
||||||
vesktop.enable = true;
|
|
||||||
krita.enable = true;
|
|
||||||
signal.enable = true;
|
|
||||||
spotify.enable = true;
|
|
||||||
obsidian.enable = true;
|
|
||||||
protonvpn.enable = true;
|
|
||||||
|
|
||||||
# Gaming:
|
|
||||||
prismlauncher.enable = true;
|
|
||||||
|
|
||||||
|
|
||||||
cliTools.enable = true;
|
|
||||||
|
|
||||||
################################################################
|
|
||||||
# Git Configuration
|
|
||||||
################################################################
|
|
||||||
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
userName = gitUsername;
|
|
||||||
userEmail = gitEmail;
|
|
||||||
|
|
||||||
aliases = {
|
|
||||||
co = "checkout";
|
|
||||||
ci = "commit";
|
|
||||||
st = "status";
|
|
||||||
br = "branch";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
# ./user-packages.nix
|
|
||||||
{pkgs}:
|
|
||||||
with pkgs; [
|
|
||||||
mpv
|
|
||||||
vlc
|
|
||||||
]
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
vars = import ./variables/user-vars.nix;
|
|
||||||
username = vars.username;
|
|
||||||
gitUsername = vars.gitUsername;
|
|
||||||
in {
|
|
||||||
users.mutableUsers = true;
|
|
||||||
|
|
||||||
# Main user
|
|
||||||
users.users.${username} = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = gitUsername;
|
|
||||||
createHome = true;
|
|
||||||
home = "/home/${username}";
|
|
||||||
shell = pkgs.zsh;
|
|
||||||
group = "users";
|
|
||||||
extraGroups = [
|
|
||||||
"wheel"
|
|
||||||
"networkmanager"
|
|
||||||
"libvirtd"
|
|
||||||
"scanner"
|
|
||||||
"lp"
|
|
||||||
"video"
|
|
||||||
"input"
|
|
||||||
"audio"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
system = "x86_64-linux"; # Can also be aarch64-linux, etc.
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
# ./User/variables.nix
|
|
||||||
let
|
|
||||||
username = "user";
|
|
||||||
in {
|
|
||||||
inherit username;
|
|
||||||
gitUsername = "user-name-here";
|
|
||||||
gitEmail = "user@user-email.here";
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.brave-and-extension;
|
|
||||||
in {
|
|
||||||
options.brave-and-extension.enable = mkEnableOption "Enable Brave with extensions and flags";
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.brave = {
|
|
||||||
package = pkgs.brave;
|
|
||||||
enable = true;
|
|
||||||
extensions = [
|
|
||||||
{id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";} # uBlock Origin
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
commandLineArgs = [
|
|
||||||
"--disable-features=AutofillSavePaymentMethods"
|
|
||||||
"--disable-features=PasswordManagerOnboarding"
|
|
||||||
"--disable-features=AutofillEnableAccountWalletStorage"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.krita;
|
|
||||||
in {
|
|
||||||
options.krita.enable = mkEnableOption "Enable krita";
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
pkgs.krita
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
options.obsidian.enable = mkEnableOption "Enable Obsidian installation";
|
|
||||||
|
|
||||||
config = mkIf config.obsidian.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
obsidian
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config;
|
|
||||||
|
|
||||||
officeApps = with pkgs; [
|
|
||||||
libreoffice
|
|
||||||
thunderbird
|
|
||||||
];
|
|
||||||
in {
|
|
||||||
options.officeApps.enable = mkEnableOption ''
|
|
||||||
Enable office/document applications (e.g., LibreOffice, Thunderbird)
|
|
||||||
'';
|
|
||||||
|
|
||||||
config = {
|
|
||||||
home.packages =
|
|
||||||
optionals cfg.officeApps.enable officeApps;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.signal;
|
|
||||||
in {
|
|
||||||
options.signal.enable = mkEnableOption "Enable Signals Desktop Version";
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
pkgs.signal-desktop
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
options.spotify.enable = mkEnableOption "Enable Spotify installation";
|
|
||||||
|
|
||||||
config = mkIf config.spotify.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
spotify
|
|
||||||
cava
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config;
|
|
||||||
|
|
||||||
standardApps = with pkgs; [
|
|
||||||
kdePackages.gwenview
|
|
||||||
kdePackages.okular
|
|
||||||
];
|
|
||||||
in {
|
|
||||||
options.standardApps.enable = mkEnableOption ''
|
|
||||||
Enable image and graphics applications (e.g., Gwenview, Okular)
|
|
||||||
'';
|
|
||||||
|
|
||||||
config = {
|
|
||||||
home.packages = optionals cfg.standardApps.enable standardApps;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.vesktop;
|
|
||||||
in {
|
|
||||||
options.vesktop.enable = mkEnableOption "Enable Vesktop, the Custom Discord client, with extensions";
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
pkgs.vesktop
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.vscodium-and-extension;
|
|
||||||
in {
|
|
||||||
options.vscodium-and-extension.enable = mkEnableOption "Enable VScodium with extensions";
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.vscode = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.vscodium;
|
|
||||||
profiles.default.extensions = with pkgs.vscode-extensions; [
|
|
||||||
catppuccin.catppuccin-vsc
|
|
||||||
jnoortheen.nix-ide
|
|
||||||
ms-python.python
|
|
||||||
ms-azuretools.vscode-docker
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
options.prismlauncher.enable = lib.mkEnableOption "Enable PrismLauncher and dependencies";
|
|
||||||
|
|
||||||
config = lib.mkIf config.prismlauncher.enable {
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.prismlauncher.override {
|
|
||||||
# Add binary required by some mod
|
|
||||||
additionalPrograms = [ pkgs.ffmpeg ];
|
|
||||||
|
|
||||||
# Set Java runtimes
|
|
||||||
jdks = [
|
|
||||||
pkgs.jdk8
|
|
||||||
pkgs.jdk17
|
|
||||||
pkgs.jdk21 or pkgs.jdk
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
options.protonvpn.enable = lib.mkEnableOption "Enable ProtonVPN and dependencies";
|
|
||||||
|
|
||||||
config = lib.mkIf config.protonvpn.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
protonvpn-gui
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
# Import all modules so home.nix only needs to import this file
|
|
||||||
{ config, pkgs, lib, inputs, ... }: {
|
|
||||||
imports = [
|
|
||||||
|
|
||||||
################
|
|
||||||
# 🖥️ Desktop Apps #
|
|
||||||
################
|
|
||||||
./Desktop-Apps/krita.nix
|
|
||||||
./Desktop-Apps/obsidian.nix
|
|
||||||
./Desktop-Apps/office-apps.nix
|
|
||||||
./Desktop-Apps/signal-desktop.nix
|
|
||||||
./Desktop-Apps/spotify.nix
|
|
||||||
./Desktop-Apps/standard-apps.nix
|
|
||||||
./Desktop-Apps/vesktop.nix
|
|
||||||
./Desktop-Apps/vscodium.nix
|
|
||||||
|
|
||||||
#############
|
|
||||||
# 🌐 Browser #
|
|
||||||
#############
|
|
||||||
./Browser/brave/brave.nix
|
|
||||||
|
|
||||||
############
|
|
||||||
# 🎮 Gaming #
|
|
||||||
############
|
|
||||||
./Gaming/prismlauncher.nix
|
|
||||||
|
|
||||||
###########
|
|
||||||
# 🔐 VPNs #
|
|
||||||
###########
|
|
||||||
./VPN/protonvpn.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
options.cliTools.enable = lib.mkEnableOption "Enable CLI tools like fastfetch and hyfetch";
|
|
||||||
|
|
||||||
config = lib.mkIf config.cliTools.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
fastfetch
|
|
||||||
hyfetch
|
|
||||||
bat
|
|
||||||
fzf
|
|
||||||
tree
|
|
||||||
lsd
|
|
||||||
tmux
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
# Import all modules so home.nix only needs to import this file
|
|
||||||
{ config, pkgs, lib, inputs, ... }: {
|
|
||||||
imports = [
|
|
||||||
####################
|
|
||||||
# 🧰 CLI Tools #
|
|
||||||
####################
|
|
||||||
./cli-tools/default.nix
|
|
||||||
|
|
||||||
####################
|
|
||||||
# 🐚 Zsh Shell #
|
|
||||||
####################
|
|
||||||
./zsh/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
|
|
||||||
plugins = [
|
|
||||||
{
|
|
||||||
name = "zsh-autosuggestions";
|
|
||||||
src = pkgs.zsh-autosuggestions;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "zsh-syntax-highlighting";
|
|
||||||
src = pkgs.zsh-syntax-highlighting;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
initContent = ''
|
|
||||||
hyfetch
|
|
||||||
|
|
||||||
alias ls='lsd'
|
|
||||||
alias l='ls -l'
|
|
||||||
alias la='ls -a'
|
|
||||||
alias lla='ls -la'
|
|
||||||
alias lt='ls --tree'
|
|
||||||
|
|
||||||
HISTFILE=~/.zsh_history;
|
|
||||||
HISTSIZE=10000;
|
|
||||||
SAVEHIST=10000;
|
|
||||||
setopt appendhistory;
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
zsh-autosuggestions
|
|
||||||
zsh-syntax-highlighting
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
# Import all modules so home.nix only needs to import this file
|
|
||||||
{ config, pkgs, lib, inputs, ... }: {
|
|
||||||
imports = [
|
|
||||||
#################
|
|
||||||
# 🖥 GUI Software #
|
|
||||||
#################
|
|
||||||
./GUI-Apps
|
|
||||||
|
|
||||||
#################
|
|
||||||
# 🐚 Shell Setup #
|
|
||||||
#################
|
|
||||||
./Shell
|
|
||||||
|
|
||||||
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
host,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
|
|
||||||
# Enable Bluetooth
|
|
||||||
hardware.bluetooth.enable = true; # enables support for Bluetooth
|
|
||||||
hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot
|
|
||||||
|
|
||||||
|
|
||||||
# Enable firmware (Intel AX200 needs firmware files from linux-firmware)
|
|
||||||
hardware.enableAllFirmware = true;
|
|
||||||
hardware.firmware = [ pkgs.linux-firmware ];
|
|
||||||
|
|
||||||
|
|
||||||
#error: The option `dconf' does not exist. Definition values:
|
|
||||||
programs.dconf.enable = true;
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
networkmanager.enable = true;
|
|
||||||
hostName = host;
|
|
||||||
};
|
|
||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
|
||||||
|
|
||||||
i18n.defaultLocale = "en_GB.UTF-8";
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "de_DE.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
|
||||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
|
||||||
LC_MONETARY = "de_DE.UTF-8";
|
|
||||||
LC_NAME = "de_DE.UTF-8";
|
|
||||||
LC_NUMERIC = "de_DE.UTF-8";
|
|
||||||
LC_PAPER = "de_DE.UTF-8";
|
|
||||||
LC_TELEPHONE = "de_DE.UTF-8";
|
|
||||||
LC_TIME = "de_DE.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.settings.experimental-features = ["nix-command" "flakes" "pipe-operators"];
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
console.keyMap = "de";
|
|
||||||
|
|
||||||
services.printing.enable = true;
|
|
||||||
|
|
||||||
# Sound and pipewire
|
|
||||||
services.pulseaudio.enable = false;
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
# Import all modules so configuration.nix only needs to import this file
|
|
||||||
{ config, pkgs, lib, inputs, username, ... }: {
|
|
||||||
imports = [
|
|
||||||
##############
|
|
||||||
# ⚙️ Defaults #
|
|
||||||
##############
|
|
||||||
./common.nix
|
|
||||||
|
|
||||||
];
|
|
||||||
}
|
|
||||||
113
README.md
113
README.md
|
|
@ -25,19 +25,6 @@ This is a **NixOS configuration** designed to evoke the pixel-perfect charm of *
|
||||||
NixOS-95/
|
NixOS-95/
|
||||||
├── flake.nix
|
├── flake.nix
|
||||||
├── flake.lock
|
├── flake.lock
|
||||||
├── Configurations/
|
|
||||||
│ └── Hosts/
|
|
||||||
│ └── Default/
|
|
||||||
│ ├── configuration.nix
|
|
||||||
│ ├── hardware-configuration.nix
|
|
||||||
│ ├── user.nix
|
|
||||||
│ ├── home/
|
|
||||||
│ │ ├── home.nix
|
|
||||||
│ │ ├── desktop.nix
|
|
||||||
│ │ └── user-packages.nix
|
|
||||||
│ └── variables/
|
|
||||||
│ ├── system-vars.nix
|
|
||||||
│ └── user-vars.nix
|
|
||||||
├── Modules/
|
├── Modules/
|
||||||
│ ├── Applications/
|
│ ├── Applications/
|
||||||
│ └── System/
|
│ └── System/
|
||||||
|
|
@ -60,38 +47,87 @@ NixOS-95/
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Wallpaper and Aesthetics
|
|
||||||
|
|
||||||
Wallpapers are located in `./Resources/Images/Wallpapers`.
|
|
||||||
Some have been lightly edited. Originals were created by [aconfuseddragon](https://aconfuseddragon.itch.io/downloads).
|
|
||||||
|
|
||||||
> I **do not own** any of the icons or wallpapers.
|
|
||||||
> If you showcase or redistribute them, **please credit the original artists**.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Installation - BETA
|
## Installation - BETA
|
||||||
|
|
||||||
> Requires a NixOS install.
|
> Requirements:
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes" "pipe-operators"];
|
||||||
|
Enabled
|
||||||
|
|
||||||
1. **Clone the repository**:
|
|
||||||
|
|
||||||
```bash
|
### 1. Add Nyx to your flake
|
||||||
git clone https://github.com/peritia-system/NixOS-95.git NixOS
|
|
||||||
cd NixOS
|
```nix
|
||||||
|
# flake.nix
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixos95.url = "github:Peritia-System/NixOS-95/Dev";
|
||||||
|
nixos95.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
}
|
||||||
|
outputs = inputs @ { nixpkgs, nixos95, ... }: {
|
||||||
|
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
|
||||||
|
modules = [ ./configuration.nix ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Switch to Dev**:
|
### 2. Import in Configuration.nix
|
||||||
|
|
||||||
```bash
|
```nix
|
||||||
git switch Dev
|
# configuration.nix
|
||||||
|
{
|
||||||
|
imports = [ inputs.self.nixosModules.nixos95 ];
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Regenerate hardware configuration**:
|
### 3. Enable modules
|
||||||
|
|
||||||
```bash
|
```nix
|
||||||
sudo nixos-generate-config --dir Configurations/Hosts/Default
|
{
|
||||||
|
# configuration.nix / or sth imported by the main config
|
||||||
|
nixos95 = {
|
||||||
|
enable = true;
|
||||||
|
user = "alex";
|
||||||
|
|
||||||
|
taskbar = {
|
||||||
|
homeIcon = "whisker-menu-button";
|
||||||
|
battery-plugin.enable = false;
|
||||||
|
applications = [
|
||||||
|
{
|
||||||
|
name = "Brave";
|
||||||
|
description = "Browse the Web";
|
||||||
|
pkg = pkgs.brave;
|
||||||
|
icon = "world";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Signal";
|
||||||
|
description = "Private Messenger";
|
||||||
|
pkg = pkgs.signal-desktop;
|
||||||
|
icon = "signal";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Obsidian";
|
||||||
|
description = "Markdown Editor";
|
||||||
|
exe = "obsidian %u";
|
||||||
|
icon = "obsidian";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Spotify";
|
||||||
|
description = "Spotify Music";
|
||||||
|
exe = "spotify %U";
|
||||||
|
icon = "spotify";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
keybinds = {
|
||||||
|
commands = [
|
||||||
|
{ key="<Super>l"; exe="xflock4"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
4. **Build and switch to the system configuration**:
|
4. **Build and switch to the system configuration**:
|
||||||
|
|
@ -99,12 +135,7 @@ Some have been lightly edited. Originals were created by [aconfuseddragon](https
|
||||||
```bash
|
```bash
|
||||||
sudo NIX_CONFIG="experimental-features = nix-command flakes pipe-operators" nixos-rebuild switch --flake .#default
|
sudo NIX_CONFIG="experimental-features = nix-command flakes pipe-operators" nixos-rebuild switch --flake .#default
|
||||||
```
|
```
|
||||||
|
w
|
||||||
5. **Apply user settings with Home Manager**:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
home-manager switch
|
|
||||||
```
|
|
||||||
|
|
||||||
### Experimental Features
|
### Experimental Features
|
||||||
|
|
||||||
|
|
|
||||||
44
flake.nix
44
flake.nix
|
|
@ -1,46 +1,12 @@
|
||||||
{
|
{
|
||||||
description = "NixOS-95";
|
description = "NixOS-95: To Style your NixOS to look like Windows95";
|
||||||
|
|
||||||
################################################################
|
|
||||||
# 🔗 Inputs
|
|
||||||
################################################################
|
|
||||||
inputs = {
|
inputs = {
|
||||||
# Core NixOS packages
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
||||||
|
|
||||||
# Home Manager
|
|
||||||
home-manager.url = "github:nix-community/home-manager";
|
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
################################################################
|
outputs = { self, nixpkgs, ... }: {
|
||||||
# 🚀 Outputs
|
nixosModules.default = import ./nixos95;
|
||||||
################################################################
|
|
||||||
outputs = inputs @ {
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
home-manager,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
|
|
||||||
nixosModules.nixos95 = import ./nixos95;
|
|
||||||
|
|
||||||
nixosConfigurations = {
|
|
||||||
############################################################
|
|
||||||
# 💻 Default Host
|
|
||||||
############################################################
|
|
||||||
default = nixpkgs.lib.nixosSystem {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs self;
|
|
||||||
host = "default";
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
./Configurations/Hosts/Default/configuration.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue