Add flatpak support, and upgrade stable to 24.05

This commit is contained in:
GRMrGecko 2024-06-20 14:34:30 -05:00
parent 103a17e6ff
commit 0923c0ef9c
9 changed files with 168 additions and 40 deletions

View File

@ -39,20 +39,33 @@ chooseOpts() {
# A looping function to choose Y or N. # A looping function to choose Y or N.
chooseYN() { chooseYN() {
# Determine the default based on upper case Y or N in prompt.
local default="" local default=""
if [[ "$1" =~ \[.*([YN]).*\] ]]; then if [[ "$1" =~ \[.*([YN]).*\] ]]; then
default=${BASH_REMATCH[1]} default=${BASH_REMATCH[1]}
fi fi
echo -n "$1: "
read -r CHOICE # Loop for the choice.
[[ -z $CHOICE ]] && CHOICE=$default while true; do
if [[ "$CHOICE" =~ ^[yY]$ ]]; then # Prompt for choice.
CHOICE="y" echo -n "$1: "
elif [[ "$CHOICE" =~ ^[nN]$ ]]; then read -r CHOICE
CHOICE="n"
else # If choice is empty, set choice to the default.
chooseYN "$1" [[ -z $CHOICE ]] && CHOICE=$default
fi
# If choice does not equal Y or N, continue.
# Otherwise set the global CHOICE variable to lowercase y or n.
# Lowercase allows for easy logic in code that calls this function.
if [[ "$CHOICE" =~ ^[yY]$ ]]; then
CHOICE="y"
elif [[ "$CHOICE" =~ ^[nN]$ ]]; then
CHOICE="n"
else
continue
fi
break
done
} }
# Determine video drivers based on PCI devices. # Determine video drivers based on PCI devices.

View File

@ -7,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1715822638, "lastModified": 1718242063,
"narHash": "sha256-Z4ZoyK8jYRmBZwMaEZLEmAilrfdpekwwwohliqC14/E=", "narHash": "sha256-n3AWItJ4a94GT0cray/eUV7tt3mulQ52L+lWJN9d1E8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "476eef8d85aa09389ae7baf6e6b60357f6a01432", "rev": "832a9f2c81ff3485404bd63952eadc17bf7ccef2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -20,6 +20,26 @@
"type": "github" "type": "github"
} }
}, },
"flatpaks": {
"inputs": {
"nixpkgs": "nixpkgs",
"utils": "utils"
},
"locked": {
"lastModified": 1707326266,
"narHash": "sha256-vRVih6iltuyLdj305Pj236BfhzFaOkAbHg3r5VsFdxs=",
"owner": "GermanBread",
"repo": "declarative-flatpak",
"rev": "efe7897ddcfbca085fba0690b3094e7f8e8911dd",
"type": "github"
},
"original": {
"owner": "GermanBread",
"ref": "stable",
"repo": "declarative-flatpak",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -27,16 +47,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1715381426, "lastModified": 1717527182,
"narHash": "sha256-wPuqrAQGdv3ISs74nJfGb+Yprm23U/rFpcHFFNWgM94=", "narHash": "sha256-vWSkg6AMok1UUQiSYVdGMOXKD2cDFnajITiSi0Zjd1A=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "ab5542e9dbd13d0100f8baae2bc2d68af901f4b4", "rev": "845a5c4c073f74105022533907703441e0464bc3",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-23.11", "ref": "release-24.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -48,11 +68,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1715486357, "lastModified": 1718243258,
"narHash": "sha256-4pRuzsHZOW5W4CsXI9uhKtiJeQSUoe1d2M9mWU98HC4=", "narHash": "sha256-abBpj2VU8p6qlRzTU8o22q68MmOaZ4v8zZ4UlYl5YRU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "44677a1c96810a8e8c4ffaeaad10c842402647c1", "rev": "8d5e27b4807d25308dfe369d5a923d87e7dbfda3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -63,15 +83,15 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1715668745, "lastModified": 1706098335,
"narHash": "sha256-xp62OkRkbUDNUc6VSqH02jB0FbOS+MsfMb7wL1RJOfA=", "narHash": "sha256-r3dWjT8P9/Ah5m5ul4WqIWD8muj5F+/gbCdjiNVBKmU=",
"owner": "nixos", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9ddcaffecdf098822d944d4147dd8da30b4e6843", "rev": "a77ab169a83a4175169d78684ddd2e54486ac651",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "NixOS",
"ref": "nixos-23.11", "ref": "nixos-23.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
@ -79,11 +99,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1715534503, "lastModified": 1718160348,
"narHash": "sha256-5ZSVkFadZbFP1THataCaSf0JH2cAH3S29hU9rrxTEqk=", "narHash": "sha256-9YrUjdztqi4Gz8n3mBuqvCkMo4ojrA6nASwyIKWMpus=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2057814051972fa1453ddfb0d98badbea9b83c06", "rev": "57d6973abba7ea108bac64ae7629e7431e0199b6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -93,14 +113,64 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": {
"locked": {
"lastModified": 1718208800,
"narHash": "sha256-US1tAChvPxT52RV8GksWZS415tTS7PV42KTc2PNDBmc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "cc54fb41d13736e92229c21627ea4f22199fee6b",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"disko": "disko", "disko": "disko",
"flatpaks": "flatpaks",
"home-manager": "home-manager", "home-manager": "home-manager",
"home-manager-unstable": "home-manager-unstable", "home-manager-unstable": "home-manager-unstable",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable" "nixpkgs-unstable": "nixpkgs-unstable"
} }
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@ -3,7 +3,7 @@
# Package sources. # Package sources.
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
disko = { disko = {
@ -12,7 +12,7 @@
}; };
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-23.11"; url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
@ -20,10 +20,11 @@
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
flatpaks.url = "github:GermanBread/declarative-flatpak/stable";
}; };
# Flake outputs, NixOS and Home Configurations. # Flake outputs, NixOS and Home Configurations.
outputs = inputs@{ self, ... }: outputs = inputs@{ self, flatpaks, ... }:
let let
# Load settings.nix or the default if not exists. # Load settings.nix or the default if not exists.
settings = (if (builtins.pathExists ./settings.nix) settings = (if (builtins.pathExists ./settings.nix)
@ -76,9 +77,10 @@
inherit settings; inherit settings;
}; };
modules = [ modules = [
config
inputs.disko.nixosModules.disko inputs.disko.nixosModules.disko
home-manager.nixosModules.default home-manager.nixosModules.default
flatpaks.nixosModules.default
config
]; ];
}; };
@ -89,7 +91,10 @@
inherit inputs; inherit inputs;
inherit settings; inherit settings;
}; };
modules = [ config ]; modules = [
flatpaks.homeManagerModules.default
config
];
}; };
in { in {
# NixOS configurations, in most cases we use default with a profile. # NixOS configurations, in most cases we use default with a profile.

9
home_update.sh Normal file
View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Change into script dir.
cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null || exit
nixosDir=$(pwd)
# Rebuild and switch.
# shellcheck disable=SC2068
home-manager switch --flake "path:$nixosDir" $@

21
modules/home/flatpaks.nix Normal file
View File

@ -0,0 +1,21 @@
{pkgs, settings, ...}:
{
# Setup flatpaks.
services.flatpak.enableModule = true;
services.flatpak.remotes = {
"flathub" = "https://dl.flathub.org/repo/flathub.flatpakrepo";
};
services.flatpak.packages = [
"flathub:app/org.kde.kdenlive/x86_64/stable"
"flathub:app/org.libreoffice.LibreOffice/x86_64/stable"
"flathub:app/org.onlyoffice.desktopeditors/x86_64/stable"
"flathub:app/md.obsidian.Obsidian/x86_64/stable"
"flathub:app/org.mozilla.Thunderbird/x86_64/stable"
"flathub:app/com.calibre_ebook.calibre/x86_64/stable"
"flathub:app/org.gimp.GIMP/x86_64/stable"
"flathub:app/org.kde.krita/x86_64/stable"
"flathub:app/org.inkscape.Inkscape/x86_64/stable"
"flathub:app/org.blender.Blender/x86_64/stable"
];
}

View File

@ -45,7 +45,12 @@
inherit settings; inherit settings;
}; };
users = { users = {
${settings.user.name} = import ../../users/main-user.nix; ${settings.user.name} = {
imports = [
inputs.flatpaks.homeManagerModules.default
../../users/main-user.nix
];
};
"root" = import ../../users/root.nix; "root" = import ../../users/root.nix;
}; };
}; };

