{"id":20365917,"url":"https://github.com/akibahmed229/nixos","last_synced_at":"2025-04-12T04:53:11.249Z","repository":{"id":182603976,"uuid":"668343663","full_name":"akibahmed229/nixos","owner":"akibahmed229","description":"My NixOS configuration ","archived":false,"fork":false,"pushed_at":"2025-04-09T19:07:24.000Z","size":46078,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-12T04:53:01.910Z","etag":null,"topics":["dotfiles","dwm","emacs","emacs-config","firefox-config","flake","gnome","home-manager","hyperland","kde","neovim","nix","nixos","tmux","wallpaper"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akibahmed229.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-19T15:22:55.000Z","updated_at":"2025-04-09T19:07:27.000Z","dependencies_parsed_at":"2024-06-28T14:13:27.686Z","dependency_job_id":"716f48b9-b0f1-480c-96a8-0f3c1054cf8d","html_url":"https://github.com/akibahmed229/nixos","commit_stats":null,"previous_names":["akibahmed229/nixos"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akibahmed229%2Fnixos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akibahmed229%2Fnixos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akibahmed229%2Fnixos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akibahmed229%2Fnixos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akibahmed229","download_url":"https://codeload.github.com/akibahmed229/nixos/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248519472,"owners_count":21117757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotfiles","dwm","emacs","emacs-config","firefox-config","flake","gnome","home-manager","hyperland","kde","neovim","nix","nixos","tmux","wallpaper"],"created_at":"2024-11-15T00:21:09.692Z","updated_at":"2025-04-12T04:53:11.233Z","avatar_url":"https://github.com/akibahmed229.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://i.imgur.com/NbxQ8MY.png\" width=600px\u003e\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eAkib | NixOS Config Go Wilde\u003c/h2\u003e\n\n\u003ch2 align=\"center\"\u003e Current System Preview \u003c/h2\u003e\n\n![my current setup](./public/preview/Current.png)\n\n# 1. Installation My version of NixOS\n\n\u003cdetails\u003e\n\n\u003csummary\u003eNixOS setup using falke and home-manager as module. Hyperland as default Window Manager. (as so many changes regarding my config and since added my custom lib helper this section need changes, will change once i get free time)\u003c/summary\u003e\n\n## Installation Prerequisites\n\nBefore you begin, ensure you have the following:\n\n- A Linux system with an EFI-enabled BIOS (for BIOS installations, adjust the commands accordingly).\n- The disk identifier (`/dev/sdX`) for the target installation disk. Replace `sdX` with the appropriate disk identifier for your system.\n\n## Installation Steps\n\n**Install NixOS**\n\n```bash\nsudo su\nnix-shell -p git --command 'nix run github:akibahmed229/nixos#akibOS --experimental-features \"nix-command flakes\"'\n```\n\n\u003e **NOTE**:\n\u003e During the installation process, [akibOS](./pkgs/akibOS/default.nix) will prompt for the disk identifier (`/dev/sdX`) , hostname and the username. Replace `sdX` with the appropriate disk identifier for your system.\n\u003e also replace `hostname` with (available options: desktop, virt) and `username` with your desired username.\n\u003e the default password for the user is `123456` you can change it later.\n\nCongratulations! You have successfully installed NixOS with a Btrfs filesystem. Enjoy your fault-tolerant, advanced feature-rich, and easy-to-administer system!\n\n\u003e **NOTE**:\n\u003e The Configuration will clone from this repository and will be placed in `/home/username/.config/flake` respectively.\n\u003e For more information about NixOS and its configuration options, refer to the official [NixOS documentation](https://nixos.org/).\n\n**After installation:**\n\n- Open a terminal with \"Super + Return\".\n- Navigate to the `~/.config/flake` directory in the terminal.\n- Fix permission issues by running these commands:\n\n```bash\nchown -R yourUserName:users *\nchown -R yourUserName:users .*\n```\n\n\u003c/details\u003e\n\n# 2. File Structure\n\n\u003cdetails\u003e\n  \u003csummary\u003eStructurally, this flake is designed to interpret as much information as possible from the directories it manages. Rather than have a \"master list\" of configurations to manage, adding files to the hosts/, modules/, overlays/, \u0026 pkgs/ folders will cause them to be automatically detected and configured on flake rebuild. This is achieved by programmatically determining the objects that need to be evaluated and generated. The downside of this, of course, is that there's not one \"master list\" to reference;\u003c/summary\u003e\n\n- **Flake.nix** : Main flake file for defining the system configuration\n\n  - **lib** : Library helper functions, providing a set of functions that can be used to mange stuff in a more concise way\n  - **hosts** : Host-specific configuration files\n  - **home-manager** : Configuration files for desktop environment \u0026 window manager\n  - **modules** : Program-specific configuration files (includes custom and predefined modules for NixOS and Home Manager)\n  - **overlays** : Customize pkgs \u0026 extend entries nixpkgs itself\n  - **pkgs** : Nix derivations, custom packages, and shell scripts\n  - **public** : Wallpaper folder, Template for different system, \u0026 GTK/QT themes and doc\n  - **flake.lock** : Lock file for the flake inputs\n\n- **_devShell/flake.nix_** : Flake file defining the development shell\n\n\u003c/details\u003e\n\n# 3. This Flake Provide\n\n- \u003cdetails\u003e\n  \u003csummary\u003eOverlays for custom packages and Nixpkgs\u003c/summary\u003e\n  \u003c/br\u003e\n\n  You can also plug this into a flake to include it into a system configuration.\n\n  ```nix\n  {\n      inputs = {\n       akibOS.url = \"github:akibahmed229/nixos\";\n      };\n  }\n  ```\n\n  This input can then be used as an overlay to replace the default Nixpkgs with the custom one. (nixos , home-manager)\n\n  ```nix\n  {inputs, ... }:\n  {\n      nixpkgs.overlays = [\n         inputs.akibOS.overlays.discord-overlay # pull the latest version of discord\n         inputs.akibOS.overlays.nvim-overlay # my custom nvim with nixvim\n         inputs.akibOS.overlays.flatpak-overlay # patch flatpak font\n         inputs.akibOS.overlays.unstable-packages # pull pkgs from unstable. be accissible through `pkgs.unstable`\n      ];\n  }\n  ```\n\n  \u003c/details\u003e\n\n- \u003cdetails\u003e\n   \u003csummary\u003eDevShell for development environments\u003c/summary\u003e\n   \u003c/br\u003e\n   \n   you can access the development shell by running the following command:\n   \n   ```bash\n   nix develop github:akibahmed229/nixos#kernel_build_env # kernel development environment\n   nix develop github:akibahmed229/nixos#jupyter # jupyter development environment\n   nix develop github:akibahmed229/nixos#gtk3_env # gtk3 development environment\n   nix develop github:akibahmed229/nixos#prisma # prisma query engine\n   ```\n\n  \u003c/details\u003e\n\n- \u003cdetails\u003e\n   \u003csummary\u003eCustom Pkgs \u0026 Shell scripts\u003c/summary\u003e\n   \u003c/br\u003e\n   \n   you can access the shell scripts by running the following command:\n   \n   ```bash\n   nix run github:akibahmed229/nixos#nix-update-input # this will update specific flake input of you flake.nix\n   nix run github:akibahmed229/nixos#nixvim # you can try my custom nixvim\n   nix run github:akibahmed229/nixos#wallpaper # you need to define your env variable $WALLPAPER\n   ```\n\n  You can also plug this into a flake to include it into a system configuration.\n\n  ```nix\n  {\n      inputs = {\n       akibOS.url = \"github:akibahmed229/nixos\";\n      };\n  }\n  ```\n\n  This input can then be used as Nixpkgs with the custom one. (nixos , home-manager)\n\n  From NixOS Configuration\n\n  ```nix\n  {inputs, pkgs,... }:\n  {\n      environment.systemPackages = with pkgs; [\n        inputs.akibOS.packages.${pkgs.system}.wallpaper # make sure you have set the env variable $WALLPAPER\n        inputs.akibOS.packages.${pkgs.system}.custom_nsxiv # my modify version of nsxiv\n      ];\n\n      # custom pkgs for sddm theme for\n      services.displayManager.sddm = {\n        enable = true;\n        theme = ''${inputs.akibOS.packages.${pkgs.system}.custom_sddm.override {\n            imgLink = {\n              url = \"https://raw.githubusercontent.com/akibahmed229/nixos/main/public/wallpaper/nix-wallpaper-nineish-dark-gray.png\"; # you can change the image for sddm theme\n              sha256 = \"07zl1dlxqh9dav9pibnhr2x1llywwnyphmzcdqaby7dz5js184ly\"; # change the hash accordingly\n            };\n          }}'';\n      };\n  }\n  ```\n\n  From Home Manager\n\n  ```nix\n  {inputs, pkgs,... }:\n  {\n     home.packages  = with pkgs; [\n        inputs.akibOS.packages.${pkgs.system}.wallpaper # make sure you have set the env variable $WALLPAPER\n        inputs.akibOS.packages.${pkgs.system}.custom_nsxiv # my modify version of nsxiv\n      ];\n  }\n  ```\n\n  \u003c/details\u003e\n\n- \u003cdetails\u003e\n     \u003csummary\u003eMy Custom library helper function that will allow multiple hosts with easy-to-administer\u003c/summary\u003e\n     \u003c/br\u003e\n\n  NixOS configuration ( flake \u0026 home-manager as module) with my mkSystem lib function\n\n  ```bash\n    nix flake init -t github:akibahmed229/nixos#nixos\n  ```\n\n  Standalone home-manager configuration with my mkSystem lib function\n\n  ```bash\n    nix flake init -t github:akibahmed229/nixos#homeManager\n  ```\n\n  Nix-On-Droid configuration for Android (flake \u0026 home-manager as module) with my mkSystem lib function\n\n  ```bash\n    nix flake init -t github:akibahmed229/nixos#nixOnDroid\n  ```\n\n    \u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakibahmed229%2Fnixos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakibahmed229%2Fnixos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakibahmed229%2Fnixos/lists"}