From bb40ace94d1071bced15c8ad9cff6ea9ddef6e9e Mon Sep 17 00:00:00 2001 From: Origami404 Date: Sun, 18 Jan 2026 16:11:59 +0800 Subject: [PATCH] =?UTF-8?q?[darwin]=20=E5=9C=A8=20nix=20darwin=20=E4=B8=8A?= =?UTF-8?q?=E8=B7=91=E9=80=9A=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flake.lock | 105 ++++++++++++++++++++++++++------- flake.nix | 50 +++++++++++++--- home/hosts/eris.nix | 20 +++---- home/hosts/hypnos.nix | 16 +++++ home/hosts/metis.nix | 11 +--- home/modules/common.nix | 10 ++++ home/modules/shell-develop.nix | 16 ++--- home/modules/shell.nix | 3 +- home/modules/vscode.nix | 2 +- hosts/hypnos/configuration.nix | 29 +++++++++ 10 files changed, 203 insertions(+), 59 deletions(-) create mode 100644 home/hosts/hypnos.nix create mode 100644 home/modules/common.nix create mode 100644 hosts/hypnos/configuration.nix diff --git a/flake.lock b/flake.lock index 79ef343..4a15f5c 100644 --- a/flake.lock +++ b/flake.lock @@ -1,9 +1,30 @@ { "nodes": { + "darwin": { + "inputs": { + "nixpkgs": [ + "nixpkgs-darwin" + ] + }, + "locked": { + "lastModified": 1768561867, + "narHash": "sha256-prGOZ+w3pZfGTRxworKcJliCNsewF0L4HUPjgU/6eaw=", + "owner": "nix-darwin", + "repo": "nix-darwin", + "rev": "8b720b9662d4dd19048664b7e4216ce530591adc", + "type": "github" + }, + "original": { + "owner": "nix-darwin", + "ref": "master", + "repo": "nix-darwin", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ - "nixpkgs" + "nixpkgs-linux" ] }, "locked": { @@ -21,13 +42,66 @@ "type": "github" } }, + "home-manager-darwin": { + "inputs": { + "nixpkgs": [ + "nixpkgs-darwin" + ] + }, + "locked": { + "lastModified": 1768707181, + "narHash": "sha256-GdwFfnwdUgABFpc4sAmX7GYx8eQs6cEjOPo6nBJ0YaI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "83bcb17377f0242376a327e742e9404e9a528647", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1718895438, - "narHash": "sha256-k3JqJrkdoYwE3fHE6xGDY676AYmyh4U2Zw+0Bwe5DLU=", + "lastModified": 1718276985, + "narHash": "sha256-u1fA0DYQYdeG+5kDm1bOoGcHtX0rtC7qs2YA2N1X++I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d603719ec6e294f034936c0d0dc06f689d91b6c3", + "rev": "3f84a279f1a6290ce154c5531378acc827836fbb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-darwin": { + "locked": { + "lastModified": 1768569498, + "narHash": "sha256-bB6Nt99Cj8Nu5nIUq0GLmpiErIT5KFshMQJGMZwgqUo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "be5afa0fcb31f0a96bf9ecba05a516c66fcd8114", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-linux": { + "locked": { + "lastModified": 1768564909, + "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f", "type": "github" }, "original": { @@ -53,32 +127,19 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1718276985, - "narHash": "sha256-u1fA0DYQYdeG+5kDm1bOoGcHtX0rtC7qs2YA2N1X++I=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3f84a279f1a6290ce154c5531378acc827836fbb", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "root": { "inputs": { + "darwin": "darwin", "home-manager": "home-manager", - "nixpkgs": "nixpkgs", + "home-manager-darwin": "home-manager-darwin", + "nixpkgs-darwin": "nixpkgs-darwin", + "nixpkgs-linux": "nixpkgs-linux", "sops-nix": "sops-nix" } }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { diff --git a/flake.nix b/flake.nix index 70c4562..62600ce 100644 --- a/flake.nix +++ b/flake.nix @@ -2,17 +2,26 @@ description = "Origami404's NixOS Flake"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-linux.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-darwin.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + darwin = { + url = "github:nix-darwin/nix-darwin/master"; + inputs.nixpkgs.follows = "nixpkgs-darwin"; + }; home-manager = { url = "github:nix-community/home-manager/master"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs-linux"; + }; + home-manager-darwin = { + url = "github:nix-community/home-manager/master"; + inputs.nixpkgs.follows = "nixpkgs-darwin"; }; sops-nix.url = "github:Mic92/sops-nix"; }; - outputs = { nixpkgs, home-manager, ... }@inputs: { + outputs = { nixpkgs-linux, nixpkgs-darwin, home-manager, home-manager-darwin, ... }@inputs: { nixosConfigurations = { - "eris" = nixpkgs.lib.nixosSystem { + "eris" = nixpkgs-linux.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ @@ -21,16 +30,41 @@ }; }; + darwinConfigurations = { + "hypnos" = inputs.darwin.lib.darwinSystem { + system = "aarch64-darwin"; + specialArgs = { inherit inputs; }; + modules = [ + ./hosts/hypnos/configuration.nix + ]; + }; + }; + homeConfigurations = { "origami@eris" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - modules = [ ./home/hosts/eris.nix ]; + pkgs = nixpkgs-linux.legacyPackages.x86_64-linux; + modules = [ + { nixpkgs.config.allowUnfreePredicate = _: true; } + ./home/hosts/eris.nix + ]; extraSpecialArgs = { inherit inputs; }; }; "origami@metis" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - modules = [ ./home/hosts/metis.nix ]; + pkgs = nixpkgs-linux.legacyPackages.x86_64-linux; + modules = [ + { nixpkgs.config.allowUnfreePredicate = _: true; } + ./home/hosts/metis.nix + ]; + extraSpecialArgs = { inherit inputs; }; + }; + + "origami@hypnos" = home-manager-darwin.lib.homeManagerConfiguration { + pkgs = nixpkgs-darwin.legacyPackages.aarch64-darwin; + modules = [ + { nixpkgs.config.allowUnfreePredicate = _: true; } + ./home/hosts/hypnos.nix + ]; extraSpecialArgs = { inherit inputs; }; }; }; diff --git a/home/hosts/eris.nix b/home/hosts/eris.nix index 1daa891..19736cf 100644 --- a/home/hosts/eris.nix +++ b/home/hosts/eris.nix @@ -1,27 +1,25 @@ { config, lib, pkgs, ... }: { - home.username = "origami"; home.homeDirectory = "/home/origami"; - programs.home-manager.enable = true; - imports = [ - ./modules/shell.nix - ./modules/desktop.nix - ./modules/shell-develop.nix - ./modules/vscode.nix - ./modules/gnome-dconf.nix + ../modules/common.nix + ../modules/shell.nix + ../modules/desktop.nix + ../modules/shell-develop.nix + ../modules/vscode.nix + ../modules/gnome-dconf.nix ]; - nixpkgs.config.allowUnfreePredicate = _: true; home.packages = with pkgs;[ # system call monitoring strace # system call monitoring ltrace # library call monitoring lsof # list open files ]; - programs.nix-index.enable = true; - home.stateVersion = "23.11"; + programs.fish.shellAliases = { + "flake-update" = "nixos-rebuild switch --use-remote-sudo --flake ${config.home.homeDirectory}/flakes#eris"; + }; } diff --git a/home/hosts/hypnos.nix b/home/hosts/hypnos.nix new file mode 100644 index 0000000..f00962c --- /dev/null +++ b/home/hosts/hypnos.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: + +{ + home.homeDirectory = "/Users/origami"; + + imports = [ + ../modules/common.nix + ../modules/shell.nix + ../modules/shell-develop.nix + ../modules/vscode.nix + ]; + + programs.fish.shellAliases = { + "flake-update" = "home-manager switch --flake ${config.home.homeDirectory}/flakes#origami@hypnos"; + }; +} diff --git a/home/hosts/metis.nix b/home/hosts/metis.nix index e18e94b..6f5fc4b 100644 --- a/home/hosts/metis.nix +++ b/home/hosts/metis.nix @@ -1,16 +1,11 @@ { config, lib, pkgs, ... }: { - home.username = "origami"; home.homeDirectory = "/home/origami"; - programs.home-manager.enable = true; - imports = [ - ./modules/shell.nix - ./modules/shell-develop.nix + ../modules/common.nix + ../modules/shell.nix + ../modules/shell-develop.nix ]; - - nixpkgs.config.allowUnfreePredicate = _: true; - home.stateVersion = "23.11"; } diff --git a/home/modules/common.nix b/home/modules/common.nix new file mode 100644 index 0000000..b943ad9 --- /dev/null +++ b/home/modules/common.nix @@ -0,0 +1,10 @@ +{ config, lib, pkgs, ... }: +{ + home.username = "origami"; + + programs.home-manager.enable = true; + + programs.nix-index.enable = true; + + home.stateVersion = "23.11"; +} diff --git a/home/modules/shell-develop.nix b/home/modules/shell-develop.nix index 963d3eb..3e920d8 100644 --- a/home/modules/shell-develop.nix +++ b/home/modules/shell-develop.nix @@ -18,17 +18,19 @@ programs.git = { enable = true; lfs.enable = true; - userName = "Origami404"; - userEmail = "Origami404@foxmail.com"; - extraConfig = { - user.signingKey = "5C7FCAFBC961E2E312B47FEC76447D4671CB3CC0"; + settings = { + user = { + name = "Origami404"; + email = "Origami404@foxmail.com"; + signingKey = "5C7FCAFBC961E2E312B47FEC76447D4671CB3CC0"; + }; core.autocrlf = "input"; push.autoSetupRemote = true; pull.rebase = true; init.defaultBranch = "main"; - }; - aliases = { - "l" = "log --date-order --graph --pretty=\"format:%C(yellow)%h%Cblue%d%Creset %s %C(white) %an, %ar%Creset\""; + aliases = { + "l" = "log --date-order --graph --pretty=\"format:%C(yellow)%h%Cblue%d%Creset %s %C(white) %an, %ar%Creset\""; + }; }; }; } diff --git a/home/modules/shell.nix b/home/modules/shell.nix index a3c7fbf..f7da571 100644 --- a/home/modules/shell.nix +++ b/home/modules/shell.nix @@ -7,7 +7,7 @@ bat # better cat on everything eza # better ls fzf # A command-line fuzzy finder - du-dust # better du + dust # better du duf # better df fd # better find btop # better top @@ -60,7 +60,6 @@ "cloc" = "scc"; "cat" = "bat"; "x" = "atool -x"; - "flake-update" = "nixos-rebuild switch --use-remote-sudo --flake ${config.home.homeDirectory}/flakes#eris"; "cl" = "clear"; }; }; diff --git a/home/modules/vscode.nix b/home/modules/vscode.nix index 077367a..9898428 100644 --- a/home/modules/vscode.nix +++ b/home/modules/vscode.nix @@ -2,6 +2,6 @@ { programs.vscode = { enable = true; - package = pkgs.vscode.fhs; + package = if pkgs.stdenv.isLinux then pkgs.vscode.fhs else pkgs.vscode; }; } diff --git a/hosts/hypnos/configuration.nix b/hosts/hypnos/configuration.nix new file mode 100644 index 0000000..994c63c --- /dev/null +++ b/hosts/hypnos/configuration.nix @@ -0,0 +1,29 @@ +{ config, lib, pkgs, inputs, ... }: + +{ + imports = [ + inputs.home-manager-darwin.darwinModules.home-manager + ]; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + networking.hostName = "hypnos"; + time.timeZone = "Asia/Shanghai"; + + programs.fish.enable = true; + + users.users.origami = { + home = "/Users/origami"; + }; + + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "bak"; + users.origami = import ../../home/hosts/hypnos.nix; + }; + + nixpkgs.config.allowUnfreePredicate = _: true; + + system.stateVersion = 5; +}