diff --git a/.nixd.json b/.nixd.json new file mode 100644 index 00000000..a3ac5f85 --- /dev/null +++ b/.nixd.json @@ -0,0 +1,20 @@ +{ + "eval": { + "target": { + "args": [], + "installable": "" + }, + "depth": 0, + "workers": 3 + }, + "formatting": { + "command": "nixpkgs-fmt" + }, + "options": { + "enable": true, + "target": { + "args": [], + "installable": "" + } + } +} diff --git a/default-options.nix b/default-options.nix new file mode 100644 index 00000000..45985814 --- /dev/null +++ b/default-options.nix @@ -0,0 +1,123 @@ +{ config, inputs, outputs, pkgs, lib, home-manager, ...}: +{ + imports = [ + # home manager + inputs.home-manager.nixosModules.default + # modules + # import for each folder + # modules/desktop IMPORT + # modules/desktop/example DO NOT IMPORT, + # add entry to module's default.nix + outputs.nixosModules.desktop + outputs.nixosModules.shell + outputs.nixosModules.hardware + outputs.nixosModules.dev + outputs.nixosModules.media + ]; + + # flakes + nix.settings.experimental-features = [ "nix-command" "flakes"]; + + # import the overlays + nixpkgs = { + overlays = [ + outputs.overlays.additions + outputs.overlays.modifications + outputs.overlays.unstable-packages + ]; + }; + + # grub (mount efi partition to /boot/efi) + # why /boot/efi? instead of /efi? + # 1. when dualbooting, windows makes the efi partition 100mb instead of 512mb+ (we need this for generations + # and intel microcode) + # 2. nixos does not like /efi :( + # 3. i dont like systemd boot D: + # TODO(sako):: add shim secure boot + # because window and riot games devs :( + boot.loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot/efi"; + }; + grub = { + devices = [ "nodev" ]; + efiSupport = true; + enable = true; + useOSProber = true; + configurationLimit = 10; + }; + }; + + # this shouldnt cause any issues right? + networking.networkmanager.enable = true; + + time.timeZone = "Africa/Cairo"; + + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + # keyMap = "us"; + # use xorg layout option + # TODO(sako):: add arabic locale + useXkbConfig = true; + }; + + # xorg layout + # change to needed + services.xserver.layout = "us"; + + # already sold soul to corporations \_o_/ + nixpkgs.config.allowUnfree = true; + + home-manager.useUserPackages = true; + home-manager.users.sako = { pkgs, ...}: { + # CHANGE THIS WHEN THE SYSTEM VERSION CHANGES TOO!!! + home.stateVersion = "23.05"; + home.packages = []; + home.username = "sako"; + home.homeDirectory = "/home/sako"; + programs.bash.enable = true; + programs.home-manager.enable = true; + xdg.configFile.git = { + source = ./config/git; + }; + }; + # bare minimum + environment.systemPackages = with pkgs; [ + vim # backup + wget #double u get + killall # die processes + alsa-utils # unsupported application + pulseaudio # unsupported application + pamixer # unsupported application + feh # im different + unzip # zip file + gh # github + htop # htop + tree # trees + ]; + # you phisiclally cannot live without this + # litearlly! ! ! ! ! ! + programs.gnupg.agent = { + enable = true; + pinentryFlavor = "gtk2"; + # enableSSHSupport = true; + }; + + programs.git = { + enable = true; + package = pkgs.gitFull; + }; + + + # something nixos release + # something use ful in for mat ion + # blah blah blah + # nixos packages type shit + # change this on every update idiot + # dont name it to string beans or some shit + # you idiot + system.stateVersion = "23.05"; + # read comment you read the comment? +} diff --git a/default.nix b/default.nix index 45985814..2cccff28 100644 --- a/default.nix +++ b/default.nix @@ -1,123 +1,10 @@ -{ config, inputs, outputs, pkgs, lib, home-manager, ...}: -{ - imports = [ - # home manager - inputs.home-manager.nixosModules.default - # modules - # import for each folder - # modules/desktop IMPORT - # modules/desktop/example DO NOT IMPORT, - # add entry to module's default.nix - outputs.nixosModules.desktop - outputs.nixosModules.shell - outputs.nixosModules.hardware - outputs.nixosModules.dev - outputs.nixosModules.media - ]; - - # flakes - nix.settings.experimental-features = [ "nix-command" "flakes"]; - - # import the overlays - nixpkgs = { - overlays = [ - outputs.overlays.additions - outputs.overlays.modifications - outputs.overlays.unstable-packages - ]; - }; - - # grub (mount efi partition to /boot/efi) - # why /boot/efi? instead of /efi? - # 1. when dualbooting, windows makes the efi partition 100mb instead of 512mb+ (we need this for generations - # and intel microcode) - # 2. nixos does not like /efi :( - # 3. i dont like systemd boot D: - # TODO(sako):: add shim secure boot - # because window and riot games devs :( - boot.loader = { - efi = { - canTouchEfiVariables = true; - efiSysMountPoint = "/boot/efi"; - }; - grub = { - devices = [ "nodev" ]; - efiSupport = true; - enable = true; - useOSProber = true; - configurationLimit = 10; - }; - }; - - # this shouldnt cause any issues right? - networking.networkmanager.enable = true; - - time.timeZone = "Africa/Cairo"; - - i18n.defaultLocale = "en_US.UTF-8"; - console = { - font = "Lat2-Terminus16"; - # keyMap = "us"; - # use xorg layout option - # TODO(sako):: add arabic locale - useXkbConfig = true; - }; - - # xorg layout - # change to needed - services.xserver.layout = "us"; - - # already sold soul to corporations \_o_/ - nixpkgs.config.allowUnfree = true; - - home-manager.useUserPackages = true; - home-manager.users.sako = { pkgs, ...}: { - # CHANGE THIS WHEN THE SYSTEM VERSION CHANGES TOO!!! - home.stateVersion = "23.05"; - home.packages = []; - home.username = "sako"; - home.homeDirectory = "/home/sako"; - programs.bash.enable = true; - programs.home-manager.enable = true; - xdg.configFile.git = { - source = ./config/git; - }; - }; - # bare minimum - environment.systemPackages = with pkgs; [ - vim # backup - wget #double u get - killall # die processes - alsa-utils # unsupported application - pulseaudio # unsupported application - pamixer # unsupported application - feh # im different - unzip # zip file - gh # github - htop # htop - tree # trees - ]; - # you phisiclally cannot live without this - # litearlly! ! ! ! ! ! - programs.gnupg.agent = { - enable = true; - pinentryFlavor = "gtk2"; - # enableSSHSupport = true; - }; - - programs.git = { - enable = true; - package = pkgs.gitFull; - }; - - - # something nixos release - # something use ful in for mat ion - # blah blah blah - # nixos packages type shit - # change this on every update idiot - # dont name it to string beans or some shit - # you idiot - system.stateVersion = "23.05"; - # read comment you read the comment? -} +(import + ( + let lock = builtins.fromJSON (builtins.readFile ./flake.lock); in + fetchTarball { + url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; + sha256 = lock.nodes.flake-compat.locked.narHash; + } + ) + { src = ./.; } +).defaultNix diff --git a/flake.nix b/flake.nix index 403e4ff9..d1a77950 100644 --- a/flake.nix +++ b/flake.nix @@ -10,10 +10,10 @@ home-manager.url = "github:nix-community/home-manager/release-23.05"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; # flake-compat for nixd - #flake-compat = { - # url = "github:edolstra/flake-compat"; - # flake = false; - #}; + flake-compat = { + url = "github:edolstra/flake-compat"; + flake = false; + }; # TODO(sako):: add agenix or sops-nix # https://github.com/ryantm/agenix#install-via-flakes # https://github.com/Mic92/sops-nix @@ -48,14 +48,14 @@ sakotop = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs outputs; }; modules = [ - ./default.nix + ./default-options.nix ./hosts/sakotop/configuration.nix ]; }; sakopc = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs outputs; }; modules = [ - ./default.nix + ./default-options.nix ./hosts/sakopc/configuration.nix ]; };