diff --git a/home.nix b/home.nix index e6f9488..9e6c1ca 100644 --- a/home.nix +++ b/home.nix @@ -1,15 +1,30 @@ -inputs @ { nixpkgs, home-manager, ... }: +inputs: let - system = "x86_64-linux"; - overlay = final: prev: { + overlay = system: final: prev: { helix = prev.helix // inputs.helix.packages.${system}.helix; rtx = prev.rtx // inputs.rtx.packages.${system}.rtx; }; - pkgs = import nixpkgs { inherit system; overlays = [ overlay ]; }; + # TODO: be functional - have a mkHome function? in { - # TODO: per arch? - daniel = home-manager.lib.homeManagerConfiguration { + daniel = let + system = "x86_64-linux"; + pkgs = import inputs.nixpkgs { inherit system; overlays = [ (overlay system) ]; }; + in inputs.home-manager.lib.homeManagerConfiguration { inherit pkgs; - modules = [ import ./daniel.nix pkgs ]; + modules = [ + (import ./home/user.nix pkgs) + (import ./home/linux.nix pkgs) + ]; + }; + + daniel-work = let + system = "aarch64-darwin"; + pkgs = import inputs.nixpkgs { inherit system; overlays = [ (overlay system) ]; }; + in inputs.home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ + (import ./home/user.nix pkgs) + (import ./home/work.nix pkgs) + ]; }; } diff --git a/home/linux.nix b/home/linux.nix new file mode 100644 index 0000000..d9aa498 --- /dev/null +++ b/home/linux.nix @@ -0,0 +1,74 @@ +{ pkgs, ... }: { + home.pointerCursor = { + name = "Catppuccin-Mocha-Sapphire-Cursors"; + package = pkgs.catppuccin-cursors.mochaSapphire; + size = 64; # TODO: this doesn't seem to work -- at least in Sway + }; + + gtk = { + enable = true; + theme = { + name = "Catppuccin-Mocha-Compact-Sapphire-dark"; + package = pkgs.catppuccin-gtk.override { + accents = [ "sapphire" ]; + size = "compact"; + tweaks = [ "rimless" "black" ]; + variant = "mocha"; + }; + }; + }; + + home.packages = [ + (pkgs.buildEnv { name = "my-linux-scripts"; paths = [ ./scripts/linux ]; }) + ]; + + programs.firefox = { + # TODO: enable dark theme by default + enable = true; + + package = (pkgs.firefox.override { extraNativeMessagingHosts = [ pkgs.passff-host ]; }); + + # extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + # ublock-origin + # ]; # TODO: would be nice to have _all_ my firefox stuff managed here instead of Firefox Sync maybe? + + profiles = { + daniel = { + id = 0; + settings = { + "general.smoothScroll" = true; + }; + + extraConfig = '' + user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); + // user_pref("full-screen-api.ignore-widgets", true); + user_pref("media.ffmpeg.vaapi.enabled", true); + user_pref("media.rdd-vpx.enabled", true); + ''; + + userChrome = '' + #TabsToolbar { + visibility: collapse; + } + + #webrtcIndicator { + display: none; + } + + #main-window[tabsintitlebar="true"]:not([extradragspace="true"]) #TabsToolbar>.toolbar-items { + opacity: 0; + pointer-events: none; + } + + #main-window:not([tabsintitlebar="true"]) #TabsToolbar { + visibility: collapse !important; + } + ''; + + # userContent = '' + # ''; + }; + + }; + }; +} diff --git a/daniel.nix b/home/user.nix similarity index 97% rename from daniel.nix rename to home/user.nix index 6fce7d7..1cec547 100644 --- a/daniel.nix +++ b/home/user.nix @@ -11,7 +11,7 @@ in # }; home = { - username = "daniel"; + username = lib.mkDefault "daniel"; homeDirectory = lib.mkDefault "/home/daniel/.home"; stateVersion = "23.05"; @@ -20,8 +20,17 @@ in # kubectl, aws pkgs.rtx + # text editor + pkgs.helix + + # I need gawk for my fish prompt + pkgs.gawk + + pkgs.nil + pkgs.nixpkgs-fmt + # TODO: os-specific scripts? macOS versus Linux (arch or nixos? do I need to distinguish at that point?) - (pkgs.buildEnv { name = "my-scripts"; paths = [ ./scripts ]; }) + (pkgs.buildEnv { name = "my-scripts"; paths = [ ../scripts ]; }) ]; file = { @@ -59,12 +68,6 @@ in ''; }; }; - - pointerCursor = { - name = "Catppuccin-Mocha-Sapphire-Cursors"; - package = pkgs.catppuccin-cursors.mochaSapphire; - size = 64; # TODO: this doesn't seem to work -- at least in Sway - }; }; programs = { @@ -485,8 +488,8 @@ select = { fish = { enable = true; # I load long scripts from files for a better editing experience - shellInit = builtins.readFile ./fish/shellInit.fish; - interactiveShellInit = builtins.readFile ./fish/interactiveShellInit.fish; + shellInit = builtins.readFile ../fish/shellInit.fish; + interactiveShellInit = builtins.readFile ../fish/interactiveShellInit.fish; loginShellInit = ""; functions = { # I think these should be loaded from fish files too for better editor experience @@ -625,7 +628,6 @@ select = { # userContent = '' # ''; }; - }; }; }; diff --git a/home/work.nix b/home/work.nix new file mode 100644 index 0000000..c41f5c9 --- /dev/null +++ b/home/work.nix @@ -0,0 +1,6 @@ +{ lib, ... }: let + username = "daniel.flanagan@divvypay.com"; +in { + home.username = username; + home.homeDirectory = "/Users/${username}"; +} diff --git a/modules/sway.nix b/modules/sway.nix index 15b71fc..ce7df16 100644 --- a/modules/sway.nix +++ b/modules/sway.nix @@ -68,41 +68,50 @@ in enable = true; }; - environment.systemPackages = with pkgs; [ - brightnessctl - feh - gimp - grim - inkscape - krita - libinput - libinput-gestures - libnotify - lutris - mako - nil - nixpkgs-fmt - noto-fonts - pamixer - pavucontrol - pgcli - playerctl - pulseaudio - pulsemixer - rclone - restic - slurp - steam - swaybg - swayidle - swaylock - vlc - vulkan-tools - waybar - weechat - wine - wl-clipboard - wofi - zathura - ]; + environment = { + variables = { + GTK_THEME = "hx"; + VISUAL = "hx"; + PAGER = "less"; + MANPAGER = "less"; + }; + + systemPackages = with pkgs; [ + brightnessctl + feh + gimp + grim + inkscape + krita + libinput + libinput-gestures + libnotify + lutris + mako + nil + nixpkgs-fmt + noto-fonts + pamixer + pavucontrol + pgcli + playerctl + pulseaudio + pulsemixer + rclone + restic + slurp + steam + swaybg + swayidle + swaylock + vlc + vulkan-tools + waybar + weechat + wine + wl-clipboard + wofi + zathura + ]; + }; } diff --git a/nixos.nix b/nixos.nix index 44daed6..614af4e 100644 --- a/nixos.nix +++ b/nixos.nix @@ -3,7 +3,7 @@ let daniel = { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.daniel = import ./daniel.nix; + home-manager.users.daniel = import ./home/user.nix; }; hms = [ inputs.home-manager.nixosModules.home-manager