summaryrefslogtreecommitdiff
path: root/modules/home-manager/personal
diff options
context:
space:
mode:
authoraristote <quentin.aristote@irif.fr>2025-07-29 15:25:11 +0200
committeraristote <quentin.aristote@irif.fr>2025-07-29 15:25:11 +0200
commitfc019d789523ce5f89436b8dbc458cf3b79abf43 (patch)
treeec56fd1b1ed9fc75096c0b09db48a152975e4d53 /modules/home-manager/personal
parenta3d19bc509d9f39fb41256cd55d2bd7706de202f (diff)
reformat everything with nixfmt
Diffstat (limited to 'modules/home-manager/personal')
-rw-r--r--modules/home-manager/personal/environment.nix27
-rw-r--r--modules/home-manager/personal/gui/default.nix25
-rw-r--r--modules/home-manager/personal/gui/redshift.nix6
-rw-r--r--modules/home-manager/personal/gui/safeeyes.nix5
-rw-r--r--modules/home-manager/personal/gui/x/default.nix20
-rw-r--r--modules/home-manager/personal/gui/x/i3/bar/default.nix25
-rw-r--r--modules/home-manager/personal/gui/x/i3/default.nix70
-rw-r--r--modules/home-manager/personal/gui/x/i3/keybindings.nix36
-rw-r--r--modules/home-manager/personal/gui/x/i3/startup.nix35
-rw-r--r--modules/home-manager/personal/gui/x/idlehook.nix10
-rw-r--r--modules/home-manager/personal/identities.nix176
-rw-r--r--modules/home-manager/personal/profiles.nix44
-rw-r--r--modules/home-manager/personal/programs/alacritty.nix21
-rw-r--r--modules/home-manager/personal/programs/devenv.nix8
-rw-r--r--modules/home-manager/personal/programs/direnv.nix20
-rw-r--r--modules/home-manager/personal/programs/emacs.nix75
-rw-r--r--modules/home-manager/personal/programs/firefox/default.nix305
-rw-r--r--modules/home-manager/personal/programs/firefox/engines.nix87
-rw-r--r--modules/home-manager/personal/programs/firefox/userjs.nix15
-rw-r--r--modules/home-manager/personal/programs/git.nix81
-rw-r--r--modules/home-manager/personal/programs/rofi.nix22
-rw-r--r--modules/home-manager/personal/programs/thunderbird.nix10
22 files changed, 657 insertions, 466 deletions
diff --git a/modules/home-manager/personal/environment.nix b/modules/home-manager/personal/environment.nix
index 03bebf3..86d9884 100644
--- a/modules/home-manager/personal/environment.nix
+++ b/modules/home-manager/personal/environment.nix
@@ -3,12 +3,20 @@
lib,
pkgs,
...
-} @ inputs: {
- home.packages = with pkgs; [coreutils moreutils];
- personal.home.wallpaper =
- lib.mkDefault (inputs.osConfig.stylix.image or (pkgs.personal.static.wallpapers.nga-1973-68-1.override {gravity = "north";}));
+}@inputs:
+{
+ home.packages = with pkgs; [
+ coreutils
+ moreutils
+ ];
+ personal.home.wallpaper = lib.mkDefault (
+ inputs.osConfig.stylix.image
+ or (pkgs.personal.static.wallpapers.nga-1973-68-1.override { gravity = "north"; })
+ );
- programs.bash = {enable = lib.mkDefault true;};
+ programs.bash = {
+ enable = lib.mkDefault true;
+ };
home = {
shellAliases = {
@@ -32,12 +40,7 @@
services.gpg-agent = {
enableBashIntegration = lib.mkDefault config.programs.bash.enable;
- pinentry.package = lib.mkDefault (
- if config.personal.gui.enable
- then pkgs.pinentry-qt
- else null
- );
- grabKeyboardAndMouse =
- lib.mkDefault false; # insecure, but necessary with keepass auto-type
+ pinentry.package = lib.mkDefault (if config.personal.gui.enable then pkgs.pinentry-qt else null);
+ grabKeyboardAndMouse = lib.mkDefault false; # insecure, but necessary with keepass auto-type
};
}
diff --git a/modules/home-manager/personal/gui/default.nix b/modules/home-manager/personal/gui/default.nix
index c0d63ce..6c023da 100644
--- a/modules/home-manager/personal/gui/default.nix
+++ b/modules/home-manager/personal/gui/default.nix
@@ -3,17 +3,21 @@
lib,
pkgs,
...
-} @ extraArgs: let
+}@extraArgs:
+let
cfg = config.personal.gui;
-in {
- imports = [./redshift.nix ./safeeyes.nix ./x];
+in
+{
+ imports = [
+ ./redshift.nix
+ ./safeeyes.nix
+ ./x
+ ];
options.personal.gui = {
- enable =
- lib.mkEnableOption "GUI"
- // {
- default = extraArgs.osConfig.personal.gui.enable or false;
- };
+ enable = lib.mkEnableOption "GUI" // {
+ default = extraArgs.osConfig.personal.gui.enable or false;
+ };
};
config = lib.mkIf cfg.enable {
@@ -43,7 +47,10 @@ in {
home.packages =
lib.optional config.dconf.enable pkgs.dconf
- ++ (with pkgs; [keepassxc pavucontrol]);
+ ++ (with pkgs; [
+ keepassxc
+ pavucontrol
+ ]);
programs.firefox.enable = true;
};
}
diff --git a/modules/home-manager/personal/gui/redshift.nix b/modules/home-manager/personal/gui/redshift.nix
index 2242ad2..cdd8ba0 100644
--- a/modules/home-manager/personal/gui/redshift.nix
+++ b/modules/home-manager/personal/gui/redshift.nix
@@ -8,10 +8,8 @@
day = lib.mkDefault 2500;
night = lib.mkDefault 2500;
};
- latitude =
- extraArgs.osConfig.location.latitude or (lib.mkDefault "48.856614");
- longitude =
- extraArgs.osConfig.location.longitude or (lib.mkDefault "2.3522219");
+ latitude = extraArgs.osConfig.location.latitude or (lib.mkDefault "48.856614");
+ longitude = extraArgs.osConfig.location.longitude or (lib.mkDefault "2.3522219");
settings.redshift.transition = lib.mkDefault 0;
};
}
diff --git a/modules/home-manager/personal/gui/safeeyes.nix b/modules/home-manager/personal/gui/safeeyes.nix
index 17a3bd6..a7ea874 100644
--- a/modules/home-manager/personal/gui/safeeyes.nix
+++ b/modules/home-manager/personal/gui/safeeyes.nix
@@ -1,9 +1,10 @@
-{...}: {
+{ ... }:
+{
services = {
safeeyes.enable = true;
snixembed = {
enable = true;
- beforeUnits = ["safeeyes.service"];
+ beforeUnits = [ "safeeyes.service" ];
};
};
}
diff --git a/modules/home-manager/personal/gui/x/default.nix b/modules/home-manager/personal/gui/x/default.nix
index bb1c4bb..2331258 100644
--- a/modules/home-manager/personal/gui/x/default.nix
+++ b/modules/home-manager/personal/gui/x/default.nix
@@ -2,17 +2,21 @@
config,
lib,
...
-} @ extraArgs: let
+}@extraArgs:
+let
cfg = config.personal.x;
-in {
- imports = [./i3 ./idlehook.nix ./picom.nix];
+in
+{
+ imports = [
+ ./i3
+ ./idlehook.nix
+ ./picom.nix
+ ];
options.personal.x = {
- enable =
- lib.mkEnableOption "X"
- // {
- default = extraArgs.osConfig.services.xserver.enable or false;
- };
+ enable = lib.mkEnableOption "X" // {
+ default = extraArgs.osConfig.services.xserver.enable or false;
+ };
};
config = lib.mkIf (cfg.enable && config.personal.gui.enable) {
diff --git a/modules/home-manager/personal/gui/x/i3/bar/default.nix b/modules/home-manager/personal/gui/x/i3/bar/default.nix
index a6d910f..132e850 100644
--- a/modules/home-manager/personal/gui/x/i3/bar/default.nix
+++ b/modules/home-manager/personal/gui/x/i3/bar/default.nix
@@ -3,26 +3,29 @@
lib,
pkgs,
...
-}: let
- statusPackage =
- pkgs.personal.barista.override {i3statusGo = ./i3status.go;};
-in {
+}:
+let
+ statusPackage = pkgs.personal.barista.override { i3statusGo = ./i3status.go; };
+in
+{
xsession.windowManager.i3.config.bars = [
- ({
+ (
+ {
statusCommand = "${statusPackage}/bin/i3status";
}
- // (config.lib.stylix.i3.targets.i3.exportedBarConfig or {colors.background = "#111111";})
+ // (config.lib.stylix.i3.targets.i3.exportedBarConfig or { colors.background = "#111111"; })
// {
fonts = {
- names = ["roboto"];
+ names = [ "roboto" ];
size = 11.0;
};
- })
+ }
+ )
];
- home.packages = with pkgs;
- lib.optionals
- (config.xsession.enable && config.xsession.windowManager.i3.enable) [
+ home.packages =
+ with pkgs;
+ lib.optionals (config.xsession.enable && config.xsession.windowManager.i3.enable) [
material-design-icons
roboto
];
diff --git a/modules/home-manager/personal/gui/x/i3/default.nix b/modules/home-manager/personal/gui/x/i3/default.nix
index 17019cb..483a0d4 100644
--- a/modules/home-manager/personal/gui/x/i3/default.nix
+++ b/modules/home-manager/personal/gui/x/i3/default.nix
@@ -3,18 +3,21 @@
lib,
pkgs,
...
-} @ extraArgs: let
+}@extraArgs:
+let
cfg = config.personal.x.i3;
-in {
- imports = [./bar ./keybindings.nix ./startup.nix];
+in
+{
+ imports = [
+ ./bar
+ ./keybindings.nix
+ ./startup.nix
+ ];
options.personal.x.i3 = {
- enable =
- lib.mkEnableOption "i3"
- // {
- default =
- extraArgs.osConfig.services.xserver.windowManager.i3.enable or false;
- };
+ enable = lib.mkEnableOption "i3" // {
+ default = extraArgs.osConfig.services.xserver.windowManager.i3.enable or false;
+ };
};
config = lib.mkIf cfg.enable {
@@ -24,27 +27,30 @@ in {
config = {
assigns =
- lib.optionalAttrs (config.personal.profiles.multimedia
- && (extraArgs.osConfig.programs.steam.enable or true)) {
- "8: multimedia" = [
- {class = "^Steam$";}
- {title = "Netflix";}
- {title = "MUBI";}
- {title = "Deezer";}
- ];
- }
- // lib.optionalAttrs config.personal.profiles.social {
- "9: social" =
- [{class = "^Mail$";} {class = "^thunderbird$";}]
- ++ lib.optionals config.personal.identities.personal [
- {class = "^signal$";}
- {class = "^Signal$";}
- {title = "^Signal";}
- ]
- ++ lib.optionals config.personal.identities.work [
- {class = "^zulip";}
- {class = "^Zulip";}
+ lib.optionalAttrs
+ (config.personal.profiles.multimedia && (extraArgs.osConfig.programs.steam.enable or true))
+ {
+ "8: multimedia" = [
+ { class = "^Steam$"; }
+ { title = "Netflix"; }
+ { title = "MUBI"; }
+ { title = "Deezer"; }
];
+ }
+ // lib.optionalAttrs config.personal.profiles.social {
+ "9: social" = [
+ { class = "^Mail$"; }
+ { class = "^thunderbird$"; }
+ ]
+ ++ lib.optionals config.personal.identities.personal [
+ { class = "^signal$"; }
+ { class = "^Signal$"; }
+ { title = "^Signal"; }
+ ]
+ ++ lib.optionals config.personal.identities.work [
+ { class = "^zulip"; }
+ { class = "^Zulip"; }
+ ];
}
// {
"10: passwords" = [
@@ -64,11 +70,7 @@ in {
floating = {
titlebar = lib.mkDefault false;
border = lib.mkDefault (
- if
- config.services.picom.enable
- && config.services.picom.shadow
- then 0
- else lib.mkOptionDefault
+ if config.services.picom.enable && config.services.picom.shadow then 0 else lib.mkOptionDefault
);
};
gaps = {
diff --git a/modules/home-manager/personal/gui/x/i3/keybindings.nix b/modules/home-manager/personal/gui/x/i3/keybindings.nix
index c15075f..d28e9fb 100644
--- a/modules/home-manager/personal/gui/x/i3/keybindings.nix
+++ b/modules/home-manager/personal/gui/x/i3/keybindings.nix
@@ -3,7 +3,8 @@
lib,
pkgs,
...
-}: let
+}:
+let
# i3 pretty-printing
exec = script: ''exec "${script}";'';
execRofiShow = modi: exec "${rofiShow} ${modi}";
@@ -19,13 +20,15 @@
rofiPulseSelect = "${pkgs.rofi-pulse-select}/bin/rofi-pulse-select";
rofiBluetooth = "${pkgs.rofi-bluetooth}/bin/rofi-bluetooth";
rofiPowerMenu = "${pkgs.rofi-power-menu}/bin/rofi-power-menu";
-in {
+in
+{
xsession.windowManager.i3.config = {
inherit modifier;
modes = lib.mkOptionDefault {
# launching apps
- launch = mkTempMode ({
+ launch = mkTempMode (
+ {
"e" = exec "emacsclient --create-frame";
"b" = exec "$BROWSER";
}
@@ -38,18 +41,19 @@ in {
"t" = execRofiShow "top";
"w" = execRofiShow "window";
"Escape" = "";
- });
+ }
+ );
};
- keybindings = lib.mkOptionDefault ({
+ keybindings = lib.mkOptionDefault (
+ {
"${modifier}+space" = "mode launch";
}
// lib.optionalAttrs config.programs.rofi.enable {
"${modifier}+F1" = exec "${rofiPulseSelect} sink";
"${modifier}+F4" = exec "${rofiPulseSelect} source";
"${modifier}+Print" = exec rofiBluetooth;
- "${modifier}+Delete" =
- exec "${rofiShow} menu -modi menu:${rofiPowerMenu}";
+ "${modifier}+Delete" = exec "${rofiShow} menu -modi menu:${rofiPowerMenu}";
"${modifier}+p" = "move workspace to output right";
}
// {
@@ -60,22 +64,18 @@ in {
# media keys
"XF86MonBrightnessUp" = exec "${brightnessctl} set 5%+";
"XF86MonBrightnessDown" = exec "${brightnessctl} set 5%-";
- "XF86AudioRaiseVolume" =
- exec "${volumectl} set-sink-volume @DEFAULT_SINK@ +5%";
- "XF86AudioLowerVolume" =
- exec "${volumectl} set-sink-volume @DEFAULT_SINK@ -5%";
+ "XF86AudioRaiseVolume" = exec "${volumectl} set-sink-volume @DEFAULT_SINK@ +5%";
+ "XF86AudioLowerVolume" = exec "${volumectl} set-sink-volume @DEFAULT_SINK@ -5%";
"XF86AudioMute" = "exec ${volumectl} set-sink-mute @DEFAULT_SINK@ toggle";
- "Shift+XF86AudioRaiseVolume" =
- exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ +5%";
- "Shift+XF86AudioLowerVolume" =
- exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ -5%";
- "XF86AudioMicMute" =
- exec "${volumectl} set-source-mute @DEFAULT_SOURCE@ toggle";
+ "Shift+XF86AudioRaiseVolume" = exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ +5%";
+ "Shift+XF86AudioLowerVolume" = exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ -5%";
+ "XF86AudioMicMute" = exec "${volumectl} set-source-mute @DEFAULT_SOURCE@ toggle";
"XF86KbdBrightnessUp" = ''
exec {brightnessctlKbd} set \
$(( $(${brightnessctlKbd} max) - $(${brightnessctlKbd} get) ))
'';
"Print" = exec screenshot;
- });
+ }
+ );
};
}
diff --git a/modules/home-manager/personal/gui/x/i3/startup.nix b/modules/home-manager/personal/gui/x/i3/startup.nix
index c42a542..223660a 100644
--- a/modules/home-manager/personal/gui/x/i3/startup.nix
+++ b/modules/home-manager/personal/gui/x/i3/startup.nix
@@ -2,24 +2,27 @@
config,
lib,
...
-}: {
- xsession.windowManager.i3.config.startup = let
- autostart = {
- command,
- always ? false,
- notification ? false,
- }: {
- inherit command always notification;
- };
- autostartIf = cond: args: lib.optional cond (autostart args);
- in
+}:
+{
+ xsession.windowManager.i3.config.startup =
+ let
+ autostart =
+ {
+ command,
+ always ? false,
+ notification ? false,
+ }:
+ {
+ inherit command always notification;
+ };
+ autostartIf = cond: args: lib.optional cond (autostart args);
+ in
[
- (autostart {command = "rfkill block bluetooth";})
- (autostart {command = "keepassxc";})
+ (autostart { command = "rfkill block bluetooth"; })
+ (autostart { command = "keepassxc"; })
]
- ++ autostartIf config.programs.thunderbird.enable {command = "thunderbird";}
- ++ autostartIf
- (config.personal.profiles.social && config.personal.identities.personal) {
+ ++ autostartIf config.programs.thunderbird.enable { command = "thunderbird"; }
+ ++ autostartIf (config.personal.profiles.social && config.personal.identities.personal) {
command = "signal-desktop";
}
++ autostartIf (with config.personal.identities; work && !personal) {
diff --git a/modules/home-manager/personal/gui/x/idlehook.nix b/modules/home-manager/personal/gui/x/idlehook.nix
index 129a9f8..9915a3c 100644
--- a/modules/home-manager/personal/gui/x/idlehook.nix
+++ b/modules/home-manager/personal/gui/x/idlehook.nix
@@ -1,8 +1,14 @@
-{ config, lib, pkgs, ... }:
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
let
brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
-in {
+in
+{
config.services.xidlehook = {
enable = lib.mkDefault config.personal.x.enable;
not-when-fullscreen = lib.mkDefault true;
diff --git a/modules/home-manager/personal/identities.nix b/modules/home-manager/personal/identities.nix
index e8007d8..23f3ac1 100644
--- a/modules/home-manager/personal/identities.nix
+++ b/modules/home-manager/personal/identities.nix
@@ -3,10 +3,12 @@
lib,
pkgs,
...
-}: let
+}:
+let
cfg = config.personal.identities;
mkEnableIdentityOption = name: lib.mkEnableOption "${name} identity";
-in {
+in
+{
options.personal.identities = {
personal = mkEnableIdentityOption "personal";
work = mkEnableIdentityOption "work";
@@ -14,95 +16,107 @@ in {
config = lib.mkMerge [
{
- accounts.email.accounts = let
- gpg = {
- key = "DFC1660846EEA97C059F18534EF515441E635D36";
- signByDefault = true;
- };
- thunderbirdSettings = id: {
- "mail.identity.id_${id}.fcc_folder_picker_mode" = 1;
- };
- in {
- personal = lib.mkIf cfg.personal {
- inherit gpg;
- address = "quentin@aristote.fr";
- userName = "quentin@aristote.fr";
- realName = "Quentin Aristote";
- folders = {
- drafts = "INBOX/Brouillons";
- inbox = "INBOX";
- sent = "INBOX/Envoyés";
- trash = "INBOX/Corbeille";
+ accounts.email.accounts =
+ let
+ gpg = {
+ key = "DFC1660846EEA97C059F18534EF515441E635D36";
+ signByDefault = true;
};
- imap = {
- host = "ssl0.ovh.net";
- port = 993;
+ thunderbirdSettings = id: {
+ "mail.identity.id_${id}.fcc_folder_picker_mode" = 1;
};
- smtp = {
- host = "ssl0.ovh.net";
- port = 465;
+ in
+ {
+ personal = lib.mkIf cfg.personal {
+ inherit gpg;
+ address = "quentin@aristote.fr";
+ userName = "quentin@aristote.fr";
+ realName = "Quentin Aristote";
+ folders = {
+ drafts = "INBOX/Brouillons";
+ inbox = "INBOX";
+ sent = "INBOX/Envoyés";
+ trash = "INBOX/Corbeille";
+ };
+ imap = {
+ host = "ssl0.ovh.net";
+ port = 993;
+ };
+ smtp = {
+ host = "ssl0.ovh.net";
+ port = 465;
+ };
+ thunderbird = {
+ enable = true;
+ profiles = [ "default" ];
+ settings =
+ id:
+ thunderbirdSettings id
+ // {
+ "mail.identity.id_${id}.draft_folder" =
+ "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Brouillons";
+ "mail.identity.id_${id}.fcc_folder" = "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Envoy&AOk-s";
+ "mail.identity.id_${id}.archive_folder" = "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Archive";
+ "mail.server.server_${id}.trash_folder_name" = "INBOX/Corbeille";
+ };
+ };
};
- thunderbird = {
- enable = true;
- profiles = ["default"];
- settings = id:
- thunderbirdSettings id
- // {
- "mail.identity.id_${id}.draft_folder" = "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Brouillons";
- "mail.identity.id_${id}.fcc_folder" = "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Envoy&AOk-s";
- "mail.identity.id_${id}.archive_folder" = "imap://quentin%40aristote.fr@ssl0.ovh.net/INBOX/Archive";
- "mail.server.server_${id}.trash_folder_name" = "INBOX/Corbeille";
- };
+ work = lib.mkIf cfg.work {
+ inherit gpg;
+ address = "quentin.aristote@irif.fr";
+ userName = "aristote";
+ realName = "Quentin Aristote";
+ aliases = [ "aristote@irif.fr" ];
+ folders = {
+ drafts = "Drafts";
+ inbox = "Inbox";
+ sent = "Sent";
+ trash = "Trash";
+ };
+ imap = {
+ host = "imap.irif.fr";
+ port = 993;
+ };
+ smtp = {
+ host = "smtp.irif.fr";
+ port = 465;
+ };
+ thunderbird = {
+ enable = true;
+ profiles = [ "default" ];
+ settings =
+ id:
+ thunderbirdSettings id
+ // {
+ "mail.identity.id_${id}.archive_folder" = "imap://aristote@imap.irif.fr/Archive";
+ "mail.server.server_${id}.trash_folder_name" = "Trash";
+ };
+ };
};
};
- work = lib.mkIf cfg.work {
- inherit gpg;
- address = "quentin.aristote@irif.fr";
- userName = "aristote";
- realName = "Quentin Aristote";
- aliases = ["aristote@irif.fr"];
- folders = {
- drafts = "Drafts";
- inbox = "Inbox";
- sent = "Sent";
- trash = "Trash";
- };
- imap = {
- host = "imap.irif.fr";
- port = 993;
- };
- smtp = {
- host = "smtp.irif.fr";
- port = 465;
- };
- thunderbird = {
- enable = true;
- profiles = ["default"];
- settings = id:
- thunderbirdSettings id
- // {
- "mail.identity.id_${id}.archive_folder" = "imap://aristote@imap.irif.fr/Archive";
- "mail.server.server_${id}.trash_folder_name" = "Trash";
- };
- };
- };
- };
}
(lib.mkIf cfg.work {
home = {
- packages = with pkgs; [zotero evince] ++ lib.optional (!cfg.personal) zulip;
- file.".latexmkrc".source =
- lib.mkDefault config.personal.home.dotfiles.latexmkrc;
+ packages =
+ with pkgs;
+ [
+ zotero
+ evince
+ ]
+ ++ lib.optional (!cfg.personal) zulip;
+ file.".latexmkrc".source = lib.mkDefault config.personal.home.dotfiles.latexmkrc;
};
- xdg.mimeApps.defaultApplications."application/pdf" = ["org.gnome.Evince.desktop"];
- programs.firefox.profiles = let
- addFloccus = {
- extensions.packages = [pkgs.personal.firefoxAddons.floccus];
+ xdg.mimeApps.defaultApplications."application/pdf" = [ "org.gnome.Evince.desktop" ];
+ programs.firefox.profiles =
+ let
+ addFloccus = {
+ extensions.packages = [ pkgs.personal.firefoxAddons.floccus ];
+ };
+ in
+ {
+ default = addFloccus;
+ videoconferencing = addFloccus;
};
- in {
- default = addFloccus;
- videoconferencing = addFloccus;
- };
})
];
}
diff --git a/modules/home-manager/personal/profiles.nix b/modules/home-manager/personal/profiles.nix
index baf9219..48491ad 100644
--- a/modules/home-manager/personal/profiles.nix
+++ b/modules/home-manager/personal/profiles.nix
@@ -3,10 +3,12 @@
lib,
pkgs,
...
-}: let
+}:
+let
cfg = config.personal.profiles;
mkEnableProfileOption = name: lib.mkEnableOption "${name} profile";
-in {
+in
+{
options.personal.profiles = {
dev = mkEnableProfileOption "development";
social = mkEnableProfileOption "social";
@@ -16,7 +18,7 @@ in {
config = lib.mkMerge [
(lib.mkIf cfg.dev {
- home.packages = with pkgs; [python3];
+ home.packages = with pkgs; [ python3 ];
programs = {
alacritty.enable = lib.mkDefault config.personal.gui.enable;
direnv.enable = lib.mkDefault true;
@@ -25,14 +27,16 @@ in {
};
personal.programs.devenv.enable = true;
- home.file.".config/latexmkrc".text =
- builtins.readFile config.personal.home.dotfiles.latexmkrc;
+ home.file.".config/latexmkrc".text = builtins.readFile config.personal.home.dotfiles.latexmkrc;
services.gpg-agent.enableSshSupport = true;
})
(lib.mkIf cfg.multimedia {
- home.packages = with pkgs; [transmission_4-gtk vlc];
+ home.packages = with pkgs; [
+ transmission_4-gtk
+ vlc
+ ];
personal = {
gui.enable = lib.mkForce true;
firefox.webapps = [
@@ -42,7 +46,11 @@ in {
icon = "${pkgs.personal.static.icons.netflix}";
comment = "Unlimited movies, TV shows, and more.";
url = "https://www.netflix.com/fr-en/login";
- categories = ["AudioVideo" "Video" "Player"];
+ categories = [
+ "AudioVideo"
+ "Video"
+ "Player"
+ ];
}
{
name = "MUBI";
@@ -50,7 +58,11 @@ in {
icon = "${pkgs.personal.static.icons.mubi}";
comment = "Watch hand-picked cinema.";
url = "https://mubi.com";
- categories = ["AudioVideo" "Video" "Player"];
+ categories = [
+ "AudioVideo"
+ "Video"
+ "Player"
+ ];
}
{
name = "Deezer";
@@ -58,17 +70,23 @@ in {
icon = "${pkgs.personal.static.icons.deezer}";
comment = "Listen to music online";
url = "https://deezer.com/login";
- categories = ["AudioVideo" "Audio" "Player" "Music"];
+ categories = [
+ "AudioVideo"
+ "Audio"
+ "Player"
+ "Music"
+ ];
}
];
};
})
(lib.mkIf cfg.social {
- home.packages = with pkgs;
- lib.optionals
- (config.personal.gui.enable && config.personal.identities.personal)
- [signal-desktop-bin];
+ home.packages =
+ with pkgs;
+ lib.optionals (config.personal.gui.enable && config.personal.identities.personal) [
+ signal-desktop-bin
+ ];
programs.thunderbird.enable = lib.mkDefault config.personal.gui.enable;
programs.gpg.enable = true;
services.gpg-agent.enable = true;
diff --git a/modules/home-manager/personal/programs/alacritty.nix b/modules/home-manager/personal/programs/alacritty.nix
index 94193e8..201fe29 100644
--- a/modules/home-manager/personal/programs/alacritty.nix
+++ b/modules/home-manager/personal/programs/alacritty.nix
@@ -2,20 +2,19 @@
{
programs.alacritty.settings = {
- window = {
- padding = {
- x = 10;
- y = 10;
- };
- dimensions = {
- lines = 75;
- columns = 100;
- };
+ window = {
+ padding = {
+ x = 10;
+ y = 10;
};
+ dimensions = {
+ lines = 75;
+ columns = 100;
+ };
+ };
- font = lib.mkForce { size = 8.0; };
+ font = lib.mkForce { size = 8.0; };
};
xsession.windowManager.i3.config.terminal = lib.mkIf config.programs.alacritty.enable "alacritty";
}
-
diff --git a/modules/home-manager/personal/programs/devenv.nix b/modules/home-manager/personal/programs/devenv.nix
index b41d0cb..dbe5aab 100644
--- a/modules/home-manager/personal/programs/devenv.nix
+++ b/modules/home-manager/personal/programs/devenv.nix
@@ -3,10 +3,12 @@
lib,
pkgs,
...
-}: let
+}:
+let
cfg = config.personal.programs.devenv;
- importedDevenv = pkgs ? devenv; #
-in {
+ importedDevenv = pkgs ? devenv;
+in
+{
options.personal.programs.devenv.enable = lib.mkEnableOption "devenv";
config = lib.mkIf cfg.enable {
diff --git a/modules/home-manager/personal/programs/direnv.nix b/modules/home-manager/personal/programs/direnv.nix
index fe1662d..1cb4ea9 100644
--- a/modules/home-manager/personal/programs/direnv.nix
+++ b/modules/home-manager/personal/programs/direnv.nix
@@ -3,17 +3,18 @@
lib,
pkgs,
...
-}: let
+}:
+let
cfg = config.programs.direnv;
-in {
+in
+{
programs.direnv.nix-direnv.enable = true;
- systemd.user =
- lib.mkIf cfg.enable
- (pkgs.personal.lib.homeManager.serviceWithTimer "direnv-clean-update" {
+ systemd.user = lib.mkIf cfg.enable (
+ pkgs.personal.lib.homeManager.serviceWithTimer "direnv-clean-update" {
Unit = {
Description = "Remove old virtual environments and update the current ones";
- After = ["network-online.target"];
+ After = [ "network-online.target" ];
};
Service = {
Type = "oneshot";
@@ -30,6 +31,9 @@ in {
Persistent = true;
OnCalendar = "daily";
};
- Install = {WantedBy = ["default.target "];};
- });
+ Install = {
+ WantedBy = [ "default.target " ];
+ };
+ }
+ );
}
diff --git a/modules/home-manager/personal/programs/emacs.nix b/modules/home-manager/personal/programs/emacs.nix
index da0c07f..da30cd2 100644
--- a/modules/home-manager/personal/programs/emacs.nix
+++ b/modules/home-manager/personal/programs/emacs.nix
@@ -1,12 +1,21 @@
-{ config, lib, pkgs, ... }:
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
let
cfg = config.programs.emacs;
- spacemacs-update-script = pkgs.callPackage ({ emacs, git }:
+ spacemacs-update-script = pkgs.callPackage (
+ { emacs, git }:
pkgs.writeShellApplication {
name = "spacemacs-update";
- runtimeInputs = [ emacs git ];
+ runtimeInputs = [
+ emacs
+ git
+ ];
text = ''
git checkout develop
@@ -18,40 +27,57 @@ let
(configuration-layer/update-packages "no-confirmation")
(spacemacs/kill-emacs))'
'';
- }) { emacs = cfg.package; };
-in {
+ }
+ ) { emacs = cfg.package; };
+in
+{
config = lib.mkIf cfg.enable {
services.emacs = {
enable = lib.mkDefault true;
client.enable = lib.mkDefault true;
startWithUserSession = lib.mkDefault true;
- package = let emacs = config.programs.emacs.finalPackage; in
- pkgs.runCommand "emacsWrapped" {
- nativeBuildInputs = with pkgs; [ makeWrapper ];
- } ''
- mkdir "$out"
- ln -s ${emacs}/share "$out"
- for binary in ${emacs}/bin/*
- do
- makeWrapper "$binary" "$out"/bin/$(basename "$binary")\
- --prefix PATH : ${lib.makeBinPath (with pkgs; [ gnutar gcc ])}
- done
+ package =
+ let
+ emacs = config.programs.emacs.finalPackage;
+ in
+ pkgs.runCommand "emacsWrapped"
+ {
+ nativeBuildInputs = with pkgs; [ makeWrapper ];
+ }
+ ''
+ mkdir "$out"
+ ln -s ${emacs}/share "$out"
+ for binary in ${emacs}/bin/*
+ do
+ makeWrapper "$binary" "$out"/bin/$(basename "$binary")\
+ --prefix PATH : ${
+ lib.makeBinPath (
+ with pkgs;
+ [
+ gnutar
+ gcc
+ ]
+ )
+ }
+ done
'';
};
home.sessionVariables.EDITOR = "emacsclient --tty";
home.shellAliases.editor = "emacsclient --create-frame";
# spacemacs dotfile
- home.file.".spacemacs.d/init.el".source =
- lib.mkDefault config.personal.home.dotfiles.spacemacs;
+ home.file.".spacemacs.d/init.el".source = lib.mkDefault config.personal.home.dotfiles.spacemacs;
# service to update spacemacs
- systemd.user =
- (pkgs.personal.lib.homeManager.serviceWithTimer "spacemacs-update" {
+ systemd.user = (
+ pkgs.personal.lib.homeManager.serviceWithTimer "spacemacs-update" {
Unit = {
Description = "Update Spacemacs by pulling the develop branch";
- After = [ "network-online.target" "emacs.service" ];
+ After = [
+ "network-online.target"
+ "emacs.service"
+ ];
};
Service = {
Type = "oneshot";
@@ -62,7 +88,10 @@ in {
Persistent = true;
OnCalendar = "daily";
};
- Install = { WantedBy = [ "default.target" ]; };
- });
+ Install = {
+ WantedBy = [ "default.target" ];
+ };
+ }
+ );
};
}
diff --git a/modules/home-manager/personal/programs/firefox/default.nix b/modules/home-manager/personal/programs/firefox/default.nix
index d103c3d..3f1963d 100644
--- a/modules/home-manager/personal/programs/firefox/default.nix
+++ b/modules/home-manager/personal/programs/firefox/default.nix
@@ -4,178 +4,221 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.personal.firefox;
userjs = pkgs.callPackage ./userjs.nix {
inherit (pkgs.personal.static.userjs) arkenfox;
inherit (pkgs.lib.personal) toUserJS;
};
- engines = import ./engines.nix {inherit lib pkgs;};
+ engines = import ./engines.nix { inherit lib pkgs; };
webappsWithIds =
- (builtins.foldl' ({
- counter,
- value,
- }: {name, ...} @ next: {
- counter = counter + 1;
- value =
- value
- ++ [
- (next
+ (builtins.foldl'
+ (
+ {
+ counter,
+ value,
+ }:
+ { name, ... }@next:
+ {
+ counter = counter + 1;
+ value = value ++ [
+ (
+ next
// {
id = counter;
profileName = lib.toLower name;
- })
+ }
+ )
];
- }) {
+ }
+ )
+ {
counter = 0;
- value = [];
+ value = [ ];
}
- cfg.webapps)
- .value;
-in {
+ cfg.webapps
+ ).value;
+in
+{
options.personal.firefox = {
webapps = lib.mkOption {
- type = with lib.types;
+ type =
+ with lib.types;
listOf (submodule {
- options = let
- mkTypedOption = type: lib.mkOption {inherit type;};
- in {
- name = mkTypedOption str;
- genericName = mkTypedOption str // {default = "";};
- url = mkTypedOption str;
- comment = mkTypedOption str // {default = "";};
- extraUserJS = mkTypedOption lines // {default = "";};
- categories = mkTypedOption (listOf str) // {default = [];};
- icon = mkTypedOption path;
- };
+ options =
+ let
+ mkTypedOption = type: lib.mkOption { inherit type; };
+ in
+ {
+ name = mkTypedOption str;
+ genericName = mkTypedOption str // {
+ default = "";
+ };
+ url = mkTypedOption str;
+ comment = mkTypedOption str // {
+ default = "";
+ };
+ extraUserJS = mkTypedOption lines // {
+ default = "";
+ };
+ categories = mkTypedOption (listOf str) // {
+ default = [ ];
+ };
+ icon = mkTypedOption path;
+ };
});
- default = [];
+ default = [ ];
};
};
config = lib.mkMerge [
{
programs.firefox.profiles =
- builtins.foldl' (prev: {
- id,
- profileName,
- extraUserJS,
- ...
- }:
- prev
- // {
- "${profileName}" = {
- id = id + 2;
+ builtins.foldl'
+ (
+ prev:
+ {
+ id,
+ profileName,
+ extraUserJS,
+ ...
+ }:
+ prev
+ // {
+ "${profileName}" = {
+ id = id + 2;
+ extensions.packages = with pkgs.personal.firefoxAddons; [
+ clearurls
+ neat-url
+ redirector
+ smart-referer
+ ublock-origin
+ unpaywall
+ url-in-title
+ ];
+ search = {
+ force = true;
+ engines = with engines; disableDefault // { inherit Searx; };
+ default = "Searx";
+ privateDefault = "Searx";
+ };
+ extraConfig = userjs.streaming + extraUserJS;
+ };
+ }
+ )
+ {
+ default = {
+ id = 0; # isDefault = true
+
extensions.packages = with pkgs.personal.firefoxAddons; [
+ canvasblocker
clearurls
+ darkreader
neat-url
redirector
smart-referer
+ temporary-containers
+ tree-style-tab
ublock-origin
unpaywall
url-in-title
];
search = {
- force = true;
- engines = with engines; disableDefault // {inherit Searx;};
+ force = lib.mkDefault true;
+ engines =
+ with engines;
+ disableDefault
+ // {
+ inherit Searx;
+ }
+ // lib.optionalAttrs config.personal.identities.personal personal
+ // lib.optionalAttrs config.personal.identities.work work
+ // lib.optionalAttrs config.personal.profiles.dev dev;
default = "Searx";
- privateDefault = "Searx";
+ order = [
+ "Searx"
+ "Wikipedia"
+ ];
};
- extraConfig = userjs.streaming + extraUserJS;
+ extraConfig = userjs.default;
+ userChrome = ./userchrome/treestyletabs-outer.css;
};
- }) {
- default = {
- id = 0; # isDefault = true
- extensions.packages = with pkgs.personal.firefoxAddons; [
- canvasblocker
- clearurls
- darkreader
- neat-url
- redirector
- smart-referer
- temporary-containers
- tree-style-tab
- ublock-origin
- unpaywall
- url-in-title
- ];
- search = {
- force = lib.mkDefault true;
- engines = with engines;
- disableDefault
- // {
- inherit Searx;
- }
- // lib.optionalAttrs config.personal.identities.personal
- personal
- // lib.optionalAttrs config.personal.identities.work work
- // lib.optionalAttrs config.personal.profiles.dev dev;
- default = "Searx";
- order = ["Searx" "Wikipedia"];
- };
- extraConfig = userjs.default;
- userChrome = ./userchrome/treestyletabs-outer.css;
- };
-
- videoconferencing = {
- id = 1;
- extensions.packages = with pkgs.personal.firefoxAddons; [
- clearurls
- darkreader
- neat-url
- redirector
- smart-referer
- multi-account-containers
- tree-style-tab
- ublock-origin
- unpaywall
- url-in-title
- ];
- search = {
- force = true;
- engines = with engines; disableDefault // {inherit Searx;};
- default = "Searx";
+ videoconferencing = {
+ id = 1;
+ extensions.packages = with pkgs.personal.firefoxAddons; [
+ clearurls
+ darkreader
+ neat-url
+ redirector
+ smart-referer
+ multi-account-containers
+ tree-style-tab
+ ublock-origin
+ unpaywall
+ url-in-title
+ ];
+ search = {
+ force = true;
+ engines = with engines; disableDefault // { inherit Searx; };
+ default = "Searx";
+ };
+ extraConfig = userjs.videoconferencing;
+ userChrome = ./userchrome/treestyletabs-outer.css;
};
- extraConfig = userjs.videoconferencing;
- userChrome = ./userchrome/treestyletabs-outer.css;
- };
- }
- webappsWithIds;
+ }
+ webappsWithIds;
}
(lib.mkIf config.programs.firefox.enable {
- xdg.desktopEntries = let
- firefoxProfilesDir = "${config.home.homeDirectory}/.mozilla/firefox";
- firefoxInProfile = profile: ''
- ${config.programs.firefox.package}/bin/firefox --profile "${firefoxProfilesDir}/${profile}"'';
- in
- builtins.foldl' (prev: {
- name,
- profileName,
- url,
- genericName,
- icon,
- comment,
- categories,
- ...
- }:
- prev
- // {
- "${profileName}" = {
- inherit name genericName icon comment categories;
- exec = "${firefoxInProfile profileName} ${url}";
+ xdg.desktopEntries =
+ let
+ firefoxProfilesDir = "${config.home.homeDirectory}/.mozilla/firefox";
+ firefoxInProfile =
+ profile:
+ ''${config.programs.firefox.package}/bin/firefox --profile "${firefoxProfilesDir}/${profile}"'';
+ in
+ builtins.foldl'
+ (
+ prev:
+ {
+ name,
+ profileName,
+ url,
+ genericName,
+ icon,
+ comment,
+ categories,
+ ...
+ }:
+ prev
+ // {
+ "${profileName}" = {
+ inherit
+ name
+ genericName
+ icon
+ comment
+ categories
+ ;
+ exec = "${firefoxInProfile profileName} ${url}";
+ };
+ }
+ )
+ {
+ videoconferences = {
+ name = "Video Conferences";
+ genericName = "Video conference";
+ comment = "Use video conferencing software in a browser.";
+ exec = "${firefoxInProfile "videoconferencing"}";
+ categories = [
+ "Network"
+ "VideoConference"
+ ];
};
- }) {
- videoconferences = {
- name = "Video Conferences";
- genericName = "Video conference";
- comment = "Use video conferencing software in a browser.";
- exec = "${firefoxInProfile "videoconferencing"}";
- categories = ["Network" "VideoConference"];
- };
- }
- webappsWithIds;
+ }
+ webappsWithIds;
home.shellAliases.fftmp = "firefox --profile $(mktemp -d)";
home.sessionVariables.BROWSER = "firefox";
diff --git a/modules/home-manager/personal/programs/firefox/engines.nix b/modules/home-manager/personal/programs/firefox/engines.nix
index cc6a318..ddd5f3b 100644
--- a/modules/home-manager/personal/programs/firefox/engines.nix
+++ b/modules/home-manager/personal/programs/firefox/engines.nix
@@ -1,44 +1,67 @@
{
lib,
pkgs,
-}: let
+}:
+let
everyday = 24 * 60 * 60 * 1000;
searchTerms = "{searchTerms}";
nixosIcon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
self = {
- disable = engines: lib.genAttrs engines (_: {metaData.hidden = true;});
- disableDefault = self.disable ["google" "Amazon.fr" "bing"];
+ disable =
+ engines:
+ lib.genAttrs engines (_: {
+ metaData.hidden = true;
+ });
+ disableDefault = self.disable [
+ "google"
+ "Amazon.fr"
+ "bing"
+ ];
nix = {
- inherit (self) "Home Manager Options" "NixOS Options" "NixOS Wiki" "Nix Packages";
+ inherit (self)
+ "Home Manager Options"
+ "NixOS Options"
+ "NixOS Wiki"
+ "Nix Packages"
+ ;
};
- dev = self.nix // {inherit (self) AlternativeTo Phind;};
- personal = {inherit (self) Emojipedia;};
- work = {inherit (self) nLab;};
- all = self.dev // self.personal // self.work // {inherit (self) Searx;};
+ dev = self.nix // {
+ inherit (self) AlternativeTo Phind;
+ };
+ personal = { inherit (self) Emojipedia; };
+ work = { inherit (self) nLab; };
+ all = self.dev // self.personal // self.work // { inherit (self) Searx; };
Emojipedia = {
urls = [
{
template = "https://emojipedia.org/search/";
- params = [(lib.nameValuePair "q" searchTerms)];
+ params = [ (lib.nameValuePair "q" searchTerms) ];
}
];
icon = "https://emojipedia.org/static/img/favicons/favicon-16x16.png";
updateInterval = everyday;
- definedAliases = ["@emojipedia" "@emoji" "@em"];
+ definedAliases = [
+ "@emojipedia"
+ "@emoji"
+ "@em"
+ ];
};
AlternativeTo = {
urls = [
{
template = "https://alternativeto.net/browse/search/";
- params = [(lib.nameValuePair "q" searchTerms)];
+ params = [ (lib.nameValuePair "q" searchTerms) ];
}
];
icon = "https://alternativeto.net/static/icons/a2/favicon-16x16.png";
updateInterval = everyday;
- definedAliases = ["@alternativeto" "@a2"];
+ definedAliases = [
+ "@alternativeto"
+ "@a2"
+ ];
};
"Home Manager Options" = {
@@ -48,7 +71,10 @@
}
];
icon = nixosIcon;
- definedAliases = ["@homemanager" "@hm"];
+ definedAliases = [
+ "@homemanager"
+ "@hm"
+ ];
};
"NixOS Options" = {
@@ -62,18 +88,24 @@
}
];
icon = nixosIcon;
- definedAliases = ["@nixos" "@no"];
+ definedAliases = [
+ "@nixos"
+ "@no"
+ ];
};
"NixOS Wiki" = {
urls = [
{
template = "https://wiki.nixos.org/w/index.php";
- params = [(lib.nameValuePair "search" searchTerms)];
+ params = [ (lib.nameValuePair "search" searchTerms) ];
}
];
icon = nixosIcon;
- definedAliases = ["@nixoswiki" "@nw"];
+ definedAliases = [
+ "@nixoswiki"
+ "@nw"
+ ];
};
"Nix Packages" = {
@@ -87,26 +119,32 @@
}
];
icon = nixosIcon;
- definedAliases = ["@nixpkgs" "@np"];
+ definedAliases = [
+ "@nixpkgs"
+ "@np"
+ ];
};
nLab = {
urls = [
{
template = "https://ncatlab.org/nlab/search";
- params = [(lib.nameValuePair "query" searchTerms)];
+ params = [ (lib.nameValuePair "query" searchTerms) ];
}
];
icon = "https://ncatlab.org/favicon.ico";
updateInterval = everyday;
- definedAliases = ["@ncatlab" "@nlab"];
+ definedAliases = [
+ "@ncatlab"
+ "@nlab"
+ ];
};
Searx = {
urls = [
{
template = "https://searx.aristote.fr/search";
- params = [(lib.nameValuePair "q" searchTerms)];
+ params = [ (lib.nameValuePair "q" searchTerms) ];
}
];
icon = "https://searx.aristote.fr/static/themes/simple/img/favicon.svg";
@@ -117,13 +155,16 @@
urls = [
{
template = "https://phind.com/search";
- params = [(lib.nameValuePair "q" searchTerms)];
+ params = [ (lib.nameValuePair "q" searchTerms) ];
}
];
icon = "https://www.phind.com/images/favicon.png";
updateInterval = everyday;
- definedAliases = ["@phind" "@ph"];
+ definedAliases = [
+ "@phind"
+ "@ph"
+ ];
};
};
in
- self
+self
diff --git a/modules/home-manager/personal/programs/firefox/userjs.nix b/modules/home-manager/personal/programs/firefox/userjs.nix
index 8c17fa6..3f2b6bd 100644
--- a/modules/home-manager/personal/programs/firefox/userjs.nix
+++ b/modules/home-manager/personal/programs/firefox/userjs.nix
@@ -1,7 +1,8 @@
{
arkenfox,
toUserJS,
-}: let
+}:
+let
self = {
arkenfox = builtins.readFile "${arkenfox}";
default =
@@ -14,8 +15,8 @@
"dom.allow_cut_copy" = true; # 2404
"dom.battery.enabled" = false; # 2502
"permissions.default.xr" = 2; # 2521
- "browser.search.separatePrivateDefault" = false; #0830
- "browser.search.separatePrivateDefault.ui.enabled" = false; #0830
+ "browser.search.separatePrivateDefault" = false; # 0830
+ "browser.search.separatePrivateDefault.ui.enabled" = false; # 0830
# Personal
## Warnings
@@ -57,12 +58,10 @@
"media.peerconnection.enabled" = true;
"media.peerconnection.ice.no_host" = false; # may or may not be required
"webgl.min_capability_mode" = true;
- "media.autoplay.blocking_policy" =
- 0; # optional (otherwise add site exceptions)
- "javascript.options.wasm" =
- true; # optional (some platforms may require this)
+ "media.autoplay.blocking_policy" = 0; # optional (otherwise add site exceptions)
+ "javascript.options.wasm" = true; # optional (some platforms may require this)
"dom.webaudio.enabled" = true;
};
};
in
- self
+self
diff --git a/modules/home-manager/personal/programs/git.nix b/modules/home-manager/personal/programs/git.nix
index 56078a8..488295e 100644
--- a/modules/home-manager/personal/programs/git.nix
+++ b/modules/home-manager/personal/programs/git.nix
@@ -3,19 +3,23 @@
lib,
pkgs,
...
-} @ extraArgs: let
- primaryEmail = let
- primaryEmailList =
- builtins.filter (account: account.primary)
- (lib.attrValues config.accounts.email.accounts);
- in
- if primaryEmailList == []
- then {
- userName = lib.mkDefault "Quentin Aristote";
- address = lib.mkDefault "quentin@aristote.fr";
- }
- else builtins.head primaryEmailList;
-in {
+}@extraArgs:
+let
+ primaryEmail =
+ let
+ primaryEmailList = builtins.filter (account: account.primary) (
+ lib.attrValues config.accounts.email.accounts
+ );
+ in
+ if primaryEmailList == [ ] then
+ {
+ userName = lib.mkDefault "Quentin Aristote";
+ address = lib.mkDefault "quentin@aristote.fr";
+ }
+ else
+ builtins.head primaryEmailList;
+in
+{
programs.git = {
userName = primaryEmail.userName;
userEmail = primaryEmail.address;
@@ -23,30 +27,35 @@ in {
inherit (primaryEmail.gpg) key signByDefault;
};
- ignores =
- [
- (builtins.readFile
- (pkgs.personal.static.gitignore.override {templates = ["Emacs" "Linux"];}))
- ]
- ++ [
- # Personal rules
- ''
- # direnv
- .direnv
- .envrc
+ ignores = [
+ (builtins.readFile (
+ pkgs.personal.static.gitignore.override {
+ templates = [
+ "Emacs"
+ "Linux"
+ ];
+ }
+ ))
+ ]
+ ++ [
+ # Personal rules
+ ''
+ # direnv
+ .direnv
+ .envrc
- # devenv
- .devenv.flake.nix
- .devenv/
- devenv.local.nix
+ # devenv
+ .devenv.flake.nix
+ .devenv/
+ devenv.local.nix
- # Nix
- shell.nix
- .nix-gc-roots
- .tmp
- result
- ''
- ];
+ # Nix
+ shell.nix
+ .nix-gc-roots
+ .tmp
+ result
+ ''
+ ];
extraConfig = {
safe.directory = lib.mkIf (extraArgs ? osConfig) (
@@ -55,7 +64,7 @@ in {
flakeIsValid = flake != null && lib.hasPrefix "git+file://" flake;
flakePath = lib.removePrefix "git+file://" flake;
in
- lib.optional flakeIsValid flakePath
+ lib.optional flakeIsValid flakePath
);
init.defaultBranch = "master";
pull.rebase = true;
diff --git a/modules/home-manager/personal/programs/rofi.nix b/modules/home-manager/personal/programs/rofi.nix
index a3fdad3..10c284c 100644
--- a/modules/home-manager/personal/programs/rofi.nix
+++ b/modules/home-manager/personal/programs/rofi.nix
@@ -3,19 +3,23 @@
lib,
pkgs,
...
-}: {
+}:
+{
programs.rofi = {
cycle = lib.mkDefault true;
- theme =
- lib.mkIf (config.lib ? stylix)
- (
- lib.mkForce
- (config.lib.stylix.colors {
+ theme = lib.mkIf (config.lib ? stylix) (
+ lib.mkForce (
+ config.lib.stylix.colors {
template = builtins.readFile config.personal.home.dotfiles.rofi;
extension = ".rasi";
- })
- );
- plugins = with pkgs; [rofi-top rofi-calc rofi-emoji];
+ }
+ )
+ );
+ plugins = with pkgs; [
+ rofi-top
+ rofi-calc
+ rofi-emoji
+ ];
};
xdg.dataFile."rofi/themes/custom.rasi" = lib.mkForce {
source = config.programs.rofi.theme;
diff --git a/modules/home-manager/personal/programs/thunderbird.nix b/modules/home-manager/personal/programs/thunderbird.nix
index c904dd5..d68a5df 100644
--- a/modules/home-manager/personal/programs/thunderbird.nix
+++ b/modules/home-manager/personal/programs/thunderbird.nix
@@ -3,7 +3,8 @@
lib,
pkgs,
...
-}: let
+}:
+let
configDefault =
builtins.readFile "${pkgs.personal.static.userjs.thunderbird}"
+ pkgs.lib.personal.toUserJS {
@@ -37,7 +38,8 @@
## Spam
"mail.spam.manualMark" = true; # move manually marked-as-junk to junk folder
};
-in {
+in
+{
config = lib.mkMerge [
{
programs.thunderbird = {
@@ -50,8 +52,8 @@ in {
(lib.mkIf config.programs.thunderbird.enable {
home.file.".thunderbird/default/user.js".text = configDefault;
xdg.mimeApps.defaultApplications = {
- "x-scheme-handler/mailto" = ["thunderbird.desktop"];
- "application/x-xpinstall" = ["thunderbird.desktop"];
+ "x-scheme-handler/mailto" = [ "thunderbird.desktop" ];
+ "application/x-xpinstall" = [ "thunderbird.desktop" ];
};
})
];