diff --git a/flake.nix b/flake.nix index 754da83..749597d 100644 --- a/flake.nix +++ b/flake.nix @@ -18,41 +18,50 @@ inherit system; config.allowUnfree = true; }; + sharedModules = [ + ./hosts/common.nix + ]; in { nixosConfigurations = { electra = nixpkgs.lib.nixosSystem { inherit system; - modules = [ - { - nixpkgs.config.allowUnfree = true; - } - ./hosts/electra/configuration.nix - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.alisceon = import ./home/users/alisceon.nix; - home-manager.backupFileExtension = "backup"; - } - ]; - }; - tower = nixpkgs.lib.nixosSystem { - inherit system; - modules = [ + modules = sharedModules ++ [ { nixpkgs.config.allowUnfree = true; } ./hosts/tower/configuration.nix home-manager.nixosModules.home-manager - { + ({ config, ...}: { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.alisceon = import ./home/users/alisceon.nix; + home-manager.extraSpecialArgs = { + inherit (config.networking) hostName; + }; # end extraSpecialArgs + home-manager.users.alisceon = import ./home/alisceon.nix; home-manager.backupFileExtension = "backup"; + }) # end home manager + ]; # end modules + }; # end electra + tower = nixpkgs.lib.nixosSystem { + inherit system; + modules = sharedModules ++ [ + { + nixpkgs.config.allowUnfree = true; } - ]; - }; - }; - }; -} + ./hosts/tower/configuration.nix + home-manager.nixosModules.home-manager + ({ config, ...}: { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = { + inherit (config.networking) hostName; + }; #end extraSpecialArgs + home-manager.users.alisceon = import ./home/alisceon.nix; + home-manager.backupFileExtension = "backup"; + }) # end home manager + ]; # end modules + }; # end tower + }; # end nixos conf + }; # end "in" +} # end file diff --git a/home/alisceon.nix b/home/alisceon.nix new file mode 100644 index 0000000..a309008 --- /dev/null +++ b/home/alisceon.nix @@ -0,0 +1,133 @@ +{ pkgs, config, hostName, ... }: { + home.username = "alisceon"; + home.homeDirectory = "/home/alisceon"; + home.stateVersion = "24.05"; + manual.manpages.enable = true; + + programs = { + fish = { + enable = true; + # Disable greeting + interactiveShellInit = '' + set fish_greeting + ''; + preferAbbrs = true; + shellAbbrs = { + ls = "exa"; + ll = "exa -lah"; + grep = "rg"; + cat = "bat"; + tsla-fan = "ipmitool -H 10.30.0.3 -U ADMIN -P ADMIN raw 0x30 0x70 0x66 0x01 0x0"; + nixos-switch = "sudo nixos-rebuild switch --flake .#${hostName}"; + nixos-test = "sudo nixos-rebuild build-vm --flake .#${hostName}"; + pypod = "podman run --rm -it --network host -v '.:/run' -w '/run' python /run/"; + }; + }; # end fish + git = { + enable = true; + userName = "alisceon"; + userEmail = "alisceon@protonmail.com"; + extraConfig = { + push = { autoSetupRemote = true; }; + }; + }; # end git + obsidian.enable = true; + vscode.enable = true; + firefox = { + enable = true; + nativeMessagingHosts = [ + pkgs.gnome-browser-connector + ]; + }; # end firefox + bat.enable = true; + ssh = { + enable = true; + matchBlocks = { + "alisceon.com" = { + hostname = "alisceon.com"; + user = "opc"; + }; + "miscbox" = { + hostname = "10.1.0.11"; + proxyJump = "alisceon.com"; + user = "opc"; + }; + "blogbox" = { + hostname = "10.1.0.10"; + proxyJump = "alisceon.com"; + user = "ubuntu"; + }; + "filurbox" = { + hostname = "oci.malice.zone"; + user = "opc"; + }; + "dnspi" = { + hostname = "10.40.0.2"; + user = "pi"; + }; + "tsla-exporter-bridge" = { + hostname = "alma02.lab.the.malice.zone"; + user = "root"; + }; + "tsla-runner-boi" = { + hostname = "alma03.lab.the.malice.zone"; + user = "root"; + }; + }; + }; # end ssh + }; # end programs + + home.packages = with pkgs; [ + signal-desktop + discord + eza + fd + ripgrep + ]; + + xdg = { + enable = true; + userDirs.enable = true; + mime.enable = true; + }; + + services.syncthing = { + enable = true; + }; + dconf.enable = true; + dconf.settings = { + "org/gnome/desktop/background" = { + color-shading-type = "solid"; + picture-options = "zoom"; + primary-color = "#000000000000"; + secondary-color = "#000000000000"; + picture-uri = "org.gnome.desktop.background picture-uri 'file:///home/alisceon/Pictures/songbird/Songbird4.png'"; + picture-uri-dark = "org.gnome.desktop.background picture-uri 'file:///home/alisceon/Pictures/songbird/Songbird4.png'"; + }; + "org/gnome/desktop/interface" = { + accent-color = "red"; + color-scheme = "prefer-dark"; + }; + "org/gnome/shell" = { + disable-user-extensions = false; + enabled-extensions = [ pkgs.gnomeExtensions.ddterm.extensionUuid ]; + favorite-apps = [ + "org.gnome.Nautilus.desktop" + "firefox.desktop" + "vscode.desktop" + "obsidian.desktop" + "discord.desktop" + "signal-desktop.desktop" + ]; + }; + "com/github/amezin/ddterm" = { + ddterm-toggle-hotkey = [ "Return" ]; + }; + }; # end dconf.settings + #overide broken obsidian config + xdg.configFile."obsidian/obsidian.json".source = builtins.toPath ./conf/obsidian.json; + + home.file = { + + }; # end home.file +} # end file diff --git a/home/conf/obsidian.json b/home/conf/obsidian.json new file mode 100644 index 0000000..550e17f --- /dev/null +++ b/home/conf/obsidian.json @@ -0,0 +1,9 @@ +{ + "updateDisabled": true, + "vaults": { + "fe2c079a19b0b9c79085deb58cb8ea47": { + "open": true, + "path": "/home/alisceon/Documents/Obsidian/private" + } + } +} \ No newline at end of file diff --git a/hosts/common.nix b/hosts/common.nix new file mode 100644 index 0000000..ae13568 --- /dev/null +++ b/hosts/common.nix @@ -0,0 +1,127 @@ +{ config, pkgs, ... }: + +{ + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + networking.networkmanager.enable = true; + + time.timeZone = "Europe/Stockholm"; + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "sv_SE.UTF-8"; + LC_IDENTIFICATION = "sv_SE.UTF-8"; + LC_MEASUREMENT = "sv_SE.UTF-8"; + LC_MONETARY = "sv_SE.UTF-8"; + LC_NAME = "sv_SE.UTF-8"; + LC_NUMERIC = "sv_SE.UTF-8"; + LC_PAPER = "sv_SE.UTF-8"; + LC_TELEPHONE = "sv_SE.UTF-8"; + LC_TIME = "sv_SE.UTF-8"; + }; + + + services.displayManager = { + gdm.enable = true; + gdm.wayland = true; + }; + services.desktopManager.gnome.enable = true; + services.xserver.xkb.layout = "se"; + + services.gnome.gnome-keyring.enable = true; + environment.gnome.excludePackages = with pkgs; [ + evolution + geary + gnome-contacts + gnome-music + gnome-user-docs + gnome-tour + gnome-weather + gnome-maps + gnome-calendar + gnome-initial-setup + gnome-clocks + ]; + + nix.settings.auto-optimise-store = true; + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + + console.keyMap = "sv-latin1"; + + services.printing.enable = true; + services.pulseaudio.enable = false; + services.pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + jack.enable = true; + }; + + services.fwupd.enable = true; + programs = { + fish.enable = true; + steam = { + enable = true; + remotePlay.openFirewall = true; + }; + }; + + environment.systemPackages = with pkgs; [ + # CLI tools + git + wget + curl + btop + ripgrep + bat + fd + eza + bash + + # Chat + discord + signal-desktop + + # Browser + firefox + + # Editor + vscode + obsidian + + # Virtualization + podman + + # GNOME tweaks and extensions + gnome-tweaks + dconf-editor + gnomeExtensions.ddterm + + # Other + syncthing + steam + ]; + + virtualisation.podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + + users.users.alisceon = { + isNormalUser = true; + extraGroups = [ "wheel" "networkmanager" "podman" ]; + shell = pkgs.fish; + }; + + security.sudo.wheelNeedsPassword = false; + programs.dconf.enable = true; + + environment.shells = with pkgs; [ fish ]; + + system.stateVersion = "24.05"; +} diff --git a/hosts/electra/configuration.nix b/hosts/electra/configuration.nix index 61770fa..6551207 100644 --- a/hosts/electra/configuration.nix +++ b/hosts/electra/configuration.nix @@ -3,6 +3,7 @@ { imports = [ ./hardware-configuration.nix ]; + networking.hostName = "electra"; boot = { loader.systemd-boot.enable = true; @@ -36,126 +37,4 @@ loader.timeout = 0; #resumeDevice = "/dev/disk/by-uuid/c49249b9-0d68-44af-97e0-e399c8409408"; }; - - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - - networking.hostName = "electra"; - networking.networkmanager.enable = true; - - time.timeZone = "Europe/Stockholm"; - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "sv_SE.UTF-8"; - LC_IDENTIFICATION = "sv_SE.UTF-8"; - LC_MEASUREMENT = "sv_SE.UTF-8"; - LC_MONETARY = "sv_SE.UTF-8"; - LC_NAME = "sv_SE.UTF-8"; - LC_NUMERIC = "sv_SE.UTF-8"; - LC_PAPER = "sv_SE.UTF-8"; - LC_TELEPHONE = "sv_SE.UTF-8"; - LC_TIME = "sv_SE.UTF-8"; - }; - - nix.settings.auto-optimise-store = true; - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d"; - }; - - console.keyMap = "sv-latin1"; - - services= { - printing.enable = true; - fwupd.enable = true; - thermald.enable = true; - pulseaudio.enable = false; - gnome.gnome-keyring.enable = true; - pipewire = { - enable = true; - alsa.enable = true; - pulse.enable = true; - jack.enable = true; - }; - power-profiles-daemon.enable = true; - displayManager = { - gdm.enable = true; - gdm.wayland = true; - }; - desktopManager.gnome.enable = true; - xserver.xkb.layout = "se"; - }; - - programs = { - dconf.enable = true; - fish.enable = true; - steam = { - enable = true; - remotePlay.openFirewall = true; - }; - }; - - environment.systemPackages = with pkgs; [ - # NIX Tools - vulnix - - # CLI tools - git - wget - curl - btop - ripgrep - bat - fd - eza - bash - - # Chat - discord - signal-desktop - - # Browser - firefox - - # Development - vscode - devenv - direnv - - # Virtualization - podman - - # GNOME tweaks and extensions - gnome-tweaks - dconf-editor - gnomeExtensions.ddterm - gnomeExtensions.unpanel - - # Other - syncthing - steam - obsidian - ]; - - virtualisation.podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; - - users.users.alisceon = { - isNormalUser = true; - extraGroups = [ "wheel" "networkmanager" "podman" ]; - shell = pkgs.fish; - }; - - security.sudo.wheelNeedsPassword = false; - - environment.shells = with pkgs; [ - fish - bash - ]; - - system.stateVersion = "24.05"; } diff --git a/hosts/tower/configuration.nix b/hosts/tower/configuration.nix index 07b3973..80b49b3 100644 --- a/hosts/tower/configuration.nix +++ b/hosts/tower/configuration.nix @@ -3,144 +3,11 @@ { imports = [ ./hardware-configuration.nix ]; + networking.hostName = "tower"; boot = { loader.systemd-boot.enable = true; loader.efi.canTouchEfiVariables = true; - initrd.enable = true; - plymouth = { - enable = true; - theme = "rings"; - themePackages = with pkgs; [ - # By default we would install all themes - (adi1090x-plymouth-themes.override { - selected_themes = [ "rings" ]; - }) - ]; - }; - consoleLogLevel = 3; - kernelParams = [ - "quiet" - "splash" - "boot.shell_on_fail" - "udev.log_priority=3" - "rd.systemd.show_status=auto" - "mem_sleep_default=s2idle" - ]; - loader.timeout = 0; - #resumeDevice = "/dev/disk/by-uuid/c49249b9-0d68-44af-97e0-e399c8409408"; + initrd.enable = true; }; - - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - - networking.hostName = "tower"; - networking.networkmanager.enable = true; - - time.timeZone = "Europe/Stockholm"; - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "sv_SE.UTF-8"; - LC_IDENTIFICATION = "sv_SE.UTF-8"; - LC_MEASUREMENT = "sv_SE.UTF-8"; - LC_MONETARY = "sv_SE.UTF-8"; - LC_NAME = "sv_SE.UTF-8"; - LC_NUMERIC = "sv_SE.UTF-8"; - LC_PAPER = "sv_SE.UTF-8"; - LC_TELEPHONE = "sv_SE.UTF-8"; - LC_TIME = "sv_SE.UTF-8"; - }; - - - services.displayManager = { - gdm.enable = true; - gdm.wayland = true; - }; - services.desktopManager.gnome.enable = true; - services.xserver.xkb.layout = "se"; - - services.gnome.gnome-keyring.enable = true; - nix.settings.auto-optimise-store = true; - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d"; - }; - - console.keyMap = "sv-latin1"; - - services.printing.enable = true; - services.pulseaudio.enable = false; - services.pipewire = { - enable = true; - alsa.enable = true; - pulse.enable = true; - jack.enable = true; - }; - - services.fwupd.enable = true; - - - programs.fish.enable = true; - programs.steam = { - enable = true; - remotePlay.openFirewall = true; - }; - - environment.systemPackages = with pkgs; [ - # CLI tools - git - wget - curl - btop - ripgrep - bat - fd - eza - bash - - # Chat - discord - signal-desktop - - # Browser - firefox - - # Editor - vscode - obsidian - - # Virtualization - podman - - # GNOME tweaks and extensions - gnome-tweaks - dconf-editor - gnomeExtensions.ddterm - gnomeExtensions.unpanel - - - # Other - syncthing - steam - ]; - - virtualisation.podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; - - users.users.alisceon = { - isNormalUser = true; - extraGroups = [ "wheel" "networkmanager" "podman" ]; - shell = pkgs.fish; - }; - - security.sudo.wheelNeedsPassword = false; - programs.dconf.enable = true; - - environment.shells = with pkgs; [ fish ]; - - system.stateVersion = "24.05"; } diff --git a/home/users/alisceon.nix b/users/alisceon.nix similarity index 64% rename from home/users/alisceon.nix rename to users/alisceon.nix index 5d40d4f..2ee435e 100644 --- a/home/users/alisceon.nix +++ b/users/alisceon.nix @@ -1,4 +1,4 @@ -{ pkgs, config, ... }: { +{ pkgs, config, hostName, ... }: { home.username = "alisceon"; home.homeDirectory = "/home/alisceon"; home.stateVersion = "24.05"; @@ -18,8 +18,8 @@ grep = "rg"; cat = "bat"; tsla-fan = "ipmitool -H 10.30.0.3 -U ADMIN -P ADMIN raw 0x30 0x70 0x66 0x01 0x0"; - nixos-switch = "sudo nixos-rebuild switch --flake .#${config.networking.hostName}"; - nixos-test = "sudo nixos-rebuild build-vm --flake .#${config.networking.hostName}"; + nixos-switch = "sudo nixos-rebuild switch --flake .#${hostName}"; + nixos-test = "sudo nixos-rebuild build-vm --flake .#${hostName}"; pypod = "podman run --rm -it --network host -v '.:/run' -w '/run' python /run/"; }; }; @@ -101,4 +101,34 @@ services.syncthing = { enable = true; }; + dconf.enable = true; + dconf.settings = { + "org/gnome/desktop/background" = { + color-shading-type = "solid"; + picture-options = "zoom"; + primary-color = "#000000000000"; + secondary-color = "#000000000000"; + picture-uri = "org.gnome.desktop.background picture-uri 'file:///home/alisceon/Pictures/songbird/songbird4.jpg'"; + picture-uri-dark = "org.gnome.desktop.background picture-uri 'file:///home/alisceon/Pictures/songbird/songbird4.jpg'"; + }; + "org/gnome/desktop/interface" = { + accent-color = "red"; + color-scheme = "prefer-dark"; + }; + "org/gnome/shell" = { + disable-user-extensions = false; + enabled-extensions = [ pkgs.gnomeExtensions.ddterm.extensionUuid ]; + favorite-apps = [ + "org.gnome.Nautilus.desktop" + "firefox.desktop" + "vscode.desktop" + "obsidian.desktop" + "discord.desktop" + "signal-desktop.desktop" + ]; + }; + "com/github/amezin/ddterm" = { + ddterm-toggle-hotkey = [ "Return" ]; + }; + }; }