Skip to content

clojurians-org/home-manager

 
 

Repository files navigation

安装过程

  1. 安装nix 并配置channel

    $ sudo install -d -m755 -o $(id -u) -g $(id -g) /nix
    $ curl https://nixos.org/nix/install | sh
    $ source ~/.nix-profile/etc/profile.d/nix.sh
    
    $ nix-channel --add https://nixos.org/channels/nixos-20.03 nixpkgs
    $ nix-channel --update nixpkgs
    

    如果不能创建/nix目录,请进入安全模式使用csrutil关闭SIP

  2. 按需添加中国清华源

    修改~/.config/nix/nix.conf

    substituters = https://mirrors.tuna.tsinghua.edu.cn/nix-channels/store https://cache.nixos.org
  3. 添加home-manager channel 并安装home-manager

    $ nix-channel --add https://github.com/clojurians-org/home-manager/archive/master.tar.gz home-manager
    $ nix-channel --update home-manager
    $ export NIX_PATH=~/.nix-defexpr/channels
    $ nix-shell '<home-manager>' -A install
    
  4. linux 平台确保systemd --user运行

    使用systemctl --user 连接 若Failed to connect to bus报错, 手工启动用户进程:

    sudo chmod -R o+rw /sys/fs/cgroup/systemd/user.slice/user-1000.slice
    nohup /usr/lib/systemd/systemd --user 2>&1 > /dev/null &

使用方法

  1. 编写默认配置 ~/.config/nixpkgs/home.nix 或其它路径

    配置文件格式参见larluo-conf/home.nix

    软件清单见下一节

    { config, pkgs, ... }:
    
    {
      programs.home-manager.enable = true;
    
      home.stateVersion = "19.09";
    
    
      environment.systemPackages = [
        pkgs.coreutils
        pkgs.inetutils
        pkgs.unixtools.netstat
        pkgs.findutils
        pkgs.dnsutils
        pkgs.gnused
        pkgs.less
        pkgs.gawk
        pkgs.procps
        pkgs.cron
        pkgs.nix-bundle
    
        pkgs.tmux
        pkgs.emacs
        pkgs.vim
        pkgs.cloc
        pkgs.git
        pkgs.gitAndTools.gitSVN
        pkgs.cachix
    
        pkgs.gcc
        pkgs.jre
        pkgs.cabal-install
        pkgs.obelisk
        pkgs.yarn
        pkgs.gradle
        pkgs.clojure
        pkgs.lombok
        pkgs.clang-tools
        pkgs.dhall
        pkgs.python38
        pkgs.maven
      ];
    
    
      services.postgresql = { 
        enable = true ; 
        package = pkgs.postgresql_11 ;
        dataDir = "/opt/nix-module/data/postgresql" ;
      } ;
    
    }
  2. 激活生效

    如果不指定-f选项,默认为~/.config/nixpkgs/home.nix文件

    $ export NIX_PATH=~/.nix-defexpr/channels
    $ home-manager -f larluo-conf/home.nix  switch

软件清单

  1. 查看所有package

    $ nix-env -f  ~/.nix-defexpr/channels/nixpkgs -qaP
  2. 查看所有module

    man home-configuration.nix

核心模块

  1. 数据库模块

    • redis
    • postgresql
    • mysql
    • elasticsearch
    • neo4j
    • zookeeper
    • kafka
    • confluent schema-registry
    • confluent ksql
  2. 官方未支持pakage(后续迁移)

    • vue (darwin)
    • clickhouse (darwin)
    • wpsoffice (darwin)
  3. 客户端连接:

    mysql                     => mysql -u root -S /nix/var/run/mysqld.sock
    postgresql                => psql -h /nix/var/run postgres
    elasticsearch             => curl http://localhost:9200
    neo4j                     => cypher-shell -uneo4j -pneo4j
    zookeeper                 => zkCli.sh
    kafka                     => kafka-topics.sh --bootstrap-server localhost:9092 --list
    confluent schema-registry => curl http://localhost:8081
    redis                     => redis-cli

常见问题

如果服务不正常,请检查相关系统参数

  1. vm.max_map_count

    sysctl -n vm.max_map_count
    # set: sudo sysctl -w vm.max_map_count=262144
  2. ulimit -n

    ulimit -n
    #>> /etc/security/limits.conf
    # | * soft nofile 63356
    # | * hard nofile 63356

开发模式

  • 下载github到本地进行调试
    $ git clone https://github.com/clojurians-org/home-manager.git
    $ cd home-manager
    $ nix-shell -A install
    $ home-manager -I home-manager=. -f larluo-conf/home.nix  switch

About

Manage a user environment using Nix

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Nix 95.0%
  • Shell 4.0%
  • Other 1.0%