outline prep for install on home desktop

This commit is contained in:
2024-12-23 18:59:39 +01:00
parent 62df8a3c86
commit b37fc1b8af
3 changed files with 494 additions and 0 deletions
+204
View File
@@ -0,0 +1,204 @@
{ config, lib, pkgs, inputs, ... }:
{
imports = [
./hardware-configuration.nix
inputs.home-manager.nixosModules.default
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.plymouth.enable = true;
networking = {
networkmanager = {
enable = true;
wifi.backend = "iwd";
};
hostName = "nixos-laptop";
firewall.enable = false;
wireless.iwd = {
enable = true;
settings = {
IPv6.Enabled = true;
Settings.Autoconnect = true;
};
};
# Configure network proxy if necessary
# proxy.default = "http://user:password@proxy:port/";
# proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
};
time.timeZone = "Europe/Madrid";
i18n= {
defaultLocale = "en_US.UTF-8";
inputMethod = {
enable = true;
type = "fcitx5";
fcitx5 = {
waylandFrontend = true;
addons = with pkgs; [
fcitx5-mozc
fcitx5-gtk
fcitx5-chinese-addons
];
};
};
};
services = {
libinput.enable = true;
greetd = {
enable = true;
restart = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --cmd Hyprland";
};
};
};
blueman.enable = true;
gvfs.enable = true;
auto-cpufreq.enable = true;
thermald.enable = true;
power-profiles-daemon.enable = false;
};
security.pam.services.hyprlock = {};
environment.etc."greetd/environments".text = ''
Hyprland
'';
hardware = {
bluetooth.enable = true;
graphics = {
enable = true;
extraPackages = with pkgs;[
intel-compute-runtime
intel-media-driver
];
};
pulseaudio.enable = false;
system76.enableAll = true;
};
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-emoji
liberation_ttf
fira-code-symbols
mplus-outline-fonts.githubRelease
dina-font
nerd-fonts.fira-code
nerd-fonts.droid-sans-mono
];
nixpkgs.config.allowUnfree = true;
nix.settings = {
substituters = ["https://hyprland.cachix.org"];
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
trusted-users = [ "root" "@wheel" ];
allowed-users = [ "root" "@wheel" ];
};
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 10d";
};
nix.optimise = {
automatic = true;
dates = [ "00:00" ];
};
users.users.liamm = {
isNormalUser = true;
description = "liamm";
extraGroups = [ "networkmanager" "wheel" "disk" "power" "video" "davfs2" "input" ];
};
programs = {
dconf.enable = true;
steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
};
nix-ld.enable = true;
mtr.enable = true;
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
};
home-manager = {
useGlobalPkgs = true;
extraSpecialArgs = { inherit inputs; };
users = {
"liamm" = import ./home.nix;
};
};
environment.systemPackages = with pkgs; [
vim
fd
file
ripgrep
wget
glib
spotify
discord
wl-clipboard
alacritty
libnotify
mesa
libdrm
];
zramSwap = {
enable = true;
algorithm = "zstd";
};
xdg = {
mime.enable = true;
portal = {
enable = true;
wlr.enable = true;
extraPortals = with pkgs;[
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
xdg-desktop-portal-hyprland
];
config = {
common = {
default = [ "gtk" ];
};
};
};
};
# services.openssh.enable = true;
# This option defines the first version of NixOS you have installed on this particular machine
# 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 = "23.11"; # Did you read the comment?
}
+44
View File
@@ -0,0 +1,44 @@
# 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" "thunderbolt" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/c7704142-d0b9-4a85-af1c-ce776b895c0f";
fsType = "ext4";
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/bf7180c8-72f0-483a-8306-821276eda3e5";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/E27A-231B";
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.enp46s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
}
+246
View File
@@ -0,0 +1,246 @@
{ config, pkgs, lib, callPackage, inputs, ... }:
{
home.username = "liamm";
home.homeDirectory = "/home/liamm";
imports = [
# general modules
../../modules/home-manager/dunst.nix
../../modules/home-manager/tmux.nix
../../modules/home-manager/fastfetch.nix
../../modules/home-manager/terminals/alacritty.nix
# desktop
../../modules/desktop/bluetooth.nix
../../modules/desktop/hyprland.nix
];
# 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.11"; # Please read the comment before changing.
nixpkgs.config.allowUnfree = true;
home.packages = with pkgs; [
audacity
android-studio
brightnessctl
emacs-all-the-icons-fonts
emacsPackages.pdf-tools
exfatprogs
filezilla
firefox
floorp
genymotion
gimp
gnome-keyring
gtk4
gvfs
grim
grimblast
htop
imagemagick
keepassxc
libsForQt5.polkit-kde-agent
mpv
nautilus
netbeans
networkmanagerapplet
nwg-look
openvpn
pamixer
pavucontrol
powertop
praat
prismlauncher
protonvpn-cli
protonvpn-gui
pspp
qbittorrent
signal-desktop
swww
texliveFull
tree
unzip
wev
wl-clipboard
xdg-user-dirs
zip
zoom-us
];
home.file = {};
home.sessionVariables = {
EDITOR = "emacsclient";
GIT_EDITOR = "nvim";
NIX_SHELL_PRESERVE_PROMPT = 1;
};
nix.settings.extra-trusted-substituters = [
"https://ghostty.cachix.org"
];
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# THEMING
## QT SECTION
qt = {
enable = true;
platformTheme.name = "gtk";
style.name = "adwaita-dark";
};
## GTK SECTION
gtk = {
enable = true;
cursorTheme = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
};
theme = {
name = "Materia-dark";
package = pkgs.materia-theme;
};
iconTheme = {
package = pkgs.arc-icon-theme;
name = "arc-icon-theme";
};
};
# ENV SETTINGS
fonts.fontconfig = {
enable = true;
};
xdg.enable = true;
xdg.configFile = {
"emacs" = {
recursive = true;
source = ../../modules/non-nix_configs/emacs;
};
"ghostty" = {
recursive = true;
source = ../../modules/non-nix_configs/ghostty;
};
"kitty" = {
recursive = true;
source = ../../modules/non-nix_configs/kitty;
};
"nvim" = {
recursive = true;
source = ../../modules/non-nix_configs/nvim;
};
"wofi" = {
recursive = true;
source = ../../modules/non-nix_configs/wofi;
};
"user-dirs.dirs".source = ../../modules/non-nix_configs/user-dirs.dirs;
"user-dirs.locale".source = ../../modules/non-nix_configs/user-dirs.locale;
};
# BEGIN PROGRAMS
programs = {
bash = {
enable = true;
enableCompletion = true;
enableVteIntegration = true;
initExtra =''
if [[ -z $ORIG_SHLVL ]]; then
export ORIG_SHLVL=$SHLVL
fi;
if [[ $SHLVL -gt $ORIG_SHLVL ]]; then
export PS1='\[\e[1;m\e[1;33m\e[1;m\] ($(($SHLVL - $ORIG_SHLVL))) \W\[\e[m\e[m\] 🐧 \[\e[1;32m\]~> \[\e[m\e[m\]'
else
export PS1='\[\e[1;m\e[1;33m\e[1;m\] \W\[\e[m\e[m\] 🐧 \[\e[1;32m\]~> \[\e[m\e[m\]'
fi;
set -o vi
fastfetch
'';
shellAliases = {
build = "./build.sh";
emacsd = "emacs --daemon";
emacsc = "emacsclient -c -a 'emacs'";
gap = "git add -p";
gcp = "git commit -p";
kpx = "keepassxc-cli open";
ls = "ls --color=auto";
ll = "ls -l";
la = "ls -lA";
nixrebuild = "nixos-rebuild build --flake ~/personal/nixos#default && sudo nixos-rebuild switch --flake ~/personal/nixos#default";
nixbuild = "sudo nixos-rebuild switch --flake";
nixtest = "sudo nixos-rebuild test --flake";
new = "source $HOME/.bashrc";
newbar = "pkill waybar; waybar &disown";
ping = "ping -c 5";
set-github-var = "export GITHUB=$(sed -n 2p ~/documents/.git_keys)";
set-gitlab-var = "export GITLAB=$(sed -n 4p ~/documents/.git_keys)";
vi = "\\vim";
work = "nix develop --impure";
".." = "cd ..";
};
};
emacs = {
enable = true;
package = pkgs.emacs-gtk;
extraPackages = epkgs: [
epkgs.pdf-tools
epkgs.org-pdftools
];
};
feh.enable = true;
git = {
enable = true;
lfs.enable = true;
diff-so-fancy.enable = true;
userEmail = "maloneliam@proton.me";
userName = "Liam Malone";
};
neovim = {
enable = true;
package = pkgs.neovim-unwrapped;
vimAlias = true;
vimdiffAlias = true;
};
obs-studio = {
enable = true;
};
wofi.enable = true;
};
# BEGIN SERVICES
services = {
blueman-applet.enable = true;
network-manager-applet.enable = true;
emacs = {
enable = true;
package = pkgs.emacs-gtk;
client = {
enable = true;
arguments = [
"-c"
"-a emacs"
];
};
startWithUserSession = "graphical";
};
gnome-keyring.enable = true;
gpg-agent = {
enable = true;
defaultCacheTtl = 1800;
enableSshSupport = true;
};
nextcloud-client.enable = true;
};
}