diff --git a/Justfile b/Justfile index 0f2f8f8..60614e0 100755 --- a/Justfile +++ b/Justfile @@ -1,33 +1,45 @@ +_usage: + just -l + _device action dir +moreargs="": #!/usr/bin/env bash - set -e - sudo $(nix-build --no-link --show-trace $(dirname {{dir}})/default.nix -A {{action}} --argstr dir {{dir}} {{moreargs}} ) + set -ex + sudo $(set -x; nix-build --no-link --show-trace $(dirname {{dir}})/default.nix -A {{action}} --argstr dir {{dir}} {{moreargs}}) +_rebuild-device dir rebuildarg="dry-activate" +moreargs="": + just -v _device rebuild {{dir}} --argstr rebuildarg {{rebuildarg}} {{moreargs}} -_rebuild-device dir rebuildarg="dry-activate": - just -v _device rebuild {{dir}} --argstr rebuildarg {{rebuildarg}} # Rebulid this device's NixOS rebuild-this-device rebuildarg="dry-activate": just -v _rebuild-device nix/os/devices/$(hostname -s) {{rebuildarg}} +# This could be used to inject another channel +# --argstr moreargs "\'-I nixos-unstable=https://nixos.org/channels/nixos-unstable/nixexprs.tar.xz\'" + + # Update nix-channels and switch to updated NixOS and home environments update-this-device: #!/usr/bin/env bash + export SYSUPDATE_LOG=.$(hostname -s)_sysupdate.log + export HOMEUPDATE_LOG=.$(hostname -s)_homeupdate.log + echo Updating system channels... - sudo nix-channel --update > .$(hostname -s)_sysupdate.log 2>&1 + sudo nix-channel --update > ${SYSUPDATE_LOG} 2>&1 echo Updating system... - if just -v rebuild-this-device >> .$(hostname -s)_sysupdate.log 2>&1 ; then + if just -v rebuild-this-device switch >> ${SYSUPDATE_LOG} 2>&1 ; then echo System update successful else - System update failed + cat ${SYSUPDATE_LOG} + echo System update failed fi if type home-manager > /dev/null 2>&1; then echo Updating home... - if home-manager -v switch > .$(hostname -s)_homeupdate.log 2>&1 ; then + if home-manager -v switch > ${HOMEUPDATE_LOG} 2>&1 ; then echo Home update successful - else + else + cat ${HOMEUPDATE_LOG} echo Home update failed fi fi diff --git a/nix/home-manager/configuration/removable-desktop.nix b/nix/home-manager/configuration/removable-desktop.nix index 2046dcb..f09788f 100644 --- a/nix/home-manager/configuration/removable-desktop.nix +++ b/nix/home-manager/configuration/removable-desktop.nix @@ -1,11 +1,9 @@ { pkgs -, config, +, config, ... }: let - # gitpkgs = import /home/steveej/src/github/NixOS/nixpkgs {}; - unstablepkgs = import {}; - + unstablepkgs = import { config = config.nixpkgs.config; }; in { imports = [ ../profiles/common.nix @@ -27,7 +25,7 @@ in { }; packageOverrides = pkgs: with pkgs; { - myPython36 = python36Full.withPackages (ps: with ps; [ + myPython36 = python36Full.withPackages (ps: with ps; [ pylint pep8 yapf flake8 # autopep8 (broken) # pylint (broken) @@ -53,11 +51,15 @@ in { }; }; + # gitpkgs = import /home/steveej/src/github/NixOS/nixpkgs {}; + # unstablepkgs = import { config = { allowUnfree = true; }; }; + home.sessionVariables = { }; - home.packages = [] - ++ (with pkgs; [ + + home.packages = + [] ++ (with pkgs; [ # Authentication cacert fprintd @@ -67,12 +69,10 @@ in { # Nix package related tools patchelf nix-index - nox nix-prefetch-scripts # Version Control Systems git-crypt - unstablepkgs.pijul gitFull gitless mr @@ -111,7 +111,7 @@ in { iftop iperf bind - socat + socat # samba iptables @@ -156,6 +156,6 @@ in { ## Python myPython36 - busyboxStatic - ]); + busyboxStatic + ]); } diff --git a/nix/home-manager/configuration/root.nix b/nix/home-manager/configuration/root.nix new file mode 100644 index 0000000..7430825 --- /dev/null +++ b/nix/home-manager/configuration/root.nix @@ -0,0 +1,35 @@ +{ pkgs +, config, +... }: + +let + # gitpkgs = import /home/steveej/src/github/NixOS/nixpkgs {}; + # unstablepkgs = import {}; + +in { + imports = [ + ../profiles/common.nix + ../profiles/nix-channels.nix + ../programs/neovim.nix + ../programs/zsh.nix + ]; + + nixpkgs.config = { + packageOverrides = pkgs: with pkgs; { + }; + }; + + home.sessionVariables = { + }; + + home.packages = [] + ++ (with pkgs; [ + # Authentication + mkpasswd + + # Version Control Systems + git-crypt + gitFull + mr + ]); +} diff --git a/nix/home-manager/profiles/common.nix b/nix/home-manager/profiles/common.nix index 06fe50c..ddfd3c7 100644 --- a/nix/home-manager/profiles/common.nix +++ b/nix/home-manager/profiles/common.nix @@ -43,8 +43,6 @@ in { NIXPKGS_ALLOW_UNFREE = "1"; # Don't create .pyc files. PYTHONDONTWRITEBYTECODE = "1"; - - HOMESHICK_DIR="${pkgs.homeshick}"; }; programs.command-not-found.enable = true; diff --git a/nix/home-manager/profiles/nix-channels.nix b/nix/home-manager/profiles/nix-channels.nix new file mode 100644 index 0000000..e038319 --- /dev/null +++ b/nix/home-manager/profiles/nix-channels.nix @@ -0,0 +1,34 @@ +{ pkgs +, config +, ... +}: + +let +in { + home.file.".nix-channels".text = '' + https://nixos.org/channels/nixos-18.09 nixos + https://nixos.org/channels/nixos-unstable nixos-unstable + ''; + + home.activation._removeExistingNixChannels = config.lib.dag.entryBefore ["checkLinkTargets"] '' + $DRY_RUN_CMD ${pkgs.writeScript "activation-script" '' + set -ex + if test -f $HOME/.nix-channels; then + echo Moving existing file away... + touch $HOME/.nix-channels.dummy + mv --backup=numbered $HOME/.nix-channels.dummy $HOME/.nix-channels + rm $HOME/.nix-channels + fi + ''}; + ''; + + nixpkgs.config = { + + packageOverrides = pkgs: with pkgs; { + homeshick = builtins.fetchGit { + url = "https://github.com/andsens/homeshick.git"; + ref = "master"; + }; + }; + }; +} diff --git a/nix/home-manager/programs/homeshick.nix b/nix/home-manager/programs/homeshick.nix index 7238ea5..bb50b31 100644 --- a/nix/home-manager/programs/homeshick.nix +++ b/nix/home-manager/programs/homeshick.nix @@ -4,7 +4,14 @@ }: let - bootstrapRepos = pkgs.writeScript "bootstrapRepos" '' + +in { + home.sessionVariables = { + HOMESHICK_DIR="${pkgs.homeshick}"; + }; + + home.activation.bootstrapRepos = config.lib.dag.entryAfter ["writeBoundary"] '' + $DRY_RUN_CMD ${pkgs.writeScript "activation-script" '' set -e echo home-manager path is ${config.home.path} echo home is $HOME @@ -15,15 +22,7 @@ let # echo Updating homeshick # ln -sfT ${pkgs.homeshick} "$HOMESICK_REPOS"/.homeshick # mv -Tf "$HOMESICK_REPOS"/{.,}homeshick - ''; - -in { - home.sessionVariables = { - HOMESHICK_DIR="${pkgs.homeshick}"; - }; - - home.activation.bootstrapRepos = config.lib.dag.entryAfter ["writeBoundary"] '' - $DRY_RUN_CMD ${bootstrapRepos} + ''}; ''; nixpkgs.config = { diff --git a/nix/home-manager/programs/zsh.nix b/nix/home-manager/programs/zsh.nix index f035372..54eda37 100644 --- a/nix/home-manager/programs/zsh.nix +++ b/nix/home-manager/programs/zsh.nix @@ -3,7 +3,7 @@ , ... }: -let +let in { programs.zsh = { enable = true; @@ -16,15 +16,18 @@ in { %_%F{%(!.red.green)}$(prompt_char)%f ' RPROMPT="" - # Automatic rehash + # Automatic rehash zstyle ':completion:*' rehash true if [ -f $HOME/.shrc.d/sh_aliases ]; then - . $HOME/.shrc.d/sh_aliases + . $HOME/.shrc.d/sh_aliases fi - source ${pkgs.homeshick}/homeshick.sh - fpath=(${pkgs.homeshick}/completions $fpath) + ${if builtins.hasAttr "homeshick" pkgs then '' + source ${pkgs.homeshick}/homeshick.sh + fpath=(${pkgs.homeshick}/completions $fpath) + '' else '' + ''} # Disable intercepting of ctrl-s and ctrl-q as flow control. stty stop ''' -ixoff -ixon diff --git a/nix/os/devices/default.nix b/nix/os/devices/default.nix index acba03a..071d1e8 100644 --- a/nix/os/devices/default.nix +++ b/nix/os/devices/default.nix @@ -1,23 +1,25 @@ { pkgs ? import {} , dir -, rebuildarg ? null +, rebuildarg +, moreargs ? "" }: let diskId = (import ((builtins.getEnv "PWD")+"/${dir}/hw.nix") {}).hardware.encryptedDisk.diskId; + GIT_ROOT=''''$(git rev-parse --show-toplevel)''; in { rebuild = pkgs.writeScript "script" '' #!/usr/bin/env bash set -xe - pushd ${dir} + pushd ${GIT_ROOT}/${dir} export NIXOS_CONFIG="$PWD"/configuration.nix export INSTALL_ROOT="/mnt/$ID-root" [[ -e "''${NIXOS_CONFIG}" ]] - nixos-rebuild -I nixos-config=''${NIXOS_CONFIG} ${rebuildarg} + nixos-rebuild -I nixos-config=''${NIXOS_CONFIG} ${rebuildarg} ${moreargs} if test -L result; then rm result fi @@ -52,7 +54,7 @@ in { #!/usr/bin/env bash set -xe ID=${diskId} - pushd ${dir} + pushd ${GIT_ROOT}/${dir} export NIXOS_CONFIG="$PWD"/configuration.nix export INSTALL_ROOT="/mnt/$ID-root" diff --git a/nix/os/devices/steveej-laptop/pkg.nix b/nix/os/devices/steveej-laptop/pkg.nix index becd2da..4c01731 100644 --- a/nix/os/devices/steveej-laptop/pkg.nix +++ b/nix/os/devices/steveej-laptop/pkg.nix @@ -3,11 +3,8 @@ ... }: let - gitpkgs = import /home/steveej/src/github/NixOS/nixpkgs {}; - unstablepkgs = import {}; -in -{ +in { nixpkgs.config = { allowBroken = false; allowUnfree = true; diff --git a/nix/os/devices/steveej-live-mmc-SL32G_0x259093f6/system.nix b/nix/os/devices/steveej-live-mmc-SL32G_0x259093f6/system.nix deleted file mode 100644 index e453def..0000000 --- a/nix/os/devices/steveej-live-mmc-SL32G_0x259093f6/system.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ ... }: - -{ - networking.hostName = "mmc-sandiskultra32gb"; # Define your hostname. -} diff --git a/nix/os/devices/steveej-live-mmc-SL32G_0x259093f6/configuration.nix b/nix/os/devices/steveej-rmvbl-mmc-SL32G_0x259093f6/configuration.nix similarity index 100% rename from nix/os/devices/steveej-live-mmc-SL32G_0x259093f6/configuration.nix rename to nix/os/devices/steveej-rmvbl-mmc-SL32G_0x259093f6/configuration.nix diff --git a/nix/os/devices/steveej-live-mmc-SL32G_0x259093f6/hw.nix b/nix/os/devices/steveej-rmvbl-mmc-SL32G_0x259093f6/hw.nix similarity index 100% rename from nix/os/devices/steveej-live-mmc-SL32G_0x259093f6/hw.nix rename to nix/os/devices/steveej-rmvbl-mmc-SL32G_0x259093f6/hw.nix diff --git a/nix/os/devices/steveej-rmvbl-mmc-SL32G_0x259093f6/system.nix b/nix/os/devices/steveej-rmvbl-mmc-SL32G_0x259093f6/system.nix new file mode 100644 index 0000000..4ac0ac9 --- /dev/null +++ b/nix/os/devices/steveej-rmvbl-mmc-SL32G_0x259093f6/system.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + networking.hostName = "steveej-rmvbl-mmc-SL32G_0x259093f6"; # Define your hostname. +} diff --git a/nix/os/profiles/common/pkg.nix b/nix/os/profiles/common/pkg.nix index eef45ef..4c3adb5 100644 --- a/nix/os/profiles/common/pkg.nix +++ b/nix/os/profiles/common/pkg.nix @@ -40,4 +40,10 @@ usbutils pciutils ]; + + imports = [ + "${builtins.fetchGit { url = "https://github.com/rycee/home-manager.git"; ref = "master"; }}/nixos" + ]; + + home-manager.users.root = import ../../../home-manager/configuration/root.nix; }