❄️
NixOS
v24.25.11최신선언적 구성으로 완전히 재현 가능한 운영체제
전문가안정 버전독립 배포판EOL: 2025-06
최소 RAM
4 GB
최소 저장공간
20 GB
패키지 관리자
nix-env
릴리즈
2024-11-30
개요
NixOS는 Nix 패키지 관리자를 기반으로 하는 완전히 독특한 리눅스 배포판입니다. 시스템 전체 구성을 /etc/nixos/configuration.nix 파일 하나에 선언적으로 정의하고,nixos-rebuild switch 명령 한 번으로 시스템 상태를 완전히 재현합니다.
원자적 업그레이드·완전한 롤백이 핵심 특징입니다. 업데이트 후 문제가 생기면 부트로더 메뉴에서 이전 세대를 선택하거나 nixos-rebuild switch --rollback으로 이전 상태로 완전히 돌아갈 수 있습니다. Nixpkgs는 80,000개 이상의 패키지를 보유한 세계 최대 패키지 저장소 중 하나입니다.
ℹ️
NixOS가 혁신적인 이유
- • 재현 가능성: 동일한 configuration.nix로 언제 어디서나 동일한 시스템 재현
- • 롤백: 업데이트로 시스템이 깨져도 부팅 시 이전 세대 선택 가능
- • 원자적 업데이트: 업데이트 도중 시스템이 절대 불안정해지지 않음
- • nix-shell / devShells: 프로젝트별 독립 개발 환경을 선언적으로 정의
✅ 장점
- +완 전한 시스템 재현 가능성
- +원자적 업데이트 + 완전한 롤백
- +80,000+ 패키지 (Nixpkgs)
- +프로젝트별 devShell로 환경 격리
- +Home Manager로 사용자 환경도 선언적 관리
⚠️ 단점
- −Nix 언어 학습 필수
- −독특한 /nix/store 기반 파일시스템 구조
- −일부 FHS 기대 앱 호환 문제 (patchelf 필요)
- −문서 파편화 및 학습 자료 부족
- −디스크 공간 많이 사용 (nix-store 캐시)
#선언적#재현 가능#DevOps#롤백#독립 배포판#Nix#Flakes
다운로드
설치 가이드
1
USB 생성
sudo dd if=nixos-gnome-24.11.*.x86_64-linux.iso \ of=/dev/sdX bs=4M status=progress && sync
2
Calamares 설치 마법사
Live 환경 부팅 후 바탕화면의 "Install NixOS" 아이콘을 클릭합니다.
- 파티셔닝: 자동 또는 수동 선택
- 파일시스템: ext4 (기본) 또는 btrfs
- 사용자 계정 및 비밀번호 설정
- 설치 완료 후 재부팅
3
설치 후 첫 번째 구성
configuration.nix 기본 편집
# 설정 파일 열기sudo nano /etc/nixos/configuration.nix # 구성 적용sudo nixos-rebuild switch
NixOS 구성 이해하기
💡
Nix 언어 기초
Nix는 함수형 언어입니다. configuration.nix는 함수를 반환하는 파일로, 시스템 전체를 코드로 표현합니다.
기 본 configuration.nix 예시
/etc/nixos/configuration.nix
{ config, pkgs, ... }: { # 부트로더 boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; # 네트워크 (호스트명 + NetworkManager) networking.hostName = "my-nixos"; networking.networkmanager.enable = true; # 시간대 및 언어 time.timeZone = "Asia/Seoul"; i18n.defaultLocale = "ko_KR.UTF-8"; # 한국어 입력기 i18n.inputMethod = { enabled = "fcitx5"; fcitx5.addons = with pkgs; [ fcitx5-hangul fcitx5-gtk ]; }; # 데스크톱 환경 (KDE Plasma 예시) services.xserver.enable = true; services.displayManager.sddm.enable = true; services.desktopManager.plasma6.enable = true; # 사운드 (PipeWire) sound.enable = true; hardware.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; pulse.enable = true; }; # 사용자 설정 users.users.alice = { isNormalUser = true; extraGroups = [ "wheel" "networkmanager" "audio" "video" ]; packages = with pkgs; [ firefox git vscode ]; }; # sudo 활성화 security.sudo.enable = true; # 시스템 패키지 environment.systemPackages = with pkgs; [ vim wget curl htop ]; # 방화벽 networking.firewall.enable = true; # SSH (선택) services.openssh.enable = false; # NixOS 버전 (절대 변경하지 마세요) system.stateVersion = "24.11";}
구성 적용 및 롤백
# 구성 변경 후 적용sudo nixos-rebuild switch # 재부팅 없이 테스트 (다음 부팅에 적용 안 됨)sudo nixos-rebuild test # 이전 세대로 롤백sudo nixos-rebuild switch --rollback # 세대 목록 확인sudo nix-env --list-generations --profile /nix/var/nix/profiles/system # 오래된 세대 정리sudo nix-collect-garbage -d
Nix Flakes (현대적 방식)
ℹ️
Flakes는 실험적 기능이지만 재현성을 더욱 강화하고 대부분의 현대 NixOS 사용자가 채택합니다.
# /etc/nixos/configuration.nix에 추가:nix.settings.experimental-features = [ "nix-command" "flakes" ]; # flake.nix 작성 후:sudo nixos-rebuild switch --flake /etc/nixos#hostname
Home Manager (사용자 환경 선언적 관리)
# Home Manager 채널 추가nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz home-managernix-channel --update # 설치nix-shell '<home-manager>' -A install # ~/.config/home-manager/home.nix 작성# home.packages, programs.git, programs.zsh 등 선언적 관리
시스템 요구사항
| 최소 RAM | 4 GB (데스크톱) / 1 GB (CLI 서버) |
| 최소 저장공간 | 20 GB (시간이 지나면 /nix/store 증가 — 50 GB 이상 권장) |
| 지원 아키텍처 | x86_64, ARM64, RISC-V |
| 패키지 관리자 | Nix (nix-env, nix profile) |
| Init 시스템 | systemd |
| 릴리즈 주기 | 6개월 (24.05, 24.11, 25.05, ...) |
| 패키지 수 | 80,000+ (Nixpkgs, 세계 최대 수준) |
| 공식 문서 | nixos.org/manual ↗ |