diff --git a/home.nix b/home.nix index 35b6964d..fd82b417 100644 --- a/home.nix +++ b/home.nix @@ -1,24 +1,16 @@ let inherit (import { }) lib; + home-manager = import ; + buildHomeManager = attr: + (home-manager { + confPath = ~/git/config/home.nix; + confAttr = attr; + }).activationPackage; makeConfig = hostName: imports: { ... }: { imports = imports ++ [ ./home ]; m-0.hostName = hostName; }; - wrapWithOthers = config: all: - { lib, ... }: { - imports = [ config ]; - home.file = lib.listToAttrs (builtins.map (name: { - inherit name; - value = { - source = (import { - confPath = ~/git/config/home.nix; - confAttr = "apollo-${name}-without-symlinks"; - }).activationPackage; - target = ".gc-roots-home/${name}"; - }; - }) (lib.attrNames all)); - }; apollo = let setStartpage = startpage: { ... }: { @@ -121,13 +113,9 @@ in { home/headless-mpd.nix home/mail.nix ]; -} // lib.listToAttrs (lib.flatten (lib.mapAttrsToList (name: config: [ +} // lib.listToAttrs (lib.mapAttrsToList (name: config: { name = "apollo-${name}"; - value = wrapWithOthers config apollo; - } - { - name = "apollo-${name}-without-symlinks"; value = config; } -]) apollo)) +) apollo) diff --git a/home/laptop.nix b/home/laptop.nix index 2b208ce3..f7a3d8c8 100644 --- a/home/laptop.nix +++ b/home/laptop.nix @@ -1,18 +1,32 @@ -{ pkgs, ... }: -let inherit (import ../lib) unfreePkgs; +{ pkgs, lib, ... }: +let + inherit (import ../lib) unfreePkgs; + modes = builtins.filter (lib.hasPrefix "apollo-") + (pkgs.lib.attrNames (import ../home.nix)); in { home.packages = builtins.attrValues { maintenance = pkgs.writeShellScriptBin "maintenance" '' git -C ~/git/config pull - update-home-mode + update-modes sudo -A update-system sudo -A nix optimise-store ''; - updateHome = pkgs.writeShellScriptBin "update-home-mode" '' - update-home -A apollo-`cat ~/tmp/mode` + activateMode = pkgs.writeShellScriptBin "activate-mode" '' + ~/.modes/result-home-manager-$(cat ~/tmp/mode)/activate + ''; + updateModes = pkgs.writeShellScriptBin "update-modes" '' + set -e + mkdir -p ~/.modes + cd ~/.modes + ${lib.concatStringsSep "\n" + (map (mode: "test-home-config ~/git/config ${mode}") modes)} + activate-mode ''; selectMode = pkgs.writeShellScriptBin "select-mode" '' - ${pkgs.dialog}/bin/dialog --menu "Select Mode" 20 80 5 research "" orga "" tinkering "" leisure "" 2> ~/tmp/mode + ${pkgs.dialog}/bin/dialog --menu "Select Mode" 20 80 5 ${ + lib.concatStrings (map (mode: "${mode} '' ") modes) + } 2> ~/tmp/mode + activate-mode ''; inherit (unfreePkgs) zoom-us skypeforlinux google-chrome;