View File

@ -17,4 +17,4 @@ fi
# Rebuild and switch. # Rebuild and switch.
# shellcheck disable=SC2068 # shellcheck disable=SC2068
nixos-rebuild switch --impure --flake "path:$nixosDir/#$host" $@ sudo nixos-rebuild switch --impure --flake "path:$nixosDir/#$host" $@

View File

@ -10,23 +10,27 @@ if [[ -n $nixHostOverride ]]; then
host=$nixHostOverride host=$nixHostOverride
fi fi
if (( EUID==0 )); then
sudoCmd="sudo -u grmrgecko"
fi
# Confirm host configuration is available; If not, we should not continue. # Confirm host configuration is available; If not, we should not continue.
if ! grep -q "nixosConfigurations.$host " flake.nix; then if ! grep -q "nixosConfigurations.$host " flake.nix; then
host="default" host="default"
fi fi
# Update nixpkgs. # Update nixpkgs.
if ! sudo -u grmrgecko nix flake update "$nixosDir"; then if ! $sudoCmd nix flake update "$nixosDir"; then
echo "Update failed" echo "Update failed"
exit 1 exit 1
fi fi
# Add updated lock file to git staging for rebuild below. # Add updated lock file to git staging for rebuild below.
sudo -u grmrgecko git add flake.lock $sudoCmd git add flake.lock
# Commit update. # Commit update.
sudo -u grmrgecko git commit -m "Flake update $(date)" $sudoCmd git commit -m "Flake update $(date)"
# Rebuild and switch. # Rebuild and switch.
# shellcheck disable=SC2068 # shellcheck disable=SC2068
nixos-rebuild switch --impure --flake "path:$nixosDir/#$host" $@ sudo nixos-rebuild switch --impure --flake "path:$nixosDir/#$host" $@

View File

@ -4,6 +4,7 @@
imports = [ imports = [
../modules/home/git.nix ../modules/home/git.nix
../modules/home/zsh.nix ../modules/home/zsh.nix
../modules/home/flatpaks.nix
] ++ (if (builtins.pathExists ../modules/home/profiles/${settings.profile}.nix) ] ++ (if (builtins.pathExists ../modules/home/profiles/${settings.profile}.nix)
then then
[ ../modules/home/profiles/${settings.profile}.nix ] [ ../modules/home/profiles/${settings.profile}.nix ]