Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nix 2.3.5 #33

Merged
merged 3 commits into from May 27, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
21 changes: 18 additions & 3 deletions .github/workflows/test.yml
Expand Up @@ -3,19 +3,34 @@ on:
pull_request:
push:
jobs:
tests:
simple-build:
strategy:
matrix:
os: [ubuntu-18.04, macos-latest]
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- run: yarn install --frozen-lockfile
- run: yarn build
- name: Install Nix
uses: ./
- run: nix-env -iA cachix -f https://github.com/NixOS/nixpkgs/tarball/ab5863afada3c1b50fc43bf774b75ea71b287cde
- run: nix-env -iA cachix -f https://cachix.org/api/v1/install
- run: cat /etc/nix/nix.conf
# cachix should be available and be able to configure a cache
- run: cachix use cachix
- run: nix-build test.nix
no-channel:
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- run: yarn install --frozen-lockfile
- run: yarn build
- name: Install Nix
uses: ./
with:
skip_adding_nixpkgs_channel: true
- run: nix-build test.nix && exit 1 || echo "OK"
- run: NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs/tarball/ab5863afada3c1b50fc43bf774b75ea71b287cde nix-build test.nix
2 changes: 2 additions & 0 deletions action.yml
Expand Up @@ -4,6 +4,8 @@ author: 'Domen Kožar'
inputs:
install_url:
description: 'Installation URL that will contain a script to install Nix'
skip_adding_nixpkgs_channel:
description: 'Skip adding nixpkgs-unstable channel'
branding:
color: 'blue'
icon: 'sun'
Expand Down
46 changes: 16 additions & 30 deletions lib/install-nix.sh
@@ -1,48 +1,34 @@
#!/usr/bin/env bash
set -euo pipefail

export here=$(dirname "${BASH_SOURCE[0]}")
# Set jobs to number of cores
sudo sh -c 'echo max-jobs = auto >> /tmp/nix.conf'
# Allow binary caches for runner user
sudo sh -c 'echo trusted-users = root runner >> /tmp/nix.conf'

if [[ $INPUT_SKIP_ADDING_NIXPKGS_CHANNEL = "true" ]]; then
extra_cmd=--no-channel-add
else
extra_cmd=
fi

nixConf() {
sudo mkdir -p /etc/nix
# Workaround a segfault: https://github.com/NixOS/nix/issues/2733
sudo sh -c 'echo http2 = false >> /etc/nix/nix.conf'
# Set jobs to number of cores
sudo sh -c 'echo max-jobs = auto >> /etc/nix/nix.conf'
# Allow binary caches for runner user
sudo sh -c 'echo trusted-users = root runner >> /etc/nix/nix.conf'
}
sh <(curl -L ${INPUT_INSTALL_URL:-https://nixos.org/nix/install}) \
--daemon --daemon-user-count 4 --nix-extra-conf-file /tmp/nix.conf --darwin-use-unencrypted-nix-store-volume $extra_cmd

if [[ $OSTYPE =~ darwin ]]; then
# Catalina workaround https://github.com/NixOS/nix/issues/2925
$here/create-darwin-volume.sh

# Disable spotlight indexing of /nix to speed up performance
sudo mdutil -i off /nix
fi

nixConf

# Needed due to multi-user being too defensive
export ALLOW_PREEXISTING_INSTALLATION=1

sh <(curl -L ${INPUT_INSTALL_URL:-https://nixos.org/nix/install}) --daemon

# write nix.conf again as installation overwrites it
nixConf

# macOS needs certificates hints
if [[ $OSTYPE =~ darwin ]]; then
# macOS needs certificates hints
cert_file=/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt
echo "::set-env name=NIX_SSL_CERT_FILE::$cert_file"
export NIX_SSL_CERT_FILE=$cert_file
sudo launchctl setenv NIX_SSL_CERT_FILE "$cert_file"
fi

# Reload the daemon to pick up changes
sudo pkill -HUP nix-daemon

# Set paths
echo "::add-path::/nix/var/nix/profiles/per-user/runner/profile/bin"
echo "::add-path::/nix/var/nix/profiles/default/bin"
echo "::set-env name=NIX_PATH::/nix/var/nix/profiles/per-user/root/channels"
if [[ $INPUT_SKIP_ADDING_NIXPKGS_CHANNEL != "true" ]]; then
echo "::set-env name=NIX_PATH::/nix/var/nix/profiles/per-user/root/channels"
fi
26 changes: 0 additions & 26 deletions lib/main.js
@@ -1,30 +1,4 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const child_process_1 = require("child_process");
const process_1 = require("process");
const net_1 = require("net");
function awaitSocket() {
return __awaiter(this, void 0, void 0, function* () {
const daemonSocket = net_1.createConnection({ path: '/nix/var/nix/daemon-socket/socket' });
daemonSocket.on('error', () => __awaiter(this, void 0, void 0, function* () {
console.log('Waiting for daemon socket to be available, reconnecting...');
yield new Promise(resolve => setTimeout(resolve, 500));
yield awaitSocket();
}));
daemonSocket.on('connect', () => {
process_1.exit(0);
});
});
}
child_process_1.execFileSync(`${__dirname}/install-nix.sh`, { stdio: 'inherit' });
// nc doesn't work correctly on macOS :(
awaitSocket();
17 changes: 0 additions & 17 deletions src/main.ts
@@ -1,20 +1,3 @@
import { execFileSync } from 'child_process';
import { exit } from 'process';
import { createConnection } from 'net';

async function awaitSocket() {
const daemonSocket = createConnection({ path: '/nix/var/nix/daemon-socket/socket' });
daemonSocket.on('error', async () => {
console.log('Waiting for daemon socket to be available, reconnecting...');
await new Promise(resolve => setTimeout(resolve, 500));
await awaitSocket();
});
daemonSocket.on('connect', () => {
exit(0);
});
}

execFileSync(`${__dirname}/install-nix.sh`, { stdio: 'inherit' });

// nc doesn't work correctly on macOS :(
awaitSocket();