Git Product home page Git Product logo

flakes's Introduction

简介

这里是由 NixOS 中文社区维护的一个 Nix Flakes , 包括社区成员贡献的一些包以及 NixOS 模块.

目前社区成员主要在 Telegram 群组 进行交流, 另有 Matrix 群组.

使用

# cat flake.nix
{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

  # 引入 nixos-cn flake 作为 inputs
  inputs.nixos-cn = {
    url = "github:nixos-cn/flakes";
    # 强制 nixos-cn 和该 flake 使用相同版本的 nixpkgs
    inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = { self, nixpkgs, nixos-cn }:
    let system = "x86_64-linux";
    in {
      nixosConfigurations.default = nixpkgs.lib.nixosSystem {
        inherit system;
        modules = [
          ({ ... }: {
            # 使用 nixos-cn flake 提供的包
            environment.systemPackages =
              [ nixos-cn.legacyPackages.${system}.netease-cloud-music ];
            # 使用 nixos-cn 的 binary cache
            nix.binaryCaches = [
              "https://nixos-cn.cachix.org"
            ];
            nix.binaryCachePublicKeys = [ "nixos-cn.cachix.org-1:L0jEaL6w7kwQOPlLoCR3ADx+E3Q8SEFEcB9Jaibl0Xg=" ];

            imports = [
              # 将nixos-cn flake提供的registry添加到全局registry列表中
              # 可在`nixos-rebuild switch`之后通过`nix registry list`查看
              nixos-cn.nixosModules.nixos-cn-registries

              # 引入nixos-cn flake提供的NixOS模块
              nixos-cn.nixosModules.nixos-cn
            ];
          })
        ];
      };
    };
}

贡献指南

贡献新的包

例如你希望向 nixos-cn flake 提供 opendrop 这个包:

$ git clone https://github.com/nixos-cn/flakes
$ cd flakes/packages
$ mkdir opendrop
$ cd opendrop
$ $EDITOR default.nix

packages 下的所有 .nix 文件或者包含 default.nix 的文件夹都会被递归地 callPackage 写入 legacyPackages.${system}.${directory-name}, 即 github:nixos-cn/flakes#legacyPackages.opendrop = callPackage ./packages/opendrop, 并且 github:nixos-cn/flakes#legacyPackages.gnome-extension.compiz-windows-effect = callPackage ./packages/gnome-extension/compiz-windows-effect.

贡献新的 NixOS 模块

直接往 module 文件夹中添加任意 .nix 文件. module 文件夹下的所有 .nix 文件或者包含 default.nix 的文件夹都会被递归地 import 到 nixosModules.nixos-cn 中.

假设目前module文件夹的结构如下:

module
├── module-1.nix
├── module-2
│   ├── default.nix
│   ├── helper.nix
│   └── config
│       └── default.nix
└── module-set
    ├── module-1.nix
    └── module—2.nix

nixosModules.nixos-cn 中将包含:

{ ... }: {
  imports = [
    ./module-1.nix
    ./module-2
    ./module-set/module-1.nix
    ./module-set/module-2.nix
  ];
}

贡献新的 Registry entries

如果你不希望将你的包直接加入到 nixos-cn, 也可以选择提供你的 flakes url 作为 registry entry, 可参考 registries.nix 中已有的 registry entries.

registries.nix 中的 entry 会被添加到 nixosModules.nixos-cn-registries 所提供的 registry 列表中, 并且每个 flake 提供的 packages 都会被放入 legacyPackages.re-export. 即 github:nixos-cn/flakes#legacyPackages.re-export = fold (r: s: s // r.packages) {} (getFlakes ./registries.nix).

flakes's People

Contributors

ninlives avatar linyinfeng avatar wineee avatar xddxdd avatar yisuidenghua avatar lexuge avatar ehfive avatar luochen1990 avatar berberman avatar vergedx avatar vonfry avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.