From 092a0d001032eb56ea23912c984bc01f3ccdc8a3 Mon Sep 17 00:00:00 2001 From: Nathan McCarty Date: Sun, 4 Sep 2022 02:54:15 -0400 Subject: [PATCH] Seperate out linux home-manager --- flake.nix | 2 +- home-manager/{ => common}/programs/core.nix | 0 home-manager/{ => common}/programs/devel.nix | 2 +- home-manager/default.nix | 112 ------------------ home-manager/linux/default.nix | 73 ++++++++++++ .../{ => linux}/programs/communications.nix | 2 +- home-manager/{ => linux}/programs/emacs.nix | 2 +- .../{ => linux}/programs/image-editing.nix | 0 home-manager/{ => linux}/programs/media.nix | 0 home-manager/{ => linux}/programs/sway.nix | 0 home-manager/{ => linux}/programs/wine.nix | 0 home-manager/{ => linux}/services/email.nix | 6 +- .../{ => linux}/services/syncthing.nix | 0 home-manager/options.nix | 55 +++++++++ 14 files changed, 135 insertions(+), 119 deletions(-) rename home-manager/{ => common}/programs/core.nix (100%) rename home-manager/{ => common}/programs/devel.nix (97%) delete mode 100644 home-manager/default.nix create mode 100644 home-manager/linux/default.nix rename home-manager/{ => linux}/programs/communications.nix (96%) rename home-manager/{ => linux}/programs/emacs.nix (98%) rename home-manager/{ => linux}/programs/image-editing.nix (100%) rename home-manager/{ => linux}/programs/media.nix (100%) rename home-manager/{ => linux}/programs/sway.nix (100%) rename home-manager/{ => linux}/programs/wine.nix (100%) rename home-manager/{ => linux}/services/email.nix (90%) rename home-manager/{ => linux}/services/syncthing.nix (100%) create mode 100644 home-manager/options.nix diff --git a/flake.nix b/flake.nix index b220e58..4ae5d29 100644 --- a/flake.nix +++ b/flake.nix @@ -116,7 +116,7 @@ nixosConfig = config; }; sharedModules = [ - ./home-manager/default.nix + ./home-manager/linux/default.nix ]; }; }) diff --git a/home-manager/programs/core.nix b/home-manager/common/programs/core.nix similarity index 100% rename from home-manager/programs/core.nix rename to home-manager/common/programs/core.nix diff --git a/home-manager/programs/devel.nix b/home-manager/common/programs/devel.nix similarity index 97% rename from home-manager/programs/devel.nix rename to home-manager/common/programs/devel.nix index bcf3a3e..2888ab0 100644 --- a/home-manager/programs/devel.nix +++ b/home-manager/common/programs/devel.nix @@ -2,7 +2,7 @@ let devel = config.nathan.programs.devel; unstable = inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}"; - inherit (import ../../modules/lib.nix { inherit lib; inherit pkgs; }) nLib; + inherit (import ../../../modules/lib.nix { inherit lib; inherit pkgs; }) nLib; in with lib; with nLib; { diff --git a/home-manager/default.nix b/home-manager/default.nix deleted file mode 100644 index 1276604..0000000 --- a/home-manager/default.nix +++ /dev/null @@ -1,112 +0,0 @@ -{ config, lib, pkgs, inputs, ... }: -let - inherit (import ../modules/lib.nix { inherit lib; inherit pkgs; }) nLib; -in -with lib; with nLib; { - imports = [ - ./programs/sway.nix - ./programs/core.nix - ./programs/communications.nix - ./programs/devel.nix - ./programs/emacs.nix - ./programs/image-editing.nix - ./programs/media.nix - ./programs/wine.nix - ./services/syncthing.nix - ./services/email.nix - ]; - - options = { - nathan = { - # Services - services = { - # Synthing, enabled by default on linux desktop - syncthing = mkDefaultOption "Syncthing" (config.nathan.config.isDesktop && pkgs.stdenv.isLinux); - # Email syncing - # Disabled by default since this requires manual setup on the machine - # TODO: Get this working on darwin - email = { - enable = mkEnableOption "Email"; - }; - }; - # Programs - programs = { - util = { - # Core utilites - core = mkEnableOptionT "core"; - # Ssh configuration, enabled by default - ssh = mkEnableOptionT "ssh"; - # Fish configuration, enabled by default - fish = mkEnableOptionT "fish"; - # Git configuration, enabled by default - git = { - enable = mkEnableOptionT "git"; - gpgSign = mkDefaultOption "git signatures" config.nathan.config.isDesktop; - }; - # Bat configuration, enabled by default - bat = mkEnableOptionT "bat"; - # JSON Utilities, enabled by default - json = mkEnableOptionT "json"; - # Productivity application - productivity = mkDefaultOption "Productivity applications" config.nathan.config.isDesktop; - # Wine support, disabled by default - wine = mkEnableOption "wine"; - }; - # Swaywm and supoorting application configuration - swaywm = { - enable = mkDefaultOption "swaywm" config.nathan.config.isDesktop; - }; - # Communications applications - communications = { - # Enable by default if we are on a linux desktop - enable = mkDefaultOption "Communication applications" (config.nathan.config.isDesktop && pkgs.stdenv.isLinux); - }; - # Development applications, enabled by default on desktop - devel = { - core = mkDefaultOption "Core Development Utilites" config.nathan.config.isDesktop; - rust = mkDefaultOption "Rust Development Utilites" config.nathan.config.isDesktop; - jvm = mkDefaultOption "JVM Development Utilites" config.nathan.config.isDesktop; - python = mkDefaultOption "Python Development Utilites" config.nathan.config.isDesktop; - js = mkDefaultOption "JavaScript/TypeScript Development Utilites" config.nathan.config.isDesktop; - raku = mkDefaultOption "Raku Development Utilites" config.nathan.config.isDesktop; - }; - # Emacs, enabled by default on desktop - emacs = { - enable = mkDefaultOption "Emacs" config.nathan.config.isDesktop; - service = mkDefaultOption "Emacs Service" config.nathan.config.isDesktop; - package = mkOption { - description = "Emacs package to use"; - default = inputs.emacs.packages."${pkgs.system}".emacsPgtkNativeComp; - }; - }; - # Image editing software, on by default on desktop - image-editing = mkDefaultOption "Image Editing Software" config.nathan.config.isDesktop; - # Media appilcations, on by default on linux desktop - media = { - enable = mkDefaultOption "Media Applications" (config.nathan.config.isDesktop && pkgs.stdenv.isLinux); - mopidyExtraConfig = mkOption { - description = "Extra config files for mopidy"; - default = [ ]; - }; - }; - # Firefox, enabled by default on linux desktop - firefox = mkDefaultOption "Firefox" (config.nathan.config.isDesktop && pkgs.stdenv.isLinux); - }; - # General configuration options - config = { - # Is this system a desktop? - # false by default - isDesktop = mkEnableOption "Desktop specific settings"; - }; - }; - }; - - config = { - home.stateVersion = "22.05"; - programs.home-manager.enable = true; - programs.firefox = { - enable = config.nathan.programs.firefox; - package = pkgs.firefox-beta-bin; - }; - }; -} diff --git a/home-manager/linux/default.nix b/home-manager/linux/default.nix new file mode 100644 index 0000000..21fb462 --- /dev/null +++ b/home-manager/linux/default.nix @@ -0,0 +1,73 @@ +{ config, lib, pkgs, inputs, ... }: +let + inherit (import ../../modules/lib.nix { inherit lib; inherit pkgs; }) nLib; +in +with lib; with nLib; { + imports = [ + ../options.nix + ./programs/sway.nix + ../common/programs/core.nix + ./programs/communications.nix + ../common/programs/devel.nix + ./programs/emacs.nix + ./programs/image-editing.nix + ./programs/media.nix + ./programs/wine.nix + ./services/syncthing.nix + ./services/email.nix + ]; + + options = { + nathan = { + # Services, these are platform specific so they go here + services = { + # Synthing, enabled by default on linux desktop + syncthing = mkDefaultOption "Syncthing" (config.nathan.config.isDesktop && pkgs.stdenv.isLinux); + # Email syncing + # Disabled by default since this requires manual setup on the machine + # TODO: Get this working on darwin + email = { + enable = mkEnableOption "Email"; + }; + }; + # Linux specific programs + programs = { + util = { + # Wine support, disabled by default + wine = mkEnableOption "wine"; + }; + # Swaywm and supoorting application configuration + swaywm = { + enable = mkDefaultOption "swaywm" config.nathan.config.isDesktop; + }; + # Communications applications + communications = { + # Enable by default if we are on a linux desktop + enable = mkDefaultOption "Communication applications" (config.nathan.config.isDesktop && pkgs.stdenv.isLinux); + }; + # Image editing software, on by default on desktop + image-editing = mkDefaultOption "Image Editing Software" config.nathan.config.isDesktop; + # Media appilcations, on by default on linux desktop + media = { + enable = mkDefaultOption "Media Applications" (config.nathan.config.isDesktop && pkgs.stdenv.isLinux); + mopidyExtraConfig = mkOption { + description = "Extra config files for mopidy"; + default = [ ]; + }; + }; + # Firefox, enabled by default on linux desktop + firefox = mkDefaultOption "Firefox" (config.nathan.config.isDesktop && pkgs.stdenv.isLinux); + }; + }; + }; + + config = { + home.stateVersion = "22.05"; + programs.home-manager.enable = true; + programs.firefox = { + enable = config.nathan.programs.firefox; + package = pkgs.firefox-beta-bin; + }; + nathan.programs.emacs.package = lib.mkDefault inputs.emacs.packages."${pkgs.system}".emacsPgtkNativeComp; + }; +} diff --git a/home-manager/programs/communications.nix b/home-manager/linux/programs/communications.nix similarity index 96% rename from home-manager/programs/communications.nix rename to home-manager/linux/programs/communications.nix index 111c76e..46215ea 100644 --- a/home-manager/programs/communications.nix +++ b/home-manager/linux/programs/communications.nix @@ -15,7 +15,7 @@ ''; } ); - discordWayland = pkgs.callPackage ../../packages/discord/default.nix rec { + discordWayland = pkgs.callPackage ../../../packages/discord/default.nix rec { pname = "discord-electron"; binaryName = "Discord"; desktopName = "Discord (Wayland)"; diff --git a/home-manager/programs/emacs.nix b/home-manager/linux/programs/emacs.nix similarity index 98% rename from home-manager/programs/emacs.nix rename to home-manager/linux/programs/emacs.nix index 8399b26..304d49a 100644 --- a/home-manager/programs/emacs.nix +++ b/home-manager/linux/programs/emacs.nix @@ -35,7 +35,7 @@ # Setup doom emacs programs.doom-emacs = { enable = true; - doomPrivateDir = ../../doom.d; + doomPrivateDir = ../../../doom.d; emacsPackage = config.nathan.programs.emacs.package; emacsPackagesOverlay = self: super: { org-protocol-capture-html = self.trivialBuild { diff --git a/home-manager/programs/image-editing.nix b/home-manager/linux/programs/image-editing.nix similarity index 100% rename from home-manager/programs/image-editing.nix rename to home-manager/linux/programs/image-editing.nix diff --git a/home-manager/programs/media.nix b/home-manager/linux/programs/media.nix similarity index 100% rename from home-manager/programs/media.nix rename to home-manager/linux/programs/media.nix diff --git a/home-manager/programs/sway.nix b/home-manager/linux/programs/sway.nix similarity index 100% rename from home-manager/programs/sway.nix rename to home-manager/linux/programs/sway.nix diff --git a/home-manager/programs/wine.nix b/home-manager/linux/programs/wine.nix similarity index 100% rename from home-manager/programs/wine.nix rename to home-manager/linux/programs/wine.nix diff --git a/home-manager/services/email.nix b/home-manager/linux/services/email.nix similarity index 90% rename from home-manager/services/email.nix rename to home-manager/linux/services/email.nix index 05a0fd0..4d0dd0f 100644 --- a/home-manager/services/email.nix +++ b/home-manager/linux/services/email.nix @@ -46,7 +46,7 @@ with lib; { port = 1143; tls = { useStartTls = true; - certificatesFile = ../../certificates/protonmail-${nixosConfig.networking.hostName}.pem; + certificatesFile = ../../../certificates/protonmail-${nixosConfig.networking.hostName}.pem; }; }; smtp = { @@ -54,7 +54,7 @@ with lib; { port = 1025; tls = { useStartTls = true; - certificatesFile = ../../certificates/protonmail-${nixosConfig.networking.hostName}.pem; + certificatesFile = ../../../certificates/protonmail-${nixosConfig.networking.hostName}.pem; }; }; mbsync = { @@ -82,7 +82,7 @@ with lib; { postExec = if config.nathan.programs.emacs.service then - "${../../scripts/update-mu4e.sh}" + "${../../../scripts/update-mu4e.sh}" else "${pkgs.mu}/bin/mu index"; }; diff --git a/home-manager/services/syncthing.nix b/home-manager/linux/services/syncthing.nix similarity index 100% rename from home-manager/services/syncthing.nix rename to home-manager/linux/services/syncthing.nix diff --git a/home-manager/options.nix b/home-manager/options.nix new file mode 100644 index 0000000..0c8a951 --- /dev/null +++ b/home-manager/options.nix @@ -0,0 +1,55 @@ +{ config, lib, pkgs, ... }: +let + inherit (import ../modules/lib.nix { inherit lib; inherit pkgs; }) nLib; +in +with lib; with nLib; +{ + options = { + nathan = { + programs = { + util = { + # Core utilites + core = mkEnableOptionT "core"; + # Ssh configuration, enabled by default + ssh = mkEnableOptionT "ssh"; + # Fish configuration, enabled by default + fish = mkEnableOptionT "fish"; + # Git configuration, enabled by default + git = { + enable = mkEnableOptionT "git"; + gpgSign = mkDefaultOption "git signatures" config.nathan.config.isDesktop; + }; + # Bat configuration, enabled by default + bat = mkEnableOptionT "bat"; + # JSON Utilities, enabled by default + json = mkEnableOptionT "json"; + # Productivity application + productivity = mkDefaultOption "Productivity applications" config.nathan.config.isDesktop; + }; + # Development applications, enabled by default on desktop + devel = { + core = mkDefaultOption "Core Development Utilites" config.nathan.config.isDesktop; + rust = mkDefaultOption "Rust Development Utilites" config.nathan.config.isDesktop; + jvm = mkDefaultOption "JVM Development Utilites" config.nathan.config.isDesktop; + python = mkDefaultOption "Python Development Utilites" config.nathan.config.isDesktop; + js = mkDefaultOption "JavaScript/TypeScript Development Utilites" config.nathan.config.isDesktop; + raku = mkDefaultOption "Raku Development Utilites" config.nathan.config.isDesktop; + }; + # Emacs, enabled by default on desktop + emacs = { + enable = mkDefaultOption "Emacs" config.nathan.config.isDesktop; + service = mkDefaultOption "Emacs Service" config.nathan.config.isDesktop; + package = mkOption { + description = "Emacs package to use"; + }; + }; + }; + # General configuration options + config = { + # Is this system a desktop? + # false by default + isDesktop = mkEnableOption "Desktop specific settings"; + }; + }; + }; +}