Complete NixOS rewrite: Transform Omarchy from Arch to declarative NixOS
- Replace shell script-based Arch installation with declarative NixOS configuration - Implement flake-based architecture for reproducible builds - Add modular system with feature flags (Docker, gaming, development, etc.) - Create declarative theme system with Tokyo Night and Catppuccin - Convert utility scripts to Nix packages with proper derivations - Add comprehensive development environments (Rust, Go, Python, Node.js, C/C++) - Implement Home Manager integration for user environment management - Add interactive installer with theme selection and feature configuration - Update documentation for NixOS-specific workflows and commands - Provide atomic updates with rollback capability This maintains all aesthetic and functional benefits of original Omarchy while gaining NixOS power: reproducibility, version control, and atomic updates. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
360
modules/packages.nix
Normal file
360
modules/packages.nix
Normal file
@@ -0,0 +1,360 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.omarchy;
|
||||
in
|
||||
{
|
||||
options.omarchy.packages = {
|
||||
enable = mkEnableOption "Omarchy packages";
|
||||
|
||||
categories = {
|
||||
base = mkEnableOption "Base system packages" // { default = true; };
|
||||
development = mkEnableOption "Development packages" // { default = true; };
|
||||
multimedia = mkEnableOption "Multimedia packages" // { default = true; };
|
||||
productivity = mkEnableOption "Productivity packages" // { default = true; };
|
||||
gaming = mkEnableOption "Gaming packages" // { default = false; };
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf (cfg.enable or true) {
|
||||
environment.systemPackages = with pkgs;
|
||||
# Base system packages (always installed)
|
||||
[
|
||||
# Core utilities
|
||||
coreutils
|
||||
util-linux
|
||||
binutils
|
||||
pciutils
|
||||
usbutils
|
||||
lshw
|
||||
|
||||
# File management
|
||||
file
|
||||
tree
|
||||
ncdu
|
||||
duf
|
||||
dust
|
||||
|
||||
# Networking
|
||||
iproute2
|
||||
iputils
|
||||
dnsutils
|
||||
nettools
|
||||
nmap
|
||||
wget
|
||||
curl
|
||||
aria2
|
||||
|
||||
# Archives
|
||||
zip
|
||||
unzip
|
||||
p7zip
|
||||
rar
|
||||
unrar
|
||||
xz
|
||||
|
||||
# System monitoring
|
||||
btop
|
||||
htop
|
||||
iotop
|
||||
iftop
|
||||
nethogs
|
||||
lsof
|
||||
sysstat
|
||||
|
||||
# Text processing
|
||||
vim
|
||||
nano
|
||||
sed
|
||||
gawk
|
||||
jq
|
||||
yq-go
|
||||
ripgrep
|
||||
fd
|
||||
bat
|
||||
eza
|
||||
fzf
|
||||
zoxide
|
||||
|
||||
# Version control
|
||||
git
|
||||
git-lfs
|
||||
lazygit
|
||||
gh
|
||||
|
||||
# Terminal multiplexers
|
||||
tmux
|
||||
screen
|
||||
|
||||
# System tools
|
||||
rsync
|
||||
rclone
|
||||
age
|
||||
sops
|
||||
gnupg
|
||||
pass
|
||||
pwgen
|
||||
|
||||
# Shell and prompts
|
||||
bash
|
||||
zsh
|
||||
fish
|
||||
starship
|
||||
oh-my-posh
|
||||
|
||||
# Package management helpers
|
||||
nix-index
|
||||
nix-tree
|
||||
nix-diff
|
||||
nixpkgs-fmt
|
||||
nil
|
||||
statix
|
||||
deadnix
|
||||
cachix
|
||||
lorri
|
||||
direnv
|
||||
]
|
||||
|
||||
# Development packages
|
||||
++ optionals cfg.packages.categories.development [
|
||||
# Editors and IDEs
|
||||
neovim
|
||||
emacs
|
||||
vscode
|
||||
jetbrains.idea-community
|
||||
|
||||
# Language servers
|
||||
nodePackages.typescript-language-server
|
||||
nodePackages.vscode-langservers-extracted
|
||||
rust-analyzer
|
||||
gopls
|
||||
pyright
|
||||
lua-language-server
|
||||
clang-tools
|
||||
|
||||
# Debuggers
|
||||
gdb
|
||||
lldb
|
||||
delve
|
||||
|
||||
# Build tools
|
||||
gnumake
|
||||
cmake
|
||||
meson
|
||||
ninja
|
||||
autoconf
|
||||
automake
|
||||
libtool
|
||||
pkg-config
|
||||
|
||||
# Compilers and interpreters
|
||||
gcc
|
||||
clang
|
||||
rustc
|
||||
cargo
|
||||
go
|
||||
python3
|
||||
nodejs_20
|
||||
deno
|
||||
bun
|
||||
|
||||
# Container tools
|
||||
docker
|
||||
docker-compose
|
||||
podman
|
||||
buildah
|
||||
skopeo
|
||||
kind
|
||||
kubectl
|
||||
kubernetes-helm
|
||||
k9s
|
||||
|
||||
# Database clients
|
||||
postgresql
|
||||
mysql80
|
||||
sqlite
|
||||
redis
|
||||
mongodb-tools
|
||||
dbeaver
|
||||
|
||||
# API testing
|
||||
httpie
|
||||
curl
|
||||
postman
|
||||
insomnia
|
||||
|
||||
# Cloud tools
|
||||
awscli2
|
||||
google-cloud-sdk
|
||||
azure-cli
|
||||
terraform
|
||||
ansible
|
||||
|
||||
# Documentation
|
||||
mdbook
|
||||
hugo
|
||||
zola
|
||||
]
|
||||
|
||||
# Multimedia packages
|
||||
++ optionals cfg.packages.categories.multimedia [
|
||||
# Audio
|
||||
pipewire
|
||||
pulseaudio
|
||||
pavucontrol
|
||||
easyeffects
|
||||
spotify
|
||||
spotifyd
|
||||
spotify-tui
|
||||
cmus
|
||||
mpd
|
||||
ncmpcpp
|
||||
|
||||
# Video
|
||||
mpv
|
||||
vlc
|
||||
obs-studio
|
||||
kdenlive
|
||||
handbrake
|
||||
ffmpeg-full
|
||||
|
||||
# Images
|
||||
imv
|
||||
feh
|
||||
gimp
|
||||
inkscape
|
||||
krita
|
||||
imagemagick
|
||||
graphicsmagick
|
||||
|
||||
# Screen capture
|
||||
grim
|
||||
slurp
|
||||
wf-recorder
|
||||
flameshot
|
||||
peek
|
||||
|
||||
# PDF
|
||||
zathura
|
||||
evince
|
||||
okular
|
||||
mupdf
|
||||
]
|
||||
|
||||
# Productivity packages
|
||||
++ optionals cfg.packages.categories.productivity [
|
||||
# Browsers
|
||||
firefox
|
||||
chromium
|
||||
brave
|
||||
qutebrowser
|
||||
|
||||
# Communication
|
||||
discord
|
||||
slack
|
||||
telegram-desktop
|
||||
signal-desktop
|
||||
element-desktop
|
||||
zoom-us
|
||||
teams
|
||||
|
||||
# Office
|
||||
libreoffice
|
||||
onlyoffice-bin
|
||||
wpsoffice
|
||||
|
||||
# Note taking
|
||||
obsidian
|
||||
logseq
|
||||
joplin-desktop
|
||||
zettlr
|
||||
|
||||
# Email
|
||||
thunderbird
|
||||
aerc
|
||||
neomutt
|
||||
|
||||
# Calendar
|
||||
calcurse
|
||||
khal
|
||||
|
||||
# Password managers
|
||||
bitwarden
|
||||
keepassxc
|
||||
pass
|
||||
|
||||
# Sync and backup
|
||||
syncthing
|
||||
nextcloud-client
|
||||
rclone
|
||||
restic
|
||||
borgbackup
|
||||
]
|
||||
|
||||
# Gaming packages
|
||||
++ optionals cfg.packages.categories.gaming [
|
||||
steam
|
||||
lutris
|
||||
wine
|
||||
winetricks
|
||||
proton-ge-bin
|
||||
mangohud
|
||||
gamemode
|
||||
discord
|
||||
obs-studio
|
||||
];
|
||||
|
||||
# Font packages
|
||||
fonts.packages = with pkgs; [
|
||||
# Nerd fonts (for icons in terminal)
|
||||
(nerdfonts.override {
|
||||
fonts = [
|
||||
"JetBrainsMono"
|
||||
"FiraCode"
|
||||
"Hack"
|
||||
"Iosevka"
|
||||
"Meslo"
|
||||
"SourceCodePro"
|
||||
"UbuntuMono"
|
||||
"DroidSansMono"
|
||||
"RobotoMono"
|
||||
"Inconsolata"
|
||||
];
|
||||
})
|
||||
|
||||
# System fonts
|
||||
noto-fonts
|
||||
noto-fonts-cjk
|
||||
noto-fonts-emoji
|
||||
liberation_ttf
|
||||
ubuntu_font_family
|
||||
roboto
|
||||
open-sans
|
||||
lato
|
||||
|
||||
# Programming fonts
|
||||
jetbrains-mono
|
||||
fira-code
|
||||
hasklig
|
||||
victor-mono
|
||||
|
||||
# Icon fonts
|
||||
font-awesome
|
||||
material-icons
|
||||
material-design-icons
|
||||
];
|
||||
|
||||
# Enable font configuration
|
||||
fonts.fontconfig = {
|
||||
enable = true;
|
||||
defaultFonts = {
|
||||
serif = [ "Noto Serif" "Liberation Serif" ];
|
||||
sansSerif = [ "Noto Sans" "Liberation Sans" ];
|
||||
monospace = [ "JetBrainsMono Nerd Font" "Noto Sans Mono" ];
|
||||
emoji = [ "Noto Color Emoji" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user