From da28a4e2afef21710f73860b26893fa18dd32858 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Sat, 29 Aug 2020 18:37:54 +0200 Subject: [PATCH] Add environment file instead of hardcoding everything in makefiles --- .envrc | 13 +++++++++++++ .gitignore | 1 + modules/private/system.nix | 4 ---- nix/sources.json | 24 ------------------------ nixops/Makefile | 28 +++++++++++----------------- nixops/scripts/with_env | 8 ++++---- shell.nix | 4 ++++ 7 files changed, 33 insertions(+), 49 deletions(-) create mode 100644 .envrc create mode 100644 shell.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..6eeaba9 --- /dev/null +++ b/.envrc @@ -0,0 +1,13 @@ +# vim: filetype=bash +export PASSWORD_STORE_DIR=$(expand_path nixops/secrets) +export NIXOPS_STATE=$(expand_path nixops/state/immaeEu.nixops) +export NIXOPS_DEPLOYMENT=cef694f3-081d-11e9-b31f-0242ec186adf +export NIX_PATH=nixpkgs=$(cat $(expand_path nix/sources.json) | jq -r '."nixpkgs-nixops".url') + +export NIXOPS_ENV_LOADED=1 + +PATH_add $(expand_path scripts) +PATH_add $(expand_path nixops/scripts) + +use nix +watch_file $(expand_path nix/sources.json) diff --git a/.gitignore b/.gitignore index feb036e..6786d42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /result* /versions_log +.direnv/ diff --git a/modules/private/system.nix b/modules/private/system.nix index bca6e19..8c7a6f3 100644 --- a/modules/private/system.nix +++ b/modules/private/system.nix @@ -18,10 +18,6 @@ mariadb = self.mariadb_pam; }) # don’t put them as generic overlay because of home-manager ]; - _module.args = { - pkgsNext = import {}; - pkgsPrevious = import {}; - }; services.journald.extraConfig = '' MaxLevelStore="warning" diff --git a/nix/sources.json b/nix/sources.json index 265552f..063d3da 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -117,30 +117,6 @@ "url": "https://github.com/NixOS/nixpkgs-channels/archive/840c782d507d60aaa49aa9e3f6d0b0e780912742.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, - "nixpkgs-nixops-next": { - "branch": "nixos-19.03", - "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to", - "homepage": "https://github.com/NixOS/nixpkgs", - "owner": "NixOS", - "repo": "nixpkgs-channels", - "rev": "34c7eb7545d155cc5b6f499b23a7cb1c96ab4d59", - "sha256": "11z6ajj108fy2q5g8y4higlcaqncrbjm3dnv17pvif6avagw4mcb", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs-channels/archive/34c7eb7545d155cc5b6f499b23a7cb1c96ab4d59.tar.gz", - "url_template": "https://github.com///archive/.tar.gz" - }, - "nixpkgs-nixops-previous": { - "branch": "nixos-19.03", - "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to", - "homepage": "https://github.com/NixOS/nixpkgs", - "owner": "NixOS", - "repo": "nixpkgs-channels", - "rev": "34c7eb7545d155cc5b6f499b23a7cb1c96ab4d59", - "sha256": "11z6ajj108fy2q5g8y4higlcaqncrbjm3dnv17pvif6avagw4mcb", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs-channels/archive/34c7eb7545d155cc5b6f499b23a7cb1c96ab4d59.tar.gz", - "url_template": "https://github.com///archive/.tar.gz" - }, "overlays-ldapvi": { "ref": "master", "repo": "http://www.lichteblau.com/git/ldapvi.git", diff --git a/nixops/Makefile b/nixops/Makefile index a7b24cd..18d48eb 100644 --- a/nixops/Makefile +++ b/nixops/Makefile @@ -1,14 +1,8 @@ -export -PASSWORD_STORE_DIR = $(shell pwd)/secrets -NIXOPS_STATE ?= ./state/eldiron.nixops -NIXOPS_DEPLOYMENT = cef694f3-081d-11e9-b31f-0242ec186adf -nixpkgs ?= $(shell cat ../nix/sources.json | jq -r '."nixpkgs-nixops".url') -nixpkgsNext ?= $(shell cat ../nix/sources.json | jq -r '."nixpkgs-nixops-next".url') -nixpkgsPrevious ?= $(shell cat ../nix/sources.json | jq -r '."nixpkgs-nixops-previous".url') -NIX_PATH = nixpkgs=${nixpkgs}:nixpkgsNext=${nixpkgsNext}:nixpkgsPrevious=${nixpkgsPrevious} - -NIXOPS := $(shell NIX_PATH=$(NIX_PATH) nix-build --no-out-link -E "with import { overlays = builtins.attrValues (import ../overlays); }; nixops")/bin/nixops -NIXOPS_PRIV = ./scripts/with_env $(NIXOPS) +ifndef NIXOPS_ENV_LOADED + $(error "Please load environment with direnv") +endif + +NIXOPS_PRIV = ./scripts/with_env nixops ###### Current channel information nix-info: @@ -102,21 +96,21 @@ cleanup: delete-generations ###### Pull environment and deployment from remote pull_deployment: - @if $(NIXOPS) info -d $(NIXOPS_DEPLOYMENT) 2>/dev/null >/dev/null ; then \ + @if nixops info -d $(NIXOPS_DEPLOYMENT) 2>/dev/null >/dev/null ; then \ echo "This will remove your current deployment file and recreate it!. Continue? [y/N]" && \ read y && \ [ "$$y" = "y" -o "$$y" = "Y" ] && \ - $(NIXOPS) delete --force -d $(NIXOPS_DEPLOYMENT); \ + nixops delete --force -d $(NIXOPS_DEPLOYMENT); \ fi - pass show Nixops/Deployment | $(NIXOPS) import - $(NIXOPS) modify -d $(NIXOPS_DEPLOYMENT) "$$(pwd)/default.nix" + pass show Nixops/Deployment | nixops import + nixops modify -d $(NIXOPS_DEPLOYMENT) "$$(pwd)/default.nix" .PHONY: pull_deployment deployment_is_set: - $(NIXOPS) info -d $(NIXOPS_DEPLOYMENT) 2>/dev/null >/dev/null + nixops info -d $(NIXOPS_DEPLOYMENT) 2>/dev/null >/dev/null .PHONY: deployment_is_set ###### Push deployment information to password store push_deployment: - $(NIXOPS) export | pass insert -m Nixops/Deployment + nixops export | pass insert -m Nixops/Deployment .PHONY: push diff --git a/nixops/scripts/with_env b/nixops/scripts/with_env index 26e74b5..9882f78 100755 --- a/nixops/scripts/with_env +++ b/nixops/scripts/with_env @@ -1,7 +1,7 @@ #!/usr/bin/env bash -if [ -z "$NIXOPS" ]; then - echo "Please set NIXOPS to the nixops command" +if [ -z "$NIXOPS_ENV_LOADED" ]; then + echo "Please load the environment with direnv" exit 1; fi @@ -10,7 +10,7 @@ chmod go-rwx $TEMP finish() { rm -rf "$TEMP" - $NIXOPS set-args --unset privateFiles + nixops set-args --unset privateFiles } trap finish EXIT @@ -21,6 +21,6 @@ files=$(pass ls Nixops/files | sed -e '1d' -e 's/^.* //') for file in $files; do pass show "Nixops/files/$file" > $TEMP/$file done -$NIXOPS set-args --argstr privateFiles "$TEMP" +nixops set-args --argstr privateFiles "$TEMP" "$@" diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..70c7604 --- /dev/null +++ b/shell.nix @@ -0,0 +1,4 @@ +{ pkgs ? import { overlays = builtins.attrValues (import ./overlays); } }: +pkgs.mkShell { + buildInputs = [ pkgs.nixops pkgs.niv pkgs.pass pkgs.curl pkgs.shellcheck pkgs.jq pkgs.gnumake ]; +} -- 2.41.0