From d579c8ad2cc79fbcb69db286db944291a0c2f737 Mon Sep 17 00:00:00 2001 From: Christoph Hollizeck Date: Sun, 26 Oct 2025 23:38:04 +0100 Subject: [PATCH] flake-parts: Babysteps towards a first trial run of the new config --- modules/base/system/default.nix | 67 +++++++++--- modules/base/system/helix.nix | 155 ++++++++++++++++++++++++++++ modules/flake-parts/flake-parts.nix | 4 +- modules/users/cholli/default.nix | 3 + modules/users/root/default.nix | 19 ++++ 5 files changed, 232 insertions(+), 16 deletions(-) create mode 100644 modules/base/system/helix.nix create mode 100644 modules/users/root/default.nix diff --git a/modules/base/system/default.nix b/modules/base/system/default.nix index a93b6ea..b2b3327 100644 --- a/modules/base/system/default.nix +++ b/modules/base/system/default.nix @@ -4,22 +4,59 @@ stateVersion = "25.05"; in { - homeManager.base = { - home = { - inherit stateVersion; - }; - }; + homeManager.base = + { + config, + inputs, + ... + }: + { + imports = [ + inputs.sops-nix.homeManagerModules.sops + inputs.catppuccin.homeModules.catppuccin + ]; - nixos.base = { - system = { - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://search.nixos.org/options?&show=system.stateVersion&from=0&size=50&sort=relevance&type=packages&query=stateVersion). - inherit stateVersion; + home = { + inherit stateVersion; + }; + }; + + nixos.base = + { + config, + inputs, + pkgs, + ... + }: + { + imports = [ + inputs.sops-nix.nixosModules.sops + inputs.catppuccin.nixosModules.catppuccin + ]; + + environment.systemPackages = with pkgs; [ + sops + age + ssh-to-age + ]; + + sops = { + defaultSopsFile = ../../../secrets/secrets.yaml; + defaultSopsFormat = "yaml"; + + # age.keyFile = "/home/cholli/.config/sops/age/keys.txt"; + age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; + }; + + system = { + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://search.nixos.org/options?&show=system.stateVersion&from=0&size=50&sort=relevance&type=packages&query=stateVersion). + inherit stateVersion; + }; }; - }; }; } diff --git a/modules/base/system/helix.nix b/modules/base/system/helix.nix new file mode 100644 index 0000000..0b7e4d3 --- /dev/null +++ b/modules/base/system/helix.nix @@ -0,0 +1,155 @@ +{ + flake.modules = { + nixos.base = + { + inputs, + pkgs, + ... + }: + let + helix-pkg = inputs.helix.packages.${pkgs.system}.default; + in + { + environment = { + systemPackages = [ + helix-pkg + ]; + }; + + }; + + homeManager.base = + { inputs, pkgs, ... }: + let + helix-pkg = inputs.helix.packages.${pkgs.system}.default; + in + { + home.file.".config/helix/ignore".text = '' + .idea/ + !**/appsettings.json + .direnv/ + .devenv/ + ''; + + catppuccin.helix.enable = true; + + programs.helix = { + enable = true; + package = helix-pkg; + defaultEditor = true; + settings = { + editor = { + auto-format = true; + line-number = "relative"; + file-picker = { + hidden = false; + }; + + lsp = { + display-inlay-hints = true; + display-messages = true; + }; + + cursor-shape = { + normal = "block"; + insert = "bar"; + select = "underline"; + }; + + indent-guides = { + render = true; + character = "|"; + }; + + statusline = { + left = [ + "mode" + "spinner" + ]; + center = [ "file-name" ]; + right = [ + "workspace-diagnostics" + "diagnostics" + "selections" + "position" + "total-line-numbers" + "spacer" + "file-encoding" + "file-line-ending" + "file-type" + ]; + separator = "│"; + }; + }; + + keys = { + normal = { + esc = [ + "collapse_selection" + "keep_primary_selection" + ]; + space = { + space = "file_picker"; + }; + + C-j = (builtins.genList (_: "move_line_down") 5) ++ [ "align_view_center" ]; + C-k = (builtins.genList (_: "move_line_up") 5) ++ [ "align_view_center" ]; + }; + }; + }; + + languages = { + language = [ + { + name = "nix"; + auto-format = true; + formatter.command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt"; + language-servers = [ + "nixd" + "nil" + ]; + } + { + # provided by the dev environment in the rust shell + name = "rust"; + auto-format = true; + formatter.command = "cargo fmt"; + language-servers = [ "rust-analyzer" ]; + } + ]; + + language-server = { + nixd = { + command = "${pkgs.nixd}/bin/nixd"; + }; + marksman = { + command = "${pkgs.marksman}/bin/marksman"; + }; + vscode-json-language-server = { + command = "${pkgs.vscode-langservers-extracted}/bin/vscode-json-language-server"; + args = [ "--stdio" ]; + config.provideFormatter = true; + config.json.validate.enable = true; + }; + vscode-html-language-server = { + command = "${pkgs.vscode-langservers-extracted}/bin/vscode-html-language-server"; + args = [ "--stdio" ]; + config.provideFormatter = true; + }; + vscode-css-language-server = { + command = "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server"; + args = [ "--stdio" ]; + config.provideFormatter = true; + }; + vscode-eslint-language-server = { + command = "${pkgs.vscode-langservers-extracted}/bin/vscode-eslint-language-server"; + args = [ "--stdio" ]; + config.provideFormatter = true; + }; + }; + }; + }; + }; + }; + +} diff --git a/modules/flake-parts/flake-parts.nix b/modules/flake-parts/flake-parts.nix index 1c75663..691ae5c 100644 --- a/modules/flake-parts/flake-parts.nix +++ b/modules/flake-parts/flake-parts.nix @@ -1,4 +1,6 @@ { inputs, ... }: { - imports = [ inputs.flake-parts.flakeModules.modules ]; + imports = [ + inputs.flake-parts.flakeModules.modules + ]; } diff --git a/modules/users/cholli/default.nix b/modules/users/cholli/default.nix index 7fe8d05..7c5c75e 100644 --- a/modules/users/cholli/default.nix +++ b/modules/users/cholli/default.nix @@ -37,8 +37,11 @@ "wheel" ]; shell = pkgs.fish; + # TODO: fix this with sops + initialPassword = "asdf"; }; + nix.settings.trusted-users = [ config.flake.meta.users.cholli.username ]; }; }; } diff --git a/modules/users/root/default.nix b/modules/users/root/default.nix new file mode 100644 index 0000000..99696b7 --- /dev/null +++ b/modules/users/root/default.nix @@ -0,0 +1,19 @@ +{ + config, + ... +}: +{ + flake = { + modules.nixos.root = + { pkgs, ... }: + { + programs.fish.enable = true; + + users.users.root = { + shell = pkgs.fish; + openssh.authorizedKeys.keys = config.flake.meta.users.cholli.authorizedKeys; + initialPassword = "asdf1234"; + }; + }; + }; +}