给更新癌推荐一个折腾不死的系统:NixOS

回复
头像
jobinson99
帖子: 1166
注册时间: 2007-04-28 15:14
系统: NixOS+虚拟机各种系统
送出感谢: 0
接收感谢: 5 次
联系:

给更新癌推荐一个折腾不死的系统:NixOS

#1

帖子 jobinson99 » 2015-10-01 12:49

比较特别的一个系统,可以多版本共存,可以还原回任意版本。

有点类似 npm的方式,所有软件安装在一个目录 nix/store 。没有 `/bin` `/sbin` `/lib` `/usr`等目录,所有软件全在 `/nix/store`,除了 `/bin/sh`,配置 `/etc` 是软链到 `/nix/store`。——绝对绿软了。

支持 二进制安装 或者 源码编译。编译脚本相对PKGBUILD来说,比较智能,和gentoo的差不多。

这系统要是稳定下来,非常适合当 服务器,编程用桌面,是个干活用的好系统。

当然,这样的设计,比较消耗磁盘空间。

国庆没出去泡妞的,有新玩具了。

系统主页:www.nixos.org
下载地址:https://nixos.org/nixos/download.html
软件仓库:https://github.com/NixOS/nixpkgs


提醒一句:
想尝试的同学,有个问题,和早期arch一样:网络!!!
所以,先不要像我下面那样,安装系统时一次太多软件,否则网速往往不够给力。

后面系统里的软件安装,可以直接编译安装,就不会这么痛苦了。
上次由 jobinson99 在 2015-11-14 18:30,总共编辑 1 次。
黑色的不是眼睛,而是眼圈
关注和实现科技领域未来3年内有大规模普及潜力、能改善穷人生活品质的技术/应用。
双路 + NixOS + lxde + qemu/spice + 智能生产线研发 + 柔性电路
头像
jobinson99
帖子: 1166
注册时间: 2007-04-28 15:14
系统: NixOS+虚拟机各种系统
送出感谢: 0
接收感谢: 5 次
联系:

Re: 给更新癌推荐一个折腾不死的系统:NixOS

#2

帖子 jobinson99 » 2015-10-01 21:58

自己实测记录来了,逐步更新,感觉还不错,安装过程简单。

## 系统安装: ##

1. 先分区:可使用镜像里带的gparted,如果下载的镜像没这东西,随便找张linux安装盘,利用里面的工具分区格式化之……然后退出,使用nixos镜像。

2. 挂载和启用swap

代码: 全选

        mount /dev/sdx1 /mnt/
        swapon /dev/sdx2
3. 生成系统配置文件模板:会生成两个配置文件 configuration.nix(总控) 和 hardware-configuration.nix(分区设定)

代码: 全选

    nixos-generate-config --root /mnt
4. 修改配置:行首是`#`的表示不执行,默认大部分都不执行,需要改为可执行(去掉行首的`#`)

需要修改的项:
  • - boot.loader.grub.device 指定引导器安装位置
    - networking.hostName 设定主机名
    - i18n 设定语言
    - time.timeZone 设定时区
    - environment.systemPackages 设定系统级软件,默认只有wget
    - services.openssh.enable 启用的守护进程,有一系列,根据需要开启关闭。
    - 设置新用户名和预置密码
具体设置可`man configuration.nix` 查看。

