diff --git a/flake.nix b/flake.nix index 5c27d7a..e02433b 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,10 @@ url = "github:nix-community/home-manager/release-21.11"; inputs.nixpkgs.follows = "nixpkgs"; }; + custom = { + system = "x86_64-linux"; + username = "andreas"; + }; }; outputs = @@ -20,19 +24,18 @@ , nixpkgs-unstable , nixos-hardware , home-manager + , custom }: let - system = "x86_64-linux"; - username = "andreas"; overlay-unstable = final: prev: { unstable = import nixpkgs-unstable { - system = "x86_64-linux"; + system = custom.system; config.allowUnfree = true; }; }; pkgs = import nixpkgs { - inherit system; + inherit custom.system; config = { allowUnfree = true; }; @@ -41,8 +44,8 @@ ]; }; mkComputer = configurationNix: homeManagerRole: extraModules: nixpkgs.lib.nixosSystem { - inherit system pkgs; - specialArgs = { inherit self nixpkgs system inputs username; }; + inherit custom.system pkgs; + specialArgs = { inherit inputs username; }; modules = ( [ # System configuration for this host @@ -55,8 +58,8 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.${username}.imports = [ - (import homeManagerRole { inherit pkgs username; }) + home-manager.users.${custom.username}.imports = [ + (import homeManagerRole { inherit pkgs inputs; }) ]; } ] ++ extraModules @@ -107,140 +110,140 @@ ]; proxy = mkComputer (mkVM - { hostname = "proxy"; ip = "10.7.89.100"; inherit self; }) + { hostname = "proxy"; ip = "10.7.89.100"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/haproxy ]; nixos-management = mkComputer (mkVM - { hostname = "nixos-management"; ip = "10.7.89.150"; inherit self; }) + { hostname = "nixos-management"; ip = "10.7.89.150"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/code-server ./modules/docker (import ./modules/restic-server-client { - inherit self username; time = "21:30"; + inherit inputs username; time = "21:30"; }) ]; heimdall = mkComputer (mkVM - { hostname = "heimdall"; ip = "10.7.89.121"; inherit self; }) + { hostname = "heimdall"; ip = "10.7.89.121"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/docker (import ./modules/restic-server-client { - inherit self username; time = "22:00"; + inherit inputs; time = "22:00"; }) ]; grav = mkComputer (mkVM - { hostname = "grav"; ip = "10.7.89.102"; inherit self; }) + { hostname = "grav"; ip = "10.7.89.102"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/docker (import ./modules/restic-server-client { - inherit self username; time = "22:30"; + inherit inputs; time = "22:30"; }) ]; ttrss = mkComputer (mkVM - { hostname = "ttrss"; ip = "10.7.89.115"; inherit self; }) + { hostname = "ttrss"; ip = "10.7.89.115"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/docker (import ./modules/restic-server-client { - inherit self username; time = "23:00"; + inherit inputs; time = "23:00"; }) ]; rss-bridge = mkComputer (mkVM - { hostname = "rss-bridge"; ip = "10.7.89.111"; inherit self; }) + { hostname = "rss-bridge"; ip = "10.7.89.111"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/docker (import ./modules/restic-server-client { - inherit self username; time = "23:30"; + inherit inputs; time = "23:30"; }) ]; git = mkComputer (mkVM - { hostname = "git"; ip = "10.7.89.109"; inherit self; }) + { hostname = "git"; ip = "10.7.89.109"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/docker (import ./modules/restic-server-client { - inherit self username; time = "03:00"; + inherit inputs; time = "03:00"; }) ]; plex = mkComputer (mkVM - { hostname = "plex"; ip = "10.7.89.112"; inherit self; }) + { hostname = "plex"; ip = "10.7.89.112"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/docker ./modules/media-share ./modules/plex (import ./modules/restic-server-client { - inherit self username; time = "03:30"; + inherit inputs; time = "03:30"; }) ]; nextcloud = mkComputer (mkVM - { hostname = "nextcloud"; ip = "10.7.89.103"; inherit self; }) + { hostname = "nextcloud"; ip = "10.7.89.103"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/docker (import ./modules/restic-server-client { - inherit self username; time = "04:00"; + inherit inputs; time = "04:00"; }) ]; mail = mkComputer (mkVM - { hostname = "mail"; ip = "10.7.89.123"; inherit self; }) + { hostname = "mail"; ip = "10.7.89.123"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/docker (import ./modules/restic-server-client { - inherit self username; time = "04:30"; + inherit inputs; time = "04:30"; }) ]; pihole = mkComputer (mkVM - { hostname = "pihole"; ip = "10.7.89.2"; inherit self; }) + { hostname = "pihole"; ip = "10.7.89.2"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/docker ./modules/pihole (import ./modules/restic-server-client { - inherit self username; time = "05:00"; + inherit inputs; time = "05:00"; }) ./modules/unbound ]; restic-server = mkComputer (mkVM - { hostname = "restic-server"; ip = "10.7.89.30"; inherit self; }) + { hostname = "restic-server"; ip = "10.7.89.30"; inherit inputs; }) ./home-manager/headless.nix [ ./modules/restic-server ]; }; homeConfigurations = { - "${username}@co-ws-con4" = home-manager.lib.homeManagerConfiguration { + "${custom.username}@co-ws-con4" = home-manager.lib.homeManagerConfiguration { configuration = import ./home-manager/work-wsl.nix; - inherit system username; - homeDirectory = "/home/${username}"; + inherit inputs; + homeDirectory = "/home/${custom.username}"; extraSpecialArgs = { - inherit self system username; + inherit inputs; }; }; }; diff --git a/home-manager/common/default.nix b/home-manager/common/default.nix index 78f5ad3..18b65a2 100644 --- a/home-manager/common/default.nix +++ b/home-manager/common/default.nix @@ -1,8 +1,8 @@ -{ username, ... }: +{ inputs, ... }: { # Home Manager needs a bit of information about you and the # paths it should manage. - home.username = username; - home.homeDirectory = "/home/${username}"; + home.username = inputs.custom.username; + home.homeDirectory = "/home/${inputs.custom.username}"; programs.home-manager.enable = true; } diff --git a/home-manager/desktop.nix b/home-manager/desktop.nix index bc742b1..4f19037 100644 --- a/home-manager/desktop.nix +++ b/home-manager/desktop.nix @@ -1,7 +1,7 @@ -{ pkgs, username, ... }: +{ inputs, pkgs, ... }: { imports = [ - (import ./common { inherit username; }) + (import ./common { inherit inputs; }) ./software/work-desktop ./software/autorandr ./software/calibre diff --git a/home-manager/headless.nix b/home-manager/headless.nix index 6240cf0..c88dcb6 100644 --- a/home-manager/headless.nix +++ b/home-manager/headless.nix @@ -1,7 +1,7 @@ -{ pkgs, username, ... }: +{ inputs, pkgs, ... }: { imports = [ - (import ./common { inherit username; }) + (import ./common { inherit inputs; }) ./software/git ./software/vim ]; diff --git a/home-manager/software/vagrant-wsl/default.nix b/home-manager/software/vagrant-wsl/default.nix index 0b7f288..e138f0e 100644 --- a/home-manager/software/vagrant-wsl/default.nix +++ b/home-manager/software/vagrant-wsl/default.nix @@ -1,4 +1,4 @@ -{ pkgs, username, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ vagrant diff --git a/home-manager/work-wsl.nix b/home-manager/work-wsl.nix index 665414e..8f0ab32 100644 --- a/home-manager/work-wsl.nix +++ b/home-manager/work-wsl.nix @@ -1,4 +1,4 @@ -{ self, pkgs, username, ... }: +{ inputs, pkgs, ... }: { imports = [ ./common @@ -14,7 +14,7 @@ enable = true; bashrcExtra = '' . ~/.nixos/home-manager/configs/bash/work_wsl_bashrc - . /home/${username}/.nix-profile/etc/profile.d/nix.sh + . /home/${inputs.custom.username}/.nix-profile/etc/profile.d/nix.sh ''; }; } diff --git a/modules/code-server/default.nix b/modules/code-server/default.nix index ebc243d..d5c5c42 100644 --- a/modules/code-server/default.nix +++ b/modules/code-server/default.nix @@ -1,8 +1,8 @@ -{ pkgs, username, ... }: +{ inputs, pkgs, ... }: { services.code-server = { enable = true; - user = username; + user = inputs.custom.username; host = "0.0.0.0"; auth = "none"; extraPackages = with pkgs; @@ -14,7 +14,7 @@ git ]; extraEnvironment = { - HOME = "/home/${username}"; + HOME = "/home/${inputs.custom.username}"; }; }; networking.firewall.allowedTCPPorts = [ 4444 ]; diff --git a/modules/common/default.nix b/modules/common/default.nix index d58ba8c..f32f1ea 100644 --- a/modules/common/default.nix +++ b/modules/common/default.nix @@ -1,7 +1,7 @@ -{ self, nixpkgs, pkgs, username, ... }: +{ inputs, pkgs, ... }: { imports = [ - "${self}/modules/cli" + "${inputs.self}/modules/cli" ]; # Use the systemd-boot EFI boot loader. @@ -49,7 +49,7 @@ # Disable the root user users.users.root.hashedPassword = "!"; # Define a user account. Don't forget to set a password with ‘passwd’. - users.users.${username} = { + users.users.${inputs.custom.username} = { isNormalUser = true; initialPassword = "password"; extraGroups = [ @@ -67,13 +67,10 @@ nixpkgs.config.allowUnfree = true; nix = { - nixPath = [ "nixpkgs=${nixpkgs}" ]; - registry.nixpkgs = { - from = { - id = "nixpkgs"; - type = "indirect"; - }; - flake = nixpkgs; + nixPath = [ "nixpkgs=${inputs.nixpkgs}" ]; + registry = { + nixpkgs.flake = inputs.nixpkgs; + nix-config.flake = inputs.self; }; autoOptimiseStore = true; @@ -121,7 +118,7 @@ # this value at the release version of the first install of this system. # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = import "${self}/version.nix"; + system.stateVersion = import "${inputs.self}/version.nix"; } diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index d49e41c..62b04f3 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -1,4 +1,4 @@ -{ pkgs, username, ... }: +{ inputs, pkgs, ... }: { networking = { networkmanager.enable = true; @@ -59,7 +59,7 @@ terminator ]; environment.shellAliases = { - management-server = "mosh ${username}@10.7.89.150 tmux a"; + management-server = "mosh ${inputs.custom.username}@10.7.89.150 tmux a"; }; } diff --git a/modules/docker/default.nix b/modules/docker/default.nix index a00415e..df69b46 100644 --- a/modules/docker/default.nix +++ b/modules/docker/default.nix @@ -1,11 +1,11 @@ -{ pkgs, username, ... }: +{ inputs, pkgs, ... }: { virtualisation.docker = { enable = true; autoPrune.enable = true; }; - users.users.${username}.extraGroups = [ "docker" ]; + users.users.${inputs.custom.username}.extraGroups = [ "docker" ]; environment.systemPackages = with pkgs; [ docker-compose lazydocker diff --git a/modules/droidcam/default.nix b/modules/droidcam/default.nix index ab28b93..45537f3 100644 --- a/modules/droidcam/default.nix +++ b/modules/droidcam/default.nix @@ -1,4 +1,4 @@ -{ pkgs, username, ... }: +{ inputs, pkgs, ... }: { programs.droidcam.enable = true; # required for USB connection @@ -6,7 +6,7 @@ environment.shellAliases = { webcam = "droidcam-cli -size=1920x1080 ios 4747"; }; - home-manager.users.${username} = { + home-manager.users.${inputs.custom.username} = { xdg.desktopEntries = { droidcam = { name = "Droidcam"; diff --git a/modules/eog/default.nix b/modules/eog/default.nix index 8767cd8..fbab623 100644 --- a/modules/eog/default.nix +++ b/modules/eog/default.nix @@ -1,10 +1,10 @@ -{ pkgs, username, ... }: +{ inputs, pkgs, ... }: { environment.systemPackages = with pkgs; [ gnome.eog ]; - home-manager.users.${username} = { + home-manager.users.${inputs.custom.username} = { xdg.mimeApps = { enable = true; associations.added = { diff --git a/modules/espanso/default.nix b/modules/espanso/default.nix index 8be825e..32a50d8 100644 --- a/modules/espanso/default.nix +++ b/modules/espanso/default.nix @@ -1,7 +1,7 @@ -{ pkgs, username, ... }: +{ inputs, pkgs, ... }: { services.espanso.enable = true; - home-manager.users.${username} = { + home-manager.users.${inputs.custom.username} = { xdg.configFile.espanso = { target = "espanso/default.yml"; onChange = "systemctl --user restart espanso"; diff --git a/modules/nix-direnv/default.nix b/modules/nix-direnv/default.nix index e27e20d..4ef584c 100644 --- a/modules/nix-direnv/default.nix +++ b/modules/nix-direnv/default.nix @@ -1,11 +1,11 @@ -{ pkgs, username, ... }: +{ inputs, pkgs, ... }: { nix.extraOptions = '' keep-outputs = true keep-derivations = true ''; - home-manager.users.${username} = { + home-manager.users.${inputs.custom.username} = { programs.direnv.enable = true; programs.direnv.nix-direnv.enable = true; programs.direnv.nix-direnv.enableFlakes = true; diff --git a/modules/restic-server-client/default.nix b/modules/restic-server-client/default.nix index d66cb2a..ecc6bb6 100644 --- a/modules/restic-server-client/default.nix +++ b/modules/restic-server-client/default.nix @@ -1,13 +1,13 @@ -{ self, time, username, ... }: +{ inputs, time, ... }: { - services.restic.backups.${username} = { + services.restic.backups.${inputs.custom.username} = { user = "root"; repository = "rest:http://10.7.89.30:8000"; timerConfig.OnCalendar = time; - passwordFile = "/home/${username}/.nixos/secrets/passwords/restic.key"; - paths = [ "/home/${username}/" ]; + passwordFile = "/home/${inputs.custom.username}/.nixos/secrets/passwords/restic.key"; + paths = [ "/home/${inputs.custom.username}/" ]; extraBackupArgs = [ - "--exclude-file=${self}/modules/restic/excludes.txt" + "--exclude-file=${inputs.self}/modules/restic/excludes.txt" ]; pruneOpts = [ "--keep-hourly 24" diff --git a/modules/restic-server/default.nix b/modules/restic-server/default.nix index 4b704ad..ff7b11d 100644 --- a/modules/restic-server/default.nix +++ b/modules/restic-server/default.nix @@ -1,4 +1,4 @@ -{ pkgs, username, ... }: +{ inputs, pkgs, ... }: let repository = "/mnt/restic-server"; in diff --git a/modules/restic/default.nix b/modules/restic/default.nix index 548adb1..c54c9ed 100644 --- a/modules/restic/default.nix +++ b/modules/restic/default.nix @@ -1,20 +1,20 @@ -{ self, pkgs, username, ... }: +{ inputs, pkgs, ... }: { environment.systemPackages = with pkgs; [ restic ]; - services.restic.backups.${username} = { + services.restic.backups.${inputs.custom.username} = { user = username; repository = "rest:http://10.7.89.30:8000"; timerConfig = { OnCalendar = "hourly"; RandomizedDelaySec = "15min"; }; - passwordFile = "/home/${username}/.nixos/secrets/passwords/restic.key"; - paths = [ "/home/${username}/" ]; + passwordFile = "/home/${inputs.custom.username}/.nixos/secrets/passwords/restic.key"; + paths = [ "/home/${inputs.custom.username}/" ]; extraBackupArgs = [ - "--exclude-file=${self}/modules/restic/excludes.txt" + "--exclude-file=${inputs.self}/modules/restic/excludes.txt" ]; }; } diff --git a/modules/steam/default.nix b/modules/steam/default.nix index 3047474..9cfe731 100644 --- a/modules/steam/default.nix +++ b/modules/steam/default.nix @@ -1,4 +1,4 @@ -{ username, ... }: +{ inputs, ... }: { programs.steam.enable = true; hardware.steam-hardware.enable = true; @@ -6,7 +6,7 @@ allowedTCPPorts = [ 27036 ]; allowedUDPPorts = [ 27031 ]; }; - home-manager.users.${username} = { + home-manager.users.${inputs.custom.username} = { home.file.".local/share/applications/steam.desktop".source = ./steam.desktop; }; } diff --git a/systems/proxmox-vm/default.nix b/systems/proxmox-vm/default.nix index 3ddbf2c..41b25bf 100644 --- a/systems/proxmox-vm/default.nix +++ b/systems/proxmox-vm/default.nix @@ -1,8 +1,8 @@ -{ self, hostname, ip, ... }: +{ inputs, hostname, ip, ... }: { imports = [ - (import "${self}/modules/mk-network" { inherit hostname ip; }) - (import "${self}/systems/minimal") + (import "${inputs.self}/modules/mk-network" { inherit hostname ip; }) + (import "${inputs.self}/systems/minimal") ]; boot.initrd.availableKernelModules = [ "ata_piix"