From ba8cfc1fd5bce138b4d50fd27eb53bc7d24da6ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikodem=20Rabuli=C5=84ski?= Date: Mon, 22 Jan 2024 20:40:43 +0100 Subject: [PATCH] modules: create home/common module --- flake.lock | 21 ++++++++++ flake.nix | 4 ++ modules/default.nix | 1 + modules/home/common/default.nix | 49 +++++++++++++++++++++++ modules/home/common/desktop/default.nix | 53 +++++++++++++++++++++++++ modules/home/default.nix | 5 +++ modules/system/common/default.nix | 31 +++------------ modules/system/settei/user.nix | 8 +++- 8 files changed, 144 insertions(+), 28 deletions(-) create mode 100644 modules/home/common/default.nix create mode 100644 modules/home/common/desktop/default.nix create mode 100644 modules/home/default.nix diff --git a/flake.lock b/flake.lock index 1a27413..d5ad723 100644 --- a/flake.lock +++ b/flake.lock @@ -141,6 +141,26 @@ "type": "github" } }, + "firefox-darwin": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1705884384, + "narHash": "sha256-bi1bK24N9LbYnkJfv7K/YTy+RCsxNsdlTvBqqWj46lg=", + "owner": "bandithedoge", + "repo": "nixpkgs-firefox-darwin", + "rev": "5cc14069cb1da102f13483666aed9e91fbaac255", + "type": "github" + }, + "original": { + "owner": "bandithedoge", + "repo": "nixpkgs-firefox-darwin", + "type": "github" + } + }, "fl-config": { "locked": { "lastModified": 1653159448, @@ -512,6 +532,7 @@ "darwin": "darwin", "disko": "disko", "fenix": "fenix", + "firefox-darwin": "firefox-darwin", "flake-parts": "flake-parts", "hercules-ci-agent": "hercules-ci-agent", "hercules-ci-effects": "hercules-ci-effects", diff --git a/flake.nix b/flake.nix index 6f129f4..2b03907 100644 --- a/flake.nix +++ b/flake.nix @@ -99,6 +99,10 @@ url = "github:ipetkov/crane"; inputs.nixpkgs.follows = "nixpkgs"; }; + firefox-darwin = { + url = "github:bandithedoge/nixpkgs-firefox-darwin"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; nixConfig = { diff --git a/modules/default.nix b/modules/default.nix index a944256..2cdbfa8 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -2,5 +2,6 @@ imports = [ ./system ./flake + ./home ]; } diff --git a/modules/home/common/default.nix b/modules/home/common/default.nix new file mode 100644 index 0000000..d8763a7 --- /dev/null +++ b/modules/home/common/default.nix @@ -0,0 +1,49 @@ +# TODO: Make this module not rely on OS config being present +{ + osConfig, + pkgs, + lib, + inputs', + machineName, + ... +} @ args: let + # TODO: Conditionally define based on whether we're in a system configuration or not + fishOverlayModule = lib.mkIf (!args ? osConfig) { + # See modules/system/common/default.nix for reasoning. + nixpkgs.overlays = [(_: _: {inherit (inputs'.settei.packages) fish;})]; + }; +in { + _file = ./default.nix; + + imports = [ + ./desktop + fishOverlayModule + ]; + + programs.fish.enable = true; + programs.direnv.enable = true; + programs.nix-index.enable = true; + programs.ssh.enable = true; + programs.zoxide.enable = true; + programs.ripgrep.enable = true; + programs.git = { + enable = true; + difftastic.enable = true; + lfs.enable = true; + userName = "Nikodem Rabuliński"; + userEmail = lib.mkDefault "nikodem@rabulinski.com"; + # TODO: settei options for home-manager module + signing = { + key = osConfig.settei.sane-defaults.allSshKeys.${machineName}; + signByDefault = true; + }; + extraConfig = { + gpg.format = "ssh"; + push.followTags = true; + }; + }; + + home.packages = [inputs'.settei.packages.base-packages pkgs.nh]; + + home.sessionVariables.EDITOR = "hx"; +} diff --git a/modules/home/common/desktop/default.nix b/modules/home/common/desktop/default.nix new file mode 100644 index 0000000..77f3cbd --- /dev/null +++ b/modules/home/common/desktop/default.nix @@ -0,0 +1,53 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: { + _file = ./default.nix; + + options.common.desktop = { + enable = lib.mkEnableOption "Common configuration for desktop machines"; + }; + + config = lib.mkIf config.common.desktop.enable { + home.packages = with pkgs; [ + nerdfonts + ]; + + programs.firefox = { + enable = true; + package = let + firefox-pkgs = pkgs.extend inputs.firefox-darwin.overlay; + in + lib.mkIf pkgs.stdenv.isDarwin firefox-pkgs.firefox-bin; + }; + + programs.alacritty = { + enable = true; + settings = { + cursor.style.shape = "Beam"; + window = { + option_as_alt = lib.mkIf pkgs.stdenv.isDarwin "Both"; + decorations = + if pkgs.stdenv.isDarwin + then "Buttonless" + else "None"; + }; + }; + }; + + programs.zellij = { + enable = true; + settings = { + keybinds = { + shared_except = { + _args = ["locked"]; + unbind = "Ctrl q"; + }; + }; + }; + }; + }; +} diff --git a/modules/home/default.nix b/modules/home/default.nix new file mode 100644 index 0000000..43d2baa --- /dev/null +++ b/modules/home/default.nix @@ -0,0 +1,5 @@ +{ + flake.homeModules = { + common = ./common; + }; +} diff --git a/modules/system/common/default.nix b/modules/system/common/default.nix index dd78e89..4182e71 100644 --- a/modules/system/common/default.nix +++ b/modules/system/common/default.nix @@ -3,6 +3,7 @@ configurationName, lib, pkgs, + inputs, inputs', username, ... @@ -16,32 +17,10 @@ }; flake-qol.enable = true; user = { - enable = true; - config = { - home.packages = let - extraPkgs = [pkgs.nh]; - in - [inputs'.settei.packages.base-packages] ++ extraPkgs; - - home.sessionVariables.EDITOR = "hx"; - programs.git = { - enable = true; - difftastic.enable = true; - lfs.enable = true; - userName = "Nikodem Rabuliński"; - userEmail = lib.mkDefault "nikodem@rabulinski.com"; - signing = { - key = config.settei.sane-defaults.allSshKeys.${configurationName}; - signByDefault = true; - }; - extraConfig = { - gpg.format = "ssh"; - push.followTags = true; - }; - }; - - programs.fish.enable = true; - }; + enable = lib.mkDefault true; + # TODO: Move to settei or leave here? + extraArgs.machineName = configurationName; + config.imports = [inputs.settei.homeModules.common]; }; }; diff --git a/modules/system/settei/user.nix b/modules/system/settei/user.nix index 086b711..30465dc 100644 --- a/modules/system/settei/user.nix +++ b/modules/system/settei/user.nix @@ -3,7 +3,7 @@ options, lib, ... -}: let +} @ args: let hasHomeManager = options ? home-manager; cfg = config.settei.user; inherit (config.settei) username; @@ -26,7 +26,11 @@ in { hmConfig = lib.optionalAttrs hasHomeManager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = cfg.extraArgs; + home-manager.extraSpecialArgs = + { + inherit (args) inputs inputs'; + } + // cfg.extraArgs; home-manager.users.${username} = { _file = ./user.nix;