본문으로 이동

GNU Guix

한울위키, 우리 모두의 백과사전.
GNU Guix
저장소
  • {{URL|example.com|optional display text}}모듈:EditAtWikidata 29번째 줄에서 Lua 오류: attempt to index field 'wikibase' (a nil value).
프로그래밍 언어가일 스킴, C++ (닉스 코어)
엔진
    모듈:EditAtWikidata 29번째 줄에서 Lua 오류: attempt to index field 'wikibase' (a nil value).
    라이선스GPLv3+
    웹사이트guix.gnu.org/en/

    GNU Guix(/ɡks/;[1] 가일과 닉스의 혼성어[2])는 닉스 패키지 관리자를 기반으로 하는 함수형 크로스 플랫폼 패키지 관리자이자 리스프 머신유닉스 계열 운영 체제를 인스턴스화하고 관리하는 도구이다. 구성 및 패키지 레시피는 가일 스킴으로 작성된다. GNU Guix는 GNU Guix 시스템 배포판의 기본 패키지 관리자이다.[3]

    기존 패키지 관리자와는 달리 Guix는 (Nix처럼) 소프트웨어가 암호화 해시를 통해 생성된 고유 디렉터리에 설치되는 순수한 함수형 배포 모델을 사용한다. 각 소프트웨어의 모든 종속성은 각 해시의 입력에 포함된다.[4][5] 이는 의존성 지옥 문제를 해결하여[6] 동일한 소프트웨어의 여러 버전이 공존하도록 허용하여 패키지를 이식 가능하고 재현 가능하게 만든다. Guix 설정에서 과학적 계산을 수행하는 것은 복제 위기에 대한 유망한 대응으로 제안되었다.[7][8]

    GNU Guix의 개발은 Linux-libre 커널과 GNU Shepherd init 시스템을 사용하는 설치 가능한 운영체제 배포판인 GNU Guix 시스템과 밀접하게 관련되어 있다.[9][10][11][12]

    일반적인 기능

    Guix 패키지는 패키지 관리를 위해 특별히 설계된 함수형 가일 스킴 API를 통해 정의된다. 종속성은 "파생"이라고 하는 특수 값을 통해 이 언어에서 직접 추적되며, 이는 Guix 데몬에 의해 느긋하게 평가된다. Guix는 이러한 참조를 자동으로 추적하여 설치된 패키지가 다른 패키지에 종속되지 않을 때 가비지 컬렉션될 수 있도록 한다. 더 큰 저장 공간 요구 사항을 대가로, Guix의 모든 업그레이드는 원자적이며 롤백할 수 있다.

    Guix의 롤백 기능은 Nix의 설계에서 상속되었으며 다른 운영체제에서는 거의 찾아볼 수 없는데, 이는 시스템이 작동하는 방식에 대한 이단적인 접근 방식(예: MicroOS)을 요구하기 때문이다. Guix 패키지 관리자는 Nix와 마찬가지로 데비안Parabola와 같은 많은 배포판에서 사용할 수 있다.[13][14] 이를 통해 여러 사용자가 관리자 권한 없이 동일한 시스템에 소프트웨어를 안전하게 설치할 수도 있다.

    기존 패키지 관리자와 비교할 때 Guix 패키지 스토어는 상당히 커질 수 있으므로 더 많은 대역폭을 필요로 한다. 그러나 의존성 지옥을 해결하는 데 일반적으로 사용되는 컨테이너 솔루션(예: 도커)과 비교할 때 Guix는 더 가볍고 중복배제단일 진실 공급원과 같은 관행을 준수한다. 사용자가 모든 것을 소스에서 빌드하도록 선택하면 훨씬 더 많은 저장 공간과 대역폭이 필요하다.

    저장소

    Nix의 설계에서 상속된 대로, 패키지 관리자의 대부분의 내용은 Guix 데몬만이 쓰기 권한을 가지는 `/gnu/store` 디렉토리에 보관된다. 이는 특수 바인드 마운트를 통해 이루어진다. 이 마운트를 통해 스토어는 파일 시스템으로 읽기 전용으로 마운트되어 루트 사용자조차도 간섭할 수 없으며, Guix 데몬은 자체 프라이빗 네임스페이스에서 스토어를 읽기/쓰기 가능으로 다시 마운트한다. Guix는 이 데몬과 통신하여 스토어에 보관되는 항목을 빌드하거나 대체 항목을 가져온다. 사용자는 스토어를 쓰기 가능으로 다시 마운트하여 수동으로 만지는 것을 권장하지 않는다. 이는 스토어의 전체 목적을 상실시키기 때문이다.

    가비지 컬렉션

    Guix는 Nix와 마찬가지로 사용되지 않는 저장소 항목을 제거하고 활성 항목을 유지하는 데 도움이 되는 내장 가비지 컬렉션 기능을 가지고 있다.[15]

    패키지 정의

    다음은 헬로 패키지에 대한 패키지 정의의 예시이다.

    (use-modules
      (guix packages)
      (guix download)
      (guix build-system gnu)
      (guix licenses))
    
    (define-public hello
      (package
       (name "hello")
       (version "2.10")
       (source (origin
                (method url-fetch)
                (uri (string-append "mirror://gnu/hello/hello-" version
                                    ".tar.gz"))
                (sha256
                 (base32
                  "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
       (build-system gnu-build-system)
       (synopsis "Hello, GNU world: An example GNU package")
       (description
        "GNU Hello prints the message \"Hello, world!\" and then exits.  It
     serves as an example of standard GNU coding practices.  As such, it supports
     command-line arguments, multiple languages, and so on.")
       (home-page "https://www.gnu.org/software/hello/")
       (license gpl3+)))
    

    이것은 Guile을 사용하여 작성되었다. 패키지 레시피는 Guix에서 쉽게 검사(예: `guix edit hello` 실행)하고 변경할 수 있어 시스템을 투명하고 쉽게 수정할 수 있다.

    트랜잭션 업그레이드

    Nix의 설계에서 상속된 대로, 저장소 항목의 모든 조작은 서로 독립적이며, 저장소의 디렉터리는 파생 소스 코드와 해당 입력의 base32 인코딩 해시로 시작한다.

    프로필

    Guix 패키지는 프로필 세대를 사용하는데, 이는 사용자가 프로필에 설치한 것을 모두 포함하는 특정 저장소 항목에 대한 심볼릭 링크("심링크"라고도 함) 모음이다. 패키지가 설치되거나 제거될 때마다 새 세대가 빌드된다. 예를 들어, GNU Hello만 설치한 사용자의 프로필에는 현재 사용 중인 Guix로 설치된 Hello 버전이 포함된 저장소 항목에 대한 링크가 포함되어 있다. Guix 버전 `c087a90e06d7b9451f802323e24deb1862a21e0f`에서는 이 항목이 `md2plii4g5sk66wg9cgwc964l3xwhrm9-hello-2.10`에 해당한다(위 레시피에서 빌드됨).

    심볼릭 링크 외에도 Guix가 빌드하는 각 프로필에는 모든 인포 매뉴얼맨 페이지, 아이콘, 글꼴 등이 통합되어 있어 사용자가 문서를 탐색하고 설치된 모든 아이콘과 글꼴에 접근할 수 있다. 프로필 세대에 대한 기본 심볼릭 링크는 `/var/guix` 아래에 저장된다.

    다중 사용자 프로필

    사용자는 guix package -p PROFILE-NAME COMMAND를 호출하여 원하는 수의 프로필을 생성할 수 있다. 그러면 현재 디렉토리에 프로필 이름과 프로필 세대 심링크가 있는 새 디렉토리가 생성된다.

    롤백

    Guix 패키지는 이전 프로필 세대로의 심링크를 변경하여 이전 프로필 세대로 즉시 롤백할 수 있다.[16] 프로필은 또한 저장소에 저장된다. 예를 들어, 이 항목은 위에 있는 hello를 포함하는 프로필이다: /gnu/store/b4wipjlsapvnijmbawl7sh76087vpl4n-profile (guix install hello를 실행할 때 빌드 및 활성화됨).

    셸 환경

    Guix 셸을 사용하면 사용자는 여러 프로젝트의 종속성으로 인해 기본 프로필이 지저분해지지 않고도 소프트웨어 개발에 필요한 모든 패키지가 있는 환경에 쉽게 진입할 수 있다.[17]

    예를 들어, guix shell --development hello를 실행하면 Guix에서 hello를 컴파일하는 데 필요한 모든 것(gcc, guile 등)이 존재하는 일회성 환경으로 진입한다.

    --development 플래그 없이는 hello 패키지만 설치되고 빌드 종속성은 설치되지 않는다. 이는 패키지의 종속성을 기본적으로 설치하는 guix environment 명령을 대체하는데, 이 명령은 기본적으로 지정된 패키지를 설치하고 개발 종속성은 플래그를 통해서만 설치하는 것이 더 직관적이라고 생각되었기 때문이다.[18]

    영구 개발 환경

    사용자가 다음 Guix 가비지 컬렉터 실행 시 가비지 컬렉션되지 않는 영구적인 gc-루트 환경을 원하면 루트를 생성할 수 있다. 예를 들어, guix shell --root=hello-root --development hello를 실행하면 Guix를 컴파일하는 데 필요한 모든 것이 존재하는 환경으로 진입하며, 현재 디렉터리에 루트로 등록된다(저장소의 항목에 심링크를 통해).

    Guix pack을 사용하면 사용자가 저장소 항목을 묶어 도커 바이너리 이미지, 재배치 가능한 tarball, 데비안 패키지 파일, RPM 패키지 파일, AppImage 또는 squashfs 바이너리로 출력할 수 있다.[19][20][21]

    그래프

    Guix 그래프 기능을 통해 사용자는 패키지와 해당 종속성의 다양한 그래프를 볼 수 있다.[22]

    타사 채널

    Guix를 사용하면 사용자가 패키지 정의를 위한 추가 채널을 지정할 수 있다.[23]

    이 기능은 주 프로젝트에 패키징할 수 없는 비자유 소프트웨어 및 펌웨어를 설치하는 데도 사용할 수 있다.[24][25]

    GNU Guix 시스템 (운영체제)

    GNU Guix System
    파일:Guix logo.svg
    파일:Guixsd-xfce-icecat-emacs.png
    Xfce, GNU IceCatGNU 이맥스를 실행하는 GNU Guix 시스템
    개발자GNU 프로젝트[26][27]
    OS 계열리눅스 (유닉스 계열), 리스프 머신
    상태현재[28]
    소스 형태자유 소프트웨어, FSDG
    저장소
    • {{URL|example.com|optional display text}}모듈:EditAtWikidata 29번째 줄에서 Lua 오류: attempt to index field 'wikibase' (a nil value).
    마케팅 대상데스크톱
    패키지 관리자GNU Guix
    플랫폼x86_64, i686, aarch64, armv7, powerpc64le
    커널모놀리식: Linux-libre (운영 중) 마이크로커널: GNU Hurd (개발 중)
    유저랜드GNU
    라이선스GPL
    공식 웹사이트guix.gnu.org

    GNU Guix 시스템 또는 Guix 시스템[29][30](이전 이름 GuixSD[31])은 Nix를 중심으로 구축된 NixOS와 유사하게 Guix를 중심으로 구축된 롤링 릴리스 자유-오픈 소스 리눅스 배포판이다.[32][33] 이는 선언적 운영 체제 구성을 가능하게 하고[34] 사용자가 롤백할 수 있는 시스템 업그레이드를 허용한다.[35] GNU Shepherd Init 시스템[36][37]Linux-libre 커널을 사용하며, GNU Hurd 커널은 개발 중이다.[38] 2015년 2월 3일, 자유 소프트웨어 재단은 이 배포판을 승인된 자유 리눅스 배포판 목록에 추가했다.[39]

    아키텍처 지원

    다음 CPU 아키텍처가 지원된다.[40]

    시스템 서비스

    가일 스킴으로 정의된 시스템 서비스는[44] 사용자가 데몬 및 백그라운드 서비스의 구성을 선언적으로 구성하고 구성을 지정할 수 있도록 한다. 이를 통해 사용자는 단일 구성 파일 또는 모듈화된 구성 내에서 전체 운영 체제를 구성할 수 있다(예: Tor 프록시, ssh 서버, 부팅 시 특정 포트에서 Nginx를 통해 guix-web을 제공하는 웹 서버). 다음을 수행할 수 있다.[45]

    • 파일 시스템에 파일 생성 (일부 애플리케이션에 필요, 예: /etc의 파일)
    • 데몬 설정을 위한 모든 코드 실행
    • 특정 사용자 및 그룹 계정 생성 (예: PostgreSQL용 데이터베이스 사용자)

    GNU Shepherd init 시스템

    GNU Guix 시스템은 이전에 "dmd"("Daemon managing Daemons")로 알려졌던 GNU 데몬 셰퍼드를 Init 시스템으로 사용하며, 이는 Guix와 함께 개발되었고 가일로 작성되고 구성할 수 있다.[46] 이는 사용자 공간 기능을 서비스로 비동기적으로 제공하며, Shepherd 하의 서비스는 제네릭 함수객체 자료형으로, 정의된 방식으로 기본 운영 체제를 확장하는 데 사용한다. Systemd와 달리 사용자 공간 셰퍼드 프로세스는 사용자로 실행된다. Shepherd 모델의 사용자 공간 초기화의 핵심은 확장 개념으로, 서비스가 다른 서비스 위에 계층화되어 원하는 대로 더 정교하거나 전문화된 동작으로 증강되도록 설계되는 합성 가능성의 한 형태이다.[47] 이는 많은 최신 초기화 시스템에서 발견되는 인스턴스화 기반 종속성 관계를 표현하지만,[48] 또한 서비스가 다른 서비스와 가변적으로 임의의 방식으로 상호 작용할 수 있도록 한다. 예를 들어, 두 개의 다른 서비스를 확장하는 서비스는 하나만 존재하는 것을 요구하지만, 두 번째 서비스가 나중에 추가 구성이나 설정 없이 인스턴스화되면 쉽게 확장할 수 있다.

    셰퍼드는 또한 시스템에 대한 메일 전송 에이전트(MTA)를 인스턴스화하는 모든 서비스와 같이 관련 서비스 객체 클래스에 대한 동적 디스패치를 허용하는 가상 서비스를 제공한다.[49] 셰퍼드 데몬에 의해 관리되는 시스템은 사용자 공간을 유향 비순환 그래프로 표현할 수 있으며, 시스템 부팅 및 초기화의 초기 단계를 담당하는 "시스템 서비스"를 루트로, 그리고 이후에 초기화된 모든 서비스를 시스템 서비스 기능의 확장으로, 직접 또는 다른 서비스를 통해 간접적으로 표현할 수 있다.[47][50]

    시스템 관리자가 Guile Scheme을 사용하여 높은 프로그래밍 가능성을 제공하도록 의도되었지만, 비특권 데몬 및 서비스의 사용자별 프로필을 관리하는 데에도 사용할 수 있다.[51] 해당 서비스와 구성은 스킴 코드로 통일된 객체 지향으로 저장되며, 기본 GNU Guix 시스템과 함께 핵심 서비스 세트가 제공되지만,[52] 임의의 새로운 서비스를 유연하게 선언할 수 있으며, Guile의 객체 시스템, GOOPS를 통해 기존 서비스를 사용자의 재량에 따라 재정의할 수 있다. 이는 Shepherd에게 인스턴스화 시 지정된 방식으로 서비스를 동적으로 재작성하도록 요청하는 방식으로 이루어진다.[53][54]

    GNU Shepherd는 원래 GNU Hurd와 함께 작동하도록 설계되었으며, 이후 GNU Guix 시스템에 채택되었다.[55]

    롤백

    Nix의 롤백 기능과 유사하게, 시스템 업데이트로 인해 사용자의 시스템이 손상된 경우, 사용자는 단일 명령 `guix package --roll-back`으로 개별 패키지뿐만 아니라 전체 시스템 상태를 쉽게 롤백할 수 있다.[56]
    이는 guix pull을 통해 업데이트하려 할 때 버그를 보고하고 몇 분을 기다릴 의향이 있는 사용자에게는 다른 리눅스 배포판에서 매우 흔한 안정 채널이 더 이상 필요하지 않다는 것을 의미한다. 이는 각 패키지와 시스템 구성을 불변하고 재현 가능한 엔티티로 취급하는 Guix의 함수형 패키지 관리자[57]와 시스템 구성의 이력을 "세대"로 유지하는 세대 시스템의 조합으로 달성된다. 이러한 세대는 별도의 프로필로 저장되어 사용자가 이전 구성으로 롤백할 수 있도록 하며,[58] 이러한 세대는 `guix package --list-generations`로 볼 수 있다.

    평가

    DistroWatch Weekly의 제시 스미스는 GNU Guix 시스템 0.15.0(당시 GuixSD로 명명)을 검토하고 "GuixSD는 마음에 드는 패키지 관리자를 가지고 있다"고 말했지만, 제한적인 하드웨어 지원과 제한적인 문서화를 비판했다.[59] 그 이후로 문서화는 비디오[60]와 튜토리얼, 사용 방법 가이드 및 예시가 포함된 6개 언어의 요리책[61]으로 확장 및 개선되었다.

    재현 가능한 과학적 워크플로우

    Guix가 기존 패키지 관리자에 비해 사용자에게 개선된 점을 제공하고자 하는 특정 영역 중 하나는 주로 고성능 컴퓨팅 분야의 재현 가능한 과학적 워크플로우이다.[62] 이러한 방식으로 Guix는 재현 가능한 계산 환경을 공유하는 방법을 제공한다. 즉, 특정 과학 소프트웨어/환경에 대한 레시피를 사용하는 Guix는 해당 소프트웨어를 빌드하고 실행하는 데 필요한 종속성 트리를 고유하게 설명하는 데 필요한 모든 정보를 제공한다.[63] 이는 예를 들어 각 프로그래밍 언어에 대해 여러 패키지 관리자가 있는 다른 혼합 시스템에서는 쉽게 달성할 수 없을 것이다. 그러나 이것은 과학적 워크플로우가 재현 가능하기 위한 필요 조건일 뿐 충분 조건은 아니다. 데이터 수집 및 처리를 워크플로우에 통합해야 하며, 이것이 Guix 레시피의 일부로 추가되면 엄격한 재현성 요구 사항을 충족할 수 있다.

    역사

    이 프로젝트는 GNU Guile 해커 중 한 명인 루도비크 쿠르테에 의해 2012년 6월에 시작되었다.[64]

    GNU 프로젝트는 2012년 11월에 Nix를 기반으로 하는 함수형 패키지 관리자인 GNU Guix의 첫 번째 릴리스를 발표했으며, 이는 가일 스킴 API 등을 제공한다.[65]

    2015년 8월 20일, Guix가 GNU Hurd로 이식되었다고 발표되었다.[66]

    릴리스

    이 프로젝트는 정해진 릴리스 일정이 없으며 지금까지 약 6개월마다 릴리스되었다.

    1.4.0 릴리스 이후 2년 이상 공백이 있었기 때문에 곧 1.5.0 릴리스가 있을 예정이다.[67]

    이 프로젝트는 2025년 5월 25일에 GNU 사바나에서 Codeberg로 마이그레이션되었다.[68]

    버전 역사

    버전 발표 지원 아키텍처 패키지
    0.1 (알파) Courtès, Ludovic (2013년 1월 18일). “GNU Guix 0.1 released (alpha)”.  i686, x86_64 ~150
    0.2 (알파) Courtès, Ludovic (2013년 5월 12일). “GNU Guix 0.2 released (alpha)”.  ~400
    0.3 Courtès, Ludovic (2013년 7월 17일). “GNU Guix 0.3 released”.  ~430
    0.4 Courtès, Ludovic (2013년 9월 27일). “GNU Guix 0.4 released”.  ~490
    0.5 Courtès, Ludovic (2013년 12월 11일). “GNU Guix 0.5 released”.  ~600
    0.6 Courtès, Ludovic (2014년 4월 9일). “GNU Guix 0.6 released”.  ~691
    0.7 Courtès, Ludovic (2014년 7월 25일). “GNU Guix 0.7 released”.  ~825
    0.8 Courtès, Ludovic (2014년 11월 18일). “GNU Guix 0.8 released”.  i686, x86_64, mips64el ~987
    0.8.1 Courtès, Ludovic (2015년 1월 29일). “GNU Guix 0.8.1 released”.  i686, x86_64, mips64el, armv7 ~1151
    0.8.2 Courtès, Ludovic (2015년 5월 14일). “GNU Guix 0.8.2 released”.  ~1869
    0.8.3 Courtès, Ludovic (2015년 7월 22일). “GNU Guix 0.8.3 released”.  ~2048
    0.9.0 Courtès, Ludovic (2015년 11월 5일). “GNU Guix 0.9.0 released”.  ~2591
    0.10.0 Courtès, Ludovic (2016년 3월 29일). “GNU Guix & GuixSD 0.10.0 released”.  ~3230
    0.11.0 Courtès, Ludovic (2016년 8월 3일). “GNU Guix & GuixSD 0.11.0 released”.  ~3714
    0.12.0 Wurmus, Ricardo (2016년 12월 21일). “GNU Guix & GuixSD 0.12.0 released”.  ~4567
    0.13.0 Courtès, Ludovic (2017년 5월 22일). “GNU Guix & GuixSD 0.13.0 released”.  i686, x86_64, mips64el, armv7, aarch64 ~5407
    0.14.0 Courtès, Ludovic (2017년 12월 7일). “GNU Guix & GuixSD 0.14.0 released”.  ~6618
    0.15.0 Courtès, Ludovic (2018년 7월 6일). “GNU Guix & GuixSD 0.15.0 released”.  ~7857
    0.16.0 Courtès, Ludovic (2018년 12월 6일). “GNU Guix & GuixSD 0.16.0 released”.  ~8715
    1.0.0 Courtès, Ludovic (2019년 5월 2일). “GNU Guix 1.0.0 released”.  ~9712
    1.0.1 Courtès, Ludovic (2019년 5월 19일). “GNU Guix 1.0.1 released”.  ~9771
    1.1.0 Courtès, Ludovic (2020년 4월 15일). “GNU Guix 1.1.0 released”.  i686, x86_64, armv7, aarch64 ~13161
    1.2.0 Courtès, Ludovic (2020년 11월 23일). “GNU Guix 1.2.0 released”.  ~15333
    1.3.0 Courtès, Ludovic (2021년 5월 11일). “GNU Guix 1.3.0 released”.  i686, x86_64, powerpc64le, armv7, aarch64 ~17262
    1.4.0 Courtès, Ludovic (2022년 12월 19일). “GNU Guix 1.4.0 released”.  i686, x86_64, powerpc64le, armv7, aarch64 ~22000

    같이 보기

    각주

    1. “GNU Guix Reference Manual”. 《www.gnu.org》. 2018년 4월 23일에 확인함. 
    2. “10 years of stories behind Guix”. 《guix.gnu.org》. 2025년 1월 26일에 확인함. 
    3. Ludovic Courtès (2013). 《Functional Package Management with Guix》. 마드리드, 스페인: European Lisp Symposium. 
    4. Dolstra, E., de Jonge, M. and Visser, E. "Nix: A Safe and Policy-Free System for Software Deployment." In Damon, L. (Ed.), 18th Large Installation System Administration Conference (LISA '04), pages 79–92, Atlanta, Georgia, USA. USENIX, November 2004.
    5. Dolstra, E. The Purely Functional Software Deployment Model. PhD thesis, Faculty of Science, Utrecht, The Netherlands. January 2006. ISBN 90-393-4130-3.
    6. Prins, P., Suresh, J. and Dolstra, E., "Nix fixes dependency hell on all Linux distributions," 보관됨 12월 26, 2008 - 웨이백 머신 linux.com, December 22, 2008
    7. Hinsen, Konrad (July 2020). 《Staged computation: the technique you did not know you were using》. 《Computing in Science and Engineering》 22. 99–103쪽. Bibcode:2020CSE....22d..99H. doi:10.1109/MCSE.2020.2985508. ISSN 1558-366X. S2CID 219990590. 2022년 11월 4일에 확인함.  오픈 액세스로 게시된 글 - 무료로 읽을 수 있습니다
    8. Vallet, Nicolas; Michonneau, David; Tournier, Simon (2022년 10월 4일). 《Toward practical transparent verifiable and long-term reproducible research using Guix》 (PDF). 《Scientific Data》 9. 597쪽. Bibcode:2022NatSD...9..597V. doi:10.1038/s41597-022-01720-9. ISSN 2052-4463. PMC 9532446. PMID 36195618. 2022년 11월 4일에 확인함.  오픈 액세스로 게시된 글 - 무료로 읽을 수 있습니다
    9. “What to call Guix?” (메일링 리스트). gnu-system-discuss. 2015년 1월 15일. 
    10. Programming Interface (GNU Guix Reference Manual)
    11. Guix: A New Package Manager & GNU Distribution - Phoronix
    12. “guix-europe”. 《git.savannah.gnu.org》. 2021년 1월 24일에 원본 문서에서 보존된 문서. 2019년 5월 16일에 확인함. 
    13. “Guix - Debian Package Tracker”. 
    14. “Parabola GNU/Linux-libre - Package Search”. 《www.parabola.nu》. 2021년 9월 14일에 확인함. 
    15. “Invoking guix gc”. 《gnu.org》. 2019년 5월 16일에 확인함. 
    16. “Invoking guix package”. 《gnu.org》. 2019년 5월 16일에 확인함. 
    17. “Invoking guix shell”. 《gnu.org》. 2023년 11월 22일에 확인함. 
    18. “From 'guix environment' to 'guix shell'. 《gnu.org》. 2023년 11월 22일에 확인함. 
    19. “Invoking guix pack”. 《gnu.org》. 2024년 9월 3일에 확인함. 
    20. “news: Add entry for guix pack's AppImage format”. 《Savannah Git Server》. 2024년 11월 7일. 2024년 11월 30일에 확인함. 
    21. “news: Add entry for the new 'rpm' guix pack format.”. 《Savannah Git Server》. 2023년 2월 17일. 2024년 11월 30일에 확인함. 
    22. “Invoking guix graph”. 《gnu.org》. 2019년 5월 16일에 확인함. 
    23. “Specifying Additional Channels (GNU Guix Reference Manual)”. 《GNU Guix》. 2024년 11월 23일에 확인함. 
    24. “Nonguix / nonguix · GitLab”. 《GitLab》. 2024년 11월 23일. 2024년 11월 23일에 확인함. 
    25. “Software Freedom (GNU Guix Reference Manual)”. 《GNU Guix》. 2024년 11월 23일에 확인함. 
    26. “About — GuixSD”. 《gnu.org》. 2017년 4월 12일에 원본 문서에서 보존된 문서. 2017년 3월 16일에 확인함. 
    27. “GNU/Linux FAQ - GNU Project - Free Software Foundation”. 자유 소프트웨어 재단. 2013년 9월 7일에 원본 문서에서 보존된 문서. 2017년 5월 14일에 확인함. 
    28. “Download — GNU Guix”. 2020년 8월 1일에 원본 문서에서 보존된 문서. 2019년 11월 3일에 확인함. 
    29. “About — GNU Guix”. 《guix.gnu.org》. 2021년 12월 11일에 확인함. 
    30. “Free GNU/Linux distributions”. 《www.gnu.org》. 
    31. “What to call Guix?” (메일링 리스트). gnu-system-discuss. 2015년 1월 15일. 2020년 8월 7일에 원본 문서에서 보존된 문서. 2020년 8월 3일에 확인함. 
    32. “List of Free GNU/Linux Distributions”. 《www.gnu.org》. 2020년 7월 6일에 원본 문서에서 보존된 문서. 2015년 2월 3일에 확인함. 
    33. “Guix: A New Package Manager & GNU Distribution”. Phoronix. 2015년 2월 2일에 원본 문서에서 보존된 문서. 2015년 2월 3일에 확인함. 
    34. “Using the Configuration System”. 《www.gnu.org》. 2019년 4월 29일에 원본 문서에서 보존된 문서. 2019년 4월 27일에 확인함. 
    35. “Package Management”. 《www.gnu.org》. 2019년 5월 21일에 원본 문서에서 보존된 문서. 2019년 4월 27일에 확인함. 
    36. “Programming Interface (GNU Guix Reference Manual)”. 《guix.gnu.org》. 2020년 8월 7일에 원본 문서에서 보존된 문서. 2020년 8월 3일에 확인함. 
    37. “Guix: A New Package Manager & GNU Distribution - Phoronix”. 《www.phoronix.com》. 2018년 7월 6일에 원본 문서에서 보존된 문서. 2020년 8월 3일에 확인함. 
    38. “GNU Guix & GuixSD 0.12.0 released” (메일링 리스트). guix-devel. 2016년 12월 21일. 2020년 8월 1일에 원본 문서에서 보존된 문서. 2020년 8월 3일에 확인함. 
    39. “FSF adds GNU Guix System Distribution to list of endorsed distributions”. Free Software Foundation. 2015년 2월 3일. 2015년 2월 3일에 원본 문서에서 보존된 문서. 2015년 2월 3일에 확인함. 
    40. “Download”. 《gnu.org》. 2021년 10월 6일에 원본 문서에서 보존된 문서. 2024년 1월 12일에 확인함. 
    41. Mathieu Othacehe. “Porting GuixSD to ARMv7”. 2017년 12월 25일에 원본 문서에서 보존된 문서. 2018년 2월 17일에 확인함. 
    42. Marusich, Chris; Le Bouter, Léo (2021년 4월 12일). “New Supported Platform: powerpc64le-linux”. 2021년 5월 16일에 원본 문서에서 보존된 문서. 2021년 10월 6일에 확인함. 
    43. “Supported Platforms (GNU Guix Reference Manual)”. 《GNU Guix》. 2024년 10월 23일에 확인함. 
    44. “guix.git”. 《git.savannah.gnu.org》. 2019년 5월 11일에 원본 문서에서 보존된 문서. 2019년 5월 11일에 확인함. 
    45. Wurmus, Ricardo. “Re: Help with preparing to move from Arch Linux to Guix” (메일링 리스트). 2020년 8월 1일에 원본 문서에서 보존된 문서. 2019년 5월 11일에 확인함. 
    46. “guix-devel mailing lists”. 2019년 9월 19일에 원본 문서에서 보존된 문서. 2016년 11월 5일에 확인함. 
    47. “GNU Guix Reference Manual: Service Composition”. GNU Project. 2019년 1월 1일에 원본 문서에서 보존된 문서. 2016년 11월 5일에 확인함. 
    48. “systemd: Unit Dependencies and Order”. Fedora Magazine. 2015년 11월 25일. 2020년 8월 1일에 원본 문서에서 보존된 문서. 2016년 11월 5일에 확인함. 
    49. “The GNU Shepherd Manual: Jump Start”. GNU Project. 2020년 8월 1일에 원본 문서에서 보존된 문서. 2016년 11월 5일에 확인함. 
    50. “GNU Guix Reference Manual: Shepherd Services”. GNU Project. 2019년 1월 1일에 원본 문서에서 보존된 문서. 2016년 11월 5일에 확인함. 
    51. “The GNU Shepherd Manual”. GNU Project. 2020년 8월 1일에 원본 문서에서 보존된 문서. 2016년 11월 5일에 확인함. 
    52. “GNU Guix Reference Manual: Services”. GNU Project. 2018년 12월 25일에 원본 문서에서 보존된 문서. 2016년 11월 5일에 확인함. 
    53. “GNU Guix Reference Manual: Service Types and Services”. GNU Project. 2019년 1월 5일에 원본 문서에서 보존된 문서. 2016년 11월 5일에 확인함. 
    54. “GNU Guix Reference Manual: Using the Configuration System”. GNU Project. 2019년 4월 29일에 원본 문서에서 보존된 문서. 2016년 11월 5일에 확인함. 
    55. “GNU Shepherd”. GNU project. 2016년 2월 12일에 원본 문서에서 보존된 문서. 2016년 2월 12일에 확인함. 
    56. “Invoking guix system”. 《www.gnu.org》. 2019년 5월 26일에 원본 문서에서 보존된 문서. 2019년 4월 27일에 확인함. 
    57. Courtès, Ludovic (2013). “Functional Package Management with Guix”. arXiv:1305.4584 [cs.PL].  arXiv 인용에서 지원되지 않는 변수를 사용함 (도움말)
    58. “Multi-dimensional transactions and rollbacks, oh my!”. 《guix.gnu.org》. 
    59. Smith, Jesse. 《GNU Guix System Distribution 0.15.0 and ReactOS 0.4.9》. 《distrowatch.com》. 2019년 7월 30일에 원본 문서에서 보존된 문서. 2018년 8월 30일에 확인함. 
    60. “Videos”. 2020년 8월 1일에 원본 문서에서 보존된 문서. 2020년 3월 3일에 확인함. 
    61. “Cookbook”. 2020년 8월 1일에 원본 문서에서 보존된 문서. 2020년 3월 3일에 확인함. 
    62. “Guix-HPC — Reproducible software deployment for high-performance computing — Blog” (영어). 《hpc.guix.info》. 2024년 11월 5일에 확인함. 
    63. Vallet, Nicolas; Michonneau, David; Tournier, Simon (2022년 10월 4일). 《Toward practical transparent verifiable and long-term reproducible research using Guix》 (영어). 《Scientific Data》 9. 597쪽. Bibcode:2022NatSD...9..597V. doi:10.1038/s41597-022-01720-9. ISSN 2052-4463. PMC 9532446. PMID 36195618. 
    64. Stallman, Richard (2012년 6월 5일). “A GNU Distribution” (메일링 리스트). gnu-system-discuss. 
    65. Courtès, Ludovic (2012년 11월 23일). “Introducing GNU Guix” (메일링 리스트). gnu-system-discuss. 
    66. Ragkousis, Manolis (2015년 8월 20일). “[GSoC update] Porting Guix to GNU/Hurd” (메일링 리스트). guix-devel. 2015년 8월 20일에 확인함. 
    67. “1.5.0 release?”. 
    68. “Migrating to Codeberg”. 《GNU Guix》. 2025년 5월 11일. 2025년 6월 12일에 확인함. 
    69. “About — GuixSD” (영어). 《www.gnu.org》. 2018년 5월 3일에 확인함. 

    외부 링크

    모듈:Sister_project_links 473번째 줄에서 Lua 오류: attempt to index field 'wikibase' (a nil value).