diff --git a/flake.nix b/flake.nix index 8ef5558..ee7b625 100644 --- a/flake.nix +++ b/flake.nix @@ -51,91 +51,104 @@ # end ANTI CORRUPTION LAYER }; - outputs = { self, digga, bud, nixos, home, nixos-hardware, nur, agenix - , nvfetcher, deploy, ... }@inputs: - digga.lib.mkFlake { - inherit self inputs; + outputs = + { self + , digga + , bud + , nixos + , home + , nixos-hardware + , nur + , agenix + , nvfetcher + , deploy + , ... + }@inputs: + digga.lib.mkFlake + { + inherit self inputs; - channelsConfig = { allowUnfree = true; }; + channelsConfig = { allowUnfree = true; }; + + channels = { + nixos = { + imports = [ (digga.lib.importOverlays ./overlays) ]; + overlays = [ + digga.overlays.patchedNix + nur.overlay + agenix.overlay + nvfetcher.overlay + deploy.overlay + ./pkgs/default.nix + ]; + }; + latest = { }; + }; + + lib = import ./lib { lib = digga.lib // nixos.lib; }; + + sharedOverlays = [ + (final: prev: { + __dontExport = true; + lib = prev.lib.extend (lfinal: lprev: { our = self.lib; }); + }) + ]; - channels = { nixos = { - imports = [ (digga.lib.importOverlays ./overlays) ]; - overlays = [ - digga.overlays.patchedNix - nur.overlay - agenix.overlay - nvfetcher.overlay - deploy.overlay - ./pkgs/default.nix - ]; - }; - latest = { }; - }; - - lib = import ./lib { lib = digga.lib // nixos.lib; }; - - sharedOverlays = [ - (final: prev: { - __dontExport = true; - lib = prev.lib.extend (lfinal: lprev: { our = self.lib; }); - }) - ]; - - nixos = { - hostDefaults = { - system = "x86_64-linux"; - channelName = "latest"; - imports = [ (digga.lib.importModules ./modules) ]; - externalModules = [ - { lib.our = self.lib; } - digga.nixosModules.bootstrapIso - digga.nixosModules.nixConfig - home.nixosModules.home-manager - agenix.nixosModules.age - bud.nixosModules.bud - ]; - }; - - imports = [ (digga.lib.importHosts ./hosts) ]; - hosts = { - # set host specific properties here - NixOS = { }; - }; - importables = rec { - profiles = digga.lib.rakeLeaves ./profiles // { - users = digga.lib.rakeLeaves ./users; + hostDefaults = { + system = "x86_64-linux"; + channelName = "latest"; + imports = [ (digga.lib.importModules ./modules) ]; + externalModules = [ + { lib.our = self.lib; } + digga.nixosModules.bootstrapIso + digga.nixosModules.nixConfig + home.nixosModules.home-manager + agenix.nixosModules.age + bud.nixosModules.bud + ]; }; - suites = with profiles; rec { - base = [ core users.nixos users.root ]; + + imports = [ (digga.lib.importHosts ./hosts) ]; + hosts = { + # set host specific properties here + Infini-DESKTOP = { }; + }; + importables = rec { + profiles = digga.lib.rakeLeaves ./profiles // { + users = digga.lib.rakeLeaves ./users; + }; + suites = with profiles; rec { + base = [ core users.root users.infinidoge develop.common ]; + graphical = base ++ [ graphical.qtile ]; + }; }; }; - }; - home = { - imports = [ (digga.lib.importModules ./users/modules) ]; - externalModules = [ ]; - importables = rec { - profiles = digga.lib.rakeLeaves ./users/profiles; - suites = with profiles; rec { base = [ direnv git ]; }; + home = { + imports = [ (digga.lib.importModules ./users/modules) ]; + externalModules = [ ]; + importables = rec { + profiles = digga.lib.rakeLeaves ./users/profiles; + suites = with profiles; rec { base = [ direnv git ]; }; + }; + users = { + infinidoge = { }; + }; # digga.lib.importers.rakeLeaves ./users/hm; }; - users = { - infinidoge = { suites, ... }: { imports = suites.base; }; - }; # digga.lib.importers.rakeLeaves ./users/hm; - }; - devshell = ./shell; + devshell = ./shell; - homeConfigurations = - digga.lib.mkHomeConfigurations self.nixosConfigurations; + homeConfigurations = + digga.lib.mkHomeConfigurations self.nixosConfigurations; - deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations { }; + deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations { }; - defaultTemplate = self.templates.bud; - templates.bud.path = ./.; - templates.bud.description = "bud template"; + defaultTemplate = self.templates.bud; + templates.bud.path = ./.; + templates.bud.description = "bud template"; - } // { + } // { budModules = { devos = import ./bud; }; }; } diff --git a/hosts/Infini-DESKTOP/default.nix b/hosts/Infini-DESKTOP/default.nix index 409c083..f945f3c 100644 --- a/hosts/Infini-DESKTOP/default.nix +++ b/hosts/Infini-DESKTOP/default.nix @@ -1,5 +1,12 @@ -{ suites, ... }: { - imports = suites.base ++ [ ./hardware-configuration.nix ]; +{ suites, profiles, pkgs, ... }: { + imports = suites.graphical + ++ [ ./hardware-configuration.nix ] + ++ (with profiles; [ + networking.wireless + hardware.sound + graphical.nvidia + peripherals.printing + ]); system.stateVersion = "21.05"; @@ -17,24 +24,13 @@ time.timeZone = "America/New_York"; networking = { - useDHCP = false; # Explicitly disable broad DHCP interfaces = { # Enable DHCP per interface eth0.useDHCP = true; wlp41s0.useDHCP = true; }; - wireless = { - enable = true; # Enable wireless - interfaces = [ "wlp41s0" ]; - - networks = { - Mashtun = { - pskRaw = - "1ccf3e0cc08700f2484e4a0e202836898cc8c084b7e05d6798bf0a7ba9bbc306"; - }; - }; - }; + wireless.interfaces = [ "wlp41s0" ]; }; i18n.defaultLocale = "en_US.UTF-8"; @@ -67,36 +63,4 @@ services.gvfs.enable = true; # MTP support - services.xserver = { - # Enable X11 Windowing and Qtile Window Manager - enable = true; - windowManager.qtile.enable = true; - - # Configure X11 keymap - layout = "us"; - - videoDrivers = [ "nvidia" ]; - }; - - hardware.nvidia.modesetting.enable = true; - hardware.opengl.driSupport32Bit = true; - - # Enable CUPS to print documents. - services.printing = { - enable = true; - drivers = with pkgs; [ - cnijfilter2 - gutenprintBin - cupsBjnp - cups-bjnp - canon-cups-ufr2 - carps-cups - cnijfilter_2_80 - cnijfilter_4_00 - ]; - }; - - # Enable sound. - sound.enable = true; - hardware.pulseaudio.enable = true; } diff --git a/profiles/core/nix.nix b/profiles/core/nix.nix new file mode 100644 index 0000000..f6143a3 --- /dev/null +++ b/profiles/core/nix.nix @@ -0,0 +1,49 @@ +{ pkgs, ... }: { + + nix = { + systemFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ]; + + autoOptimiseStore = true; + + gc.automatic = true; + + optimise.automatic = true; + + useSandbox = true; + + allowedUsers = [ "@wheel" ]; + + trustedUsers = [ "root" "@wheel" ]; + + extraOptions = '' + min-free = 536870912 + keep-outputs = true + keep-derivations = true + fallback = true + ''; + }; + + environment = { + systemPackages = with pkgs; [ nix-index nixfmt nixpkgs-fmt ]; + + shellAliases = { + # nix + n = "nix"; + np = "n profile"; + ni = "np install"; + nr = "np remove"; + ns = "n search --no-update-lock-file"; + nf = "n flake"; + nepl = "n repl ''"; + srch = "ns nixos"; + orch = "ns override"; + nrb = ifSudo "sudo nixos-rebuild"; + mn = '' + manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix + ''; + + # fix nixos-option + nixos-option = "nixos-option -I nixpkgs=${self}/lib/compat"; + }; + }; +} diff --git a/profiles/develop/common.nix b/profiles/develop/common.nix new file mode 100644 index 0000000..6a89d42 --- /dev/null +++ b/profiles/develop/common.nix @@ -0,0 +1 @@ +{ imports = [ ./zsh ]; } diff --git a/profiles/develop/neovim.nix b/profiles/develop/neovim.nix new file mode 100644 index 0000000..74b2363 --- /dev/null +++ b/profiles/develop/neovim.nix @@ -0,0 +1,8 @@ +{ ... }: { + programs.neovim = { + defaultEditor = true; + + viAlias = true; + vimAlias = true; + }; +} diff --git a/profiles/develop/zsh.nix b/profiles/develop/zsh.nix new file mode 100644 index 0000000..bae9427 --- /dev/null +++ b/profiles/develop/zsh.nix @@ -0,0 +1,45 @@ +{ ... }: { + programs.zsh = { + enable = true; + autosuggestions.enable = true; + ohMyZsh = { + enable = true; + plugins = [ + # Display + "colorize" + "colored-man-pages" + + # zsh modifications + "zsh-interactive-cd" + "zsh_reload" + "command-not-found" + + # Aliases + "alias-finder" + + # Applications + ## Docker + "docker" + ## Python + "pip" + "python" + ## Systemd + "systemd" + ## Git + "git" + "github" + "gitignore" + ## Emacs + "emacs" + ## Vim + "fancy-ctrl-z" + ]; + }; + syntaxHighlighting = { + enable = true; + highlighters = [ "main" "brackets" "pattern" "cursor" ]; + patterns = { "rm -rf *" = "fg=white,bold,bg=red"; }; + }; + zsh-autoenv.enable = true; + }; +} diff --git a/profiles/graphical/nvidia.nix b/profiles/graphical/nvidia.nix new file mode 100644 index 0000000..bcbe5fe --- /dev/null +++ b/profiles/graphical/nvidia.nix @@ -0,0 +1,6 @@ +{ ... }: { + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware.nvidia.modesetting.enable = true; + hardware.opengl.driSupport32Bit = true; +} diff --git a/profiles/graphical/qtile.nix b/profiles/graphical/qtile.nix new file mode 100644 index 0000000..527af49 --- /dev/null +++ b/profiles/graphical/qtile.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: { + imports = [ ./xserver ]; + + services.xserver.windowManager.qtile.enable = true; + + environment.systemPackages = with pkgs; [ xsecurelock ]; +} diff --git a/profiles/graphical/xserver.nix b/profiles/graphical/xserver.nix new file mode 100644 index 0000000..e3da52e --- /dev/null +++ b/profiles/graphical/xserver.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: { + services.xserver = { + enable = true; + layout = "us"; + }; + + environment.systemPackages = with pkgs; [ + xclip + xdotool + xorg.xwininfo + xorg.xauth + + blugon + ]; +} diff --git a/profiles/hardware/sound.nix b/profiles/hardware/sound.nix new file mode 100644 index 0000000..61771d2 --- /dev/null +++ b/profiles/hardware/sound.nix @@ -0,0 +1,4 @@ +{ ... }: { + sound.enable = true; + hardware.pulseaudio.enable = true; +} diff --git a/profiles/peripherals/mobile.nix b/profiles/peripherals/mobile.nix new file mode 100644 index 0000000..db2e69c --- /dev/null +++ b/profiles/peripherals/mobile.nix @@ -0,0 +1,3 @@ +{ ... }: { + services.gvfs.enable = true; # MTP support +} diff --git a/profiles/peripherals/printing.nix b/profiles/peripherals/printing.nix new file mode 100644 index 0000000..0bd5c94 --- /dev/null +++ b/profiles/peripherals/printing.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: { + services.printing = { + enable = true; + drivers = with pkgs; [ + cnijfilter2 + gutenprintBin + cupsBjnp + cups-bjnp + canon-cups-ufr2 + carps-cups + cnijfilter_2_80 + cnijfilter_4_00 + ]; + }; +} diff --git a/users/infinidoge/default.nix b/users/infinidoge/default.nix index 141e99a..807519b 100644 --- a/users/infinidoge/default.nix +++ b/users/infinidoge/default.nix @@ -1,5 +1,7 @@ -{ hmUsers, ... }: { - home-manager.users = { inherit (hmUsers) infinidoge; }; +{ config, self, lib, pkgs, ... }: { + home-manager.users.infinidoge = { suites, ... }: { + imports = suites.base; + }; users.users.infinidoge = { uid = 1000;