diff --git a/flake.nix b/flake.nix index e914190..394999f 100644 --- a/flake.nix +++ b/flake.nix @@ -7,10 +7,61 @@ flake-parts.url = "github:hercules-ci/flake-parts"; import-tree.url = "github:vic/import-tree"; + + home-manager = { + url = "github:nix-community/home-manager/master"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + stylix = { + url = "github:danth/stylix"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs"; + nur.inputs = { + nixpkgs.follows = "nixpkgs"; + flake-parts.follows = "stylix/flake-parts"; + }; + }; + }; + + noctalia = { + url = "github:noctalia-dev/noctalia-shell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + firefox-addons = { + url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + prismlauncher-cracked = { + url = "github:Diegiwg/PrismLauncher-Cracked"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + affinity-nix = { + url = "github:mrshmllow/affinity-nix"; + inputs = { + nixpkgs.follows = "nixpkgs"; + treefmt-nix.inputs.nixpkgs.follows = "nixpkgs"; + git-hooks.inputs = { + nixpkgs.follows = "nixpkgs"; + gitignore.inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + }; + + nix-flatpak.url = "github:gmodena/nix-flatpak?ref=latest"; + + garandos-tui = { + url = "git+https://gitea.garandplg.com/GarandPLG/garandos-tui?ref=main"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; - } (inputs.import-tree ./.); + } (inputs.import-tree ./modules); } diff --git a/hosts/Garand-Desktop/default.nix b/hosts/Garand-Desktop/default.nix deleted file mode 100644 index 8644cbc..0000000 --- a/hosts/Garand-Desktop/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - self, - inputs, - ... -}: let - modules = self.nixosModules; -in { - flake.nixosConfigurations."Garand-Desktop" = inputs.nixpkgs.lib.nixosSystem { - modules = [ - modules.hardware - modules.homeModules - modules.systemModules - modules.systemPackages - modules.variables - ]; - }; -} diff --git a/hosts/Garand-Desktop/hardware.nix b/hosts/Garand-Desktop/hardware.nix deleted file mode 100644 index 0a6d472..0000000 --- a/hosts/Garand-Desktop/hardware.nix +++ /dev/null @@ -1,69 +0,0 @@ -_: { - flake.nixosModules.hardware = { - config, - lib, - modulesPath, - ... - }: { - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot = { - initrd = { - availableKernelModules = [ - "nvme" - "xhci_pci" - "ahci" - "usbhid" - "usb_storage" - "sd_mod" - ]; - kernelModules = ["dm-snapshot"]; - luks.devices = { - cryptroot = { - device = "/dev/disk/by-uuid/7c018698-d35c-4ee6-92a8-5e4edf914065"; - preLVM = true; - }; - }; - }; - kernelModules = ["kvm-amd"]; - extraModulePackages = []; - }; - - fileSystems = { - "/" = { - device = "/dev/disk/by-uuid/e3ac1df3-ce8f-44cd-901f-a8cd3f6955b7"; - fsType = "ext4"; - }; - "/home" = { - device = "/dev/disk/by-uuid/0713b82c-bf8c-424f-96e1-5d883e50b451"; - fsType = "ext4"; - }; - "/boot" = { - device = "/dev/disk/by-uuid/783D-A507"; - fsType = "vfat"; - options = [ - "fmask=0022" - "dmask=0022" - ]; - }; - }; - - swapDevices = lib.mkForce [ - { - device = "/dev/disk/by-uuid/8e8cc3dc-5754-4757-a2d7-53e6a2c3b5a4"; - } - ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp5s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - }; -} diff --git a/hosts/Garand-Desktop/home-modules.nix b/hosts/Garand-Desktop/home-modules.nix deleted file mode 100644 index d55f472..0000000 --- a/hosts/Garand-Desktop/home-modules.nix +++ /dev/null @@ -1,67 +0,0 @@ -_: { - flake.nixosModules.homeModules = { - /* - Development editors and IDEs - */ - vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode - zed-editor = { - enable = true; # Zed Editor: a modern, high‑performance code editor - remote-server.enable = true; # Remote Server: enable remote editing capabilities - }; - - /* - Web browsers - */ - librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork - ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork - - /* - System utilities - */ - btop.enable = true; # Btop: a resource monitor for the terminal - cava.enable = false; # Cava: terminal audio visualizer - fastfetch.enable = true; # Fastfetch: a fast system information tool - - /* - Communication and synchronization - */ - kdeconnect.enable = true; # KDE Connect: integrate your phone and desktop - nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server - vesktop.enable = true; # Vesktop: a community‑driven Discord client - - /* - Gaming - */ - lutris.enable = false; # Lutris: an open gaming platform - - /* - Media recording and streaming - */ - obs-studio.enable = false; # OBS Studio: streaming and recording software - - /* - Office suite - */ - onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats - - /* - Learning tools - */ - anki.enable = true; # Anki: spaced‑repetition flashcard program - - /* - XDG desktop entries (PWA) - */ - xdgDesktopEntries = { - enable = true; # Enable XDG desktop entries - entries = { - messenger.enable = true; # Messenger: Facebook Messenger - mastodon.enable = true; # Mastodon: a decentralized social network - garandcloud.enable = true; # GarandCloud: my Nextcloud instance - chatgpt.enable = true; # ChatGPT: a large language model - claude.enable = true; # Claude: a large language model - glance.enable = true; # Glance: my home server dashboard - }; - }; - }; -} diff --git a/hosts/Garand-Desktop/system-modules.nix b/hosts/Garand-Desktop/system-modules.nix deleted file mode 100644 index 757f425..0000000 --- a/hosts/Garand-Desktop/system-modules.nix +++ /dev/null @@ -1,97 +0,0 @@ -_: { - flake.nixosModules.systemModules = { - /* - Container & Packaging - */ - docker.enable = true; # Docker: container runtime and management - virtualbox.enable = false; # VirtualBox: PC emulator - flatpak = { - enable = true; # Flatpak: universal packaging system for Linux - packages = { - sober.enable = false; # Roblox client - warehouse.enable = true; # Flatpak manager - flatseal.enable = true; # Flatpak permissions manager - }; - }; - - /* - Networking - */ - tailscale.enable = true; # Tailscale: secure network for remote access - - /* - Calendar & Contacts - */ - calendar.enable = true; # GNOME Calendar: calendar and contacts application - - /* - Gaming - */ - gamemode.enable = true; # GameMode: optimizes system performance for gaming - gamescope.enable = false; # Gamescope: micro‑compositor for games - steam.enable = true; # Steam: platform for buying and playing games - - packages = { - /* - Container & Packaging - */ - distrobox.enable = false; # Distrobox: containerized development environments - lazydocker.enable = false; # Lazydocker: simple TUI for Docker - bottles.enable = false; # Bottles: Easy-to-use wineprefix manager - - /* - Gaming - */ - prismlauncher.enable = true; # Prism Launcher: Minecraft modded launcher - spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game - ttySolitaire.enable = true; # TTY Solitaire: terminal‑based solitaire game - heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac - - /* - Development Tools - */ - exercism.enable = true; # Exercism: coding practice platform - lazygit.enable = false; # Lazygit: simple TUI for Git - opencode.enable = false; # OpenCode: tools for coding and development - jan.enable = true; # Jan: AI chat UI - logisim-evolution.enable = true; # Logisim-Evolution: Digital logic designer and simulator - - /* - Communication & Collaboration - */ - mattermost.enable = true; # Mattermost: open‑source Slack alternative - slack.enable = false; # Slack: team communication and collaboration tool - tutanota.enable = true; # Tutanota: secure email client - signal.enable = true; # Signal: secure messaging app - teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux - ferdium.enable = false; # Ferdium: All your services in one place built by the community - - /* - Productivity / Knowledge Management - */ - bitwarden.enable = false; # Bitwarden: password manager (desktop) - iotas.enable = true; # Iotas: lightweight notes manager - logseq.enable = false; # Logseq: knowledge base and outliner - - /* - Media & Graphics - */ - affinity.enable = true; # Affinity: professional graphics suite - eyeOfGnome.enable = true; # Eye of GNOME: image viewer - freetube.enable = false; # FreeTube: privacy‑friendly YouTube client - gimp.enable = false; # GIMP: GNU Image Manipulation Program - kdenlive.enable = false; # Kdenlive: video editing software - pixieditor.enable = true; # Pixieditor: Universal editor for all your 2D needs - plex.enable = true; # Plex: media player and server client - - /* - Utilities / Misc - */ - eddieAirVPN.enable = true; # Eddie AirVPN: VPN client - gnomeCalculator.enable = true; # gnomeCalculator: simple calculator - gedit.enable = true; # Gedit: GNOME text editor - winboat.enable = true; # Winboat: Windows remote desktop via RDP - adb.enable = false; # ADB: Android SDK platform tools - }; - }; -} diff --git a/hosts/Garand-Desktop/system-packages.nix b/hosts/Garand-Desktop/system-packages.nix deleted file mode 100644 index 43dca7a..0000000 --- a/hosts/Garand-Desktop/system-packages.nix +++ /dev/null @@ -1,5 +0,0 @@ -{inputs, ...}: { - flake.nixosModules.systemPackages.environment.systemPackages = with inputs.pkgs; [ - # audacity - ]; -} diff --git a/modules/core/boot.nix b/modules/core/boot.nix deleted file mode 100644 index b24e42e..0000000 --- a/modules/core/boot.nix +++ /dev/null @@ -1,39 +0,0 @@ -_: { - flake.nixosModules.boot = {pkgs, config, lib, ...}: { - boot = { - kernelPackages = pkgs.linuxPackages_zen; - kernelModules = ["v4l2loopback"]; - extraModulePackages = [config.boot.kernelPackages.v4l2loopback]; - kernel.sysctl = { - "vm.max_map_count" = 2147483642; - }; - loader = { - efi.canTouchEfiVariables = true; - limine = { - enable = true; - style = { - wallpapers = [ - ./../../wallpapers/attack-on-titan-mikasa-ackerman.jpg - ]; - wallpaperStyle = lib.mkForce "centered"; - backdrop = "${config.stylix.base16Scheme.base00}"; - interface = { - branding = "GarandOS Bootloader"; - resolution = "1920x1080"; - }; - }; - }; - }; - # Appimage Support - binfmt.registrations.appimage = { - wrapInterpreterInShell = false; - interpreter = "${pkgs.appimage-run}/bin/appimage-run"; - recognitionType = "magic"; - offset = 0; - mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff''; - magicOrExtension = ''\x7fELF....AI\x02''; - }; - plymouth.enable = true; - }; - }; -} diff --git a/modules/hosts/Garand-Desktop/default.nix b/modules/hosts/Garand-Desktop/default.nix new file mode 100644 index 0000000..f3a1d96 --- /dev/null +++ b/modules/hosts/Garand-Desktop/default.nix @@ -0,0 +1,12 @@ +{ + self, + inputs, + ... +}: { + flake.nixosConfigurations."Garand-Desktop" = inputs.nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = with self.modules.nixos; [ + variables + ]; + }; +} diff --git a/hosts/Garand-Desktop/variables.nix b/modules/hosts/Garand-Desktop/variables.nix similarity index 96% rename from hosts/Garand-Desktop/variables.nix rename to modules/hosts/Garand-Desktop/variables.nix index 5bbb8cc..973ee36 100644 --- a/hosts/Garand-Desktop/variables.nix +++ b/modules/hosts/Garand-Desktop/variables.nix @@ -1,5 +1,5 @@ -_: { - flake.nixosModules.variables = { +{self, inputs, ...}: { + flake.modules.nixos.variables = { # CPU Architecture # Available options: "x86_64-linux", "aarch64-linux", etc. system = "x86_64-linux"; diff --git a/modules/parts.nix b/modules/parts.nix new file mode 100644 index 0000000..657e3ca --- /dev/null +++ b/modules/parts.nix @@ -0,0 +1,10 @@ +{ + config = { + systems = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-linux" + "aarch64-darwin" + ]; + }; +}