From a4b60e72a88728ea5373029d9c6c8c0802315d1b Mon Sep 17 00:00:00 2001 From: Sky Date: Tue, 27 Jan 2026 07:44:31 +0000 Subject: [PATCH] init: macmini nixos configuration. --- flake.lock | 62 +++++++++++++++++++++++++++++ flake.nix | 22 ++++++++++ host/hardware-configuration.nix | 33 +++++++++++++++ host/macmini.nix | 34 ++++++++++++++++ modules/programs/bash/amro.omp.json | 57 ++++++++++++++++++++++++++ modules/programs/bash/default.nix | 24 +++++++++++ modules/programs/tools.nix | 11 +++++ modules/services/ddns-go.nix | 38 ++++++++++++++++++ modules/services/gitea.nix | 38 ++++++++++++++++++ modules/services/nignx.nix | 3 ++ modules/services/qqbot.nix | 4 ++ modules/system/boot.nix | 16 ++++++++ modules/system/networking.nix | 10 +++++ 13 files changed, 352 insertions(+) create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 host/hardware-configuration.nix create mode 100644 host/macmini.nix create mode 100644 modules/programs/bash/amro.omp.json create mode 100644 modules/programs/bash/default.nix create mode 100644 modules/programs/tools.nix create mode 100644 modules/services/ddns-go.nix create mode 100644 modules/services/gitea.nix create mode 100644 modules/services/nignx.nix create mode 100644 modules/services/qqbot.nix create mode 100644 modules/system/boot.nix create mode 100644 modules/system/networking.nix diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..852cab5 --- /dev/null +++ b/flake.lock @@ -0,0 +1,62 @@ +{ + "nodes": { + "catppuccin": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1769432988, + "narHash": "sha256-q4arZjXnLiuMnLzO972lrXIGdzyGb4DGaIt69CcCYdE=", + "owner": "catppuccin", + "repo": "nix", + "rev": "d7a8632c0d8d144478aac1a8c8d5083b770cbb03", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1769018530, + "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "88d3861acdd3d2f0e361767018218e51810df8a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1769018530, + "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "88d3861acdd3d2f0e361767018218e51810df8a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "catppuccin": "catppuccin", + "nixpkgs": "nixpkgs_2" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..0296272 --- /dev/null +++ b/flake.nix @@ -0,0 +1,22 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + # napcat = { + # url = "https://github.com/initialencounter/napcat.nix"; + # }; + catppuccin.url = "github:catppuccin/nix"; + }; + outputs = + inputs@{ nixpkgs, ... }: + { + nixosConfigurations = { + macmini = inputs.nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + system = "x86_64-linux"; + modules = [ + ./host/macmini.nix + ]; + }; + }; + }; +} diff --git a/host/hardware-configuration.nix b/host/hardware-configuration.nix new file mode 100644 index 0000000..421da77 --- /dev/null +++ b/host/hardware-configuration.nix @@ -0,0 +1,33 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/7ef653d0-f317-40fa-a9d0-8f0c8050410d"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/CF42-F4D2"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/a1931d27-cafb-4269-83f7-808d1509fa0c"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/host/macmini.nix b/host/macmini.nix new file mode 100644 index 0000000..8c9ab30 --- /dev/null +++ b/host/macmini.nix @@ -0,0 +1,34 @@ +{ + pkgs, + ... +}: + +{ + imports = [ + ./hardware-configuration.nix + + ../modules/services/ddns-go.nix + ../modules/services/nignx.nix + ../modules/services/gitea.nix + + ../modules/system/boot.nix + ../modules/system/networking.nix + + ../modules/programs/bash + ../modules/programs/tools.nix + ]; + + time.timeZone = "Aisa/Shanghai"; + + i18n.defaultLocale = "en_US.UTF-8"; + + users.users.sky = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + packages = with pkgs; [ + tree + ]; + }; + + system.stateVersion = "25.11"; +} diff --git a/modules/programs/bash/amro.omp.json b/modules/programs/bash/amro.omp.json new file mode 100644 index 0000000..e21f948 --- /dev/null +++ b/modules/programs/bash/amro.omp.json @@ -0,0 +1,57 @@ +{ + "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json", + "blocks": [ + { + "alignment": "left", + "segments": [ + { + "foreground": "#45F1C2", + "style": "plain", + "template": "\uf313 {{ .UserName }} on", + "type": "session" + }, + { + "foreground": "#0CA0D8", + "properties": { + "folder_separator_icon": "/", + "style": "full" + }, + "style": "plain", + "template": " \uf07b {{ .Path }} ", + "type": "path" + }, + { + "foreground": "#14A5AE", + "powerline_symbol": "\ue0b0", + "properties": { + "fetch_upstream_icon": true + }, + "style": "plain", + "template": "{{ .UpstreamIcon }}{{ .HEAD }}{{ if gt .StashCount 0 }} \ueb4b {{ .StashCount }}{{ end }} ", + "type": "git" + } + ], + "type": "prompt" + }, + { + "alignment": "left", + "newline": true, + "segments": [ + { + "foreground": "#cd5e42", + "style": "plain", + "template": "\ue3bf ", + "type": "root" + }, + { + "foreground": "#CD4277", + "style": "plain", + "template": "# ", + "type": "text" + } + ], + "type": "prompt" + } + ], + "version": 3 +} diff --git a/modules/programs/bash/default.nix b/modules/programs/bash/default.nix new file mode 100644 index 0000000..70827bd --- /dev/null +++ b/modules/programs/bash/default.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ + direnv + fzf + ]; + + programs.direnv = { + enable = true; + }; + + programs.bash = { + enable = true; + shellInit = + let + theme = ./amro.omp.json; + in + '' + eval "$(${pkgs.oh-my-posh}/bin/oh-my-posh init bash --config ${theme})" + eval "$(${pkgs.direnv}/bin/direnv hook bash)" + eval "$(${pkgs.fzf}/bin/fzf --bash)" + ''; + }; +} diff --git a/modules/programs/tools.nix b/modules/programs/tools.nix new file mode 100644 index 0000000..1a9c38b --- /dev/null +++ b/modules/programs/tools.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + nil + neovim + wget + git + fastfetch + ]; +} diff --git a/modules/services/ddns-go.nix b/modules/services/ddns-go.nix new file mode 100644 index 0000000..eb4715a --- /dev/null +++ b/modules/services/ddns-go.nix @@ -0,0 +1,38 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + ddns-go + ]; + + systemd.services.ddns-go = { + description = "DDNS-Go"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.ddns-go}/bin/ddns-go -l [::]:9876 -f 300"; + Restart = "always"; + RestartSec = 3; + User = "ddns-go"; + Group = "ddns-go"; + + StateDirectory = "ddns-go"; + Environment = "HOME=/var/lib/ddns-go"; + + NoNewPrivileges = true; + PrivateTmp = true; + ProtectSystem = "strict"; + ReadWritePaths = "/var/lib/ddns-go"; + }; + }; + + users.users.ddns-go = { + isSystemUser = true; + group = "ddns-go"; + home = "/var/lib/ddns-go"; + createHome = true; + }; + users.groups.ddns-go = { }; +} diff --git a/modules/services/gitea.nix b/modules/services/gitea.nix new file mode 100644 index 0000000..1590c83 --- /dev/null +++ b/modules/services/gitea.nix @@ -0,0 +1,38 @@ +{ inputs, pkgs, ... }: +{ + imports = [ + inputs.catppuccin.nixosModules.catppuccin + ]; + + # Catppuccin Mocha Style + + catppuccin.gitea = { + enable = true; + accent = "sky"; + flavor = "mocha"; + }; + + services.gitea = { + enable = true; + user = "git"; + group = "git"; + + stateDir = "/var/lib/gitea"; + + database = { + type = "sqlite3"; + }; + + }; + + users.groups.git = { }; + + users.users.git = { + isNormalUser = true; + home = "/var/lib/gitea"; + extraGroups = [ "git" ]; + packages = with pkgs; [ + gitea + ]; + }; +} diff --git a/modules/services/nignx.nix b/modules/services/nignx.nix new file mode 100644 index 0000000..5bd3e36 --- /dev/null +++ b/modules/services/nignx.nix @@ -0,0 +1,3 @@ +{ ... }: + +{ } diff --git a/modules/services/qqbot.nix b/modules/services/qqbot.nix new file mode 100644 index 0000000..f0cb62c --- /dev/null +++ b/modules/services/qqbot.nix @@ -0,0 +1,4 @@ +{ inputs, ... }: +{ + +} diff --git a/modules/system/boot.nix b/modules/system/boot.nix new file mode 100644 index 0000000..2a443d6 --- /dev/null +++ b/modules/system/boot.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: +{ + boot.kernelPackages = pkgs.linuxPackages_latest; + boot.loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot"; + }; + grub = { + enable = true; + device = "nodev"; + + efiSupport = true; + }; + }; +} diff --git a/modules/system/networking.nix b/modules/system/networking.nix new file mode 100644 index 0000000..5a023e5 --- /dev/null +++ b/modules/system/networking.nix @@ -0,0 +1,10 @@ +{ ... }: +{ + services.openssh.enable = true; + + networking = { + hostName = "macmini"; + firewall.enable = false; + networkmanager.enable = true; + }; +}