Improve mode management
This commit is contained in:
parent
d19cdcc8f5
commit
e7fc7a1218
28
home.nix
28
home.nix
|
@ -1,24 +1,16 @@
|
||||||
let
|
let
|
||||||
inherit (import <nixpkgs> { }) lib;
|
inherit (import <nixpkgs> { }) lib;
|
||||||
|
home-manager = import <home-manager/home-manager/home-manager.nix>;
|
||||||
|
buildHomeManager = attr:
|
||||||
|
(home-manager {
|
||||||
|
confPath = ~/git/config/home.nix;
|
||||||
|
confAttr = attr;
|
||||||
|
}).activationPackage;
|
||||||
makeConfig = hostName: imports:
|
makeConfig = hostName: imports:
|
||||||
{ ... }: {
|
{ ... }: {
|
||||||
imports = imports ++ [ ./home ];
|
imports = imports ++ [ ./home ];
|
||||||
m-0.hostName = hostName;
|
m-0.hostName = hostName;
|
||||||
};
|
};
|
||||||
wrapWithOthers = config: all:
|
|
||||||
{ lib, ... }: {
|
|
||||||
imports = [ config ];
|
|
||||||
home.file = lib.listToAttrs (builtins.map (name: {
|
|
||||||
inherit name;
|
|
||||||
value = {
|
|
||||||
source = (import <home-manager/home-manager/home-manager.nix> {
|
|
||||||
confPath = ~/git/config/home.nix;
|
|
||||||
confAttr = "apollo-${name}-without-symlinks";
|
|
||||||
}).activationPackage;
|
|
||||||
target = ".gc-roots-home/${name}";
|
|
||||||
};
|
|
||||||
}) (lib.attrNames all));
|
|
||||||
};
|
|
||||||
apollo = let
|
apollo = let
|
||||||
setStartpage = startpage:
|
setStartpage = startpage:
|
||||||
{ ... }: {
|
{ ... }: {
|
||||||
|
@ -121,13 +113,9 @@ in {
|
||||||
home/headless-mpd.nix
|
home/headless-mpd.nix
|
||||||
home/mail.nix
|
home/mail.nix
|
||||||
];
|
];
|
||||||
} // lib.listToAttrs (lib.flatten (lib.mapAttrsToList (name: config: [
|
} // lib.listToAttrs (lib.mapAttrsToList (name: config:
|
||||||
{
|
{
|
||||||
name = "apollo-${name}";
|
name = "apollo-${name}";
|
||||||
value = wrapWithOthers config apollo;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "apollo-${name}-without-symlinks";
|
|
||||||
value = config;
|
value = config;
|
||||||
}
|
}
|
||||||
]) apollo))
|
) apollo)
|
||||||
|
|
|
@ -1,18 +1,32 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, lib, ... }:
|
||||||
let inherit (import ../lib) unfreePkgs;
|
let
|
||||||
|
inherit (import ../lib) unfreePkgs;
|
||||||
|
modes = builtins.filter (lib.hasPrefix "apollo-")
|
||||||
|
(pkgs.lib.attrNames (import ../home.nix));
|
||||||
in {
|
in {
|
||||||
home.packages = builtins.attrValues {
|
home.packages = builtins.attrValues {
|
||||||
maintenance = pkgs.writeShellScriptBin "maintenance" ''
|
maintenance = pkgs.writeShellScriptBin "maintenance" ''
|
||||||
git -C ~/git/config pull
|
git -C ~/git/config pull
|
||||||
update-home-mode
|
update-modes
|
||||||
sudo -A update-system
|
sudo -A update-system
|
||||||
sudo -A nix optimise-store
|
sudo -A nix optimise-store
|
||||||
'';
|
'';
|
||||||
updateHome = pkgs.writeShellScriptBin "update-home-mode" ''
|
activateMode = pkgs.writeShellScriptBin "activate-mode" ''
|
||||||
update-home -A apollo-`cat ~/tmp/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" ''
|
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;
|
inherit (unfreePkgs) zoom-us skypeforlinux google-chrome;
|
||||||
|
|
Loading…
Reference in a new issue