From b783b56f61ea8395aefa2d48f754d9f79cbf380d Mon Sep 17 00:00:00 2001 From: Malte Brandy Date: Mon, 5 Jul 2021 17:45:47 +0200 Subject: [PATCH] Sort and split laptop.nix --- home-manager/machines.nix | 32 ++++++------- home-manager/roles/daily-driver-programs.nix | 29 +++++++++++ home-manager/roles/desktop/default.nix | 2 +- .../roles/{laptop.nix => mode-switching.nix} | 48 +++++-------------- home-manager/roles/state.nix | 16 ++++--- .../roles/{desktop => }/wallpaper.nix | 4 +- 6 files changed, 71 insertions(+), 60 deletions(-) create mode 100644 home-manager/roles/daily-driver-programs.nix rename home-manager/roles/{laptop.nix => mode-switching.nix} (62%) rename home-manager/roles/{desktop => }/wallpaper.nix (93%) diff --git a/home-manager/machines.nix b/home-manager/machines.nix index 0a4d4635..616e1adb 100644 --- a/home-manager/machines.nix +++ b/home-manager/machines.nix @@ -72,26 +72,26 @@ in apolloConfig = name: imports: makeConfig "apollo" ( imports ++ [ - ./roles/arbtt - ./roles/zettelkasten.nix - ./roles/hoogle.nix ./roles/battery.nix - ./roles/mpd.nix ./roles/beets.nix - ./roles/mpclient.nix - ./roles/on-my-machine.nix + ./roles/daily-driver-programs.nix ./roles/desktop - ./roles/kassandra.nix ./roles/git-sign.nix - ./roles/laptop.nix - ./roles/mail.nix - ./roles/update_tasks.nix - ./roles/research.nix - ./roles/vdirsyncer.nix - ./roles/khard.nix + ./roles/hoogle.nix + ./roles/kassandra.nix ./roles/khal.nix - ./roles/taskwarrior.nix + ./roles/khard.nix + ./roles/mail.nix + ./roles/mpclient.nix + ./roles/mpd.nix + ./roles/on-my-machine.nix + ./roles/research.nix ./roles/taskwarrior-git.nix + ./roles/taskwarrior.nix + ./roles/update_tasks.nix + ./roles/vdirsyncer.nix + ./roles/zettelkasten.nix + (import ./roles/mode-switching.nix { modeDir = ".modes"; modeFile = "volatile/mode"; }) (makeAutostart "unlock-ssh") (setWorkspaceName name) ] @@ -128,9 +128,9 @@ in zeus = { default = makeConfig "zeus" [ ./roles/accounting.nix - ./roles/arbtt ./roles/beets.nix ./roles/chat.nix + ./roles/daily-driver-programs.nix ./roles/desktop ./roles/games.nix ./roles/git-sign.nix @@ -138,7 +138,6 @@ in ./roles/kassandra.nix ./roles/khal.nix ./roles/khard.nix - ./roles/laptop.nix ./roles/mail-client.nix ./roles/mail.nix ./roles/mail2rss.nix @@ -152,6 +151,7 @@ in ./roles/tinkering.nix ./roles/update_tasks.nix ./roles/vdirsyncer.nix + (import ./roles/mode-switching.nix { modeDir = ".volatile/modes"; modeFile = ".volatile/mode"; }) (makeAutostart "kassandra2") (makeAutostart "unlock-ssh") ]; diff --git a/home-manager/roles/daily-driver-programs.nix b/home-manager/roles/daily-driver-programs.nix new file mode 100644 index 00000000..263d7c12 --- /dev/null +++ b/home-manager/roles/daily-driver-programs.nix @@ -0,0 +1,29 @@ +{ pkgs, lib, config, ... }: +{ + home.packages = builtins.attrValues rec { + zoom = pkgs.zoom-us.overrideAttrs (old: { + postFixup = old.postFixup + '' + wrapProgram $out/bin/zoom-us --unset XDG_SESSION_TYPE + ''; + }); + + inherit (pkgs.gnome) nautilus; + inherit (pkgs.xorg) xbacklight; + inherit (pkgs) + # web + chromium + + skypeforlinux google-chrome + + mumble upower speedtest-cli acpi + + anki + + # tools & office + feh gimp imagemagick libreoffice-fresh xournal musescore handbrake evince + abcde beets zbar + + # media + ncpamixer pavucontrol deluge gmpc vlc mpv youtubeDL syncplay; + }; +} diff --git a/home-manager/roles/desktop/default.nix b/home-manager/roles/desktop/default.nix index 69e6a175..4bdf0dc2 100644 --- a/home-manager/roles/desktop/default.nix +++ b/home-manager/roles/desktop/default.nix @@ -3,7 +3,7 @@ let inherit (import ../../../lib) colors; in { imports = - [ ./sleep-nag.nix ./kitty.nix ./wallpaper.nix ./gnome.nix ./firefox.nix ./desktop-items.nix ]; + [ ./sleep-nag.nix ./kitty.nix ./gnome.nix ./firefox.nix ./desktop-items.nix ]; m-0.colors = colors; home = { packages = builtins.attrValues pkgs.desktop-pkgs; diff --git a/home-manager/roles/laptop.nix b/home-manager/roles/mode-switching.nix similarity index 62% rename from home-manager/roles/laptop.nix rename to home-manager/roles/mode-switching.nix index 1c8aa399..8fd3803d 100644 --- a/home-manager/roles/laptop.nix +++ b/home-manager/roles/mode-switching.nix @@ -1,17 +1,14 @@ -{ pkgs, lib, config, ... }: +opts: { pkgs, lib, config, ... }: let - modes = pkgs.lib.attrNames (import ../machines.nix).apollo; + inherit (config.m-0) hostName; + modes = pkgs.lib.attrNames (import ../machines.nix).${hostName}; configPath = "${config.home.homeDirectory}/git/config"; + modeFile = "${config.home.homeDirectory}/${opts.modeFile}"; + modeDir = "${config.home.homeDirectory}/${opts.modeDir}"; in { - # services.syncthing.tray.enable = true; + imports = [ (import ./wallpaper.nix { inherit modeFile; }) ]; home.packages = builtins.attrValues rec { - zoom = pkgs.zoom-us.overrideAttrs (old: { - postFixup = old.postFixup + '' - wrapProgram $out/bin/zoom-us --unset XDG_SESSION_TYPE - ''; - }); - maintenance = pkgs.writeShellScriptBin "maintenance" '' set -e git -C ~/git/config pull --ff-only @@ -21,12 +18,12 @@ in ''; activateMode = pkgs.writeHaskellScript { name = "activate-mode"; } '' getMode :: IO Text - getMode = decodeUtf8 <$> (cat "/home/maralorn/volatile/mode" |> captureTrim) + getMode = decodeUtf8 <$> (cat "${modeFile}" |> captureTrim) main = do mode <- getMode say [i|Switching to mode #{mode}...|] - exe ([i|/home/maralorn/.modes/#{mode}/activate|] :: String) + exe ([i|${modeDir}/#{mode}/activate|] :: String) exe "random-wallpaper" ''; updateModes = pkgs.writeHaskellScript @@ -34,10 +31,10 @@ in name = "update-modes"; bins = [ activateMode pkgs.git pkgs.nix-output-monitor ]; } '' - params = ["${configPath}/home-manager/target.nix", "-A", "apollo", "-o", "/home/maralorn/.modes"] + params = ["${configPath}/home-manager/target.nix", "-A", "${hostName}", "-o", "${modeDir}"] main = do - say "Building ~/.modes for apollo" + say "Building ~/.modes for ${hostName}" nixPath <- myNixPath "${configPath}" setEnv "WITH_SECRETS" "false" nom_build nixPath (params ++ remoteBuildParams) @@ -51,13 +48,13 @@ in bins = [ updateModes pkgs.git pkgs.home-manager pkgs.nix-output-monitor ]; } '' getMode :: IO Text - getMode = decodeUtf8 <$> (cat "/home/maralorn/volatile/mode" |> captureTrim) + getMode = decodeUtf8 <$> (cat "${modeFile}" |> captureTrim) main = do nixPath <- myNixPath "${configPath}" mode <- getMode say [i|Quick switching to mode #{mode} ...|] - home_manager (nixPath <> ["switch", "-A", [i|apollo-#{mode}|]]) &!> StdOut |> nom + home_manager (nixPath <> ["switch", "-A", [i|${hostName}-#{mode}|]]) &!> StdOut |> nom update_modes ''; selectMode = pkgs.writeHaskellScript @@ -76,29 +73,10 @@ in lib.concatStrings (map (mode: ''"${mode}" "" '') modes) } |!> captureTrim) clear - writeFile "/home/maralorn/volatile/mode" mode + writeFile "${modeFile}" mode activate_mode ignoreFailure $ swaymsg "exit" ignoreFailure $ gnome_session_quit "--no-prompt" ''; - - inherit (pkgs.gnome) nautilus; - inherit (pkgs.xorg) xbacklight; - inherit (pkgs) - # web - chromium - - skypeforlinux google-chrome - - mumble upower speedtest-cli acpi - - anki - - # tools & office - feh gimp imagemagick libreoffice-fresh xournal musescore handbrake evince - abcde beets zbar - - # media - ncpamixer pavucontrol deluge gmpc vlc mpv youtubeDL syncplay; }; } diff --git a/home-manager/roles/state.nix b/home-manager/roles/state.nix index e2b4216d..79679045 100644 --- a/home-manager/roles/state.nix +++ b/home-manager/roles/state.nix @@ -1,8 +1,9 @@ -{ lib, ... }: +{ lib, config, ... }: let # Persistent means that files get snapshoted and kept for a month # Volatile means that files just lay on the disk # Backups are organized independently on this system + home = config.home.homeDirectory; persistentStateDirs = [ "git" "media" "Maildir" ".ssh" ".task" ".gnupg" ".calendars" ".contacts" ".wallpapers" ".local/share/direnv" ".vdirsyncer" ]; persistentStateFiles = [ ".chpwd-recent-dirs" ".zsh_history" ]; volatileStateFiles = [ ]; @@ -12,7 +13,7 @@ let let target = "/disk/${persistence}/maralorn/${name}"; in - [ (mkLine "L+" "/home/maralorn/${name}" target) (mkLine type target "") ]; + [ (mkLine "L+" "${home}/${name}" target) (mkLine type target "") ]; in { systemd.user.tmpfiles.rules = lib.concatLists @@ -22,9 +23,12 @@ in map (mkEntry "f" "persist") persistentStateFiles ++ map (mkEntry "d" "persist") persistentStateDirs ) ++ [ - (mkLine "L+" "/home/maralorn/.password-store" "git/password-store") - (mkLine "f" "/home/maralorn/documents/orga/listen/checklisten/orga-pre.md" "") - (mkLine "f" "/home/maralorn/tmp/today.md" "") - (mkLine "f" "/home/maralorn/volatile/mode" "default") + (mkLine "L+" "${home}/.password-store" "git/password-store") + (mkLine "f" "${home}/documents/orga/listen/checklisten/orga-pre.md" "") + (mkLine "f" "${home}/tmp/today.md" "") + (mkLine "L+" "${home}/.volatile" "/disk/volatile/maralorn") + (mkLine "L+" "${home}/.config/nixpkgs/home.nix" "${home}/git/config/home.nix") + (mkLine "L+" "${home}/.persist" "/disk/persist/maralorn") + (mkLine "f" "/disk/volatile/maralorn/mode" "default") ]; } diff --git a/home-manager/roles/desktop/wallpaper.nix b/home-manager/roles/wallpaper.nix similarity index 93% rename from home-manager/roles/desktop/wallpaper.nix rename to home-manager/roles/wallpaper.nix index 7d4da9c8..2aeaf19a 100644 --- a/home-manager/roles/desktop/wallpaper.nix +++ b/home-manager/roles/wallpaper.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ modeFile }: { pkgs, ... }: let randomWallpaper = pkgs.writeHaskellScript { @@ -7,7 +7,7 @@ let bins = [ pkgs.coreutils pkgs.glib ]; } '' main = do - mode <- cat "/home/maralorn/volatile/mode" |> captureTrim + mode <- cat "${modeFile}" |> captureTrim (lines . decodeUtf8 -> files) <- ls ([i|/home/maralorn/.wallpapers/#{mode}|] :: String) |> captureTrim ((files Unsafe.!!) -> file) <- getStdRandom $ randomR (0, length files - 1) (decodeUtf8 -> current) <- gsettings "get" "org.gnome.desktop.background" "picture-uri" |> captureTrim