From ddd861496ea9320ff03195d23352976e76e07cd0 Mon Sep 17 00:00:00 2001 From: Astreaprtcl Date: Wed, 17 Dec 2025 12:59:28 +0100 Subject: [PATCH] initial commit --- all.nix | 8 ++ flake.lock | 96 ++++++++++++++++++++++++ flake.nix | 27 +++++++ programs/all.nix | 10 +++ programs/default.nix | 5 ++ programs/git.nix | 10 +++ programs/home-manager.nix | 5 ++ programs/lix.nix | 13 ++++ systems/galen/configuration.nix | 32 ++++++++ systems/galen/hardware-configuration.nix | 32 ++++++++ users/all.nix | 7 ++ users/home-default.nix | 11 +++ users/mara/config.nix | 41 ++++++++++ users/mara/config/all.nix | 8 ++ users/mara/config/fish.nix | 24 ++++++ users/mara/config/helix.nix | 32 ++++++++ 16 files changed, 361 insertions(+) create mode 100644 all.nix create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 programs/all.nix create mode 100644 programs/default.nix create mode 100644 programs/git.nix create mode 100644 programs/home-manager.nix create mode 100644 programs/lix.nix create mode 100644 systems/galen/configuration.nix create mode 100644 systems/galen/hardware-configuration.nix create mode 100644 users/all.nix create mode 100644 users/home-default.nix create mode 100644 users/mara/config.nix create mode 100644 users/mara/config/all.nix create mode 100644 users/mara/config/fish.nix create mode 100644 users/mara/config/helix.nix diff --git a/all.nix b/all.nix new file mode 100644 index 0000000..253db5f --- /dev/null +++ b/all.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + imports = [ + ./users/all.nix + ./programs/all.nix + ]; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..e42e202 --- /dev/null +++ b/flake.lock @@ -0,0 +1,96 @@ +{ + "nodes": { + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1708375098, + "narHash": "sha256-DaFJp3wDHgOqx98U0SF57bXaH2Orp106c+jSdPCVu1E=", + "owner": "nix-community", + "repo": "haumea", + "rev": "ec6350fd9353e7f27ce0e85d31f82e3ed73e4d70", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "haumea", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1765860045, + "narHash": "sha256-7Lxp/PfOy4h3QIDtmWG/EgycaswqRSkDX4DGtet14NE=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "09de9577d47d8bffb11c449b6a3d24e32ac16c99", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1765472234, + "narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1764983851, + "narHash": "sha256-y7RPKl/jJ/KAP/VKLMghMgXTlvNIJMHKskl8/Uuar7o=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d9bc5c7dceb30d8d6fafa10aeb6aa8a48c218454", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "haumea": "haumea", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs_3" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..cd8603c --- /dev/null +++ b/flake.nix @@ -0,0 +1,27 @@ +{ + inputs = { + # This is pointing to an unstable release. + # If you prefer a stable release instead, you can this to the latest number shown here: https://nixos.org/download + # i.e. nixos-24.11 + # Use `nix flake update` to update the flake to the latest revision of the chosen release channel. + haumea.url = "github:nix-community/haumea"; + home-manager.url = "github:nix-community/home-manager"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + }; + outputs = inputs@{ self, nixpkgs, home-manager, ... }: { + # NOTE: 'nixos' is the default hostname + nixosConfigurations = { + galen = nixpkgs.lib.nixosSystem { + modules = [ + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + } + ./systems/galen/configuration.nix + ]; + }; + }; + }; +} + diff --git a/programs/all.nix b/programs/all.nix new file mode 100644 index 0000000..ecbe736 --- /dev/null +++ b/programs/all.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + imports = [ + ./default.nix + ./git.nix + ./home-manager.nix + ./lix.nix + ]; +} diff --git a/programs/default.nix b/programs/default.nix new file mode 100644 index 0000000..1acb15f --- /dev/null +++ b/programs/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + programs.git.enable = true; +} diff --git a/programs/git.nix b/programs/git.nix new file mode 100644 index 0000000..23a9cad --- /dev/null +++ b/programs/git.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + programs.git = { + enable = true; + config = [{ + init.defaultBranch = "main"; + }]; + }; +} diff --git a/programs/home-manager.nix b/programs/home-manager.nix new file mode 100644 index 0000000..8f3b4ae --- /dev/null +++ b/programs/home-manager.nix @@ -0,0 +1,5 @@ +{ home-manager, ... }: + +{ + home-manager.backupFileExtension = "backup"; +} diff --git a/programs/lix.nix b/programs/lix.nix new file mode 100644 index 0000000..8a675cb --- /dev/null +++ b/programs/lix.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + nixpkgs.overlays = [ (final: prev: { + inherit (prev.lixPackageSets.stable) + nixpkgs-review + nix-eval-jobs + nix-fast-build + colmena; + }) ]; + + nix.package = pkgs.lixPackageSets.stable.lix; +} diff --git a/systems/galen/configuration.nix b/systems/galen/configuration.nix new file mode 100644 index 0000000..6825084 --- /dev/null +++ b/systems/galen/configuration.nix @@ -0,0 +1,32 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + imports = [ + ./hardware-configuration.nix + ../../all.nix + ]; + + users.mara.enable = true; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + boot.kernelPackages = pkgs.linuxPackages_latest; + + networking.hostName = "galen"; + networking.networkmanager.enable = true; + + time.timeZone = "Europe/Berlin"; + + i18n.defaultLocale = "en_IE.UTF-8"; + console = { + keyMap = "de"; + }; + + system.stateVersion = "25.11"; +} diff --git a/systems/galen/hardware-configuration.nix b/systems/galen/hardware-configuration.nix new file mode 100644 index 0000000..37b2e35 --- /dev/null +++ b/systems/galen/hardware-configuration.nix @@ -0,0 +1,32 @@ +# 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 + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/637c5040-7824-4308-bb4b-32b486cb326d"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/1A25-9FA7"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/b89cb4bb-b75e-4479-9023-cc338835bb74"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/users/all.nix b/users/all.nix new file mode 100644 index 0000000..aa5e08e --- /dev/null +++ b/users/all.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ + ./mara/config.nix + ]; +} diff --git a/users/home-default.nix b/users/home-default.nix new file mode 100644 index 0000000..650ee65 --- /dev/null +++ b/users/home-default.nix @@ -0,0 +1,11 @@ +{ osConfig, ... }: + +{ + programs.home-manager.enable = true; + nixpkgs.config.allowUnfree = true; + + home = { + stateVersion = osConfig.system.stateVersion; + enableNixpkgsReleaseCheck = false; + }; +} diff --git a/users/mara/config.nix b/users/mara/config.nix new file mode 100644 index 0000000..8e6efa3 --- /dev/null +++ b/users/mara/config.nix @@ -0,0 +1,41 @@ +{ config, lib, pkgs, home-manager, ... }: + +let + cfg = config.users.mara; +in + +with lib; + +{ + options.users.mara.enable = mkEnableOption "Enable the user Mara"; + + config = mkIf cfg.enable { + home-manager.users.mara = { config, pkgs, ... }: + + { + imports = [ + ../home-default.nix + ./config/all.nix + ]; + + home = { + username = "mara"; + homeDirectory = "/home/mara"; + }; + }; + + programs.fish.enable = true; + + users.users.mara = { + isNormalUser = true; + description = "Mara"; + extraGroups = [ + "networkmanager" + "wheel" + "docker" + "adbusers" + ]; + shell = pkgs.fish; + }; + }; +} diff --git a/users/mara/config/all.nix b/users/mara/config/all.nix new file mode 100644 index 0000000..8acee6d --- /dev/null +++ b/users/mara/config/all.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + imports = [ + ./fish.nix + ./helix.nix + ]; +} diff --git a/users/mara/config/fish.nix b/users/mara/config/fish.nix new file mode 100644 index 0000000..2d04535 --- /dev/null +++ b/users/mara/config/fish.nix @@ -0,0 +1,24 @@ +{ ... }: + +{ + programs.fish = { + enable = true; + + interactiveShellInit = '' + set fish_greeting + ''; + + functions = { + fish_prompt.body = '' + printf '%s %s > ' (set_color purple)(whoami)@(prompt_hostname) (set_color blue)(prompt_pwd)(set_color normal) + ''; + + fish_right_prompt.body = '' + set stat $status + set -g __fish_git_prompt_showupstream verbose + set -g __fish_git_prompt_showcolorhints 1 + printf '%s %s' (fish_vcs_prompt) [(set_color red)$stat(set_color normal)] + ''; + }; + }; +} diff --git a/users/mara/config/helix.nix b/users/mara/config/helix.nix new file mode 100644 index 0000000..7340538 --- /dev/null +++ b/users/mara/config/helix.nix @@ -0,0 +1,32 @@ +{ pkgs, ... }: + +{ + programs.helix = { + enable = true; + defaultEditor = true; + + settings = { + theme = "catppuccin_macchiato"; + editor = { + cursorline = true; + color-modes = true; + true-color = true; + cursor-shape.insert = "bar"; + indent-guides.render = true; + }; + }; + + languages.language = [ + { + name = "nix"; + auto-format = true; + formatter.command = "${pkgs.nixfmt}/bin/nixfmt"; + } + ]; + + themes.catppuccin_macchiato = { + inherits = "catppuccin_macchiato"; + "ui.background" = { }; + }; + }; +}