From 53b8448159b7c63bb0176a7d493f40c0e66ffe21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20M=C3=BChl?= Date: Wed, 6 Aug 2025 23:14:38 +0200 Subject: [PATCH] Make common modules compatible for nix-darwin TODO: Determine why nushell config is populated twice --- Justfile | 9 +++-- flake.nix | 9 +++-- .../christopher@molybdenum/default.nix | 17 ++++++++++ .../christopher@cobalt/config/terminal.nix | 17 ---------- .../christopher@cobalt/default.nix | 8 ++--- modules/common/default.nix | 23 +++++++++++++ .../default.nix => common/elements.nix} | 0 modules/{nixos/common/core => common}/nix.nix | 3 -- .../common/programs/home-manager.nix | 0 .../default.nix => common/secrets.nix} | 0 .../{nixos => }/common/services/shutdown.nix | 0 modules/{nixos => }/common/services/ssh.nix | 0 modules/darwin/.keep | 0 modules/darwin/secrets/default.nix | 6 ---- modules/home/common/default.nix | 13 +++++++ .../home/common}/helix/default.nix | 0 .../home/common}/terminal/default.nix | 4 +-- .../home/common}/terminal/programs/cli.nix | 0 .../common}/terminal/programs/default.nix | 0 .../home/common}/terminal/programs/tmux.nix | 0 .../home/common}/terminal/shell/aliases.nix | 0 .../common}/terminal/shell/nu/default.nix | 7 +--- .../home/common}/terminal/shell/prompt.nix | 0 .../common}/terminal/shell/zsh/antigen.nix | 0 .../common}/terminal/shell/zsh/default.nix | 0 modules/home/gui/default.nix | 5 +++ modules/home/gui/kitty.nix | 34 +++++++++++++++++++ modules/nixos/common/core/default.nix | 2 -- modules/nixos/common/default.nix | 15 +------- modules/nixos/common/programs/zsh.nix | 26 -------------- systems/x86_64-darwin/molybdenum/default.nix | 3 +- systems/x86_64-linux/cobalt/default.nix | 7 ++-- systems/x86_64-linux/mercury/default.nix | 4 --- 33 files changed, 114 insertions(+), 98 deletions(-) create mode 100644 homes/x86_64-darwin/christopher@molybdenum/default.nix delete mode 100644 homes/x86_64-linux/christopher@cobalt/config/terminal.nix create mode 100644 modules/common/default.nix rename modules/{nixos/elements/default.nix => common/elements.nix} (100%) rename modules/{nixos/common/core => common}/nix.nix (92%) rename modules/{nixos => }/common/programs/home-manager.nix (100%) rename modules/{nixos/secrets/default.nix => common/secrets.nix} (100%) rename modules/{nixos => }/common/services/shutdown.nix (100%) rename modules/{nixos => }/common/services/ssh.nix (100%) create mode 100644 modules/darwin/.keep delete mode 100644 modules/darwin/secrets/default.nix create mode 100644 modules/home/common/default.nix rename {homes/x86_64-linux/christopher@cobalt/editors => modules/home/common}/helix/default.nix (100%) rename {homes/x86_64-linux/christopher@cobalt/global => modules/home/common}/terminal/default.nix (89%) rename {homes/x86_64-linux/christopher@cobalt/global => modules/home/common}/terminal/programs/cli.nix (100%) rename {homes/x86_64-linux/christopher@cobalt/global => modules/home/common}/terminal/programs/default.nix (100%) rename {homes/x86_64-linux/christopher@cobalt/global => modules/home/common}/terminal/programs/tmux.nix (100%) rename {homes/x86_64-linux/christopher@cobalt/global => modules/home/common}/terminal/shell/aliases.nix (100%) rename {homes/x86_64-linux/christopher@cobalt/global => modules/home/common}/terminal/shell/nu/default.nix (95%) rename {homes/x86_64-linux/christopher@cobalt/global => modules/home/common}/terminal/shell/prompt.nix (100%) rename {homes/x86_64-linux/christopher@cobalt/global => modules/home/common}/terminal/shell/zsh/antigen.nix (100%) rename {homes/x86_64-linux/christopher@cobalt/global => modules/home/common}/terminal/shell/zsh/default.nix (100%) create mode 100644 modules/home/gui/default.nix create mode 100644 modules/home/gui/kitty.nix delete mode 100644 modules/nixos/common/programs/zsh.nix diff --git a/Justfile b/Justfile index 5298baf..9f1330f 100644 --- a/Justfile +++ b/Justfile @@ -1,13 +1,16 @@ -set shell := ["nu", "-c"] +set shell := ["bash", "-c"] editor := env('EDITOR') +rebuild := if os() == "linux" { "nixos-rebuild" } else { "darwin-rebuild" } default: @just --list --justfile {{justfile()}} -# Runs `nixos-rebuild` +# TODO: Run `pre-commit install` at some point + +# Runs `nixos-rebuild` or `darwin-rebuild` depending on the OS [group('nix')] deploy: - nixos-rebuild switch --flake . --use-remote-sudo + sudo {{rebuild}} switch --flake . europium: nixos-rebuild switch --flake .#europium --target-host europium --build-host europium --use-remote-sudo diff --git a/flake.nix b/flake.nix index 7616283..b79bf7b 100644 --- a/flake.nix +++ b/flake.nix @@ -16,8 +16,13 @@ nixos = [ agenix.nixosModules.default agenix-rekey.nixosModules.default + ./modules/common + ]; + darwin = [ + agenix.darwinModules.default + agenix-rekey.nixosModules.default + ./modules/common ]; - darwin = []; }; # Add modules only to specific hosts @@ -41,7 +46,7 @@ // { agenix-rekey = inputs.agenix-rekey.configure { userFlake = inputs.self; - nixosConfigurations = inputs.self.nixosConfigurations; + nixosConfigurations = inputs.self.nixosConfigurations // inputs.self.darwinConfigurations; homeConfigurations = inputs.self.homeConfigurations; }; }; diff --git a/homes/x86_64-darwin/christopher@molybdenum/default.nix b/homes/x86_64-darwin/christopher@molybdenum/default.nix new file mode 100644 index 0000000..111281f --- /dev/null +++ b/homes/x86_64-darwin/christopher@molybdenum/default.nix @@ -0,0 +1,17 @@ +{ + pkgs, + config, + ... +} @ all: { + elements.secrets = { + rekeyPath = "christopher_molybdenum"; + key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHl33DPxxzxrNNjM8rL4ktAj4ExzCyGiU8rKog0csxNA"; + }; + + elements.kitty.enable = true; + + home.packages = with pkgs; [ + _elements.to-s3 + _elements.connect-to-mercury + ]; +} diff --git a/homes/x86_64-linux/christopher@cobalt/config/terminal.nix b/homes/x86_64-linux/christopher@cobalt/config/terminal.nix deleted file mode 100644 index e2a4914..0000000 --- a/homes/x86_64-linux/christopher@cobalt/config/terminal.nix +++ /dev/null @@ -1,17 +0,0 @@ -{...}: { - programs.kitty = { - enable = true; - - settings = { - window_padding_width = "5 10"; - font_family = "Monaspace Krypton"; - paste_actions = "no-op"; - }; - - extraConfig = '' - modify_font cell_height 7px - ''; - - themeFile = "Catppuccin-Frappe"; - }; -} diff --git a/homes/x86_64-linux/christopher@cobalt/default.nix b/homes/x86_64-linux/christopher@cobalt/default.nix index e34df47..14115d8 100644 --- a/homes/x86_64-linux/christopher@cobalt/default.nix +++ b/homes/x86_64-linux/christopher@cobalt/default.nix @@ -32,13 +32,11 @@ }; }; + elements.kitty.enable = true; + home = { extraOutputsToInstall = ["doc" "devdoc"]; - # Until Home Manager 24.11 releases - stateVersion = "23.11"; - enableNixpkgsReleaseCheck = false; - packages = with pkgs._elements; [ quick-zeal spawn-term @@ -49,7 +47,5 @@ ]; }; - programs.home-manager.enable = true; - # home.file.".config/Yubico/u2f_keys".text = "christopher:C7akk/T8XYov6fOk3rGo0ZW66QPMtdLnGznPuK+tTh/qmPecvECzGVMKJuh5M7nYsMoT6r/idAP88FGinf/rpw==,ydS/PgUALZriaaHYS81u3x8rRFulq727GDJRlvbJhP2yeKK7Ih+xqRceyabLR3MxRN8PT/MtC1I/Xjaxl0S2Rg==,es256,+presence"; } diff --git a/modules/common/default.nix b/modules/common/default.nix new file mode 100644 index 0000000..a16702e --- /dev/null +++ b/modules/common/default.nix @@ -0,0 +1,23 @@ +{ + inputs, + pkgs, + ... +}: { + # This module is common to all systems, both nixos and darwin. It is + # automatically added to all hosts via the flake configuration. + + imports = [ + ./elements.nix + ./secrets.nix + ./nix.nix + + ./programs/home-manager.nix + ]; + + environment.systemPackages = with pkgs; [ + pre-commit + git + gitleaks + just + ]; +} diff --git a/modules/nixos/elements/default.nix b/modules/common/elements.nix similarity index 100% rename from modules/nixos/elements/default.nix rename to modules/common/elements.nix diff --git a/modules/nixos/common/core/nix.nix b/modules/common/nix.nix similarity index 92% rename from modules/nixos/common/core/nix.nix rename to modules/common/nix.nix index d7c3150..4e78f44 100644 --- a/modules/nixos/common/core/nix.nix +++ b/modules/common/nix.nix @@ -4,9 +4,6 @@ config, ... }: { - # Needed for Nix flakes - environment.systemPackages = [pkgs.git]; - nix.settings = { # auto-optimize-store = true; # builders-use-substitutes = true; diff --git a/modules/nixos/common/programs/home-manager.nix b/modules/common/programs/home-manager.nix similarity index 100% rename from modules/nixos/common/programs/home-manager.nix rename to modules/common/programs/home-manager.nix diff --git a/modules/nixos/secrets/default.nix b/modules/common/secrets.nix similarity index 100% rename from modules/nixos/secrets/default.nix rename to modules/common/secrets.nix diff --git a/modules/nixos/common/services/shutdown.nix b/modules/common/services/shutdown.nix similarity index 100% rename from modules/nixos/common/services/shutdown.nix rename to modules/common/services/shutdown.nix diff --git a/modules/nixos/common/services/ssh.nix b/modules/common/services/ssh.nix similarity index 100% rename from modules/nixos/common/services/ssh.nix rename to modules/common/services/ssh.nix diff --git a/modules/darwin/.keep b/modules/darwin/.keep new file mode 100644 index 0000000..e69de29 diff --git a/modules/darwin/secrets/default.nix b/modules/darwin/secrets/default.nix deleted file mode 100644 index ff748aa..0000000 --- a/modules/darwin/secrets/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{...}: { - # Use the same secrets (agenix) module for darwin as we have already configured - # for nixos as its functionality is not system-dependent. - - imports = [../../nixos/secrets]; -} diff --git a/modules/home/common/default.nix b/modules/home/common/default.nix new file mode 100644 index 0000000..a3a64e0 --- /dev/null +++ b/modules/home/common/default.nix @@ -0,0 +1,13 @@ +{...}: { + imports = [ + ./helix + ./terminal + ]; + + home = { + stateVersion = "23.11"; + enableNixpkgsReleaseCheck = false; + }; + + programs.home-manager.enable = true; +} diff --git a/homes/x86_64-linux/christopher@cobalt/editors/helix/default.nix b/modules/home/common/helix/default.nix similarity index 100% rename from homes/x86_64-linux/christopher@cobalt/editors/helix/default.nix rename to modules/home/common/helix/default.nix diff --git a/homes/x86_64-linux/christopher@cobalt/global/terminal/default.nix b/modules/home/common/terminal/default.nix similarity index 89% rename from homes/x86_64-linux/christopher@cobalt/global/terminal/default.nix rename to modules/home/common/terminal/default.nix index 0185d54..d116705 100644 --- a/homes/x86_64-linux/christopher@cobalt/global/terminal/default.nix +++ b/modules/home/common/terminal/default.nix @@ -7,8 +7,7 @@ in { ./programs ./shell/aliases.nix ./shell/prompt.nix - ./shell/nu - ./shell/zsh + # ./shell/nu ]; # add environment variables @@ -22,7 +21,6 @@ in { TERMINAL = "kitty"; EDITOR = "hx"; TERM = "xterm-color"; - # QT_QPA_PLATFORMTHEME = "qt5ct"; # auto-run programs using nix-index-database NIX_AUTO_RUN = "1"; diff --git a/homes/x86_64-linux/christopher@cobalt/global/terminal/programs/cli.nix b/modules/home/common/terminal/programs/cli.nix similarity index 100% rename from homes/x86_64-linux/christopher@cobalt/global/terminal/programs/cli.nix rename to modules/home/common/terminal/programs/cli.nix diff --git a/homes/x86_64-linux/christopher@cobalt/global/terminal/programs/default.nix b/modules/home/common/terminal/programs/default.nix similarity index 100% rename from homes/x86_64-linux/christopher@cobalt/global/terminal/programs/default.nix rename to modules/home/common/terminal/programs/default.nix diff --git a/homes/x86_64-linux/christopher@cobalt/global/terminal/programs/tmux.nix b/modules/home/common/terminal/programs/tmux.nix similarity index 100% rename from homes/x86_64-linux/christopher@cobalt/global/terminal/programs/tmux.nix rename to modules/home/common/terminal/programs/tmux.nix diff --git a/homes/x86_64-linux/christopher@cobalt/global/terminal/shell/aliases.nix b/modules/home/common/terminal/shell/aliases.nix similarity index 100% rename from homes/x86_64-linux/christopher@cobalt/global/terminal/shell/aliases.nix rename to modules/home/common/terminal/shell/aliases.nix diff --git a/homes/x86_64-linux/christopher@cobalt/global/terminal/shell/nu/default.nix b/modules/home/common/terminal/shell/nu/default.nix similarity index 95% rename from homes/x86_64-linux/christopher@cobalt/global/terminal/shell/nu/default.nix rename to modules/home/common/terminal/shell/nu/default.nix index 2f73c6f..ddb6d95 100644 --- a/homes/x86_64-linux/christopher@cobalt/global/terminal/shell/nu/default.nix +++ b/modules/home/common/terminal/shell/nu/default.nix @@ -72,12 +72,6 @@ } } - $env.PATH = ($env.PATH | - split row (char esep) | - prepend /home/myuser/.apps | - append /usr/bin/env - ) - def agx [search] { hx (ag $search | fzf | cut -d : -f 1,2) } @@ -90,6 +84,7 @@ | append $"($env.HOME)/code/hausgold/snippets/bin" | append $"($env.HOME)/.bun/bin" | append $"($env.HOME)/.npm/bin" + | append /usr/bin/env ) ''; }; diff --git a/homes/x86_64-linux/christopher@cobalt/global/terminal/shell/prompt.nix b/modules/home/common/terminal/shell/prompt.nix similarity index 100% rename from homes/x86_64-linux/christopher@cobalt/global/terminal/shell/prompt.nix rename to modules/home/common/terminal/shell/prompt.nix diff --git a/homes/x86_64-linux/christopher@cobalt/global/terminal/shell/zsh/antigen.nix b/modules/home/common/terminal/shell/zsh/antigen.nix similarity index 100% rename from homes/x86_64-linux/christopher@cobalt/global/terminal/shell/zsh/antigen.nix rename to modules/home/common/terminal/shell/zsh/antigen.nix diff --git a/homes/x86_64-linux/christopher@cobalt/global/terminal/shell/zsh/default.nix b/modules/home/common/terminal/shell/zsh/default.nix similarity index 100% rename from homes/x86_64-linux/christopher@cobalt/global/terminal/shell/zsh/default.nix rename to modules/home/common/terminal/shell/zsh/default.nix diff --git a/modules/home/gui/default.nix b/modules/home/gui/default.nix new file mode 100644 index 0000000..d73f41e --- /dev/null +++ b/modules/home/gui/default.nix @@ -0,0 +1,5 @@ +{...}: { + imports = [ + ./kitty.nix + ]; +} diff --git a/modules/home/gui/kitty.nix b/modules/home/gui/kitty.nix new file mode 100644 index 0000000..a002945 --- /dev/null +++ b/modules/home/gui/kitty.nix @@ -0,0 +1,34 @@ +{ + config, + pkgs, + lib, + ... +}: +with lib; let + cfg = config.elements; +in { + options = { + elements.kitty = { + enable = mkEnableOption "kitty"; + }; + }; + + config = mkIf cfg.kitty.enable { + programs.kitty = { + enable = true; + + settings = { + window_padding_width = "5 10"; + font_family = "Monaspace Krypton"; + paste_actions = "no-op"; + }; + + extraConfig = '' + shell ${pkgs.nushell}/bin/nu + modify_font cell_height 7px + ''; + + themeFile = "Catppuccin-Frappe"; + }; + }; +} diff --git a/modules/nixos/common/core/default.nix b/modules/nixos/common/core/default.nix index 35223ae..d7978f2 100644 --- a/modules/nixos/common/core/default.nix +++ b/modules/nixos/common/core/default.nix @@ -1,6 +1,4 @@ {lib, ...}: { - documentation.dev.enable = true; - i18n = { defaultLocale = "en_US.UTF-8"; supportedLocales = [ diff --git a/modules/nixos/common/default.nix b/modules/nixos/common/default.nix index f27dfa0..8a49643 100644 --- a/modules/nixos/common/default.nix +++ b/modules/nixos/common/default.nix @@ -1,19 +1,6 @@ -{ - inputs, - pkgs, - ... -}: { +{...}: { imports = [ ./core ./core/users.nix - ./core/nix.nix - - ./programs/home-manager.nix - ./programs/zsh.nix - ]; - - environment.systemPackages = with pkgs; [ - pre-commit - gitleaks ]; } diff --git a/modules/nixos/common/programs/zsh.nix b/modules/nixos/common/programs/zsh.nix deleted file mode 100644 index 1d9c7bd..0000000 --- a/modules/nixos/common/programs/zsh.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - environment.pathsToLink = ["/share/zsh"]; - - programs = { - less.enable = true; - - zsh = { - enable = true; - autosuggestions.enable = true; - syntaxHighlighting = { - enable = true; - patterns = { - "rm -rf *" = "fg=black,bg=red"; - }; - styles = { - "aliases" = "fg=magenta"; - }; - highlighters = [ - "main" - "brackets" - "pattern" - ]; - }; - }; - }; -} diff --git a/systems/x86_64-darwin/molybdenum/default.nix b/systems/x86_64-darwin/molybdenum/default.nix index 268a879..821d408 100644 --- a/systems/x86_64-darwin/molybdenum/default.nix +++ b/systems/x86_64-darwin/molybdenum/default.nix @@ -11,5 +11,6 @@ }; }; - users.users.christopher = {}; # For some reason this is required for hm to work. + # For some reason this is required for hm to work with nix-darwin + users.users.christopher = {}; } diff --git a/systems/x86_64-linux/cobalt/default.nix b/systems/x86_64-linux/cobalt/default.nix index 1577286..db69257 100644 --- a/systems/x86_64-linux/cobalt/default.nix +++ b/systems/x86_64-linux/cobalt/default.nix @@ -19,6 +19,8 @@ with lib._elements; { ./beszel-agent.nix ./wayland.nix + + # TODO: Add config settings like "services.shutdown.enable = true;" "${inputs.self}/modules/nixos/common/services/shutdown.nix" ]; @@ -49,9 +51,6 @@ with lib._elements; { # Set your time zone. time.timeZone = "Europe/Berlin"; - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - console = { font = "Lat2-Terminus16"; useXkbConfig = true; # use xkbOptions in tty. @@ -131,8 +130,6 @@ with lib._elements; { pinentryPackage = pkgs.pinentry-gtk2; enableSSHSupport = true; }; - - zsh.enable = true; }; environment = { diff --git a/systems/x86_64-linux/mercury/default.nix b/systems/x86_64-linux/mercury/default.nix index 478ae30..12fbf2e 100644 --- a/systems/x86_64-linux/mercury/default.nix +++ b/systems/x86_64-linux/mercury/default.nix @@ -58,15 +58,11 @@ with lib._elements; { gnumake ]; - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - console = { font = "Lat2-Terminus16"; keyMap = lib.mkForce "de"; }; - programs.zsh.enable = true; programs.vim.enable = true; programs.git.enable = true;