diff options
| author | aristote <quentin.aristote@irif.fr> | 2025-07-29 15:25:11 +0200 |
|---|---|---|
| committer | aristote <quentin.aristote@irif.fr> | 2025-07-29 15:25:11 +0200 |
| commit | fc019d789523ce5f89436b8dbc458cf3b79abf43 (patch) | |
| tree | ec56fd1b1ed9fc75096c0b09db48a152975e4d53 /modules/home-manager/personal | |
| parent | a3d19bc509d9f39fb41256cd55d2bd7706de202f (diff) | |
reformat everything with nixfmt
Diffstat (limited to 'modules/home-manager/personal')
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" ]; }; }) ]; |
