diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3d0f2df4b76fc7fd8067d16e096ed629cbb6ee35..d025d7ecf51f151a43021cf0dd16b9b7537d3cff 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -39,7 +39,7 @@ build_jar:
   stage: build
   script:
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
-    - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -x kaptKotlin packageUberJarForCurrentOS
+    - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=nightly -x kaptKotlin packageUberJarForCurrentOS
     - mv build/compose/jars/Briar-*.jar ./briar-desktop.jar
   artifacts:
     paths:
@@ -52,7 +52,7 @@ build_deb:
   stage: build
   script:
     - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-11-openjdk-amd64 --no-daemon kaptKotlin
-    - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -x kaptKotlin packageDeb
+    - ./gradlew -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64 --no-daemon -PbuildType=nightly -x kaptKotlin packageDeb
     - mv build/compose/binaries/main/deb/*.deb ./briar-desktop.deb
   artifacts:
     paths:
diff --git a/build.gradle.kts b/build.gradle.kts
index dd976e97c6594d9511dc76916a1dba60514fc075..617395770e0d7cfabfccdc4bd6982eef53d02a06 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -58,8 +58,10 @@ plugins {
     id("org.briarproject.briar.desktop.build-data-gradle-plugin")
 }
 
+val versionCode = "0.1.0"
+val buildType = if (project.hasProperty("buildType")) project.properties["buildType"] else "snapshot"
 group = "app.briar.desktop"
-version = "0.1-nightly"
+version = "$versionCode-$buildType"
 
 allprojects {
     repositories {
@@ -120,7 +122,6 @@ compose.desktop {
         nativeDistributions {
             targetFormats(TargetFormat.Msi, TargetFormat.Exe, TargetFormat.Deb, TargetFormat.Rpm)
             packageName = "Briar"
-            packageVersion = "0.0.1"
             description = "Secure messaging, anywhere"
             vendor = "The Briar Project"
             copyright = "2021-2022 The Briar Project"
@@ -132,6 +133,12 @@ compose.desktop {
             modules("java.naming")
             linux {
                 packageName = "briar-desktop"
+                // Explicitly specifying the debian revision '-1' doesn't seem to work, it gets always appended.
+                // I think we're fine having revision '-1' as it will only be used to break ties when the upstream
+                // version is the same for two packages.
+                debPackageVersion = "$versionCode-$buildType"
+                // rpm versions may not contain hyphens, so use underscore
+                rpmPackageVersion = "${versionCode}_$buildType"
                 iconFile.set(project.file("src/main/resources/images/logo_circle.png"))
                 debMaintainer = "contact@briarproject.org"
                 appCategory = "comm"
@@ -140,6 +147,8 @@ compose.desktop {
             windows {
                 iconFile.set(project.file("src/main/resources/images/logo_circle.ico"))
                 upgradeUuid = "cc8b40f7-f190-4cea-bfec-ceb9ef85df09"
+                // Windows doesn't support things like 'nightly' or 'release'. Only numeric versions are acceptable
+                packageVersion = versionCode
             }
         }
     }