@@ -1,9 +1,7 @@
# 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 ,
lib ,
. . .
}: let
pkg_with_working_nitrogen = import ( builtins . fetchTarball {
@@ -18,223 +16,229 @@ in {
../../system/system.nix
] ;
home-manager = {
useGlobalPkgs = true ;
useUserPackages = true ;
backupFileExtens ion = " h m - b a c k u p " ;
users . synchronous = import ../../home/home.nix ;
options . res = lib . mkOption {
type = lib . types . str ;
default = " 1 9 2 0 x 1 0 8 0 " ;
descript ion = " s c r e e n r e s o l u t i o n " ;
} ;
environment . sessionVariables = {
RES = " 1 3 6 6 x 7 6 8 " ;
} ;
# Bootloader.
# boot.loader.grub.enable = true ;
# boot.loader.grub.device = "/dev/sda";
# boot.loader.grub.useOSProber = true;
# boot.loader.grub.version = 2;
#boot = {
# loader.systemd-boot = {
# enable = true;
# editor = false;
# } ;
# kernelPackages = pkgs.linuxPackages;
#};
boot . loader . systemd-boot . enable = true ;
boot . loader . efi . canTouchEfiVariables = true ;
boot . loader . grub . enable = false ;
networking . hostName = " t h o n k p a d " ; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
nix = {
nixPath = [
" n i x p k g s = / n i x / v a r / n i x / p r o f i l e s / p e r - u s e r / r o o t / c h a n n e l s / n i x o s "
" n i x o s - c o n f i g = / h o m e / s y n c h r o n o u s / n i x - c f g / c o n f i g u r a t i o n . n i x "
" / n i x / v a r / n i x / p r o f i l e s / p e r - u s e r / r o o t / c h a n n e l s "
] ;
settings = {
experimental-features = [ " n i x - c o m m a n d " " f l a k e s " ] ;
substituters = [
" h t t p s : / / n i x - c o m m u n i t y . c a c h i x . o r g "
config = {
home-manager = {
useGlobalPkgs = true ;
useUserPackages = true ;
backupFileExtension = " h m - b a c k u p " ;
extraSpecialArgs = { inherit ( config ) res ; } ;
users . synchronous . imports = [
( {
config ,
lib ,
. . .
}:
import ../../home/home.nix {
inherit config pkgs lib ;
} )
] ;
trusted-public-keys = [
" n i x - c o m m u n i t y . c a c h i x . o r g - 1 : m B 9 F S h 9 q f 2 d C i m D S U o 8 Z y 7 b k q 5 C X + / r k C W y v R C Y g 3 F s = "
# users.synchronous = import ../../home/home.nix {
# inherit config lib pkgs;
# };
} ;
res = " 1 3 6 6 x 7 6 8 " ;
# config = {
# res = "1366x768";
# };
# system.res = "1366x768";
# Bootloader.
# boot.loader.grub.enable = true;
# boot.loader.grub.device = "/dev/sda";
# boot.loader.grub.useOSProber = true;
# boot.loader.grub.version = 2;
#boot = {
# loader.systemd-boot = {
# enable = true;
# editor = false;
# };
# kernelPackages = pkgs.linuxPackages;
#};
boot . loader . systemd-boot . enable = true ;
boot . loader . efi . canTouchEfiVariables = true ;
boot . loader . grub . enable = false ;
networking . hostName = " t h o n k p a d " ; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
nix = {
nixPath = [
" n i x p k g s = / n i x / v a r / n i x / p r o f i l e s / p e r - u s e r / r o o t / c h a n n e l s / n i x o s "
" n i x o s - c o n f i g = / h o m e / s y n c h r o n o u s / n i x - c f g / c o n f i g u r a t i o n . n i x "
" / n i x / v a r / n i x / p r o f i l e s / p e r - u s e r / r o o t / c h a n n e l s "
] ;
settings = {
experimental-features = [ " n i x - c o m m a n d " " f l a k e s " ] ;
substituters = [
" h t t p s : / / n i x - c o m m u n i t y . c a c h i x . o r g "
] ;
trusted-public-keys = [
" n i x - c o m m u n i t y . c a c h i x . o r g - 1 : m B 9 F S h 9 q f 2 d C i m D S U o 8 Z y 7 b k q 5 C X + / r k C W y v R C Y g 3 F s = "
] ;
} ;
} ;
# 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 = " A m e r i c a / N e w _ Y o r k " ;
# Select internationalisation properties.
i18n . defaultLocale = " e n _ U S . U T F - 8 " ;
i18n . extraLocaleSettings = {
LC_ADDRESS = " e n _ U S . U T F - 8 " ;
LC_IDENTIFICATION = " e n _ U S . U T F - 8 " ;
LC_MEASUREMENT = " e n _ U S . U T F - 8 " ;
LC_MONETARY = " e n _ U S . U T F - 8 " ;
LC_NAME = " e n _ U S . U T F - 8 " ;
LC_NUMERIC = " e n _ U S . U T F - 8 " ;
LC_PAPER = " e n _ U S . U T F - 8 " ;
LC_TELEPHONE = " e n _ U S . U T F - 8 " ;
LC_TIME = " e n _ U S . U T F - 8 " ;
} ;
# Enable CUPS to print documents.
services . printing . enable = true ;
hardware . bluetooth . enable = true ;
programs . dconf . enable = true ;
# Enable sound with pipewire.
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;
users . users . synchronous = {
isNormalUser = true ;
description = " j a k e " ;
extraGroups = [ " n e t w o r k m a n a g e r " " w h e e l " ] ;
packages = with pkgs ; [
kdePackages . kate
# firefox
git
arandr
procs
htop
zsh
ripgrep
rofi
alacritty
python3
tree
old-nitrogen
polybar
sxhkd
bspwm
# librewolf
eza
flameshot
neofetch
lolcat
nnn
xclip
brightnessctl
xbindkeys
pulseaudio
xorg . xf86inputsynaptics
libnotify # for notify-send
alejandra
discord
legcord
polybar-pulseaudio-control
bluez # polybar
zotero
texliveFull
texlivePackages . latexmk
nmap
procps # for pgrep
# xorg.xrandr
# thunderbird
] ;
} ;
} ;
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain" ;
security . sudo = {
# me ne frego. i dare you to privilege escalate me
enable = true ;
extraRules = [
{
commands = [
{
command = " / h o m e / s y n c h r o n o u s / n i x - c f g / h o m e / s c r i p t s / n i x o s - r e b u i l d . s h " ;
options = [ " N O P A S S W D " ] ;
}
{
command = " / h o m e / s y n c h r o n o u s / . s c r i p t s / n i x o s - r e b u i l d . s h " ;
options = [ " N O P A S S W D " ] ;
}
{
# are you serious?
command = " / r u n / c u r r e n t - s y s t e m / s w / b i n / n i x o s - r e b u i l d s w i t c h - - f l a k e / h o m e / s y n c h r o n o u s / n i x - c f g / f l a k e . n i x " ;
options = [ " N O P A S S W D " ] ;
}
] ;
users = [ " s y n c h r o n o u s " ] ;
}
] ;
} ;
# Enable networking
networking . networkmanager . enabl e = true ;
# Allow unfree packages
nixpkgs . config . allowUnfre e = true ;
# Set your time zone.
time . timeZone = " A m e r i c a / N e w _ Y o r k " ;
# Select internationalisation properties.
i18n . defaultLocale = " e n _ U S . U T F - 8 " ;
i18n . extraLocaleSettings = {
LC_ADDRESS = " e n _ U S . U T F - 8 " ;
LC_IDENTIFICATION = " e n _ U S . U T F - 8 " ;
LC_MEASUREMENT = " e n _ U S . U T F - 8 " ;
LC_MONETARY = " e n _ U S . U T F - 8 " ;
LC_NAME = " e n _ U S . U T F - 8 " ;
LC_NUMERIC = " e n _ U S . U T F - 8 " ;
LC_PAPER = " e n _ U S . U T F - 8 " ;
LC_TELEPHONE = " e n _ U S . U T F - 8 " ;
LC_TIME = " e n _ U S . U T F - 8 " ;
} ;
# Enable CUPS to print documents.
services . printing . enable = true ;
hardware . bluetooth . enable = true ;
programs . dconf . enable = true ;
# Enable sound with pipewire.
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;
users . users . synchronous = {
isNormalUser = true ;
description = " j a k e " ;
extraGroups = [ " n e t w o r k m a n a g e r " " w h e e l " ] ;
packages = with pkgs ; [
kdePackages . kate
# firefox
git
arandr
procs
htop
zsh
ripgrep
rofi
alacritty
# List packages installed in system profile. To search, run:
# $ nix search wget
environment . systemPackages = with pkgs ; [
vim
neovim
linux-manual
man-pages
man-pages-posix
fontconfig
python3
rofi
flameshot
tree
old- nitrogen
# nitrogen
polybar
sxhkd
bspwm
# librewolf
eza
flameshot
neofetch
lolcat
nnn
xclip
brightnessctl
xbindkeys
pulseaudio
xorg . xf86inputsynaptics
libnotify # for notify-send
alejandra
discord
legcord
polybar-pulseaudio-control
bluez # polybar
zotero
texliveFull
texlivePackages . latexmk
nmap
procps # for pgrep
# xorg.xrandr
# thunderbird
] ;
# 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. It‘ s 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 = " 2 4 . 1 1 " ; # Did you read the comment?
} ;
security . sudo = {
# me ne frego. i dare you to privilege escalate me
enable = true ;
extraRules = [
{
commands = [
{
command = " / h o m e / s y n c h r o n o u s / n i x - c f g / h o m e / s c r i p t s / n i x o s - r e b u i l d . s h " ;
options = [ " N O P A S S W D " ] ;
}
{
command = " / h o m e / s y n c h r o n o u s / . s c r i p t s / n i x o s - r e b u i l d . s h " ;
options = [ " N O P A S S W D " ] ;
}
{
# are you serious?
command = " / r u n / c u r r e n t - s y s t e m / s w / b i n / n i x o s - r e b u i l d s w i t c h - - f l a k e / h o m e / s y n c h r o n o u s / n i x - c f g / f l a k e . n i x " ;
options = [ " N O P A S S W D " ] ;
}
] ;
users = [ " s y n c h r o n o u s " ] ;
}
] ;
} ;
# Allow unfree packages
nixpkgs . config . allowUnfree = true ;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment . systemPackages = with pkgs ; [
vim
neovim
linux-manual
man-pages
man-pages-posix
fontconfig
python3
rofi
flameshot
tree
# nitrogen
polybar
sxhkd
bspwm
# librewolf
] ;
# 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. It‘ s 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 = " 2 4 . 1 1 " ; # Did you read the comment?
}