diff --git a/enviroments/client/default.nix b/enviroments/client/default.nix new file mode 100644 index 0000000..239058c --- /dev/null +++ b/enviroments/client/default.nix @@ -0,0 +1,72 @@ +{ pkgs, ... }: +{ + imports = [ + ../common + ]; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable networking + networking.networkmanager.enable = true; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + services.xserver.desktopManager.xterm.enable = false; + + # Get rid of xTerm + services.xserver.excludePackages = [ pkgs.xterm ]; + + # Configure keymap in X11 + services.xserver = { + layout = "us,it,de"; + xkbVariant = ""; + }; + + # Enable sound with pipewire. + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + environment.systemPackages = with pkgs; [ + # version control + git + + # helvetica font + aileron + + # system debuging tools + iputils + dnsutils + ]; +} \ No newline at end of file diff --git a/enviroments/common/default.nix b/enviroments/common/default.nix new file mode 100644 index 0000000..3115625 --- /dev/null +++ b/enviroments/common/default.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: +{ + imports = [ + ../../users + ]; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # Set your time zone. + time.timeZone = "America/Chicago"; + + # List packages installed in system profile. + environment.systemPackages = with pkgs; [ + wget + ]; +} \ No newline at end of file diff --git a/hosts/horizon/configuration.nix b/hosts/horizon/configuration.nix index c26438a..3fbe076 100644 --- a/hosts/horizon/configuration.nix +++ b/hosts/horizon/configuration.nix @@ -8,7 +8,7 @@ ./hardware-configuration.nix - ../../users + ../../enviroments/client ]; sops.defaultSopsFile = ../../secrets/secrets.yaml; @@ -26,68 +26,7 @@ boot.kernelModules = [ "sg" ]; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - networking.hostName = "horizon"; # Define your hostname. - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - - # Enable networking - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "America/Chicago"; - - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "en_US.UTF-8"; - LC_IDENTIFICATION = "en_US.UTF-8"; - LC_MEASUREMENT = "en_US.UTF-8"; - LC_MONETARY = "en_US.UTF-8"; - LC_NAME = "en_US.UTF-8"; - LC_NUMERIC = "en_US.UTF-8"; - LC_PAPER = "en_US.UTF-8"; - LC_TELEPHONE = "en_US.UTF-8"; - LC_TIME = "en_US.UTF-8"; - }; - - # Enable the X11 windowing system. - services.xserver.enable = true; - - # Enable the GNOME Desktop Environment. - services.xserver.displayManager.gdm.enable = true; - services.xserver.desktopManager.gnome.enable = true; - services.xserver.desktopManager.xterm.enable = false; - - # Get rid of xTerm - services.xserver.excludePackages = [ pkgs.xterm ]; - - # Configure keymap in X11 - services.xserver = { - layout = "us"; - xkbVariant = ""; - }; - - # Enable CUPS to print documents. - services.printing.enable = true; - - # Enable sound with pipewire. - sound.enable = true; - hardware.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - # If you want to use JACK applications, uncomment this - #jack.enable = true; - - # use the example session manager (no others are packaged yet so this is enabled by default, - # no need to redefine it in your config for now) - #media-session.enable = true; - }; # enabled virtualisation for docker # virtualisation.docker.enable = true; @@ -127,24 +66,6 @@ # Allow unfree packages nixpkgs.config.allowUnfree = true; - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. - # wget - # resilio-sync - # yt-dlp - # spotdl - # ffmpeg - # chromaprint - # docker - aileron -# sox -# songrec -# csvkit -# losslessaudiochecker - ]; - # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; diff --git a/overlays/intellij.nix b/overlays/intellij.nix new file mode 100644 index 0000000..25ee779 --- /dev/null +++ b/overlays/intellij.nix @@ -0,0 +1,19 @@ +{ ... }: +{ + nixpkgs.overlays = [ + (self: super: { + # idea is too out of date for android gradle things + jetbrains = { + jdk = super.jdk17; + idea-community = super.jetbrains.idea-community.overrideAttrs (oldAttrs: rec { + version = "2023.3.3"; + name = "idea-community-${version}"; + src = super.fetchurl { + sha256 = "sha256-3BI97Tx+3onnzT1NXkb62pa4dj9kjNDNvFt9biYgP9I="; + url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz"; + }; + }); + }; + }) + ]; +} \ No newline at end of file diff --git a/overlays/vscodium.nix b/overlays/vscodium.nix new file mode 100644 index 0000000..902bd78 --- /dev/null +++ b/overlays/vscodium.nix @@ -0,0 +1,15 @@ +{ ... }: +{ + nixpkgs.overlays = [ + (self: super: { + # ui is broken on 1.84 + vscodium = super.vscodium.overrideAttrs (oldAttrs: rec { + version = "1.85.2.24019"; + src = super.fetchurl { + sha256 = "sha256-OBGFXOSN+Oq9uj/5O6tF0Kp7rxTY1AzNbhLK8G+EqVk="; + url = "https://github.com/VSCodium/vscodium/releases/download/${version}/VSCodium-linux-x64-${version}.tar.gz"; + }; + }); + }) + ]; +} \ No newline at end of file diff --git a/users/leyla/default.nix b/users/leyla/default.nix index 7192d10..14f4e38 100644 --- a/users/leyla/default.nix +++ b/users/leyla/default.nix @@ -3,6 +3,10 @@ let cfg = config.users.leyla; in { + imports =[ + ./packages.nix + ]; + options.users.leyla = { isNormalUser = lib.mkEnableOption "leyla"; }; @@ -30,58 +34,6 @@ in extraGroups = [ "networkmanager" "wheel" ]; hashedPasswordFile = config.sops.secrets."passwords/leyla".path; - - packages = with pkgs; [ - iputils - dnsutils - git - firefox - signal-desktop - obsidian - bitwarden - vscodium - nextcloud-client - inkscape - steam - discord - rhythmbox - makemkv - protonvpn-gui - transmission-gtk - freecad - mupen64plus - dbeaver - easytag - cura - kicad-small - # jdk - # android-tools - # android-studio - androidStudioPackages.canary - jetbrains.idea-community - ungoogled-chromium - nodejs - exiftool - libreoffice - # N64 Emulator - mupen64plus - # GameCube Emulator and Wii Emulator - dolphin-emu - # Switch Emulator - yuzu-mainline - # Atari 2600 Emulator - stella - # mame Emulator - mame - # Game Boy Advanced Emulator - vbam - # NES Emulator - fceux - # SNES Emulator - zsnes - # DS Emulator - desmume - ]; } else { isSystemUser = true; } diff --git a/users/leyla/packages.nix b/users/leyla/packages.nix new file mode 100644 index 0000000..dc5bdc8 --- /dev/null +++ b/users/leyla/packages.nix @@ -0,0 +1,62 @@ +{ lib, config, pkgs, ... }: +let + cfg = config.users.leyla; +in +{ + imports = [ + ../../overlays/intellij.nix + ../../overlays/vscodium.nix + ]; + + users.users.leyla.packages = lib.mkIf cfg.isNormalUser ( + with pkgs; [ + #foss platforms + signal-desktop + bitwarden + firefox + ungoogled-chromium + libreoffice + inkscape + freecad + kicad-small + cura + makemkv + transmission-gtk + easytag + rhythmbox + + # proprietary platforms + discord + obsidian + + # development enviroments + vscodium + androidStudioPackages.canary + jetbrains.idea-community + dbeaver + + # development tools + # TODO: move these to flakes + nodejs + + # bridges + protonvpn-gui + nextcloud-client + + # gaming + steam + # emulators + yuzu-mainline # Switch Emulator + dolphin-emu # GameCube and Wii Emulator + desmume # DS Emulator + mupen64plus # N64 Emulator + zsnes # SNES Emulator + vbam # Game Boy Advanced Emulator + fceux # NES Emulator + stella # Atari 2600 Emulator + mame # mame Emulator + + + ] + ); +} \ No newline at end of file