43 Commits

Author SHA1 Message Date
54dc51eec4 chore(update): upgrade flake 2026-01-09 07:44:13 +01:00
3c3dd262ae Merge pull request 'feature(steam): add proton-ge compatibility layer to steam' (#5) from feature/proton-ge into main
Reviewed-on: #5
2026-01-04 12:04:53 +00:00
cd683bfa94 feature(steam): add proton-ge compatibility layer to steam 2026-01-04 13:02:44 +01:00
10a4b462b3 Merge pull request 'optimize build time' (#4) from feature/optimize into main
Reviewed-on: #4
2025-12-31 10:20:21 +00:00
5111de5278 refactor(settings): remove redundant options 2025-12-31 11:17:31 +01:00
3a6b6091d6 feature(settings): add cache, use more cores, auto optimize the nix store 2025-12-31 11:09:09 +01:00
382cb2b096 refactor(flake): remove home-manager options from flake, since they are already defined in settings 2025-12-31 11:08:26 +01:00
05245ea56b refactor(niri): rename the module to niri.nix for clarity 2025-12-31 11:07:37 +01:00
3ee5cfac97 Merge pull request 'feature(modules): split configuration into nix modules and home-manager modules' (#2) from feature/modularize into main
Reviewed-on: #2
2025-12-30 17:51:29 +00:00
2e1c2524fc refactor(readme): update the readme with a nix-helper section. 2025-12-30 18:50:30 +01:00
b87d881258 feature(flake): update flake file and update all packages 2025-12-30 18:49:25 +01:00
8fa948b0be fix(home): set correct name for nixvim config 2025-12-30 14:27:17 +01:00
859d524f4a fix(styling): fix syntax error 2025-12-30 14:26:40 +01:00
989f676ce7 refactor: cleanup old configuration 2025-12-30 14:26:12 +01:00
55bb23cf07 feature(home): cleanup home-manager imports 2025-12-30 14:20:59 +01:00
894c113607 feature(programs): add a hm-module to specify user programs 2025-12-30 14:20:24 +01:00
724db8a252 feature(style): move qt and gtk settings to their own hm-module 2025-12-30 14:19:55 +01:00
d0eb6f614d feature(tmux): add tmux home-manager module 2025-12-30 14:19:24 +01:00
c419f052a3 feature(shell): add zsh home-manager module 2025-12-30 14:19:05 +01:00
1f7e9f6eef feature(nixvim): add nixvim home-manager module 2025-12-30 14:18:43 +01:00
656dfe4b93 feature(git): add git home-manager module 2025-12-30 14:18:14 +01:00
d913c6cc02 fix(home): set correct namespace for environment variable 2025-12-28 20:19:37 +01:00
a535f00e54 fix(home): fix folder naming 2025-12-28 20:15:13 +01:00
0509b11c00 fix(gnupg): fix typo and add pinentry-ncurses 2025-12-28 19:58:22 +01:00
0fccd2d54b feature(packages): add system packages module 2025-12-28 19:28:28 +01:00
3a95182d3a feature(settings): add settings module 2025-12-28 19:28:10 +01:00
c125409336 refactor(home): move home settings to user namespace 2025-12-28 19:27:47 +01:00
f3678a13c5 feature(services): add services to module files 2025-12-28 19:27:14 +01:00
520eadd6fb feature(compositor): add a module for the wayland compositor 2025-12-28 19:26:44 +01:00
01f6137eed refactor(noctalia): move noctalia configs to modules 2025-12-28 19:26:13 +01:00
edd73ddf53 refactor(configuration): remove everything unnecessary from configuration.nix 2025-12-28 19:25:37 +01:00
31c4834a2d feature(niri): add module for niri wayland compositor 2025-12-28 19:21:16 +01:00
6d437c290f feature(locales): add keymap and console font to locales module 2025-12-28 18:53:31 +01:00
2cdd02b024 feature(users): add module that handles users and their shell 2025-12-28 18:49:10 +01:00
7f57f89a77 feature(steam): add steam module for all things around steam on wayland 2025-12-28 18:48:43 +01:00
9cde74486a feature(serivces): add services module that handles various enabled services 2025-12-28 18:48:11 +01:00
a045ca7d94 feature(sddm): add sddm module for theming and session management 2025-12-28 18:47:40 +01:00
3c18029b95 feature(openssh): add modules for openssh and openpgp 2025-12-28 18:47:12 +01:00
d06ab6d54b feature(networking): add networking module for firewall and network settings 2025-12-28 18:46:27 +01:00
6a9ba7082b feature(localization): add locales module that handles timezone and locale settings 2025-12-28 18:45:54 +01:00
64dee7a59f feature(audio): add audio module that handles pipewire 2025-12-28 18:44:56 +01:00
b4c3ddd300 feature(bootloader): add bootloader module with systemd-boot and plymouth 2025-12-28 18:44:21 +01:00
4360fbed68 feature(flake): simplyfi the flake and add a module system 2025-12-28 18:40:36 +01:00
25 changed files with 494 additions and 355 deletions

View File

@@ -1,10 +1,10 @@
# 0x29a nixos config
My personal nixos configuration files.
My personal nixos configuration files for different environments.
## basic system installation
- The installations in this repository are always luks encrypted
- The installations presented in this repository are always luks encrypted
- For simplicity I'm using device labels rather than uuids
1. the partitioning layout should look somewhat like this after the installation
@@ -111,8 +111,24 @@ $ sudo nixos-rebuild --install-bootloader switch --flake .#host_name
$ cd /path/to/repo
$ sudo nix flake update
$ sudo nixos-rebuild switch --flake .#host_name
$ sudo nix-collect-garbage
```
## how to use nix-helper
The tool nix-helper is installed by this configuration. It simplifies administrating nixos and adds more output to the rebuild command. It also features a diff after a successful build. The command uses the `NH_FLAKE` environment variable to be able to run from whatever directory.
Basic commands with a set `NH_FLAKE` variable are:
```bash
$ nh os switch
$ nh os build
$ nh os test
$ nh clean all --keep 5
```
There is also the option to interface with home-manager by using `nh home switch`but this isn't necessary since home-manager is imported as a module in this config.
## author
aaron <aaron@0x29a.ch>

24
flake.lock generated
View File

@@ -28,11 +28,11 @@
]
},
"locked": {
"lastModified": 1766282146,
"narHash": "sha256-0V/nKU93KdYGi+5LB/MVo355obBJw/2z9b2xS3bPJxY=",
"lastModified": 1767907949,
"narHash": "sha256-ihO/8Dx1sz0XbXSg0bHp8+9sEB3G/StAzyrB6GPqDd4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "61fcc9de76b88e55578eb5d79fc80f2b236df707",
"rev": "b1b1c68033840553f47f49e994b27a7d5dafa5e1",
"type": "github"
},
"original": {
@@ -43,11 +43,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1766070988,
"narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=",
"lastModified": 1767767207,
"narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c6245e83d836d0433170a16eb185cefe0572f8b8",
"rev": "5912c1772a44e31bf1c63c0390b90501e5026886",
"type": "github"
},
"original": {
@@ -66,11 +66,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1766273987,
"narHash": "sha256-Y8hL2zGyt7xn5J1V806GJ9tMEk6NgVlU7xe4dS4fThE=",
"lastModified": 1767906546,
"narHash": "sha256-AoSWS8+P+7hQ/jIdv0wBjgH1MvnerdWBFXO4GV3JoQs=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "ff00fe1512dfcb31b01d770738de9299b434449b",
"rev": "7eb8f36f085b85a2aeff929aff52d0f6aa14e000",
"type": "github"
},
"original": {
@@ -86,11 +86,11 @@
]
},
"locked": {
"lastModified": 1766317205,
"narHash": "sha256-PYlMsenwZCG5TrxQSyTraPw8WQwk4FGnbyFdFMuAeYA=",
"lastModified": 1767907466,
"narHash": "sha256-uUAG4C5VOfqiuIpXELxKaAnoZO30n77oGexuPrlUM74=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "51aa9fe16b0cc0dc4daa7c447843b36923434f2e",
"rev": "9fc7a597eb905b5d83235f71a4269c1d938634c3",
"type": "github"
},
"original": {

View File

@@ -1,74 +1,55 @@
{
description = "0x29a ecosystem NixOS flake";
description = "0x29a NixOS flake";
inputs = {
# the main nix package collection
nixpkgs = {
url = "github:nixos/nixpkgs/nixos-unstable";
};
# home manager for dotfiles
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
# noctalia shell
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs";
};
# nixvim
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{self, nixpkgs, home-manager, nixvim, ... }: let
lib = nixpkgs.lib;
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
outputs = { self, nixpkgs, home-manager, nixvim, ... }@inputs: {
nixosConfigurations = {
# default config
default = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs;
};
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
# import host specific configs
./hosts/default/configuration.nix
# import host specific hardware configs
./hosts/default/hardware-configuration.nix
./hosts/default/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.aaron.imports = [
nixvim.homeModules.nixvim
./users/aaron/home.nix
];
}
];
};
# laptop neon
neon = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs;
};
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
# import host specific configs
./hosts/neon/configuration.nix
# import host specific hardware configs
./hosts/neon/hardware-configuration.nix
# import noctalia shell configs
./hosts/neon/noctalia.nix
# import home-manager as a module
./hosts/neon/configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
# User specific inputs
home-manager.users.aaron = {
imports = [
home-manager.users.aaron.imports = [
nixvim.homeModules.nixvim
./hosts/neon/home.nix
./users/aaron/home.nix
];
};
}
];
};

View File

@@ -1,200 +1,23 @@
{ pkgs, lib, inputs, ... }:
{ config, pkgs, inputs, ... }:
{
imports =
[
./hardware-configuration.nix
imports = [
../../modules/nixos/audio.nix
../../modules/nixos/bootloader.nix
../../modules/nixos/gnupg.nix
../../modules/nixos/locales.nix
../../modules/nixos/networking.nix
../../modules/nixos/niri.nix
../../modules/nixos/noctalia.nix
../../modules/nixos/openssh.nix
../../modules/nixos/packages.nix
../../modules/nixos/sddm.nix
../../modules/nixos/services.nix
../../modules/nixos/settings.nix
../../modules/nixos/steam.nix
../../modules/nixos/users.nix
];
# use flakes
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# configure bootloader
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# plymouth boot eye candy
boot.initrd.systemd.enable = true;
boot.kernelParams = [ "quiet" "loglevel=2" ];
boot.plymouth.enable = true;
boot.plymouth.theme = "spinner";
# use latest kernel
boot.kernelPackages = pkgs.linuxPackages_latest;
# networking
networking.hostName = "neon";
networking.networkmanager.enable = true;
# bluetooth
hardware.bluetooth.enable = true;
# time zone.
time.timeZone = "Europe/Amsterdam";
# select internationalisation properties
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
console = {
font = "Lat2-Terminus16";
keyMap = "de_CH-latin1";
};
# set up niri as window manager
programs.niri.enable = true;
# set up sddm ad display manager
services.displayManager.sddm = {
enable = true;
wayland = {
enable = true;
};
autoNumlock = true;
enableHidpi = true;
theme = "sddm-astronaut-theme";
settings = {
Theme = {
Current = "sddm-astronaut-theme";
};
};
extraPackages = with pkgs; [
sddm-astronaut
];
};
services.tuned.enable = true;
services.upower.enable = true;
environment.pathsToLink = [ "/libexec" ];
environment.variables.EDITOR = "vim";
# enable sound
services.pipewire = {
enable = true;
pulse.enable = true;
};
# define a user account
users.users.aaron = {
isNormalUser = true;
group = "users";
extraGroups = [ "wheel" ];
shell = pkgs.zsh;
};
# browser
programs.firefox.enable = true;
# zsh config
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestions.enable = true;
ohMyZsh = {
enable = true;
plugins = [ "git" "sudo" ];
theme = "gentoo";
};
};
# system packages
environment.systemPackages = with pkgs; [
alacritty
btop
cowsay
dnsutils
efibootmgr
ethtool
file
ghostty
git
gnupg
iftop
imagemagick
imv
iotop
iperf3
jq
kdePackages.qtmultimedia
kitty
ldns
lm_sensors
lsof
ltrace
mtr
neovim
nh
nix-output-monitor
nmap
nvd
p7zip
pciutils
sddm-astronaut
socat
strace
sysstat
tree
unzip
usbutils
vim
wget
which
xwayland-satellite
xz
zip
zstd
];
# Some programs need SUID wrappers
programs.mtr.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# enable steam on this machine
nixpkgs.config.allowUnfree = true;
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
# fix black screen in steam on xwayland-satellite
programs.steam.package = pkgs.steam.override {
extraArgs = "-system-composer";
};
# enable the OpenSSH daemon
services.openssh = {
enable = true;
openFirewall = true;
};
# firewall configs
networking.firewall.allowedTCPPorts = [ ];
networking.firewall.allowedUDPPorts = [ ];
# enable home-manager globally
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
# add flake env variable for nh
environment.sessionVariables = {
NH_FLAKE = "/home/aaron/git/nixconfig";
};
# install state version
system.stateVersion = "25.11"; # Don't change
}

View File

@@ -0,0 +1,18 @@
{ config, pkgs, inputs, ... }:
{
programs.git = {
enable = true;
settings = {
push = { autoSetupRemote = true; };
user = {
name = "aaron";
email = "aaron@0x29a.ch";
};
};
signing = {
key = "7A830180A05DAC59CDE43B0677D2F5DB48184456";
signByDefault = true;
};
};
}

View File

@@ -0,0 +1,26 @@
{ config, pkgs, inputs, ... }:
{
programs.nixvim = {
globals.mapleader = " ";
enable = true;
viAlias = false;
vimAlias = true;
opts = {
number = true;
relativenumber = true;
shiftwidth = 2;
tabstop = 2;
expandtab = true;
incsearch = true;
};
colorschemes.nord.enable = true;
plugins.lualine.enable = true;
plugins.nix.enable = true;
plugins.nvim-tree.enable = true;
plugins.treesitter.enable = true;
plugins.telescope.enable = true;
plugins.web-devicons.enable = true;
plugins.indent-blankline.enable = true;
};
}

View File

@@ -0,0 +1,18 @@
{ config, pkgs, inputs, ... }:
{
# user packages
home.packages = with pkgs; [
discord
fastfetch
keepassxc
nerd-fonts.sauce-code-pro
powerline-fonts
powerline-symbols
screenfetch
];
# services and other software
services.syncthing.enable = true;
programs.home-manager.enable = true;
}

View File

@@ -0,0 +1,20 @@
{ config, pkgs, inputs, ... }:
{
programs.zsh = {
enable = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
oh-my-zsh = {
enable = true;
theme = "agnoster";
#plugins = [ "git" "ssh-agent" ];
};
};
# set important env vars
home.sessionVariables = {
EDITOR = "vim";
NH_FLAKE = "/home/aaron/git/nixconfig";
};
}

View File

@@ -0,0 +1,30 @@
{ config, pkgs, inputs, ... }:
{
# set gtk theme
gtk = {
enable = true;
theme = {
name = "Adwaita-dark";
package = pkgs.gnome-themes-extra;
};
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
};
# set qt theme
qt = {
enable = true;
platformTheme.name = "qt6";
style = {
name = "adwaita-dark";
package = pkgs.adwaita-qt;
};
};
# ensure packages are installed
home.packages = with pkgs; [
gnome-themes-extra
adwaita-qt
];
}

View File

@@ -1,44 +1,12 @@
{ config, pkgs, inputs, ... }:
{
# user config
home.username = "aaron";
home.homeDirectory = "/home/aaron";
# nixvim config
programs.nixvim = {
globals.mapleader = " ";
enable = true;
viAlias = false;
vimAlias = true;
opts = {
number = true;
relativenumber = true;
shiftwidth = 2;
tabstop = 2;
expandtab = true;
incsearch = true;
};
colorschemes.nord.enable = true;
plugins.lualine.enable = true;
plugins.nix.enable = true;
plugins.nvim-tree.enable = true;
plugins.treesitter.enable = true;
plugins.telescope.enable = true;
plugins.web-devicons.enable = true;
plugins.indent-blankline.enable = true;
};
# tmux config
programs.tmux = {
enable = true;
# Basic options
prefix = "C-a";
keyMode = "vi";
mouse = true;
# Terminal settings
terminal = "screen-256color";
# Extra configuration
extraConfig = ''
# Status keys
set -g status-keys vi
@@ -85,67 +53,4 @@
set -g window-status-separator ""
'';
};
# user packages
home.packages = with pkgs; [
discord
fastfetch
keepassxc
nerd-fonts.sauce-code-pro
powerline-fonts
powerline-symbols
screenfetch
];
# configure git
programs.git.settings = {
enable = true;
userName = "aaron";
userEmail = "aaron@0x29a.ch";
};
# configure zsh theme
programs.zsh = {
enable = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
oh-my-zsh = {
enable = true;
theme = "agnoster";
#plugins = [ "git" "ssh-agent" ];
};
};
# set gtk theme
gtk = {
enable = true;
theme = {
name = "Adwaita-dark";
package = pkgs.gnome-themes-extra;
};
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
};
# set qt theme
qt = {
enable = true;
platformTheme.name = "qt6";
style = {
name = "adwaita-dark";
package = pkgs.adwaita-qt;
};
};
# set env vars
home.sessionVariables = {
EDITOR = "vim";
};
# enable syncthing for user
services.syncthing.enable = true;
# enable home manager
programs.home-manager.enable = true;
# don't change
home.stateVersion = "25.11";
}

9
modules/nixos/audio.nix Normal file
View File

@@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
# enable sound through pipewire
services.pipewire = {
enable = true;
pulse.enable = true;
};
}

View File

@@ -0,0 +1,27 @@
{ config, lib, pkgs, ... }:
{
# set bootloader to systemd
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
# enable systemd initrd
boot.initrd.systemd.enable = true;
# plymouth
boot.plymouth = {
enable = true;
theme = "spinner";
};
# kernel options
boot.kernelParams = [ "quiet" "loglevel=2" ];
boot.kernelPackages = pkgs.linuxPackages_latest;
# Add boot-related packages
environment.systemPackages = with pkgs; [
efibootmgr
];
}

15
modules/nixos/gnupg.nix Normal file
View File

@@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
{
# enable gnupg agent
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryPackage = pkgs.pinentry-curses;
};
environment.systemPackages = with pkgs; [
gnupg
pinentry-curses
];
}

26
modules/nixos/locales.nix Normal file
View File

@@ -0,0 +1,26 @@
{ config, lib, pkgs, ... }:
{
# set the time zone
time.timeZone = "Europe/Zurich";
# set internationalisation properties
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
# set console font and keymap
console = {
font = "Lat2-Terminus16";
keyMap = "de_CH-latin1";
};
}

View File

@@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
{
# set hostnname
networking.hostName = "neon";
# user networkmanager
networking.networkmanager.enable = true;
# firewall default configs
networking.firewall.allowedTCPPorts = [ ];
networking.firewall.allowedUDPPorts = [ ];
# enable bluetooth
hardware.bluetooth.enable = true;
# Add network-related packages
environment.systemPackages = with pkgs; [
wireguard-tools
];
}

11
modules/nixos/niri.nix Normal file
View File

@@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
# just enable and install niri
programs.niri.enable = true;
# Add compositor-related packages
environment.systemPackages = with pkgs; [
xwayland-satellite
];
}

View File

@@ -1,10 +1,8 @@
{ pkgs, inputs, ... }:
{ config, lib, pkgs, inputs, ... }:
{
# install noctalia and helper packages
environment.systemPackages = with pkgs; [
inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default
#kdePackages.qt6ct
#nwg-look
adw-gtk3
adwaita-qt
adwaita-qt6

View File

@@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
# enable the openssh daemon
services.openssh = {
enable = true;
openFirewall = true;
};
}

View File

@@ -0,0 +1,49 @@
{ config, lib, pkgs, ... }:
{
# system packges
environment.systemPackages = with pkgs; [
alacritty
btop
cowsay
dnsutils
ethtool
file
ghostty
git
imagemagick
imv
iperf3
jq
kdePackages.qtmultimedia
kitty
ldns
lm_sensors
lsof
ltrace
mtr
neovim
nh
nix-output-monitor
nmap
nvd
p7zip
pciutils
sddm-astronaut
socat
strace
sysstat
tree
unzip
usbutils
vim
wget
which
xz
zip
zstd
];
# browser
programs.firefox.enable = true;
}

20
modules/nixos/sddm.nix Normal file
View File

@@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
{
# enable sddm and use astronaut theme
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
autoNumlock = true;
enableHidpi = true;
theme = "sddm-astronaut-theme";
settings = {
Theme = {
Current = "sddm-astronaut-theme";
};
};
extraPackages = with pkgs; [
sddm-astronaut
];
};
}

View File

@@ -0,0 +1,9 @@
{ config, lib, pkgs, ... }:
{
# list of enabled services on the system
services = {
tuned.enable = true;
upower.enable = true;
};
}

View File

@@ -0,0 +1,44 @@
{ config, lib, pkgs, ... }:
{
nix = {
# nix settings
settings = {
# enable flakes and nix-command
experimental-features = [ "nix-command" "flakes" ];
# auto-optimize my nix-store
auto-optimise-store = true;
# use all cores
max-jobs = "auto";
# use all available cores per job
cores = 0;
# add trusted substituters (binary caches)
substituters = [
"https://cache.nixos.org"
"https://nix-community.cachix.org"
];
# add keys
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
# enable automatic garbage collection
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
};
# links /libexec from derivations to /run/current-system/sw
environment.pathsToLink = [ "/libexec" ];
# set the default editor to vim
environment.variables.EDITOR = "vim";
# enable home-manager globally
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
}

23
modules/nixos/steam.nix Normal file
View File

@@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
{
# allow unfree to install steam
nixpkgs.config.allowUnfree = true;
# enable steam and open firewall
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
# add proton-glorious-eggroll
extraCompatPackages = with pkgs; [
proton-ge-bin
];
};
# fix black screen in steam when using xwayland-satellite
programs.steam.package = pkgs.steam.override {
extraArgs = "-system-composer";
};
}

23
modules/nixos/users.nix Normal file
View File

@@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
{
# create users
users.users.aaron = {
isNormalUser = true;
group = "users";
extraGroups = [ "wheel" "networkmanager" ];
shell = pkgs.zsh;
};
# add default zsh config
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestions.enable = true;
ohMyZsh = {
enable = true;
plugins = [ "git" "sudo" ];
theme = "gentoo";
};
};
}

18
users/aaron/home.nix Normal file
View File

@@ -0,0 +1,18 @@
{ config, pkgs, ... }:
{
imports = [
../../modules/home-manager/git.nix
../../modules/home-manager/nixvim.nix
../../modules/home-manager/programs.nix
../../modules/home-manager/shell.nix
../../modules/home-manager/styling.nix
../../modules/home-manager/tmux.nix
];
home = {
username = "aaron";
homeDirectory = "/home/aaron";
stateVersion = "25.11";
};
}