diff --git a/flake-parts/default.nix b/flake-parts/default.nix index 58c95f3..02166c8 100644 --- a/flake-parts/default.nix +++ b/flake-parts/default.nix @@ -3,6 +3,7 @@ ./apps.nix ./home-manager ./lib + ./nixos ./overlays.nix ./packages.nix ]; diff --git a/flake-parts/nixos/default.nix b/flake-parts/nixos/default.nix new file mode 100644 index 0000000..4680d73 --- /dev/null +++ b/flake-parts/nixos/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./hosts.nix + ./modules.nix + ]; +} diff --git a/flake-parts/nixos/hosts.nix b/flake-parts/nixos/hosts.nix new file mode 100644 index 0000000..036ea0a --- /dev/null +++ b/flake-parts/nixos/hosts.nix @@ -0,0 +1,55 @@ +{ self, inputs, ... }: { + flake = { + nixosModules.base = { config, ... }: { + imports = [ + ../../nixos/profiles/common.nix + ../../nixos/profiles/linux-common.nix + inputs.home-manager.nixosModules.home-manager + self.nixosModules.default + self.nixosModules.home-manager-integration + self.nixosModules.nixpkgs-useFlakeNixpkgs + ]; + + nixpkgs.overlays = builtins.attrValues self.overlays; + nixpkgs.config.allowUnfree = true; + }; + + darwinModules.base = { config, ... }: { + imports = [ + ../../nixos/profiles/common.nix + inputs.home-manager.darwinModules.home-manager + self.nixosModules.custom-linkNixInputs + self.nixosModules.home-manager-integration + ]; + + nixpkgs.overlays = builtins.attrValues self.overlays; + nixpkgs.config.allowUnfree = true; + }; + + nixosConfigurations.zeusvm = inputs.nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + modules = [ + self.nixosModules.base + ../../nixos/hosts/zeus.utmvm.nix + ]; + }; + + nixosConfigurations.zeusasahi = inputs.nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + modules = [ + self.nixosModules.appleSilicon + self.nixosModules.base + ../../nixos/hosts/zeus.asahi.nix + ]; + + }; + + darwinConfigurations.zeus = inputs.darwin.lib.darwinSystem { + system = "aarch64-darwin"; + modules = [ + self.darwinModules.base + ../../nixos/hosts/zeus.darwin.nix + ]; + }; + }; +} diff --git a/flake-parts/nixos/modules.nix b/flake-parts/nixos/modules.nix new file mode 100644 index 0000000..8a8deb2 --- /dev/null +++ b/flake-parts/nixos/modules.nix @@ -0,0 +1,40 @@ +# Copyright (c) 2018 Terje Larsen + +# This work is licensed under the terms of the MIT license. +# For a copy, see https://opensource.org/licenses/MIT. + +# https://github.com/terlar/nix-config/blob/00c8a3622e8bc4cb522bbf335e6ede04ca07da40/flake-parts/lib/default.nix + +{ self +, inputs +, ... +}: { + flake.nixosModules = + let + modules = self.lib.importDirToAttrs ../../nixos/modules; + in + { + default = { + imports = builtins.attrValues modules; + }; + + appleSilicon = { config, ... }: { + imports = [ inputs.nixos-apple-silicon.nixosModules.apple-silicon-support ]; + nixpkgs.overlays = [ inputs.nixos-apple-silicon.overlays.default ]; + }; + + nixpkgs-useFlakeNixpkgs = { + nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ]; + nix.registry.nixpkgs.flake = inputs.nixpkgs; + }; + + home-manager-integration = { + config.home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "bak"; + }; + }; + } + // modules; +} diff --git a/flake.lock b/flake.lock index e61021c..06ce503 100644 --- a/flake.lock +++ b/flake.lock @@ -20,6 +20,27 @@ "type": "github" } }, + "emacs-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1679104561, + "narHash": "sha256-JVyv+GeyJr7Zlxjt54sjHo90KpUGSUiVs/6tUBUuvQc=", + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "65c5d30a355533e3f0b7b6f0417270744978134e", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "emacs-overlay", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -56,11 +77,11 @@ }, "flake-utils": { "locked": { - "lastModified": 1678901627, - "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -269,8 +290,8 @@ "root": { "inputs": { "darwin": "darwin", + "emacs-overlay": "emacs-overlay", "flake-parts": "flake-parts", - "flake-utils": "flake-utils", "home-manager": "home-manager", "nixos-apple-silicon": "nixos-apple-silicon", "nixpkgs": "nixpkgs", diff --git a/flake.nix b/flake.nix index e7bcbae..c46b84f 100644 --- a/flake.nix +++ b/flake.nix @@ -5,8 +5,9 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; darwin.url = "github:lnl7/nix-darwin"; darwin.inputs.nixpkgs.follows = "nixpkgs"; + emacs-overlay.url = "github:nix-community/emacs-overlay"; + emacs-overlay.inputs.nixpkgs.follows = "nixpkgs"; flake-parts.url = "github:hercules-ci/flake-parts"; - flake-utils.url = "github:numtide/flake-utils"; home-manager.url = "github:nix-community/home-manager"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; nixos-apple-silicon.url = "github:tpwrules/nixos-apple-silicon"; diff --git a/home-manager/modules/profiles/user/willem/packages.nix b/home-manager/modules/profiles/user/willem/packages.nix index e7d29c6..2082269 100644 --- a/home-manager/modules/profiles/user/willem/packages.nix +++ b/home-manager/modules/profiles/user/willem/packages.nix @@ -74,6 +74,7 @@ in bash bat black + cachix clang-tools cmake comma diff --git a/home-manager/modules/services/emacs.nix b/home-manager/modules/services/emacs.nix new file mode 100644 index 0000000..900e55a --- /dev/null +++ b/home-manager/modules/services/emacs.nix @@ -0,0 +1,18 @@ +{ lib, config, pkgs, ... }: +{ + launchd.agents.emacs = lib.mkIf pkgs.stdenv.isDarwin { + enable = true; + config = { + ProgramArguments = [ + "${config.programs.emacs.finalPackage}/bin/emacs" + "--fg-daemon" + ]; + KeepAlive = true; + UserName = "${config.home.username}"; + ProcessType = "Adaptive"; + StandardOutPath = "${config.home.homeDirectory}/Library/Logs/emacs-stdout.log"; + StandardErrorPath = "${config.home.homeDirectory}/Library/Logs/emacs-stderr.log"; + }; + }; +} + diff --git a/home-manager/modules/services/offlineimap.nix b/home-manager/modules/services/offlineimap.nix new file mode 100644 index 0000000..900e55a --- /dev/null +++ b/home-manager/modules/services/offlineimap.nix @@ -0,0 +1,18 @@ +{ lib, config, pkgs, ... }: +{ + launchd.agents.emacs = lib.mkIf pkgs.stdenv.isDarwin { + enable = true; + config = { + ProgramArguments = [ + "${config.programs.emacs.finalPackage}/bin/emacs" + "--fg-daemon" + ]; + KeepAlive = true; + UserName = "${config.home.username}"; + ProcessType = "Adaptive"; + StandardOutPath = "${config.home.homeDirectory}/Library/Logs/emacs-stdout.log"; + StandardErrorPath = "${config.home.homeDirectory}/Library/Logs/emacs-stderr.log"; + }; + }; +} + diff --git a/system/zeus.asahi.nix b/nixos/hosts/zeus.asahi.nix similarity index 77% rename from system/zeus.asahi.nix rename to nixos/hosts/zeus.asahi.nix index 6f2fa9f..61f80bd 100644 --- a/system/zeus.asahi.nix +++ b/nixos/hosts/zeus.asahi.nix @@ -1,7 +1,7 @@ { pkgs, ... }: { - imports = [ ./nixos.common.nix ./nixos.gnome.nix ]; + imports = [ ../profiles/linux-common.nix ../profiles/gnome.nix ]; boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = false; diff --git a/system/zeus.darwin.nix b/nixos/hosts/zeus.darwin.nix similarity index 98% rename from system/zeus.darwin.nix rename to nixos/hosts/zeus.darwin.nix index 0e6e390..49062a7 100644 --- a/system/zeus.darwin.nix +++ b/nixos/hosts/zeus.darwin.nix @@ -1,7 +1,7 @@ { pkgs, ... }: { - imports = [ ./common.nix ]; + imports = [ ../profiles/common.nix ]; environment.etc."nix/user-sandbox.sb".text = '' (version 1) diff --git a/system/zeus.utmvm.nix b/nixos/hosts/zeus.utmvm.nix similarity index 86% rename from system/zeus.utmvm.nix rename to nixos/hosts/zeus.utmvm.nix index d00b8d4..768e7fc 100644 --- a/system/zeus.utmvm.nix +++ b/nixos/hosts/zeus.utmvm.nix @@ -1,8 +1,12 @@ { pkgs, ... }: { - imports = [ ./nixos.common.nix ./nixos.gnome.nix ]; - + imports = [ + ../profiles/desktop.nix + ../profiles/gnome.nix + ../profiles/linux-common.nix + ]; + boot.extraModulePackages = [ ]; boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_pci" "usbhid" "usb_storage" "sr_mod" ]; @@ -13,7 +17,7 @@ boot.loader.efi.efiSysMountPoint = "/boot/efi"; environment.systemPackages = with pkgs; [ mesa ]; - + fileSystems."/" = { device = "/dev/disk/by-label/nixos"; fsType = "ext4"; diff --git a/modules/nix.nix b/nixos/modules/custom/linkNixInputs.nix similarity index 100% rename from modules/nix.nix rename to nixos/modules/custom/linkNixInputs.nix diff --git a/system/common.nix b/nixos/profiles/common.nix similarity index 100% rename from system/common.nix rename to nixos/profiles/common.nix diff --git a/system/nixos.desktop.nix b/nixos/profiles/desktop.nix similarity index 100% rename from system/nixos.desktop.nix rename to nixos/profiles/desktop.nix diff --git a/system/nixos.gnome.nix b/nixos/profiles/gnome.nix similarity index 94% rename from system/nixos.gnome.nix rename to nixos/profiles/gnome.nix index 4511292..82122d6 100644 --- a/system/nixos.gnome.nix +++ b/nixos/profiles/gnome.nix @@ -1,7 +1,7 @@ { pkgs, ... }: { - imports = [ ./nixos.desktop.nix ]; + imports = [ ./desktop.nix ]; environment.gnome.excludePackages = (with pkgs; [ gnome-photos diff --git a/system/nixos.common.nix b/nixos/profiles/linux-common.nix similarity index 100% rename from system/nixos.common.nix rename to nixos/profiles/linux-common.nix