[别人的配置示例](https://nixos.org/repos/nix/configurations/trunk/)

配置完成后,安装系统:

代码: 全选

    nixos-install
若因为网络啥的问题安装失败或者更改了configuration.nix,要继续安装或者刷新配置,也是这个命令`nixos-install`

安装到最后一步,会要求设置root密码:修改密码用 `passwd`

代码: 全选

    setting root password...
    Enter new UNIX password: ***
    Retype new UNIX password: ***
全部搞定后,重启

代码: 全选

   reboot
看看有啥软件可安装

代码: 全选

    nix-env -qa \*
安装

代码: 全选

    nix-env -i w3m

我的配置:还比较乱,过阵子再整理。

代码: 全选


# Edit this configuration file to define what should be installed on
# your system.  Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).

{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  # Use the GRUB 2 boot loader.
  boot.loader.grub.enable = true;
  boot.loader.grub.version = 2;
  # Define on which hard drive you want to install Grub.
  boot.loader.grub.device = "/dev/sda";

# file system mount point

  fileSystems = [
      { mountPoint = "/home";
        device = "/dev/disk/by-uuid/4955738b-a555-4e5c-8bc7-a9b42599f777";
        fsType = "ext4";
      }
      { mountPoint = "/docs";
        device = "/dev/disk/by-uuid/b645272f-dad7-40aa-9701-6cd6a1657eb0d";
        fsType = "ext4";
      }
  ];

  # networking setting
  
  networking = {
        # nameservers = [ "8.8.8.8" ];
      hostName = "atlas"; # Define your hostname.
        extraHosts = "74.125.206.93 dl-ssl.google.com";
      # networkmanager.enable = true;
      wireless.enable = true;  # Enables wireless support via wpa_supplicant.
      enableB43Firmware = true;  # for my laptop wireless card firmware
  };
   
  # Select internationalisation properties.
  i18n = {
     consoleFont = "Lat2-Terminus16";
     consoleKeyMap = "us";
     defaultLocale = "en_US.UTF-8";
     supportedLocales = [ "en_US.UTF-8/UTF-8" 
                "zh_CN.UTF-8/UTF-8" 
                "zh_CN/GB2312" 
                "zh_CN.GBK/GBK" 
                "zh_CN.GB18030/GB18030" 
                "zh_TW.UTF-8/UTF-8"
                "zh_TW/BIG5" ];
   };

  # Set your time zone.
   time.timeZone = "Asia/Shanghai";

  # List packages installed in system profile. To search by name, run:
  # $ nix-env -qaP | grep wget
  environment.systemPackages = with pkgs; [
     wget
     openbox
     sddm
     git
     w3m
     luakit
     firefox fcitx goldendict
     calligra emacs libreoffice okular
    wqy-zenhei kde-l10n-zh_CN virt-manager
    openjdk openjre
    android-sdk
    gwenview gimp inkscape blender
   ];

  # allow unfree packages
  nixpkgs.config.allowUnfree = true;
  
  # nix mirrors
  nix.trustedBinaryCaches = [
      "http://cache.nixos.org"
  ];

  boot.kernelModules = [ "kvm-amd" "wl" "tun" "virtio" ];

  # 虚拟化
  virtualisation = {
        # qemu

        # libvirtd for virt-manager
         libvirtd.enable = true;
    };

  # List services that you want to enable:

        # Enable the OpenSSH daemon.
        # services.openssh.enable = true;

        # Enable CUPS to print documents.
        # services.printing.enable = true;

  # GUI configuration
  services.xserver = {
        # Enable the X11 windowing system.
        enable = true;
        layout = "us";
        xkbOptions = "eurosign:e";

        ## for my ati graphics card
        # services.xserver.videoDrivers = [ "ati_unfree" ];

        # Enable the KDE Desktop Environment.
        displayManager.sddm.enable = true;
        # displayManager.kdm.enable = true;
        desktopManager.kde4.enable = true;
        # Enable openbox
        windowManager.openbox.enable = true;
   };
   
  ## hardware acceleration for 32-bit programs
  # hardware.opengl.driSupport32Bit = true;
  # Define a user account. Don't forget to set a password with ‘passwd’.
  # users.extraUsers.guest = {
  #   isNormalUser = true;
  #   uid = 1000;
  # };
  users.extraUsers.atlas = {
        uid = 1000;
        group = "users";
        extraGroups = ["wheel" "audio" "video" "libvirtd"];
        home = "/home/atlas";
        isSystemUser = false;
        useDefaultShell = true;
        initialPassword = "1234567890";
        };

  # The NixOS release to be compatible with for stateful data such as databases.
  system.stateVersion = "15.09";
}
上次由 jobinson99 在 2015-11-14 18:11,总共编辑 4 次。
黑色的不是眼睛,而是眼圈
关注和实现科技领域未来3年内有大规模普及潜力、能改善穷人生活品质的技术/应用。
双路 + NixOS + lxde + qemu/spice + 智能生产线研发 + 柔性电路
头像
susbarbatus
帖子: 2967
注册时间: 2010-04-10 16:14
系统: Arch Linux
送出感谢: 6 次
接收感谢: 68 次

Re: 给更新癌推荐一个折腾不死的系统:NixOS

#3

帖子 susbarbatus » 2015-10-01 22:07

同事用过一阵,开始吹得天花乱坠,后来嫌源里的包太少了弃掉了
沉迷将棋中……
头像
jobinson99
帖子: 1166
注册时间: 2007-04-28 15:14
系统: NixOS+虚拟机各种系统
送出感谢: 0
接收感谢: 5 次
联系:

Re: 给更新癌推荐一个折腾不死的系统:NixOS

#4

帖子 jobinson99 » 2015-10-01 22:39

susbarbatus 写了:同事用过一阵,开始吹得天花乱坠,后来嫌源里的包太少了弃掉了
自己编译,哈哈,其编译器可自动识别autoconf类的配置,比arch 的abs智能点,要不可直接从aur.archlinux.org 或者gentoo上抄点,所以也还可以的。

代码: 全选

    with import <nixpkgs> { };
    
    stdenv.mkDerivation {
      name = "nano-2.3.2";
    
      # The source tarball, downloaded into some place in the Nix store.
      src = fetchurl {
        url = ftp://ftp.gnu.org/pub/gnu/nano/nano-2.3.2.tar.gz;
        sha256 = "1s3b21h5p7r8xafw0gahswj16ai6k2vnjhmd15b491hl0x494c7z";
      };
    
      # The dependencies, referring to variables in <nixpkgs>.
      buildInputs = [ ncurses gettext ];
    
      # 默认可获得 autoconf类脚本,因此此部分不是必须的。
      buildCommand =
        ''
          tar xf $src
          cd nano-*
          ./configure --prefix=$out
          make
          make install
        '';
    }
黑色的不是眼睛,而是眼圈
关注和实现科技领域未来3年内有大规模普及潜力、能改善穷人生活品质的技术/应用。
双路 + NixOS + lxde + qemu/spice + 智能生产线研发 + 柔性电路
头像
jobinson99
帖子: 1166
注册时间: 2007-04-28 15:14
系统: NixOS+虚拟机各种系统
送出感谢: 0
接收感谢: 5 次
联系:

Re: 给更新癌推荐一个折腾不死的系统:NixOS

#5

帖子 jobinson99 » 2015-10-21 19:35

重要补充:如果其二进制库 https://cache.nixos.org 连不上,可以直接源码编译,方法:

代码: 全选

# 安装系统

nixos-rebuild switch --option use-binary-caches false

# 安装软件
nix-env -i xxx --option use-binary-caches false

# 比如:
nix-env -i firefox --option use-binary-caches false
当然,也可以手动指定镜像,不过目前nixos没有镜像!!!!

代码: 全选

nixos-rebuild switch --option use-binary-caches http://镜像地址
黑色的不是眼睛,而是眼圈
关注和实现科技领域未来3年内有大规模普及潜力、能改善穷人生活品质的技术/应用。
双路 + NixOS + lxde + qemu/spice + 智能生产线研发 + 柔性电路
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 给更新癌推荐一个折腾不死的系统:NixOS

#6

帖子 lilydjwg » 2015-11-11 1:31

nix 哪里类似 npm 了?nix 明明类似 git,所有东西都通过 hash 来定位,都存在一个地方。

另外推荐不喜欢 nix 自创语言的人 guix,来自 GNU,使用 guile 的。
头像
jobinson99
帖子: 1166
注册时间: 2007-04-28 15:14
系统: NixOS+虚拟机各种系统
送出感谢: 0
接收感谢: 5 次
联系:

Re: 给更新癌推荐一个折腾不死的系统:NixOS

#8

帖子 jobinson99 » 2015-11-14 17:29

lilydjwg 写了:nix 哪里类似 npm 了?nix 明明类似 git,所有东西都通过 hash 来定位,都存在一个地方。

另外推荐不喜欢 nix 自创语言的人 guix,来自 GNU,使用 guile 的。
它的依赖管理方式像npm,
文件存储像git


guix有成型的操作系统了么?


这系统的软件库已经很丰富,够用,除了桌面已经换上这货,虚拟机里已经克隆一堆了:
vboxserver.nix qemuserver.nix vdocker.nix vphp.nix vnodejs.nix vruby.nix ……
黑色的不是眼睛,而是眼圈
关注和实现科技领域未来3年内有大规模普及潜力、能改善穷人生活品质的技术/应用。
双路 + NixOS + lxde + qemu/spice + 智能生产线研发 + 柔性电路
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 给更新癌推荐一个折腾不死的系统:NixOS

#9

帖子 lilydjwg » 2015-11-14 17:41

jobinson99 写了:
lilydjwg 写了:nix 哪里类似 npm 了?nix 明明类似 git,所有东西都通过 hash 来定位,都存在一个地方。

另外推荐不喜欢 nix 自创语言的人 guix,来自 GNU,使用 guile 的。
它的依赖管理方式像npm,
文件存储像git


guix有成型的操作系统了么?


这系统的软件库已经很丰富,够用,除了桌面已经换上这货,虚拟机里已经克隆一堆了:
vboxserver.nix qemuserver.nix vdocker.nix vphp.nix vnodejs.nix vruby.nix ……
它的依赖管理难道不是 stow 那样的吗?npm 那样子很坑的,没有确定性。

guix 有操作系统了,不过没试过,不知道用起来如何。另外 guix 似乎是在 GNU 的服务器上,没 CDN。
头像
jobinson99
帖子: 1166
注册时间: 2007-04-28 15:14
系统: NixOS+虚拟机各种系统
送出感谢: 0
接收感谢: 5 次
联系:

Re: 给更新癌推荐一个折腾不死的系统:NixOS

#10

帖子 jobinson99 » 2015-11-14 17:53

lilydjwg 写了:
jobinson99 写了:
lilydjwg 写了:nix 哪里类似 npm 了?nix 明明类似 git,所有东西都通过 hash 来定位,都存在一个地方。

另外推荐不喜欢 nix 自创语言的人 guix,来自 GNU,使用 guile 的。
它的依赖管理方式像npm,
文件存储像git


guix有成型的操作系统了么?


这系统的软件库已经很丰富,够用,除了桌面已经换上这货,虚拟机里已经克隆一堆了:
vboxserver.nix qemuserver.nix vdocker.nix vphp.nix vnodejs.nix vruby.nix ……
它的依赖管理难道不是 stow 那样的吗?npm 那样子很坑的,没有确定性。

guix 有操作系统了,不过没试过,不知道用起来如何。另外 guix 似乎是在 GNU 的服务器上,没 CDN。
不了解stow啊,实际也不是npm方式,因为npm是直接拷一份进去,而nixos是软链到特定的用户空间里。

nixos现在github上团队不小了,而且发展这么多年,资源已经足够日常使用了。
黑色的不是眼睛,而是眼圈
关注和实现科技领域未来3年内有大规模普及潜力、能改善穷人生活品质的技术/应用。
双路 + NixOS + lxde + qemu/spice + 智能生产线研发 + 柔性电路
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 给更新癌推荐一个折腾不死的系统:NixOS

#11

帖子 lilydjwg » 2015-11-14 18:27

jobinson99 写了: 不了解stow啊,实际也不是npm方式,因为npm是直接拷一份进去,而nixos是软链到特定的用户空间里。

nixos现在github上团队不小了,而且发展这么多年,资源已经足够日常使用了。
npm 不是拷贝一份,是拷贝多份,放依赖方的子目录里边。所以有时候会出现路径太长的错误。
头像
jobinson99
帖子: 1166
注册时间: 2007-04-28 15:14
系统: NixOS+虚拟机各种系统
送出感谢: 0
接收感谢: 5 次
联系:

Re: 给更新癌推荐一个折腾不死的系统:NixOS

#12

帖子 jobinson99 » 2015-11-14 18:49

lilydjwg 写了:
jobinson99 写了: 不了解stow啊,实际也不是npm方式,因为npm是直接拷一份进去,而nixos是软链到特定的用户空间里。

nixos现在github上团队不小了,而且发展这么多年,资源已经足够日常使用了。
npm 不是拷贝一份,是拷贝多份,放依赖方的子目录里边。所以有时候会出现路径太长的错误。
是的。


nix 设计者2003年就在论文里提出并实现的……
黑色的不是眼睛,而是眼圈
关注和实现科技领域未来3年内有大规模普及潜力、能改善穷人生活品质的技术/应用。
双路 + NixOS + lxde + qemu/spice + 智能生产线研发 + 柔性电路
回复

回到 “Arch发行版”